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

Добрый день!

 

Я новичок во встраиваемых системах с Linux, до этого работал с безосьными контроллерами. Мне в руки попала плата EV-iMX287-NANО. Стоит задача создать новую плату со своей распиновкой на базе камня i.MX287. Помогите, пожалуйста, разобраться с процессом создания устройства.

Как я понял, при уже готовой плате все начинается с написания своего загрузчика. Везде рекомендуют U-Boot. Производители платы также EV-iMX287-NANО используют его. Но у них весь проект с бутлоадером уже готов и для его сборки достаточно запустить bash скрипт. На выходе получаем файл .sb , который заливаем на плату. Все грузится.

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

Однако, такой подход не очень устраивает.

Во-первых, не до конца понятна структура проекта бутлоадера, нет навигации по библиотекам, header-файлам и т.д.

Во-вторых, непонятно, какая функция что делает(это можно найти каким-нибуть грепом, но жутко неудобно).

 

Сами фрискейлы пишут, что для сборки и навигации по проекту можно использовать настроенный специальным образом Eclipse. Но он с первого раза не заработал как надо, поэтому разбираюсь дальше. Плюс к тому в доках упоминается некий LTIB, ELF, консольная сборка перемежается с ide-шной. В общем, я порядком запутался.

 

Как резюме меня интересуют следующие вопросы:

- Есть ли у кого-нибудь опыт создания своих плат на линуксе?

- Есть ли у вас пояснения к процессу разработки данных устройств?

- Какой загрузчик вы использовали?

- Пользовались ли вы при этом IDE?

 

Буду рад любой информации.

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


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

Как резюме меня интересуют следующие вопросы:

- Есть ли у кого-нибудь опыт создания своих плат на линуксе?

Да

 

- Есть ли у вас пояснения к процессу разработки данных устройств?

Ну например http://stackoverflow.com/questions/1796669...-embedded-linux

И книга Embedded Linux Primer: A Practical Real-World Approach

 

- Какой загрузчик вы использовали?

U-Boot. Если можно его использовать - то нужно его использовать.

 

- Пользовались ли вы при этом IDE?

Нет

 

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


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

Сами фрискейлы пишут, что для сборки и навигации по проекту можно использовать настроенный специальным образом Eclipse. Но он с первого раза не заработал как надо, поэтому разбираюсь дальше. Плюс к тому в доках упоминается некий LTIB, ELF, консольная сборка перемежается с ide-шной.

Сборка всегда осуществляется с помощью makefie. Из IDE только вызывается make, это нужно настроить. Чисто IDE-шные проекты для кросс-компиляции использовать не получится.

LTIB устарел и давно не поддерживается фрискейлом. Теперь у них официальный Yocto. Но это аццкий монстр. Попробуйте buildroot,

 

Как резюме меня интересуют следующие вопросы:

- Есть ли у кого-нибудь опыт создания своих плат на линуксе?

Есть

- Есть ли у вас пояснения к процессу разработки данных устройств?

Берем рефдизайн и перепиливаем под свои нужды.

- Какой загрузчик вы использовали?

При отладке U-Boot, в продакшн самописный. Для imx28 уже есть готовый linux-prep, компактный загрузчик писать не нужно.

- Пользовались ли вы при этом IDE?

Eclipse. В одном workspace U-boot, kernel и юзерспейс тесты железа. Все индексировано, хитеры и прототипы функций показываются. Сборка через makefile.

 

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


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

Можно, конечно, воспользоваться методом научного тыка,

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

 

- Есть ли у кого-нибудь опыт создания своих плат на линуксе?

Да.

- Есть ли у вас пояснения к процессу разработки данных устройств?

Берётся рефересная плата на которой линукс работает. По ней делается своя. Измения сводим к минимуму. Но заранее готовимся выделить время на правку драйверов и написание софта.

- Какой загрузчик вы использовали?

U-Boot.

- Пользовались ли вы при этом IDE?

vim + плагины.

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


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

Спасибо всем за ответы!

 

При отладке U-Boot, в продакшн самописный. Для imx28 уже есть готовый linux-prep, компактный загрузчик писать не нужно.

 

Eclipse. В одном workspace U-boot, kernel и юзерспейс тесты железа. Все индексировано, хитеры и прототипы функций показываются. Сборка через makefile.

 

А не могли бы Вы поделиться некой пошаговой инструкцией по настройке Eclipse? Я понимаю, она одинаковая для всех поддерживаемых плат.

