1Poplar
2======
3
4Poplar is the first development board compliant with the 96Boards Enterprise
5Edition TV Platform specification.
6
7The board features the Hi3798C V200 with an integrated quad-core 64-bit
8Arm Cortex A53 processor and high performance Mali T720 GPU, making it capable
9of running any commercial set-top solution based on Linux or Android.
10
11It supports a premium user experience with up to H.265 HEVC decoding of 4K
12video at 60 frames per second.
13
14::
15
16    SOC Hisilicon Hi3798CV200
17    CPU Quad-core Arm Cortex-A53 64 bit
18    DRAM DDR3/3L/4 SDRAM interface, maximum 32-bit data width 2 GB
19    USB Two USB 2.0 ports One USB 3.0 ports
20    CONSOLE USB-micro port for console support
21    ETHERNET 1 GBe Ethernet
22    PCIE One PCIe 2.0 interfaces
23    JTAG 8-Pin JTAG
24    EXPANSION INTERFACE Linaro 96Boards Low Speed Expansion slot
25    DIMENSION Standard 160×120 mm 96Boards Enterprice Edition form factor
26    WIFI 802.11AC 2*2 with Bluetooth
27    CONNECTORS One connector for Smart Card One connector for TSI
28
29At the start of the boot sequence, the bootROM executes the so called l-loader
30binary whose main role is to change the processor state to 64bit mode. This
31must happen prior to invoking Trusted Firmware-A:
32
33::
34
35    l-loader --> Trusted Firmware-A --> u-boot
36
37How to build
38------------
39
40Code Locations
41~~~~~~~~~~~~~~
42
43-  Trusted Firmware-A:
44   `link <https://github.com/ARM-software/arm-trusted-firmware>`__
45
46-  l-loader:
47   `link <https://github.com/Linaro/poplar-l-loader.git>`__
48
49-  u-boot:
50   `link <http://git.denx.de/u-boot.git>`__
51
52Build Procedure
53~~~~~~~~~~~~~~~
54
55-  Fetch all the above 3 repositories into local host.
56   Make all the repositories in the same ${BUILD\_PATH}.
57
58-  Prepare the AARCH64 toolchain.
59
60-  Build u-boot using poplar_defconfig
61
62.. code:: bash
63
64       make CROSS_COMPILE=aarch64-linux-gnu- poplar_defconfig
65       make CROSS_COMPILE=aarch64-linux-gnu-
66
67-  Build atf providing the previously generated u-boot.bin as the BL33 image
68
69.. code:: bash
70
71       make CROSS_COMPILE=aarch64-linux-gnu-  all fip SPD=none PLAT=poplar
72       BL33=u-boot.bin
73
74-  Build l-loader (generated the final fastboot.bin)
75       1. copy the atf generated files fip.bin and bl1.bin to l-loader/atf/
76       2. export ARM_TRUSTED_FIRMWARE=${ATF_SOURCE_PATH)
77       3. make
78
79Install Procedure
80-----------------
81
82- Copy l-loader/fastboot.bin to a FAT partition on a USB pen drive.
83
84- Plug the USB pen drive to any of the USB2 ports
85
86- Power the board while keeping S3 pressed (usb_boot)
87
88The system will boot into a u-boot shell which you can then use to write the
89working firmware to eMMC.
90
91Boot trace
92----------
93
94::
95
96    Bootrom start
97    Boot Media: eMMC
98    Decrypt auxiliary code ...OK
99
100    lsadc voltage min: 000000FE, max: 000000FF, aver: 000000FE, index: 00000000
101
102    Entry boot auxiliary code
103
104    Auxiliary code - v1.00
105    DDR code - V1.1.2 20160205
106    Build: Mar 24 2016 - 17:09:44
107    Reg Version:  v134
108    Reg Time:     2016/03/18 09:44:55
109    Reg Name:     hi3798cv2dmb_hi3798cv200_ddr3_2gbyte_8bitx4_4layers.reg
110
111    Boot auxiliary code success
112    Bootrom success
113
114    LOADER:  Switched to aarch64 mode
115    LOADER:  Entering ARM TRUSTED FIRMWARE
116    LOADER:  CPU0 executes at 0x000ce000
117
118    INFO:    BL1: 0xe1000 - 0xe7000 [size = 24576]
119    NOTICE:  Booting Trusted Firmware
120    NOTICE:  BL1: v1.3(debug):v1.3-372-g1ba9c60
121    NOTICE:  BL1: Built : 17:51:33, Apr 30 2017
122    INFO:    BL1: RAM 0xe1000 - 0xe7000
123    INFO:    BL1: Loading BL2
124    INFO:    Loading image id=1 at address 0xe9000
125    INFO:    Image id=1 loaded at address 0xe9000, size = 0x5008
126    NOTICE:  BL1: Booting BL2
127    INFO:    Entry point address = 0xe9000
128    INFO:    SPSR = 0x3c5
129    NOTICE:  BL2: v1.3(debug):v1.3-372-g1ba9c60
130    NOTICE:  BL2: Built : 17:51:33, Apr 30 2017
131    INFO:    BL2: Loading BL31
132    INFO:    Loading image id=3 at address 0x129000
133    INFO:    Image id=3 loaded at address 0x129000, size = 0x8038
134    INFO:    BL2: Loading BL33
135    INFO:    Loading image id=5 at address 0x37000000
136    INFO:    Image id=5 loaded at address 0x37000000, size = 0x58f17
137    NOTICE:  BL1: Booting BL31
138    INFO:    Entry point address = 0x129000
139    INFO:    SPSR = 0x3cd
140    INFO:    Boot bl33 from 0x37000000 for 364311 Bytes
141    NOTICE:  BL31: v1.3(debug):v1.3-372-g1ba9c60
142    NOTICE:  BL31: Built : 17:51:33, Apr 30 2017
143    INFO:    BL31: Initializing runtime services
144    INFO:    BL31: Preparing for EL3 exit to normal world
145    INFO:    Entry point address = 0x37000000
146    INFO:    SPSR = 0x3c9
147
148
149    U-Boot 2017.05-rc2-00130-gd2255b0 (Apr 30 2017 - 17:51:28 +0200)poplar
150
151    Model: HiSilicon Poplar Development Board
152    BOARD: Hisilicon HI3798cv200 Poplar
153    DRAM:  1 GiB
154    MMC:   Hisilicon DWMMC: 0
155    In:    serial@f8b00000
156    Out:   serial@f8b00000
157    Err:   serial@f8b00000
158    Net:   Net Initialization Skipped
159    No ethernet found.
160
161    Hit any key to stop autoboot:  0
162    starting USB...
163    USB0:   USB EHCI 1.00
164    scanning bus 0 for devices... 1 USB Device(s) found
165    USB1:   USB EHCI 1.00
166    scanning bus 1 for devices... 4 USB Device(s) found
167           scanning usb for storage devices... 1 Storage Device(s) found
168           scanning usb for ethernet devices... 1 Ethernet Device(s) found
169
170    USB device 0:
171        Device 0: Vendor: SanDisk Rev: 1.00 Prod: Cruzer Blade
172                Type: Removable Hard Disk
173                Capacity: 7632.0 MB = 7.4 GB (15630336 x 512)
174    ... is now current device
175    Scanning usb 0:1...
176    =>
177