имеется контроллер mini2440 c установленным u-boot загрузчиком (не важно в NOR или NAND)
Допустим Вам захотелось в полный экран показывать картинку-заставку при работе u-boot (это время между включением и началом загрузки ядра ~ 7 сек)
Сразу скажу что с началом загрузки ядра картинку тоже можно показывать, причем в ядре даже движущуюся.
Если говорить о анимации по факту можно вывести две картинки одну при старте загрузчика, другую непосредственно до начала старта ядра (через 3 сек.)
итак как это делается:
- подключаем mini2440 serial и USB портами
- получаем в одной консоли доступ на mini2440 в другой работаем по конфигурации и сборке на x86 линуксе
- кросс компилятор для архитектуры armv4tl-softfloat-linux-gnueabi должен быть настроен в x86 линуксе (читай предыдущие статьи как это сделать)
- получаем текущий репозитарий u-boot и устанавливаем окружение кросс компиляции.
cd ~
mkdir uboot ; cd uboot
git clone
export CROSS_COMPILE=armv4tl-softfloat-linux-gnueabi-
cd mini2440 - качаем из вложения патч, выкладываем в корне папки сборки u-boot и накладываем патч
calculate mini2440 # patch -p1 < ./u-boot-splash.patchpatching file board/mini2440/mini2440.c
patching file drivers/video/Makefile
patching file drivers/video/cfb_console.c
patching file include/configs/mini2440.h
для успешной сборки удостоверьтесь что новый файл видеодрайвера из архива (drivers/video/s3c2440_fb.c) лег в нужую папку - собираем модифицированный u-boot :
make mini2440_config
make all - включаем mini2440 (любой режим NOR/NAND в котором уже есть обычный u-boot) загружаемся в u-boot консоль - прерываем загрузку
- меняем переменную окружения указывающую как разбивать NAND разделы
MINI2440 # setenv mtdparts mtdparts=mini2440-nand:384k@0(u-boot),128k(u-boot_env),5m(kernel),256k(splash),-(rootfs)
MINI2440 # mtdpartsdevice nand0 <mini2440-nand>, # parts = 5
#: name size offset mask_flags
0: u-boot 0x00060000 0x00000000 0
1: u-boot_env 0x00020000 0x00060000 0
2: kernel 0x00500000 0x00080000 0
3: splash 0x00040000 0x00580000 0
4: rootfs 0x07a40000 0x005c0000 0
active partition: nand0,0 - (u-boot) 0x00060000 @ 0x00000000
defaults:
mtdids : nand0=mini2440-nand
mtdparts: <NULL> - заливаем с хоста новый образ загрузчика
dfu-util -a 0 -D ./u-boot.binMINI2440 # DFU: Switching to DFU Mode
Starting DFU DOWNLOAD to RAM (0x32000000) - на контроллере стираем место под старый загрузчик и заменяем его новым
MINI2440 # nand erase u-bootNAND erase: device 0 offset 0x0, size 0x60000
Erasing at 0x40000 -- 100% complete.
OK
MINI2440 # nand write 0x32000000 u-bootNAND write: device 0 offset 0x0, size 0x60000
393216 bytes written: OK - можно перегружать mini2440.
пока в разделе splash нет требуемой картинки на экран будет выведена маленькая иконка пингвинчика
- после перезагрузки контроллер ругнется на отсутствие правильных переменных окружения.
восстановим их:
MINI2440 # dynpart
MINI2440 # dynenv set u-boot_env
MINI2440 # saveenv - теперь загрузим на контроллер правильную (230x320x24bit BMP) картинку:
dfu-util -a 0 -D ./RoboForum_Logo_240_320.bmp
MINI2440 # bmp info 0x32000000NAND read: device 0 offset 0x580000, size 0x40000
262144 bytes read: OK
MINI2440 # bmp info 32000000
Image size : 240 x 320
Bits per pixel: 24
Compression : 0 - проверим что она вообще может отобразиться:
MINI2440 # bmp display 0x32000000 - если всё в порядке записываем картинку в раздел splash (NAND)
MINI2440 # nand write 0x32000000 splash
готово
-- все косяки которые я словил и исправил допишу завтра --

а можно про резервирование и патчи более простым языком описать?