Задать вопрос
@DarkyFoxy

Как портировать 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?
  • Вопрос задан
  • 30 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы