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