Как лучше портировать U-boot на ASR1803?
По вводным: есть задача: Портировать актуальный U-boot на камень ASR1803 (он же PXA1826). Минимальная задача попасть в консоль U-boot.
Характеристики камня:
- Сейчас ситуация такая: ядро - Cortex-7A (есть еще второе Cortex-5R, но это не нужно при загрузки. Грузимся мы с Cortex-7A).
- По вводным: flash - 256M, база 0x8000_0000
- По вводным: dDR - 128M, база 0x0000_0000
- По вводным: uART - база 0xD401_7000, тактирование 26MHz
Сейчас ситуация такая: до старта U-boot грузиться Boot-ROM, после чего грузиться загрузчик первого уровня. Загрузчик первого уровня инициализирует FLASH, DDR и UART (ну и по мелочи). Так что в U-boot по идее это можно не трогать. Загрузчик 1 уровня так же копирует U-boot в DDR по адресу 0x0030_8000. И U-boot стартует уже из DDR.
Что было сделано:
Клонирован репозиторийhttps://github.com/u-boot/u-boot.
По вводным: добавлен файл board/asr/asr1803/asr1803.c:
#include <asm/global_data.h> DECLARE_GLOBAL_DATA_PTR; int dram_init(void) { gd->ram_size = 0x08000000; return 0; } int board_init(void) { return 0; }
По вводным: добавлен файл board/asr/asr1803/Kconfig:
if TARGET_ASR1803 config SYS_BOARD default "asr1803" config SYS_VENDOR default "asr" config SYS_CONFIG_NAME default "asr1803" endif
По вводным: добавлен файл board/asr/asr1803/Makefile:
obj-y += asr1803.o
По вводным: добавлен файл configs/asr1803_defconfig:
CONFIG_ARM=y CONFIG_ARCH_NZAS=y CONFIG_TARGET_ASR1803=y CONFIG_SYS_LOAD_ADDR=0x00308000 CONFIG_TEXT_BASE=0x00308000 CONFIG_SYS_MALLOC_F_LEN=0x4000 CONFIG_OF_CONTROL=y CONFIG_DEFAULT_DEVICE_TREE="asr1803-p403" CONFIG_DM=y CONFIG_DM_SERIAL=y CONFIG_DEBUG_UART=y CONFIG_DEBUG_UART_NS16550=y CONFIG_DEBUG_UART_BASE=0xD4017000 CONFIG_DEBUG_UART_CLOCK=26000000 CONFIG_DEBUG_UART_SHIFT=2 CONFIG_DEBUG_UART_ANNOUNCE=y CONFIG_BAUDRATE=115200 CONFIG_CONSOLE_NORMAL=y CONFIG_LOGLEVEL=7 CONFIG_SERIAL=y CONFIG_SERIAL_NS16550=y CONFIG_SYS_NS16550=y CONFIG_SYS_NS16550_COM1=0xD4017000 CONFIG_SYS_NS16550_CLK=26000000 CONFIG_SYS_NS16550_REG_SIZE=-4 CONFIG_TIMER=y
По вводным: добавлен файл arch/arm/mach-nzas/Kconfig:
config ARCH_NZAS bool "NZAS SoCs" depends on ARM select CPU_V7A config TARGET_ASR1803 bool "ASR1803 board" config SYS_VENDOR default "asr" config SYS_BOARD default "asr1803" config SYS_CONFIG_NAME default "asr1803" config SYS_SOC default "nzas"
По вводным: в файл arch/arm/Kconfig добавлено:
+source "arch/arm/mach-nzas/Kconfig" +source "board/asr/asr1803/Kconfig"
По вводным: в файл arch/arm/Makefile добавлено:
+machine-$(CONFIG_ARCH_NZAS) += nzas
Собираю:
make -j4 V=1 CROSS_COMPILE=arm-none-eabi- asr1803_defconfig make -j4 V=1 CROSS_COMPILE=arm-none-eabi-
По вводным: nZAS - кодовое название SOC - ASR1803
Основная проблема:
Сейчас ситуация такая: сборка, с упорством пьяного, идет под ARM64 (armv8), а мне нужно armv7 (ARM32). Ну и соответственно ничего не запускается.
Нужно понять: может кто поделиться опытом портирования U-Boot?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос