Atridies 0 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба Опять потревожу уважаемое сообщество. Есть проблема: пересобрал ядро и хочу им заменить старое ядро (в нем неправильно сделана настройка одного пина - 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба Ядро надо запускать не через go, а через bootm. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Atridies 0 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба Попробовал сделать bootm: SBC8600# bootm ## Booting kernel from Legacy Image at 80008000 ... 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 ... К сожалению, тоже подвисает... Попробовал другое ядро: аналогично. Виснет и всё тут... Может быть надо грузить с tftp не только uImage, а еще что-то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба В документации на борду написано: форматнуть SD под FAT32, закинуть файлы и папки linux/image (MLO, boot.img, rootfs.gz, uImage) и замкнуть JP5. Все делаю как написано - ничего не получается. Т.е. при замыкании JP5 и последующем включении питания - в консоль тупо выдется "С" и всё. про bootm вам уже написали.. по разбивке SD карточки - еще раз внимательно перечитайте, что там требуется, ключевые моменты: - файл MLO - строго большими буквами - партиция должна иметь статус Active - после загрузки MLO ищет файл юбута - вы уверены, что он должен называться "boot.img"? Starting kernel ... К сожалению, тоже подвисает... переменные окружения для ядра прописаны? может требуется uEnv.txt - читайте руководство.. консольный порт называется ttyO0 (а не ttyS0 как в "стандартных" системах) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 2 августа, 2015 Опубликовано 2 августа, 2015 · Жалоба Может быть надо грузить с tftp не только uImage, а еще что-то? Покажите вывод u-boot по команде pri. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Atridies 0 3 августа, 2015 Опубликовано 3 августа, 2015 · Жалоба Переменные окружения 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 3 августа, 2015 Опубликовано 3 августа, 2015 (изменено) · Жалоба Файлы на SD: MLO ramdisk.gz u-boot.img ubi.img uImage Эти файлы лежат в папке linux/image, как указано в доке на борду. у вас тут нет рутовой в чистом виде.. попробуйте хотя бы успешно загрузиться до ядра включительно.. в компе с линуксом нарежьте на SD карте два раздела: 1. primary, 16MB, type 0x0b (fat16) 2. primary, все остальное пространство (под будущую рутовую), type 0x83 потом клавишей "a" выставить аттрибут активности первого раздела (звездочка * в поле boot) потом выйти с записью и отформатировать первый раздел утилитой mkfs.vfat потом прямо в корень раздела копируете MLO и u-boot.img замыкаете перемычкой J5 и не отпуская включаете питание платы - вместо CCC должен загрузиться u-boot (кстати по приглашению CCC можно из терминалки через xmodem попробовать залить MLO) вот тут похожая шпаргалка: https://code.google.com/p/beagleboard/wiki/...xBootDiskFormat но внимательно думайте, что набираете в командах.. если опыта по линуксу и нарезке флешки мало - лучше попросите/проконсультируйтесь у кого-нить, иначе можно неловким движением снести безвозвратно содержимое винчестера.. или, если под винды, поищите продвинутую утилиту, которая умеет разметить часть SD (винда из-коробки делает единый раздел) или даже еще проще эксперимент - берете SD размечаете в fat16/fat32 и в корень (не в каталог) копируете все те же MLO и u-boot.img Партицию на SD поставить как Active - не удалось. Но вообще говоря, в доке на AM3359 указано: я на эти грабли наступал - было весело, коллеги потом глумились еще неделю: "When acting as hard-drive-like, an MBR is present in the first sector of the card. This MBR holds a table of partitions, one of which must be FAT12/16/32, primary and active" т.е. первая партиция должна иметь аттрибут "*" Изменено 3 августа, 2015 пользователем Jury093 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Atridies 0 4 августа, 2015 Опубликовано 4 августа, 2015 · Жалоба или даже еще проще эксперимент - берете SD размечаете в fat16/fat32 и в корень (не в каталог) копируете все те же MLO и u-boot.img Собственно, они и так в корне SD-шки лежат. Я их брал из папки linux/image на диске с платой. Насчет Active - попробую обязательно. Я тупанул немного: надо было попробовать Partition Magic, а не стандартными средствами винды. Он ведь должен уметь работать с SD... По Active меня смутило то, что в SD есть "floppy-like file system", который не требует MBR. Но, возможно я неверно понял доку. Такое бывает. (кстати по приглашению CCC можно из терминалки через xmodem попробовать залить MLO) Вот это чрезвычайно интересно. А как это можно сделать ? Есть какие-то специальные утилиты ? Спасибо огромное за ответы! Сегодня вечером попробую - отпишусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 4 августа, 2015 Опубликовано 4 августа, 2015 · Жалоба Собственно, они и так в корне SD-шки лежат. Я их брал из папки linux/image на диске с платой. Насчет Active - попробую обязательно. Я тупанул немного: надо было попробовать Partition Magic, а не стандартными средствами винды. Он ведь должен уметь работать с SD... возьмите SD на 2-8ГБ (с разделами больше 32Мб для загрузки я не пробовал, возможно тут есть ограничитель).. По Active меня смутило то, что в SD есть "floppy-like file system", который не требует MBR. Но, возможно я неверно понял доку. Такое бывает. врядли вам удастся штатными средствами сделать floppy-like fs на флешке.. я давно не лазил в эту тематику, но подозреваю, что это случай для fat12, где нет MBR Вот это чрезвычайно интересно. А как это можно сделать ? Есть какие-то специальные утилиты ? тут все просто - запускаете терминалку, через которую вы управляете вашей платой через последовательный порт (там где бегают CCC) и ищете пункт "отправить/переслать файл" и там же выбор протокола "xmodem" включаете питание, видите CCC и быстренько отправляете файл MLO в порт если все пройдет успешно, загрузчик запустится и можно будет по ymodem заслать уже u-boot.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Atridies 0 4 августа, 2015 Опубликовано 4 августа, 2015 · Жалоба Получилось !!! Сделал SD активной - и всё запустилось. Спасибо огромное ! И тогда последний вопрос: если меня устроит новое ядро - как заменить им старое? Просто заменить файл ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 4 августа, 2015 Опубликовано 4 августа, 2015 · Жалоба Получилось !!! Сделал SD активной - и всё запустилось. Спасибо огромное ! И тогда последний вопрос: если меня устроит новое ядро - как заменить им старое? Просто заменить файл ? поздравляю! да просто заменить.. это для SD карточки, а для нанда надо следить чтобы новое ядро, допустим большего размера, не затерло что-нить жизненно важное для системы.. рекомендую старое не стирать, а переименовать, тогда если зависнет "новое" ядро, то можно не дергая карточку в картридер, загрузить из юбута "старое "ядро", а затем прямо на системе заменить дефектное ядро.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться