|
Linux с голого железа, Hardware -> Bootlader -> Linux |
|
|
|
Dec 16 2015, 15:50
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 16-03-14
Пользователь №: 80 955

|
Добрый день!
Я новичок во встраиваемых системах с Linux, до этого работал с безосьными контроллерами. Мне в руки попала плата EV-iMX287-NANО. Стоит задача создать новую плату со своей распиновкой на базе камня i.MX287. Помогите, пожалуйста, разобраться с процессом создания устройства. Как я понял, при уже готовой плате все начинается с написания своего загрузчика. Везде рекомендуют U-Boot. Производители платы также EV-iMX287-NANО используют его. Но у них весь проект с бутлоадером уже готов и для его сборки достаточно запустить bash скрипт. На выходе получаем файл .sb , который заливаем на плату. Все грузится. Можно, конечно, воспользоваться методом научного тыка, найти файлы, в которых прописана распиновка и источник загрузки, переправить их и рано или поздно это заработает. Однако, такой подход не очень устраивает. Во-первых, не до конца понятна структура проекта бутлоадера, нет навигации по библиотекам, header-файлам и т.д. Во-вторых, непонятно, какая функция что делает(это можно найти каким-нибуть грепом, но жутко неудобно).
Сами фрискейлы пишут, что для сборки и навигации по проекту можно использовать настроенный специальным образом Eclipse. Но он с первого раза не заработал как надо, поэтому разбираюсь дальше. Плюс к тому в доках упоминается некий LTIB, ELF, консольная сборка перемежается с ide-шной. В общем, я порядком запутался.
Как резюме меня интересуют следующие вопросы: - Есть ли у кого-нибудь опыт создания своих плат на линуксе? - Есть ли у вас пояснения к процессу разработки данных устройств? - Какой загрузчик вы использовали? - Пользовались ли вы при этом IDE?
Буду рад любой информации.
|
|
|
|
3 страниц
< 1 2 3
|
 |
Ответов
(30 - 39)
|
Dec 22 2015, 18:10
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(vgovseychuk @ Dec 22 2015, 13:34)  Куда двигаться дальше? Device Tree? собирать линукс? Ваша версия uboot поддерживает device tree ? Прежде чем собирать ядро выясните: * наличие скомпилированного ядра линукс от производителя * конфиг под вашу плату от производителя * исходники ядра под вашу плату * зачем вам пересобирать ядро с неправильным конфигом ядро с 90% вероятностью не заработает
|
|
|
|
|
Dec 23 2015, 07:50
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 16-03-14
Пользователь №: 80 955

|
Цитата(_3m @ Dec 22 2015, 21:10)  Прежде чем собирать ядро выясните: * наличие скомпилированного ядра линукс от производителя * конфиг под вашу плату от производителя * исходники ядра под вашу плату * зачем вам пересобирать ядро Хочу сделать свою плату + Образовательные цели. Я как контроллерщик привык разбираться в работе систем почти до "бегающих в полупроводниках электронов". Конечно, писать все с нуля глупо, но подробно разобраться в механизмах встраиваемых систем на линуксе считаю для себя нужным. Адресация по шинам, мультиплексирование и подтяжка выводов, драйвера устройств, вот это всё. Цитата(Tarbal @ Dec 22 2015, 17:23)  Device Tree это составная часть сборки ядра. Надо поместить адро туда, откуда юбут берет ядро и загружает его, а еще надо создать партишн в оставшейся части диска, отформатировать ее и разместить там "корневую файлофую систему", которую ядро смонтирыет в корневую директорию. В юбуте есть переменная окружения mtdparts=gpmi-nand:1664k(bootloader)ro,256k(environment),128k(fdt),5m(kernel),-(rootfs) Это оно? Как я понимаю, скомпилированный dtb надо аналогичным юбуту способом залить в nand на свое место?
Сообщение отредактировал vgovseychuk - Dec 23 2015, 07:16
|
|
|
|
|
Dec 23 2015, 17:53
|
Местный
  
Группа: Участник
Сообщений: 346
Регистрация: 15-12-13
Из: Планета Земля
Пользователь №: 79 630

|
Цитата(Tarbal @ Dec 23 2015, 20:49)  Я тоже начинал как контроллерщик  А еще раньше как электронщик. А кто Вы сейчас? Риелтор?
|
|
|
|
|
Dec 23 2015, 18:00
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(Флюктуация ваккума @ Dec 23 2015, 21:53)  А кто Вы сейчас? Риелтор? Счетчик контроллеров на плате. Больше 99 поставить не могу. Фантазии не хватает. Кстати перечитал первый постинг топика. Я использовал LTIB. С него Фрискейл уже соскочил, но процессор не новый и может стоит попробовать? Он построит вам бутлоадер, ядро пропатчит и построит. Построит файловую систему. Он сам скачает правильные исходники и оставит на вашей рабочей машине, сконфигурирует кросскомпилятор.
|
|
|
|
|
Dec 24 2015, 10:07
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 16-03-14
Пользователь №: 80 955

|
С бутлоадером более-менее разобрался, даже линукс завелся. Но у меня проблема с записью на 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 есть
|
|
|
|
|
Dec 24 2015, 11:48
|
Участник

Группа: Участник
Сообщений: 48
Регистрация: 16-03-14
Пользователь №: 80 955

|
И в чем отличия 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: Переразметил флешку с запасом. Все работает. Всем Спасибо.
Сообщение отредактировал vgovseychuk - Dec 25 2015, 07:04
|
|
|
|
|
Dec 25 2015, 12:08
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-05-15
Пользователь №: 86 697

|
По работе с NAND мне помогли доки во вложении.
|
|
|
|
|
Dec 28 2015, 07:04
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 15-05-15
Пользователь №: 86 697

|
Получилось свежий uboot на 287 запустить? Сколько размер итогового файла? Если не сложно конфигом поделитесь?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|