mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-23 11:33:32 +00:00
289 lines
9.2 KiB
Text
289 lines
9.2 KiB
Text
|
================================================================================
|
|||
|
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...
|
|||
|
=>
|