289 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			289 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| ================================================================================
 | ||
| 			Board Information
 | ||
| ================================================================================
 | ||
| 
 | ||
| Developed by HiSilicon, the board features the Hi3798C V200 with an
 | ||
| integrated quad-core 64-bit ARM Cortex A53 processor and high
 | ||
| performance Mali T720 GPU, making it capable of running any commercial
 | ||
| set-top solution based on Linux or Android. Its high performance
 | ||
| specification also supports a premium user experience with up to H.265
 | ||
| HEVC decoding of 4K video at 60 frames per second.
 | ||
| 
 | ||
| SOC  Hisilicon Hi3798CV200
 | ||
| CPU  Quad-core ARM Cortex-A53 64 bit
 | ||
| DRAM DDR3/3L/4 SDRAM interface, maximum 32-bit data width 2 GB
 | ||
| USB  Two USB 2.0 ports One USB 3.0 ports
 | ||
| CONSOLE  USB-micro port for console support
 | ||
| ETHERNET  1 GBe Ethernet
 | ||
| PCIE  One PCIe 2.0 interfaces
 | ||
| JTAG  8-Pin JTAG
 | ||
| EXPANSION INTERFACE  Linaro 96Boards Low Speed Expansion slot
 | ||
| DIMENSION Standard 160×120 mm 96Boards Enterprice Edition form factor
 | ||
| WIFI  802.11AC 2*2 with Bluetooth
 | ||
| CONNECTORS  One connector for Smart Card One connector for TSI
 | ||
| 
 | ||
| 
 | ||
| ================================================================================
 | ||
| 			BUILD INSTRUCTIONS
 | ||
| ================================================================================
 | ||
| 
 | ||
| Note of warning:
 | ||
| ================
 | ||
| 
 | ||
| U-boot has a *strong* dependency with the l-loader and the arm trusted firmware
 | ||
| repositories.
 | ||
| 
 | ||
| The boot sequence is:
 | ||
| 	l-loader --> arm_trusted_firmware --> u-boot
 | ||
| 
 | ||
| U-Boot needs to be aware of the BL31 runtime location and size to avoid writing
 | ||
| over it. Currently, BL31 is being placed below the kernel text offset (check
 | ||
| poplar.c) but this could change in the future.
 | ||
| 
 | ||
| The current version of u-boot has been tested with:
 | ||
|  - https://github.com/Linaro/poplar-l-loader.git
 | ||
| 
 | ||
| 	commit f0988698dcc5c08bd0a8f50aa0457e138a5f438c
 | ||
| 	Author: Alex Elder <elder@linaro.org>
 | ||
| 	Date:   Fri Jun 16 08:57:59 2017 -0500
 | ||
| 
 | ||
|     l-loader: use external memory region definitions
 | ||
| 
 | ||
|     The ARM Trusted Firmware code now has a header file that collects
 | ||
|     all the definitions for the memory regions used for its boot stages.
 | ||
|     Include that file where needed, and use the definitions found therein
 | ||
| 
 | ||
|     Signed-off-by: Alex Elder <elder@linaro.org>
 | ||
| 
 | ||
| 
 | ||
|  - https://github.com/Linaro/poplar-arm-trusted-firmware.git
 | ||
| 
 | ||
| 	commit 6ac42dd3be13c99aa8ce29a15073e2f19d935f68
 | ||
| 	Author: Alex Elder <elder@linaro.org>
 | ||
| 	Date:   Fri Jun 16 09:24:50 2017 -0500
 | ||
| 
 | ||
|     poplar: define memory regions in a separate file
 | ||
| 
 | ||
|     Separate the definitions for memory regions used for the BL stage
 | ||
|     images and FIP into a new file.  The "l-loader" image uses knowledge
 | ||
|     of the sizes and locations of these memory regions, and it can now
 | ||
|     include this (external) header to get these definitions, rather than
 | ||
|     having to make coordinated changes to both code bases.
 | ||
| 
 | ||
|     The new file has a complete set of definitions (more than may be
 | ||
|     required by one or the other user).  It also includes a summary of
 | ||
|     how the boot process works, and how it uses these regions.
 | ||
| 
 | ||
|     It should now be relatively easy to adjust the sizes and locations
 | ||
|     of these memory regions, or to add to them (e.g. for TEE).
 | ||
| 
 | ||
|     Signed-off-by: Alex Elder <elder@linaro.org>
 | ||
| 
 | ||
| 
 | ||
| Compile from source:
 | ||
| ====================
 | ||
| 
 | ||
| Get all the sources
 | ||
| 
 | ||
|   > mkdir -p ~/poplar/src ~/poplar/bin
 | ||
|   > cd ~/poplar/src
 | ||
|   > git clone https://github.com/Linaro/poplar-l-loader.git l-loader
 | ||
|   > git clone https://github.com/Linaro/poplar-arm-trusted-firmware.git atf
 | ||
|   > git clone https://github.com/Linaro/poplar-u-boot.git u-boot
 | ||
| 
 | ||
| Make sure you are using the correct branch on each one of these repositories.
 | ||
| The definition of "correct" might change over time (at this moment in time this
 | ||
| would be the "latest" branch).
 | ||
| 
 | ||
| Compile U-Boot:
 | ||
| ===============
 | ||
| 
 | ||
|   Prerequisite:
 | ||
|   # sudo apt-get install device-tree-compiler
 | ||
| 
 | ||
|   > cd ~/poplar/src/u-boot
 | ||
|   > make CROSS_COMPILE=aarch64-linux-gnu- poplar_defconfig
 | ||
|   > make CROSS_COMPILE=aarch64-linux-gnu-
 | ||
|   > cp u-boot.bin ~/poplar/bin
 | ||
| 
 | ||
| Compile ARM Trusted Firmware (ATF):
 | ||
| ===================================
 | ||
| 
 | ||
|   > cd ~/poplar/src/atf
 | ||
|   > make CROSS_COMPILE=aarch64-linux-gnu- all fip \
 | ||
| 		SPD=none BL33=~/poplar/bin/u-boot.bin DEBUG=1 PLAT=poplar
 | ||
| 
 | ||
| Copy resulting binaries
 | ||
|   > cp build/hi3798cv200/debug/bl1.bin ~/poplar/src/l-loader/atf/
 | ||
|   > cp build/hi3798cv200/debug/fip.bin ~/poplar/src/l-loader/atf/
 | ||
| 
 | ||
| Compile l-loader:
 | ||
| =================
 | ||
| 
 | ||
|   > cd ~/poplar/src/l-loader
 | ||
|   > make clean
 | ||
|   > make CROSS_COMPILE=arm-linux-gnueabi-
 | ||
| 
 | ||
|    Due to BootROM requiremets, rename l-loader.bin to fastboot.bin:
 | ||
|   > cp l-loader.bin ~/poplar/bin/fastboot.bin
 | ||
| 
 | ||
| 
 | ||
| ================================================================================
 | ||
| 			FLASH INSTRUCTIONS
 | ||
| ================================================================================
 | ||
| 
 | ||
| Two methods:
 | ||
| 
 | ||
| Using USB debrick support:
 | ||
| 	Copy fastboot.bin to a FAT partition on the USB drive and reboot the
 | ||
|        poplar board while pressing S3(usb_boot).
 | ||
| 
 | ||
|        The system will execute the new u-boot and boot into a shell which you
 | ||
|        can then use to write to eMMC.
 | ||
| 
 | ||
| Using U-BOOT from shell:
 | ||
| 	1) using AXIS usb ethernet dongle and tftp
 | ||
| 	2) using FAT formated USB drive
 | ||
| 
 | ||
| 
 | ||
| 1. TFTP (USB ethernet dongle)
 | ||
| =============================
 | ||
| 
 | ||
| Plug a USB AXIS ethernet dongle on any of the USB2 ports on the Poplar board.
 | ||
| Copy fastboot.bin to your tftp server.
 | ||
| In u-boot make sure your network is properly setup.
 | ||
| 
 | ||
| Then
 | ||
| 
 | ||
| => tftp 0x30000000 fastboot.bin
 | ||
| starting USB...
 | ||
| USB0:   USB EHCI 1.00
 | ||
| scanning bus 0 for devices... 1 USB Device(s) found
 | ||
| USB1:   USB EHCI 1.00
 | ||
| scanning bus 1 for devices... 3 USB Device(s) found
 | ||
|        scanning usb for storage devices... 0 Storage Device(s) found
 | ||
|        scanning usb for ethernet devices... 1 Ethernet Device(s) found
 | ||
| Waiting for Ethernet connection... done.
 | ||
| Using asx0 device
 | ||
| TFTP from server 192.168.1.4; our IP address is 192.168.1.10
 | ||
| Filename 'poplar/fastboot.bin'.
 | ||
| Load address: 0x30000000
 | ||
| Loading: #################################################################
 | ||
| 	 #################################################################
 | ||
| 	 ###############################################################
 | ||
| 	 2 MiB/s
 | ||
| done
 | ||
| Bytes transferred = 983040 (f0000 hex)
 | ||
| 
 | ||
| => mmc write 0x30000000 0 0x780
 | ||
| 
 | ||
| MMC write: dev # 0, block # 0, count 1920 ... 1920 blocks written: OK
 | ||
| => reset
 | ||
| 
 | ||
| 
 | ||
| 2. USING USB FAT DRIVE
 | ||
| =======================
 | ||
| 
 | ||
| Copy fastboot.bin to any partition on a FAT32 formated usb flash drive.
 | ||
| Enter the uboot prompt
 | ||
| 
 | ||
| => fatls usb 0:2
 | ||
|    983040   fastboot.bin
 | ||
| 
 | ||
| 1 file(s), 0 dir(s)
 | ||
| 
 | ||
| => fatload usb 0:2 0x30000000 fastboot.bin
 | ||
| reading fastboot.bin
 | ||
| 983040 bytes read in 44 ms (21.3 MiB/s)
 | ||
| 
 | ||
| => mmc write 0x30000000 0 0x780
 | ||
| 
 | ||
| MMC write: dev # 0, block # 0, count 1920 ... 1920 blocks written: OK
 | ||
