Jump to content

    
Sign in to follow this  
vgovseychuk

Linux с голого железа

Recommended Posts

UPD:

 

Решил проблему компиляцией с сохранением переменных в NAND. Поднял tftp, закинул на сервер юбут. Затем run update_nand_full.

 

Куда двигаться дальше? Device Tree? собирать линукс?

 

Device Tree это составная часть сборки ядра. Надо поместить адро туда, откуда юбут берет ядро и загружает его, а еще надо создать партишн в оставшейся части диска, отформатировать ее и разместить там "корневую файлофую систему", которую ядро смонтирыет в корневую директорию.

 

Можно собрать ядро и корневую файловую систему, а можно и взать где-нибудь готовые. Неужели никто еще не собирал подобную систему?

 

Share this post


Link to post
Share on other sites
Куда двигаться дальше? Device Tree? собирать линукс?

Ваша версия uboot поддерживает device tree ?

Прежде чем собирать ядро выясните:

* наличие скомпилированного ядра линукс от производителя

* конфиг под вашу плату от производителя

* исходники ядра под вашу плату

* зачем вам пересобирать ядро

 

с неправильным конфигом ядро с 90% вероятностью не заработает

Share this post


Link to post
Share on other sites
Прежде чем собирать ядро выясните:

* наличие скомпилированного ядра линукс от производителя

* конфиг под вашу плату от производителя

* исходники ядра под вашу плату

* зачем вам пересобирать ядро

 

Хочу сделать свою плату + Образовательные цели. Я как контроллерщик привык разбираться в работе систем почти до "бегающих в полупроводниках электронов". Конечно, писать все с нуля глупо, но подробно разобраться в механизмах встраиваемых систем на линуксе считаю для себя нужным. Адресация по шинам, мультиплексирование и подтяжка выводов, драйвера устройств, вот это всё.

 

Device Tree это составная часть сборки ядра. Надо поместить адро туда, откуда юбут берет ядро и загружает его, а еще надо создать партишн в оставшейся части диска, отформатировать ее и разместить там "корневую файлофую систему", которую ядро смонтирыет в корневую директорию.

 

В юбуте есть переменная окружения mtdparts=gpmi-nand:1664k(bootloader)ro,256k(environment),128k(fdt),5m(kernel),-(rootfs) Это оно?

Как я понимаю, скомпилированный dtb надо аналогичным юбуту способом залить в nand на свое место?

Edited by vgovseychuk

Share this post


Link to post
Share on other sites

Я тоже начинал как контроллерщик :) А еще раньше как электронщик.

 

Если и не оно то отношение имеет. Не понятно еще откуда берутся адреса.

 

Если у вас юбут бежит, то остальное вы можете залить через него. Это как альтернатива.

 

Share this post


Link to post
Share on other sites
А кто Вы сейчас?

Риелтор?

 

Счетчик контроллеров на плате. Больше 99 поставить не могу. Фантазии не хватает.

 

Кстати перечитал первый постинг топика. Я использовал LTIB. С него Фрискейл уже соскочил, но процессор не новый и может стоит попробовать? Он построит вам бутлоадер, ядро пропатчит и построит. Построит файловую систему.

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

Share this post


Link to post
Share on other sites

С бутлоадером более-менее разобрался, даже линукс завелся. Но у меня проблема с записью на NAND.

 

В коде бутлоадера есть такая команда:

 

"update_nand_full=" /* Update FCB, DBBT and FW */ \

"if tftp ${update_nand_full_filename} ; then " \

"run update_nand_get_fcb_size ; " \

"nand scrub -y 0x0 ${filesize} ; " \

"nand write.raw ${loadaddr} 0x0 ${fcb_sz} ; " \

"setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \

"setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \

"nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \

"fi\0"

 

Она сохраняет бутлоадер, но походу затирает партишн. И наоборот, когда записываю в nand по партишону rootfs, kernel и fdt, отказывается запускаться бутлоадер.

Партишн такой:

 

"mtdparts=mtdparts=gpmi-nand:" \

"3m(bootloader)ro," \

"256k(environment)," \

"128k(fdt)," \

"5m(kernel)," \

"-(rootfs)\0" \

 

Попытался переписать команду обновления и сохранения в память:

"update_nand_bootandenv=" /* Update bootloader and environment VOVS*/ \

"if tftp ${update_nand_firmware_filename} ; then " \

"nand erase.part ${bootloader}; " \

"nand erase.part ${environment}; " \

"nand write ${loadaddr} ${bootloader} ${filesize} ; " \

"saveenv\0" \

 

Но она не заработала. Кто-нибудь сталкивался с этим? Кстати, странно, что нет команды write.part, хотя erase.part и scrub.part есть :laughing:

 

 

Share this post


Link to post
Share on other sites

И в чем отличия u-boot.sb от u-boot.nand?

 

Если я делаю run update_nand_full, то заливается u-boot.nand, который делает утилита mxsboot из u-boot.sb. Однако, его размер 3Мб, и при записи в NAND он затирает нужные разделы.

Если я делаю run update_nand_firmware, то заливается u-boot.sb размером 532кб, но убут не стартует.

 

UPD:

Переразметил флешку с запасом. Все работает. Всем Спасибо.

Edited by vgovseychuk

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this