Drozd2 0 30 января, 2010 Опубликовано 30 января, 2010 · Жалоба Здравия, коллеги! Спроектировали на работе плату на базе контроллера at91sam9g20. Память и периферию подключали из соображений удобства разводки печатной платы. На готовую систему, естественно, появилось желание поставить линукс. Полезли в интернет, скачали весь материал для кита at91sam9g20ek. Порты переобозначили в соответствии со своей схемой, загрузчики запустились, ядро разворачивается, файловая система не подхватывается. Принципиальное отличие от фирменного кита - оперативная память 32 Мб против их 64 Мб. Возможно файловая система не видна не по этой причине. Предстоит покопаться. На данный момент интересует, если кто через это прошел, что нужно изменить в хедерах и как порезать исходники, чтобы уместить систему в 32 Мб. Резали всю сеть и USB. USB в заголовках отрезали удачно, а сеть не вышло. Компилятор компилит всю папку net, а линкер, естественно, ругается. Больше всего интересует размещение системы в 32 Мб оперативной памяти. Заранее благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 30 января, 2010 Опубликовано 30 января, 2010 · Жалоба У Вас бутлодер какой, может быть сделано так, разворачивается ядро в память, передается на неё управление, ядро цепляет файловую систему находящуюся на flash, она знает априори гден она лежит или задается в командной строке ядра, а может быть разворачивается и ядро и файловая система в рам, тогда в командной строке аргументов передаваемых ядру указывается адрес памяти где лежит файловая система. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Drozd2 0 30 января, 2010 Опубликовано 30 января, 2010 (изменено) · Жалоба Bootloader от Atmel. Bootstrap который. Эту стадию система проходит успешно. Даже с нашими адресами. Файловая система, возможно, не видна из-за заявленной отказности ячеек nand-flash памяти. Я бы об этом сказал с уверенностью, если бы хоть один из компонентов всей системы хоть что-нибудь сказал бы мне о nand-flash памяти. Чуть не забыл. U-boot тоже проходит успешно. Правда, он тоже не видит nand-flash. Зато ядро всю flash показывает с правильными идентификаторами. Хотя ему никто не говорил, где будет линия BUSY. Изменено 30 января, 2010 пользователем Drozd2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 31 января, 2010 Опубликовано 31 января, 2010 · Жалоба Правда, он тоже не видит nand-flash. Зато ядро всю flash показывает с правильными идентификаторами. Хотя ему никто не говорил, где будет линия BUSY. а её может быть и не быть, статус можно прочитать. а что у Вас u-boot говорит на командочку printenv - напечатать переменные окружения, в bootcmd команда запуска, bootargs аргументы командной строки передаваемые ядру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Drozd2 0 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба U-Boot> printenv bootargs=console=ttyS0,115200 root=/dev/mtdblock0 mtdparts=at91_nand:-(root) rw rootfstype=jffs2 bootcmd=cp.b 0xC0042000 0x22000000 0x210000; bootm bootdelay=3 baudrate=115200 stdin=serial stdout=serial stderr=serial ethact=macb0 Environment size: 230/16892 bytes В bootcmd хоть и присутствует адрес 0х22000000, при 32Мб памяти он превращается в 0х20000000. Файловая система по указанию записывается по адресу 0х400000 в nand. Не догоняю, как ядру передать адрес файловой системы. И можно ли записать ее по нулевому адресу и передать этот адрес ядру? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 2 1 февраля, 2010 Опубликовано 1 февраля, 2010 (изменено) · Жалоба mtdparts=at91_nand:-(root) Похоже в этом ошибка, потому что вы считаете что "Файловая система по указанию записывается по адресу 0х400000 в nand" а раздел у вас начинается с нулевого адреса - задайте смещение. mtdparts=at91_nand:размер@смещение(root) Изменено 1 февраля, 2010 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 2 февраля, 2010 Опубликовано 2 февраля, 2010 · Жалоба В bootcmd хоть и присутствует адрес 0х22000000, при 32Мб памяти он превращается в 0х20000000. Файловая система по указанию записывается по адресу 0х400000 в nand. Не догоняю, как ядру передать адрес файловой системы. И можно ли записать ее по нулевому адресу и передать этот адрес ядру? строчка root=/dev/mtdblock0 обозначает что у Вас файловая система лежит на 0 партиции а там наверное загорузчик, а файловая в первой а cp.b 0xC0042000 0x22000000 0x210000 это скопировать из последовательной флэш, её у Вас наверное нет обычно при последовательной флэш если образ лежит в виде инитрд : root=/dev/ram rw initrd=<адрес>,<размер> ramdisk_size=8000 командочкой cp.b копируется образ инитрд из последовательной в рам по <адрес>, а ядро это понимает разворачивает его в /dev/ram Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Drozd2 0 12 апреля, 2010 Опубликовано 12 апреля, 2010 · Жалоба Не прошло и пол-года, как я разобрался. Ответ был слишком простой, чтобы его сразу найти. Если кому понадобится, то на самопальных платах с запчастями со своего склада, собранных по самостоятельно составленной схеме, нужно в исходниках переопределить все отличающиеся от фирменной платы подключения и пересчитать скорость работы nand flash. Это один-два файла, одноименных с названием контроллера. А теперь самое интересное. Если оперативной памяти на самодельной плате окажется меньше, чем на фирменной, то в исходниках u-boot переобозначить адрес загрузки сжатого ядра на реально существующий, в моем случае 0х21000000, а к переменной окружения bootargs добавить параметр mem=8M. Тогда появляется долгожданное приветствие login. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dch 0 18 апреля, 2010 Опубликовано 18 апреля, 2010 · Жалоба нет не так, mem=8M Вы специфицируете что у Вас памяти всего 8 мегобайт от 0x200 00000 до 0x208 00000, если у Вас так как Вы написали работате то скорее у Вас 32Mb памяти и Вам нужно прописать mem=32M Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Drozd2 0 20 апреля, 2010 Опубликовано 20 апреля, 2010 · Жалоба Согласен. 8M мало. Совет этот нашел в /Documentation/memory.txt. Но с этим параметром произошел-таки запуск системы. mem=32M приводит к куче вывода с переходом в итоге в stack overflow, в общем, то же самое, что и вообще без указания mem. Самое большое с чем нормально запускается, это mem=24M и ни грамма больше. free в любом случае показывает максимум памяти меньше, чем реально установлено. Предстоит разобраться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться