|
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?
Буду рад любой информации.
|
|
|
|
|
Dec 16 2015, 16:28
|
Местный
  
Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842

|
Цитата(vgovseychuk @ Dec 16 2015, 16:50)  Как резюме меня интересуют следующие вопросы: - Есть ли у кого-нибудь опыт создания своих плат на линуксе? Да Цитата(vgovseychuk @ Dec 16 2015, 16:50)  - Есть ли у вас пояснения к процессу разработки данных устройств? Ну например http://stackoverflow.com/questions/1796669...-embedded-linuxИ книга Embedded Linux Primer: A Practical Real-World ApproachЦитата(vgovseychuk @ Dec 16 2015, 16:50)  - Какой загрузчик вы использовали? U-Boot. Если можно его использовать - то нужно его использовать. Цитата(vgovseychuk @ Dec 16 2015, 16:50)  - Пользовались ли вы при этом IDE? Нет
|
|
|
|
|
Dec 16 2015, 17:07
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(vgovseychuk @ Dec 16 2015, 18:50)  Сами фрискейлы пишут, что для сборки и навигации по проекту можно использовать настроенный специальным образом Eclipse. Но он с первого раза не заработал как надо, поэтому разбираюсь дальше. Плюс к тому в доках упоминается некий LTIB, ELF, консольная сборка перемежается с ide-шной. Сборка всегда осуществляется с помощью makefie. Из IDE только вызывается make, это нужно настроить. Чисто IDE-шные проекты для кросс-компиляции использовать не получится. LTIB устарел и давно не поддерживается фрискейлом. Теперь у них официальный Yocto. Но это аццкий монстр. Попробуйте buildroot, Цитата Как резюме меня интересуют следующие вопросы: - Есть ли у кого-нибудь опыт создания своих плат на линуксе? Есть Цитата - Есть ли у вас пояснения к процессу разработки данных устройств? Берем рефдизайн и перепиливаем под свои нужды. Цитата - Какой загрузчик вы использовали? При отладке U-Boot, в продакшн самописный. Для imx28 уже есть готовый linux-prep, компактный загрузчик писать не нужно. Цитата - Пользовались ли вы при этом IDE? Eclipse. В одном workspace U-boot, kernel и юзерспейс тесты железа. Все индексировано, хитеры и прототипы функций показываются. Сборка через makefile.
|
|
|
|
|
Dec 17 2015, 01:57
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (vgovseychuk @ Dec 16 2015, 23:50)  Можно, конечно, воспользоваться методом научного тыка, В случае с линуксом по собственному опыту рекомендую отказаться от этого метода. Есть куча приличной документации. QUOTE (vgovseychuk @ Dec 16 2015, 23:50)  - Есть ли у кого-нибудь опыт создания своих плат на линуксе? Да. QUOTE (vgovseychuk @ Dec 16 2015, 23:50)  - Есть ли у вас пояснения к процессу разработки данных устройств? Берётся рефересная плата на которой линукс работает. По ней делается своя. Измения сводим к минимуму. Но заранее готовимся выделить время на правку драйверов и написание софта. QUOTE (vgovseychuk @ Dec 16 2015, 23:50)  - Какой загрузчик вы использовали? U-Boot. QUOTE (vgovseychuk @ Dec 16 2015, 23:50)  - Пользовались ли вы при этом IDE? vim + плагины.
--------------------
Выбор.
|
|
|
|
|
Dec 17 2015, 07:33
|
Участник

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

|
Спасибо всем за ответы! Цитата(_3m @ Dec 16 2015, 20:07)  При отладке U-Boot, в продакшн самописный. Для imx28 уже есть готовый linux-prep, компактный загрузчик писать не нужно.
Eclipse. В одном workspace U-boot, kernel и юзерспейс тесты железа. Все индексировано, хитеры и прототипы функций показываются. Сборка через makefile. А не могли бы Вы поделиться некой пошаговой инструкцией по настройке Eclipse? Я понимаю, она одинаковая для всех поддерживаемых плат. Еще вопрос с bootlets. Что это и с чем его едят? Доки говорят, что они настраивают питание проца. Но неясно, как они соотносятся с u-boot. С linux-prep тоже неясно, откуда брать, как работать. Вообще, было бы замечательно найти некий пример по полной настройке, начиная со скачивания сорцов и их модификацией с пояснениями до настройки источника загрузки(NAND/сеть/USB ...) и установки линукса. Я понимаю, это детский сад, но вдруг у кого-нибудь есть. P.S. Нашел некие сорсы imx-bootlets. Внутри есть директория linux-prep. Это оно?
|
|
|
|
|
Dec 17 2015, 07:44
|
Участник

Группа: Участник
Сообщений: 66
Регистрация: 12-04-06
Из: Москва
Пользователь №: 16 039

|
В плане общей информации: А на сайте freescale (nxp) были?
|
|
|
|
|
Dec 17 2015, 07:58
|
Участник

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

|
Цитата(samike @ Dec 17 2015, 10:44)  В плане общей информации: А на сайте freescale (nxp) были? Да, конечно. У меня уже закладок 20 оттуда =)
|
|
|
|
|
Dec 17 2015, 08:49
|
Участник

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

