Перейти к содержанию
    

linux for at91sam9g20

Здравия, коллеги!

Спроектировали на работе плату на базе контроллера at91sam9g20. Память и периферию подключали из соображений удобства разводки печатной платы. На готовую систему, естественно, появилось желание поставить линукс. Полезли в интернет, скачали весь материал для кита at91sam9g20ek. Порты переобозначили в соответствии со своей схемой, загрузчики запустились, ядро разворачивается, файловая система не подхватывается. Принципиальное отличие от фирменного кита - оперативная память 32 Мб против их 64 Мб. Возможно файловая система не видна не по этой причине. Предстоит покопаться. На данный момент интересует, если кто через это прошел, что нужно изменить в хедерах и как порезать исходники, чтобы уместить систему в 32 Мб. Резали всю сеть и USB. USB в заголовках отрезали удачно, а сеть не вышло. Компилятор компилит всю папку net, а линкер, естественно, ругается. Больше всего интересует размещение системы в 32 Мб оперативной памяти. Заранее благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Вас бутлодер какой, может быть сделано так, разворачивается ядро в память, передается на неё управление, ядро цепляет файловую систему находящуюся на flash, она знает априори гден она лежит или задается в командной строке ядра, а может быть разворачивается и ядро и файловая система в рам, тогда в командной строке аргументов передаваемых ядру указывается адрес памяти где лежит файловая система.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Bootloader от Atmel. Bootstrap который. Эту стадию система проходит успешно. Даже с нашими адресами. Файловая система, возможно, не видна из-за заявленной отказности ячеек nand-flash памяти. Я бы об этом сказал с уверенностью, если бы хоть один из компонентов всей системы хоть что-нибудь сказал бы мне о nand-flash памяти.

Чуть не забыл. U-boot тоже проходит успешно. Правда, он тоже не видит nand-flash. Зато ядро всю flash показывает с правильными идентификаторами. Хотя ему никто не говорил, где будет линия BUSY.

Изменено пользователем Drozd2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правда, он тоже не видит nand-flash. Зато ядро всю flash показывает с правильными идентификаторами. Хотя ему никто не говорил, где будет линия BUSY.

а её может быть и не быть, статус можно прочитать. а что у Вас u-boot говорит на командочку

printenv - напечатать переменные окружения, в bootcmd команда запуска, bootargs аргументы командной строки передаваемые ядру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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. Не догоняю, как ядру передать адрес файловой системы. И можно ли записать ее по нулевому адресу и передать этот адрес ядру?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

mtdparts=at91_nand:-(root)

 

Похоже в этом ошибка, потому что вы считаете что "Файловая система по указанию записывается по адресу 0х400000 в nand" а раздел у вас начинается с нулевого адреса - задайте смещение.

 

mtdparts=at91_nand:размер@смещение(root)

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не прошло и пол-года, как я разобрался. Ответ был слишком простой, чтобы его сразу найти.

Если кому понадобится, то на самопальных платах с запчастями со своего склада, собранных по самостоятельно составленной схеме, нужно в исходниках переопределить все отличающиеся от фирменной платы подключения и пересчитать скорость работы nand flash. Это один-два файла, одноименных с названием контроллера. А теперь самое интересное. Если оперативной памяти на самодельной плате окажется меньше, чем на фирменной, то в исходниках u-boot переобозначить адрес загрузки сжатого ядра на реально существующий, в моем случае 0х21000000, а к переменной окружения bootargs добавить параметр mem=8M. Тогда появляется долгожданное приветствие login.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет не так, mem=8M Вы специфицируете что у Вас памяти всего 8 мегобайт от 0x200 00000 до 0x208 00000, если у Вас так как Вы написали работате то скорее у Вас 32Mb памяти и Вам нужно прописать mem=32M

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Согласен. 8M мало. Совет этот нашел в /Documentation/memory.txt. Но с этим параметром произошел-таки запуск системы. mem=32M приводит к куче вывода с переходом в итоге в stack overflow, в общем, то же самое, что и вообще без указания mem. Самое большое с чем нормально запускается, это mem=24M и ни грамма больше. free в любом случае показывает максимум памяти меньше, чем реально установлено. Предстоит разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...