реклама на сайте
подробности

 
 
> Загрузка НЕ из NAND Flash., Хочу заменить ядро - не получается загрузить другое ядро.
Atridies
сообщение Aug 2 2015, 17:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



Опять потревожу уважаемое сообщество.

Есть проблема: пересобрал ядро и хочу им заменить старое ядро (в нем неправильно сделана настройка одного пина - 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 ...


А вот - нормальная загрузка с 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.



Соответственно вопросы:
1. Почему не получается загрузка с SD ?
2. Почему не получается загрузка с TFTP ?
3. Можно ли подсунуть в NAND второе ядро и в u-boot попробовать загрузиться с него (lilo такое умеет).
4. Можно ли вообще без SD/TFTP - безболезненно заменить ядро с возможность восстановления ? Например без перенастройки u-boot - выгрузить старое ядро и загрузить новое?

Заранее спасибо за ответы.

P.S. Плата: SBC8600 (embest), проц: AM3359, сборка: Angstrom Linux. Загрузчик: u-boot.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Atridies
сообщение Aug 3 2015, 16:52
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



Переменные окружения u-boot.

Код
android_args=run bootargs_defaults;setenv bootargs ${bootargs} dispmode=${dispmode} root=${android_root}  rootfstype=${nand_root_fs_type} earlyprintk init=/init androidboot.console=ttyO0
android_boot=echo Booting from android ...; run android_args; nandecc hw 2; nand read.i ${kloadaddr} ${nand_src_addr} ${nand_img_siz}; bootm ${kloadaddr}
android_root=ubi0:rootfs  ubi.mtd=7,2048
autoload=yes
baudrate=115200
bootargs_defaults=setenv bootargs console=${console} ${optargs}
bootcmd=if mmc rescan; then echo SD/MMC found on device ${mmc_dev};if run loadbootenv; then echo Loaded environment from ${bootenv};run importbootenv;fi;if test -n ${uenvcmd}; then echo Running uenvcmd ...;run uenvcmd;fi;if run mmc_load_image; then run mmc_args;bootm ${kloadaddr};fi;fi;run nand_boot
bootdelay=3
bootenv=uEnv.txt
bootfile=uImage
console=ttyO0,115200n8
consoleblank=0
dispmode=4.3inch_LCD
dvsdk_args=run bootargs_defaults;setenv bootargs ${bootargs} dispmode=${dispmode} root=${dvsdk_root}  rootfstype=${dvsdk_root_fs_type} earlyprintk
dvsdk_boot=echo Booting from dvsdk ...; run dvsdk_args; mmc rescan; run dvsdk_load_image;bootm ${kloadaddr}
dvsdk_load_image=fatload mmc ${mmc_dev} ${kloadaddr} ${bootfile};
dvsdk_root=/dev/mmcblk0p2 rw
dvsdk_root_fs_type=ext3 rootwait
ethact=cpsw
ethaddr=bc:6a:29:57:11:80
importbootenv=echo Importing environment from mmc ...; env import -t ${loadaddr} ${filesize}
ip_method=none
ipaddr=192.168.1.66
kloadaddr=0x80007fc0
loadaddr=0x80008000
loadbootenv=fatload mmc ${mmc_dev} ${loadaddr} ${bootenv}
mmc_args=run bootargs_defaults;setenv bootargs ${bootargs} dispmode=${dispmode} consoleblank=${consoleblank} root=${mmc_root} initrd=${rdloadaddr},32MB rootfstype=${mmc_root_fs_type} ip=${ip_method}
mmc_boot=run mmc_args; mmc rescan; run mmc_load_image; bootm ${kloadaddr}
mmc_dev=0
mmc_load_image=fatload mmc ${mmc_dev} ${kloadaddr} ${bootfile};fatload mmc ${mmc_dev} ${rdloadaddr} ${ramdisk}
mmc_root=/dev/ram rw
mmc_root_fs_type=ext2
nand_args=run bootargs_defaults;setenv bootargs ${bootargs} dispmode=${dispmode} consoleblank=${consoleblank} root=${nand_root} noinitrd rootfstype=${nand_root_fs_type} ip=${ip_method}
nand_boot=echo Booting from nand ...; run nand_args; nandecc hw 2; nand read.i ${kloadaddr} ${nand_src_addr} ${nand_img_siz}; bootm ${kloadaddr}
nand_img_siz=0x400000
nand_root=ubi0:rootfs rw ubi.mtd=7,2048
nand_root_fs_type=ubifs rootwait
nand_src_addr=0x280000
net_args=run bootargs_defaults;setenv bootargs ${bootargs} dispmode=${dispmode} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
net_boot=echo Booting from network ...; setenv autoload no; dhcp; tftp ${kloadaddr} ${bootfile}; run net_args; bootm ${kloadaddr}
nfsopts=nolock
nor_args=run bootargs_defaults;setenv bootargs ${bootargs} dispmode=${dispmode} root={nor_root} rootfstype=${nor_root_fs_type} ip=${ip_method}
nor_boot=echo Booting from NOR ...; run nor_args; cp.b ${0x08080000} ${kloadaddr} ${nor_img_siz}; bootm ${kloadaddr}
nor_img_siz=0x280000
nor_root=/dev/mtdblock3 rw
nor_root_fs_type=jffs2
nor_src_addr=0x08080000
ramdisk=ramdisk.gz
rdloadaddr=0x81600000
rootpath=/export/rootfs
script_addr=0x81900000
serverip=192.168.1.65
spi_args=run bootargs_defaults;setenv bootargs ${bootargs} dispmode=${dispmode} root=${spi_root} rootfstype=${spi_root_fs_type} ip=${ip_method}
spi_boot=echo Booting from spi ...; run spi_args; sf probe ${spi_bus_no}:0; sf read ${kloadaddr} ${spi_src_addr} ${spi_img_siz}; bootm ${kloadaddr}
spi_bus_no=0
spi_img_siz=0x280000
spi_root=/dev/mtdblock4 rw
spi_root_fs_type=jffs2
spi_src_addr=0x62000
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial
stdin=serial
stdout=serial
updatesys=nand erase.chip;mmc rescan; fatload mmc 0 82000000 MLO;nandecc hw 2;nand write.i 82000000 0 ${filesize}; fatload mmc 0 82000000 u-boot.img;nandecc hw 2;nand write.i 82000000 80000 ${filesize};fatload mmc 0 82000000 uImage;nandecc hw 2;nand write.i 82000000 280000 ${filesize}; fatload mmc 0 82000000 ubi.img;nandecc sw;nand write.i 82000000 780000 ${filesize};led flash all

Environment size: 4197/8188 bytes



Файлы на SD:
MLO
ramdisk.gz
u-boot.img
ubi.img
uImage

Эти файлы лежат в папке linux/image, как указано в доке на борду.


Партицию на SD поставить как Active - не удалось. Но вообще говоря, в доке на AM3359 указано:
Цитата
File system mode (FAT12/16/32 supported with or without Master Boot Record), image data is read
from a booting file.
...
MMC/SD Cards may hold a FAT file system which ROM Code is able to read and process. The image
used by the booting procedure is taken from a specific booting file named “MLO”. This file has to be
located in the root directory on an active primary partition of type FAT12/16 or FAT32.
...
The card should always hold an MBR except for MMC cards using floppy-like file system (please refer to
the CSD internal Register fields FILE_FORMAT_GRP and FILE_FORMAT in the MultiMedia Card System
Specification). However, depending on the used operating system the MMC/SD card will be formatted
either with partition(s) (using an MBR) or without. The ROM Code supports both types; this is described in
the following section.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 17:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016