Еще вопрос с bootlets. Что это и с чем его едят? Доки говорят, что они настраивают питание проца. Но неясно, как они соотносятся с u-boot. С linux-prep тоже неясно, откуда брать, как работать. :wacko:

 

Вообще, было бы замечательно найти некий пример по полной настройке, начиная со скачивания сорцов и их модификацией с пояснениями до настройки источника загрузки(NAND/сеть/USB ...) и установки линукса. Я понимаю, это детский сад, но вдруг у кого-нибудь есть.

 

P.S. Нашел некие сорсы imx-bootlets. Внутри есть директория linux-prep. Это оно?

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


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

В плане общей информации:

А на сайте freescale (nxp) были?

 

Да, конечно. У меня уже закладок 20 оттуда =)

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


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

Можете сразу грузить Linux после linux-prep без загрузчиков (если у вас не планируется в процессе работы обновления системные накатывать)

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


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

Можете сразу грузить Linux после linux-prep без загрузчиков (если у вас не планируется в процессе работы обновления системные накатывать)

 

Можно попробовать, но хочется же все как у людей, с блэкджеком и обновлениями

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


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

Можно попробовать, но хочется же все как у людей, с блэкджеком и обновлениями

Обновления можно накатывать и без u-boot причем несколькими способами.

* самый дубовый - MfgTool. Поднимет плату даже с затертым загрузчиком. Но для тупого юзера может быть сложноват.

* загрузка с sd карты.

* перезаписать загрузочный раздел из под штатного линукса с помощью kobs-ng. rootfs переписать сложнее но тоже можно

 

Так что скрипач u-boot не нужен. Только при разработке.

 

P.S. Нашел некие сорсы imx-bootlets. Внутри есть директория

Еще вопрос с bootlets. Что это и с чем его едят? Доки говорят, что они настраивают питание проца.

...

linux-prep. Это оно?

Оно

bootlets это маленькие программки (или плагины) которые ROM загрузчик (HAB loader) считывает с загрузочного источника и запускает на исполнение. Таких программок может быть много они вызываются последовательно одна за другой.

сначала запускается power prep и настраивает питание

потом еще что-то, уже не помню, возможно настройка памяти

последним вызывается linux prep или другой bootlet который загрузит в память линукс, у-бут или еще что-то и запустит это на выполнение.

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

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


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

В общем, история такая:

Для навигации по файлам настроил Эклипс. Сборку в нем же настроить не получилось, но навигация есть, и то радует.

Слил сорцы отсюда: 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 вообще выкинуть пока из конфига?

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


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

В чем тут дело? Нет сорцов для SSL? Может, SSL вообще выкинуть пока из конфига?

SSL всегда и везде выеживается. Выкидывайте.

 

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


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

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

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


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

UPD:

 

Поставил пакеты

apt-get install libssl-dev

Скомпилился .sb файлик.

 

Ок, распиновку поменяем, оперативку определим. Что дальше?

На плате есть NAND флешка. Очевидно, лучше, чтоб Линукс лучше устанавливать на нее. А обновлять с сети или USB. Где это настраивается? И еще вопрос про переменные среды. Объясните, пожалуйста на пальцах нубу, что это и зачем они нужны?

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

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


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

UPD:

 

Поставил пакеты

apt-get install libssl-dev

Скомпилился .sb файлик.

 

Ок, распиновку поменяем, оперативку определим. Что дальше?

На плате есть NAND флешка. Очевидно, лучше, чтоб Линукс лучше устанавливать на нее. А обновлять с сети или USB. Где это настраивается? И еще вопрос про переменные среды. Объясните, пожалуйста на пальцах нубу, что это и зачем они нужны?

 

Вам придется научиться писать скрипты под Linux (переменные среды в т.ч. нужны для них). Эти скрипты будучи установлены на целевую систему будут вызываться по определенным событиям (типы событий выбираете на любой вкус исходя из возможностей ОС, установленных программ и задействованных интерфейсов) и выполнять определенные действия (в т.ч. и по вашим обновлениям).

Например, один из типовых сценариев автоматического обновления по USB:

- вставляется USB в устройство определенная флешка с определенного типа файлом;

- работающий на устройстве демон udev или mdev или .. определяет устройство и ,например, по совпадению Vendor ID запускает самописный скрипт

- скрипт монтирует USB и смотрит есть ли нужный файл

- если файл есть распаковывает его / либо расшифровывает / либо сличает КС

- запускает скрипт обновления

Либо все это делается руками из консоли на целевой машине

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

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


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

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

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

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

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

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

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

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

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

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