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