Ссылки:
1 2 3 4 5 6 |
https://github.com/b14esh/bash/blob/master/sdcard-builder/sdcard-builder.sh https://habr.com/ru/post/434942/ https://habr.com/ru/sandbox/132293/ ftp://ftp.denx.de/pub/u-boot/ - тут брать uboot https://u-boot.readthedocs.io/en/latest/ https://github.com/ARM-software/u-boot/blob/master/doc/README.memory-test |
Компиляция на примере debian 11:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
0. Скачиваем cd /opt #git clone https://source.codeaurora.org/external/qoriq/qoriq-components/u-boot.git - офф nxp git #git clone https://github.com/u-boot/u-boot.git - офф реп u-boot #wget ftp://ftp.denx.de/pub/u-boot/u-boot-2023.04-rc4.tar.bz2 0.1 Распаковываем tar -xvf u-boot-2023.04-rc4.tar.bz2 0.2 Переходим в каталог cd u-boot-2023.04-rc4 0.3 использование git / git переключения веток git clone https://github.com/u-boot/u-boot.git cd u-boot git status git tag git checkout NAME_TAG 1. Готовимся к компиляции make help - получаем помощь если требуется make distclean 2. Смотрим что за что отвечает #make O=../olimex-uboot # адрес где будет лежать результат сборки # -j4 # количество потоков для сборки # ARCH=arm # тип архитектуры для которой собирается # CROSS_COMPILE=arm-linux-gnueabihf- # кросс компилятор нашего процессора # xconfig # команда запуска GUI конфигуратора 2.1 Собственно если мы не вызываем xconfig то нам надо перед компиляцией создать файл конфигурации !!! собственно тут веселье только начинается !!! возможно понадобятся обяз параметры #make oldconfig #make menuconfig #make xconfig Но не спешите это запускать!!! в каталоге ./configs/ есть готовые конфиги для оборудования 3. Приступаем к первой сборке #make O=../me-uboot -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- #make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- #make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_zero_defconfig #export ARCH=arm64 # файл some_board_defconfig соответствует имени в каталоге .config # ls1046afrwy_tfa_defconfig или вот это orangepi_zero_defconfig #make some_board_defconfig #make CROSS_COMPILE=aarch64-unknown-none- #packages/firmware/u-boot.mk:34: export ARCH=arm && export CROSS_COMPILE=arm-linux-gnueabihf-; \ #packages/firmware/u-boot.mk:36: export ARCH=arm64 && export CROSS_COMPILE=aarch64-linux-gnu-; \ make distclean make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- orangepi_zero_defconfig make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- |
nxp
1 2 3 4 5 6 7 8 9 10 11 |
The compiled U-Boot image, u-boot-with-spl-pbl.bin, is available at u-boot/. You need to use u-boot-with-spl-pbl.bin because for SD boot, ls104x devices use different way for bootloader from ls1088/ls2088/lx2160 devices. #make -j4 ls1046afrwy_tfa_defconfig make distclean export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- make ls1046ardb_sdcard_defconfig make -j4 dd if=u-boot-with-spl-pbl.bin of=/dev/sdX bs=512 seek=8 conv=fsync |
error install mtest
1 2 3 4 5 6 7 8 9 10 11 12 |
# board/freescale/ls1046ardb/ls1046ardb_rcw_sd.cfg #https://e2e.ti.com/support/processors-group/processors/f/processors-forum/717115/linux-am3352-adding-mtest-command-in-u-boot error: ‘CONFIG_SYS_MEMTEST_START’ undeclared (first use in this function); did you mean ‘CONFIG_SYS_MEMTEST_SCRATCH’? error: ‘CONFIG_SYS_MEMTEST_END’ undeclared (first use in this function); did you mean ‘CONFIG_SYS_MEMTEST_SCRATCH’? vim include/configs/ls1046a_common.h ---------------------------------------- #define CONFIG_CMD_MEMTEST #define CONFIG_SYS_ALT_MEMTEST #define CONFIG_SYS_MEMTEST_START 0xFF000000 #define CONFIG_SYS_MEMTEST_END 0xFFFFFFFF ---------------------------------------- |
boot ram
1 2 3 4 |
setenv bootargs root=/dev/ram0 earlycon=uart8250,mmio,0x21c0500 console=ttyS0,115200 sf probe 0:0 sf read 0x90480000 1000000 2800000 bootm 0x90480000 |
DEBUG
1 2 3 4 5 |
vim include/configs/ls1046a_common.h ------------------------------------ #define DEBUG 1 #define DDR_DEBUG 1 ------------------------------------ |
DDR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
git clone https://source.codeaurora.org/external/qoriq/qoriq-components/u-boot.git make distclean export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- make ls1046ardb_sdcard_defconfig make menuconfig <----------- на этом этапе добавил чего надо от uboot / mtest minfo и т.д. далее скопировал исходы из другой платы где есть какая то память (nxp форуме нагуглил ) cp board/freescale/ls1043ardb/ddr.h board/freescale/ls1046ardb/ddr.h <---- поправил cp board/freescale/ls1043ardb/ddr.c board/freescale/ls1046ardb/ddr.c <---- поправил vim include/configs/ls1046ardb.h <---- поправил vim include/common.h <--------- поправил vim ddr.c --------- /* DDR model number: MT40A512M8HX-093E */ #ifdef CONFIG_SYS_DDR_RAW_TIMING dimm_params_t ddr_raw_timing = { .n_ranks = 1, .rank_density = 4294967296u, .capacity = 429496726u, .primary_sdram_width = 64, .ec_sdram_width = 8, .registered_dimm = 0, .mirrored_dimm = 0, .n_row_addr = 16, .n_col_addr = 10, .bank_addr_bits = 0, .bank_group_bits = 1, .edc_config = 0, .burst_lengths_bitmask = 0x0c, .tckmin_x_ps = 750, .tckmax_ps = 1900, .caslat_x = 0x0001FFE00, .taa_ps = 13320, .trcd_ps = 13320, .trp_ps = 13320, .tras_ps = 33000, .trc_ps = 46500, .trfc1_ps = 350000, .trfc2_ps = 260000, .trfc4_ps = 160000, .tfaw_ps = 15000, .trrds_ps = 5300, .trrdl_ps = 6400, .tccdl_ps = 5355, .refresh_rate_ps = 7800000, .dq_mapping_ors = 0, }; --------- |
uboot env
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
printenv - показать переменные setenv ipaddr 192.168.1.126 - задать адрес для интерфейса set ipaddr2 192.168.1.127 - задать еще один ip адрес setenv serverip 192.168.1.1 - задать адрес для tfp setenv netmask 255.255.255.0 - задать vfcre setenv ethaddr 02:80:ad:20:57:23 - задать мак адрес setenv bootargs "console=ttyS0,115200 root=/dev/ram" setenv bootdelay 3 setenv baudrate 115200 setenv stdin serial setenv stdout serial setenv stderr serial setenv bootfile "img-dnp9200" setenv bootcmd bootm 0x10040000 setenv ethact fm1-mac4 setenv ethaddr 00:00:00:00:00:04 setenv ethprime FM1@DTSEC4 setenv ethact fm1-mac3 setenv ethaddr 00:00:00:00:00:F4 setenv ethprime FM1@DTSEC3 |
Диагностика uboot:
1 2 3 4 5 |
dm tree mdio list mii device net list bdinfo |