• Home
Name Date Size #Lines LOC

..--

KconfigD12-May-2024186 1610

MAINTAINERSD12-May-2024415 1312

MakefileD12-May-2024106 51

READMED12-May-20244.5 KiB160107

README.pico-imx7d_BL33D12-May-20242.1 KiB4538

pico-imx7d.cD12-May-20247.2 KiB292215

spl.cD12-May-20243.8 KiB165137

README

1How to update U-Boot on pico-imx7d board
2----------------------------------------
3
4Required software on the host PC:
5
6- imx_usb_loader: https://github.com/boundarydevices/imx_usb_loader
7
8Build U-Boot for pico:
9
10$ make mrproper
11$ make pico-imx7d_defconfig
12$ make
13
14This generates the SPL and u-boot-dtb.img binaries.
15
161. Loading U-Boot via USB Serial Download Protocol
17
18Note: This method is convenient for development purposes.
19If the eMMC has already a U-Boot flashed with DFU support then
20the user can go to step 2 below in order to update U-Boot.
21
22Put pico board in USB download mode (refer to the PICO-iMX7D Quick Start Guide
23page 3)
24
25Connect a USB to serial adapter between the host PC and pico.
26
27Connect a USB cable between the OTG pico port and the host PC.
28
29Note: Some computers may be a bit strict with USB current draw and will
30shut down their ports if the draw is too high. The solution for that is
31to use an externally powered USB hub between the board and the host computer.
32
33Open a terminal program such as minicom.
34
35Copy SPL and u-boot-dtb.img to the imx_usb_loader folder.
36
37Load the SPL binary via USB:
38
39$ sudo ./imx_usb SPL
40
41Load the u-boot-dtb.img binary via USB:
42
43$ sudo ./imx_usb u-boot-dtb.img
44
45Then U-Boot starts and its messages appear in the console program.
46
47Use the default environment variables:
48
49=> env default -f -a
50=> saveenv
51
522. Flashing U-Boot into the eMMC
53
54Run the DFU agent so we can flash the new images using dfu-util tool:
55
56=> dfu 0 mmc 0
57
58Flash SPL and u-boot-dtb.img into the eMMC running the following commands on a PC:
59
60$ sudo dfu-util -D SPL -a spl
61
62$ sudo dfu-util -D u-boot-dtb.img -a u-boot
63
64Remove power from the pico board.
65
66Put pico board into normal boot mode.
67
68Power up the board and the new updated U-Boot should boot from eMMC.
69
70Booting in Falcon mode
71======================
72
73Generate a uImage kernel:
74
75$ make imx_v6_v7_defconfig (Using the default imx_v6_v7_defconfig configuration
76just for an example. In order to boot faster the user should customize the
77defconfig by only enabling the minimal required drivers).
78
79$ make -j4 uImage LOADADDR=0x80008000
80
81$ cp arch/arm/boot/uImage /tftpboot
82$ cp arch/arm/boot/dts/imx7d-pico-pi.dtb /tftpboot
83
84In the U-Boot prompt:
85
86Setup the server and board IP addresses:
87=> setenv serverip 192.168.0.10
88=> setenv ipaddr 192.168.0.11
89
90Get the dtb file:
91=> tftp ${fdt_addr} imx7d-pico-pi.dtb
92
93Get the kernel:
94=> tftp ${loadaddr} uImage
95
96Write the kernel at 2MB offset:
97=> mmc write ${loadaddr} 0x1000 0x5000
98
99Setup the bootargs:
100=> setenv bootargs 'console=ttymxc4,115200 root=/dev/mmcblk2p1 rootfstype=ext4 rootwait rw'
101
102Prepare args:
103=> spl export fdt ${loadaddr} - ${fdt_addr}
104## Booting kernel from Legacy Image at 80800000 ...
105   Image Name:   Linux-5.2.14
106   Image Type:   ARM Linux Kernel Image (uncompressed)
107   Data Size:    9077544 Bytes = 8.7 MiB
108   Load Address: 80008000
109   Entry Point:  80008000
110   Verifying Checksum ... OK
111## Flattened Device Tree blob at 83000000
112   Booting using the fdt blob at 0x83000000
113   Loading Kernel Image
114   Using Device Tree in place at 83000000, end 8300b615
115subcommand not supported
116subcommand not supported
117   Using Device Tree in place at 83000000, end 8300e615
118Argument image is now in RAM: 0x83000000
119=>
120
121Write 1MB of args data (0x800 sectors) to 1MB offset (0x800 sectors):
122
123=> mmc write ${fdt_addr} 0x800 0x800
124
125In order to boot with Falcon mode, activate the CONFIG_SPL_OS_BOOT
126option in the defconfig
127
128--- a/configs/pico-imx7d_defconfig
129+++ b/configs/pico-imx7d_defconfig
130@@ -67,3 +67,4 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
131 CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
132 CONFIG_CI_UDC=y
133 CONFIG_VIDEO=y
134+CONFIG_SPL_OS_BOOT=y
135
136Then rebuild U-Boot:
137
138$ make pico-imx7d_defconfig
139$ make -j4
140
141Launch UMS:
142=> ums 0 mmc 0
143
144Flash the new binaries:
145
146$ sudo dd if=SPL of=/dev/sdX bs=1k seek=1; sync
147$ sudo dd if=u-boot-dtb.img  of=/dev/sdX bs=1k seek=69; sync
148
149And then SPL binary will load and jump directly to the kernel:
150
151U-Boot SPL 2019.10-rc3-00284-g001c8ea94a-dirty (Sep 10 2019 - 12:46:01 -0300)
152Trying to boot from MMC1
153[    0.000000] Booting Linux on physical CPU 0x0
154[    0.000000] Linux version 5.2.14 (fabio@fabio-OptiPlex-7010) (gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1)) #30 SMP Wed Sep 10 12:36:27 -03 2019
155[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
156[    0.000000] CPU: div instructions available: patching division code
157[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
158[    0.000000] OF: fdt: Machine model: TechNexion PICO-IMX7D Board and PI baseboard
159...
160

README.pico-imx7d_BL33

1This document describes the instruction to build and flash ATF/OPTEE/U-Boot on
2pico-imx7d board. U-Boot is loaded as part of FIP image by ATF in this setup.
3The boot sequence is ATF -> OPTEE -> U-Boot -> Linux. U-Boot is in non-secure
4world in this case.
5
6- Build u-boot
7    Set environment variable of CROSS_COMPILE for your toolchain and ARCH=arm
8    $ make pico-imx7d_bl33_defconfig
9    $ make all
10
11- Download and build OPTEE
12    $ git clone git@github.com:OP-TEE/optee_os.git
13    $ make PLATFORM=imx PLATFORM_FLAVOR=mx7dpico_mbl CFG_BOOT_SECONDARY_REQUEST=y ARCH=arm
14
15- Download and build ATF
16    $ git clone https://git.linaro.org/landing-teams/working/mbl/arm-trusted-firmware.git -b linaro-imx7
17    $ make DEBUG=1 PLAT=picopi ARCH=aarch32 ARM_ARCH_MAJOR=7 \
18            CROSS_COMPILE=arm-linux-gnueabihf- LOG_LEVEL=50 V=1 \
19            CRASH_REPORTING=1 AARCH32_SP=optee all
20    Save file content in this link to file pico-imx7d.cfg:
21      http://git.linaro.org/landing-teams/working/mbl/u-boot.git/tree/board/technexion/pico-imx7d/pico-imx7d.cfg?h=linaro-imx
22    $ u-boot/tools/mkimage -n pico-imx7d.cfg -T imximage -e 0x9df00000 -d \
23            build/picopi/debug/bl2.bin bl2.imx
24
25- Create FIP image
26    Create a  fiptool_images/ folder in ATF folder, copy u-boot.bin in u-boot
27folder and tee*.bin in optee out/arm-plat-imx/core/tee/ folder to
28fiptool_images. Run below command in ATF folder to generate FIP image.
29    $ make -C tools/fiptool/
30    $ tools/fiptool/fiptool create --tos-fw fiptool_images/tee-header_v2.bin \
31          --tos-fw-extra1 fiptool_images/tee-pager_v2.bin \
32          --tos-fw-extra2 fiptool_images/tee-pageable_v2.bin \
33          --nt-fw fiptool_images/u-boot.bin \
34          fip.bin
35
36- Burn the images to eMMC for test.
37    Run below command in atf folder:
38    $ dd if=build/picopi/debug/bl2.bin.imx of=/dev/disk/by-id/usb-<your device>  bs=1024 seek=1;sync
39    $ dd if=fip.bin of=/dev/disk/by-id/usb-<your device>  bs=1024 seek=1;sync
40
41- Test
42    Just boot up your board and wait for u-boot start up after ATF's log.
43    For booting Linux in FIT image, please reference the FIT files in
44    u-boot doc/uImage.FIT/ folder.
45