| 
 | ||
| 
 | ||
| ================================================================================
 | ||
| 				BOOT TRACE
 | ||
| ================================================================================
 | ||
| 
 | ||
| Bootrom start
 | ||
| Boot Media: eMMC
 | ||
| Decrypt auxiliary code ...OK
 | ||
| 
 | ||
| lsadc voltage min: 000000FE, max: 000000FF, aver: 000000FE, index: 00000000
 | ||
| 
 | ||
| Entry boot auxiliary code
 | ||
| 
 | ||
| Auxiliary code - v1.00
 | ||
| DDR code - V1.1.2 20160205
 | ||
| Build: Mar 24 2016 - 17:09:44
 | ||
| Reg Version:  v134
 | ||
| Reg Time:     2016/03/18 09:44:55
 | ||
| Reg Name:     hi3798cv2dmb_hi3798cv200_ddr3_2gbyte_8bitx4_4layers.reg
 | ||
| 
 | ||
| Boot auxiliary code success
 | ||
| Bootrom success
 | ||
| 
 | ||
| LOADER:  Switched to aarch64 mode
 | ||
| LOADER:  Entering ARM TRUSTED FIRMWARE
 | ||
| LOADER:  CPU0 executes at 0x000ce000
 | ||
| 
 | ||
| INFO:    BL1: 0xe1000 - 0xe7000 [size = 24576]
 | ||
| NOTICE:  Booting Trusted Firmware
 | ||
| NOTICE:  BL1: v1.3(debug):v1.3-372-g1ba9c60
 | ||
| NOTICE:  BL1: Built : 17:51:33, Apr 30 2017
 | ||
| INFO:    BL1: RAM 0xe1000 - 0xe7000
 | ||
| INFO:    BL1: Loading BL2
 | ||
| INFO:    Loading image id=1 at address 0xe9000
 | ||
| INFO:    Image id=1 loaded at address 0xe9000, size = 0x5008
 | ||
| NOTICE:  BL1: Booting BL2
 | ||
| INFO:    Entry point address = 0xe9000
 | ||
| INFO:    SPSR = 0x3c5
 | ||
| NOTICE:  BL2: v1.3(debug):v1.3-372-g1ba9c60
 | ||
| NOTICE:  BL2: Built : 17:51:33, Apr 30 2017
 | ||
| INFO:    BL2: Loading BL31
 | ||
| INFO:    Loading image id=3 at address 0x129000
 | ||
| INFO:    Image id=3 loaded at address 0x129000, size = 0x8038
 | ||
| INFO:    BL2: Loading BL33
 | ||
| INFO:    Loading image id=5 at address 0x37000000
 | ||
| INFO:    Image id=5 loaded at address 0x37000000, size = 0x58f17
 | ||
| NOTICE:  BL1: Booting BL31
 | ||
| INFO:    Entry point address = 0x129000
 | ||
| INFO:    SPSR = 0x3cd
 | ||
| INFO:    Boot bl33 from 0x37000000 for 364311 Bytes
 | ||
| NOTICE:  BL31: v1.3(debug):v1.3-372-g1ba9c60
 | ||
| NOTICE:  BL31: Built : 17:51:33, Apr 30 2017
 | ||
| INFO:    BL31: Initializing runtime services
 | ||
| INFO:    BL31: Preparing for EL3 exit to normal world
 | ||
| INFO:    Entry point address = 0x37000000
 | ||
| INFO:    SPSR = 0x3c9
 | ||
| 
 | ||
| 
 | ||
| U-Boot 2017.05-rc2-00130-gd2255b0 (Apr 30 2017 - 17:51:28 +0200)poplar
 | ||
| 
 | ||
| Model: HiSilicon Poplar Development Board
 | ||
| BOARD: Hisilicon HI3798cv200 Poplar
 | ||
| DRAM:  1 GiB
 | ||
| MMC:   Hisilicon DWMMC: 0
 | ||
| In:    serial@f8b00000
 | ||
| Out:   serial@f8b00000
 | ||
| Err:   serial@f8b00000
 | ||
| Net:   Net Initialization Skipped
 | ||
| No ethernet found.
 | ||
| 
 | ||
| Hit any key to stop autoboot:  0
 | ||
| starting USB...
 | ||
| USB0:   USB EHCI 1.00
 | ||
| scanning bus 0 for devices... 1 USB Device(s) found
 | ||
| USB1:   USB EHCI 1.00
 | ||
| scanning bus 1 for devices... 4 USB Device(s) found
 | ||
|        scanning usb for storage devices... 1 Storage Device(s) found
 | ||
|        scanning usb for ethernet devices... 1 Ethernet Device(s) found
 | ||
| 
 | ||
| USB device 0:
 | ||
|     Device 0: Vendor: SanDisk Rev: 1.00 Prod: Cruzer Blade
 | ||
| 	    Type: Removable Hard Disk
 | ||
| 	    Capacity: 7632.0 MB = 7.4 GB (15630336 x 512)
 | ||
| ... is now current device
 | ||
| Scanning usb 0:1...
 | ||
| =>
 |