Есть проблема: пересобрал ядро и хочу им заменить старое ядро (в нем неправильно сделана настройка одного пина - pinmux).
В документации на борду написано: форматнуть SD под FAT32, закинуть файлы и папки linux/image (MLO, boot.img, rootfs.gz, uImage) и замкнуть JP5.
Все делаю как написано - ничего не получается. Т.е. при замыкании JP5 и последующем включении питания - в консоль тупо выдется "С" и всё. Проверил настройку сигналов, отвечающих за загрузку (SYSBOOT) - все верно. В первом случае - загрузка из NAND, а при замыкании JP5 - из MMC0.
Согласно доке на проц - он понимает FAT32 и может найти в корне файл MLO.
Попробовал другой вариант: загрузка по TFTP. Поднял в сети TFTP-сервер, закинул в папку - те же файлы. Гружусь в u-boot, настраивают доступ к TFTP и скачиваю uImage (команда tftboot). Скачивается ядро нормально. После этого даю команду go 0x80008000. И на этом все заканчивается...
По умолчанию loadaddr в u-boot настроен на адрес 0x82000000, но при загрузке с NAND - ставится адрес 0x8000800. Поэтому и я такие адреса поставил.
Код
SBC8600# tftpboot
Auto negotitation failed
link up on port 1, speed 100, full duplex
Using cpsw device
TFTP from server 192.168.1.65; our IP address is 192.168.1.66
Filename 'uImage'.
Load address: 0x80008000
Loading: #################################################################
#################################################################
#################################################################
###########################
done
Bytes transferred = 3245384 (318548 hex)
SBC8600# go 0x80008000
## Starting application at 0x80008000 ...
Auto negotitation failed
link up on port 1, speed 100, full duplex
Using cpsw device
TFTP from server 192.168.1.65; our IP address is 192.168.1.66
Filename 'uImage'.
Load address: 0x80008000
Loading: #################################################################
#################################################################
#################################################################
###########################
done
Bytes transferred = 3245384 (318548 hex)
SBC8600# go 0x80008000
## Starting application at 0x80008000 ...
А вот - нормальная загрузка с NAND:
Код
U-Boot SPL 2011.09-svn55 (Dec 04 2012 - 09:29:02)
Texas Instruments Revision detection unimplemented
Booting from NAND...
U-Boot 2011.09-svn55 (Dec 04 2012 - 09:29:02)
I2C: ready
DRAM: 512 MiB
WARNING: Caches not enabled
Did not find a recognized configuration, assuming General purpose EVM in Profile 0 with Daughter board
NAND: HW ECC Hamming Code selected
512 MiB
MMC: OMAP SD/MMC: 0
Net: cpsw
Hit any key to stop autoboot: 0
Card did not respond to voltage select!
Booting from nand ...
HW ECC BCH8 Selected
NAND read: device 0 offset 0x280000, size 0x400000
4194304 bytes read: OK
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Linux-3.2.0
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3245320 Bytes = 3.1 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Texas Instruments Revision detection unimplemented
Booting from NAND...
U-Boot 2011.09-svn55 (Dec 04 2012 - 09:29:02)
I2C: ready
DRAM: 512 MiB
WARNING: Caches not enabled
Did not find a recognized configuration, assuming General purpose EVM in Profile 0 with Daughter board
NAND: HW ECC Hamming Code selected
512 MiB
MMC: OMAP SD/MMC: 0
Net: cpsw
Hit any key to stop autoboot: 0
Card did not respond to voltage select!
Booting from nand ...
HW ECC BCH8 Selected
NAND read: device 0 offset 0x280000, size 0x400000
4194304 bytes read: OK
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Linux-3.2.0
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3245320 Bytes = 3.1 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
XIP Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Соответственно вопросы:
1. Почему не получается загрузка с SD ?
2. Почему не получается загрузка с TFTP ?
3. Можно ли подсунуть в NAND второе ядро и в u-boot попробовать загрузиться с него (lilo такое умеет).
4. Можно ли вообще без SD/TFTP - безболезненно заменить ядро с возможность восстановления ? Например без перенастройки u-boot - выгрузить старое ядро и загрузить новое?
Заранее спасибо за ответы.
P.S. Плата: SBC8600 (embest), проц: AM3359, сборка: Angstrom Linux. Загрузчик: u-boot.