|
Можете сразу грузить Linux после linux-prep без загрузчиков (если у вас не планируется в процессе работы обновления системные накатывать)
|
|
|
|
|
Dec 17 2015, 09:15
|
Участник

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

|
Цитата(MikleV @ Dec 17 2015, 11:49)  Можете сразу грузить Linux после linux-prep без загрузчиков (если у вас не планируется в процессе работы обновления системные накатывать) Можно попробовать, но хочется же все как у людей, с блэкджеком и обновлениями
|
|
|
|
|
Dec 17 2015, 10:25
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(vgovseychuk @ Dec 17 2015, 12:15)  Можно попробовать, но хочется же все как у людей, с блэкджеком и обновлениями Обновления можно накатывать и без u-boot причем несколькими способами. * самый дубовый - MfgTool. Поднимет плату даже с затертым загрузчиком. Но для тупого юзера может быть сложноват. * загрузка с sd карты. * перезаписать загрузочный раздел из под штатного линукса с помощью kobs-ng. rootfs переписать сложнее но тоже можно Так что скрипач u-boot не нужен. Только при разработке. Цитата(vgovseychuk @ Dec 17 2015, 10:33)  P.S. Нашел некие сорсы imx-bootlets. Внутри есть директория Еще вопрос с bootlets. Что это и с чем его едят? Доки говорят, что они настраивают питание проца. ... linux-prep. Это оно? Оно bootlets это маленькие программки (или плагины) которые ROM загрузчик (HAB loader) считывает с загрузочного источника и запускает на исполнение. Таких программок может быть много они вызываются последовательно одна за другой. сначала запускается power prep и настраивает питание потом еще что-то, уже не помню, возможно настройка памяти последним вызывается linux prep или другой bootlet который загрузит в память линукс, у-бут или еще что-то и запустит это на выполнение.
Сообщение отредактировал _3m - Dec 17 2015, 10:39
|
|
|
|
|
Dec 17 2015, 12:22
|
Участник

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

|
В общем, история такая: Для навигации по файлам настроил Эклипс. Сборку в нем же настроить не получилось, но навигация есть, и то радует. Слил сорцы отсюда: ftp://ftp.denx.de/pub/u-boot/ Скопипастил исходники самой похожей платы ( boards/denx/m28evk ) Добавил ее везде, где можно (где grep -rl m28evk нашел упоминание платы-донора) Сделал конфиг make CROSS_COMPILE=arm-none-eabi- TESTimx287_defconfigЗапустил сборку. Убут 2016.01 выдал ошибку (нашел ее на форуме разрабов - вроде как баг, но черт с ним) В Убут 2015.10 получилось чуть лучше, но тоже ошибка: tools/mxsimage.c:18:25: fatal error: openssl/evp.h: No such file or directory #include <openssl/evp.h> ^ compilation terminated. make[1]: *** [tools/mxsimage.o] Error 1 make: *** [tools] Error 2В чем тут дело? Нет сорцов для SSL? Может, SSL вообще выкинуть пока из конфига?
|
|
|
|
|
Dec 17 2015, 13:26
|
Участник

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

|
если не нравятся бесплатные средства разработки (которые вытекают в применение u-boot, linux, и прочего бесплатного зоопарка), то всегда есть CodeWarrior Development Suite.
|
|
|
|
|
Dec 17 2015, 13:41
|
Участник

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

|
UPD:
Поставил пакеты apt-get install libssl-dev Скомпилился .sb файлик.
Ок, распиновку поменяем, оперативку определим. Что дальше? На плате есть NAND флешка. Очевидно, лучше, чтоб Линукс лучше устанавливать на нее. А обновлять с сети или USB. Где это настраивается? И еще вопрос про переменные среды. Объясните, пожалуйста на пальцах нубу, что это и зачем они нужны?
Сообщение отредактировал vgovseychuk - Dec 17 2015, 14:24
|
|
|
|
|
Dec 18 2015, 07:21
|
Участник

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

|
Цитата(vgovseychuk @ Dec 17 2015, 16:41)  UPD:
Поставил пакеты apt-get install libssl-dev Скомпилился .sb файлик.
Ок, распиновку поменяем, оперативку определим. Что дальше? На плате есть NAND флешка. Очевидно, лучше, чтоб Линукс лучше устанавливать на нее. А обновлять с сети или USB. Где это настраивается? И еще вопрос про переменные среды. Объясните, пожалуйста на пальцах нубу, что это и зачем они нужны? Вам придется научиться писать скрипты под Linux (переменные среды в т.ч. нужны для них). Эти скрипты будучи установлены на целевую систему будут вызываться по определенным событиям (типы событий выбираете на любой вкус исходя из возможностей ОС, установленных программ и задействованных интерфейсов) и выполнять определенные действия (в т.ч. и по вашим обновлениям). Например, один из типовых сценариев автоматического обновления по USB: - вставляется USB в устройство определенная флешка с определенного типа файлом; - работающий на устройстве демон udev или mdev или .. определяет устройство и ,например, по совпадению Vendor ID запускает самописный скрипт - скрипт монтирует USB и смотрит есть ли нужный файл - если файл есть распаковывает его / либо расшифровывает / либо сличает КС - запускает скрипт обновления Либо все это делается руками из консоли на целевой машине
Сообщение отредактировал MikleV - Dec 18 2015, 07:22
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|