реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Linux с голого железа, Hardware -> Bootlader -> Linux
vgovseychuk
сообщение Dec 16 2015, 15:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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?

Буду рад любой информации.
Go to the top of the page
 
+Quote Post
akorud
сообщение Dec 16 2015, 16:28
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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?

Нет
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 16 2015, 17:07
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 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.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 17 2015, 01:57
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 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 + плагины.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
vgovseychuk
сообщение Dec 17 2015, 07:33
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 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 тоже неясно, откуда брать, как работать. wacko.gif

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

P.S. Нашел некие сорсы imx-bootlets. Внутри есть директория linux-prep. Это оно?
Go to the top of the page
 
+Quote Post
samike
сообщение Dec 17 2015, 07:44
Сообщение #6


Участник
*

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



В плане общей информации:
А на сайте freescale (nxp) были?
Go to the top of the page
 
+Quote Post
vgovseychuk
сообщение Dec 17 2015, 07:58
Сообщение #7


Участник
*

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



Цитата(samike @ Dec 17 2015, 10:44) *
В плане общей информации:
А на сайте freescale (nxp) были?


Да, конечно. У меня уже закладок 20 оттуда =)
Go to the top of the page
 
+Quote Post
MikleV
сообщение Dec 17 2015, 08:49
Сообщение #8


Участник
*

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



Можете сразу грузить Linux после linux-prep без загрузчиков (если у вас не планируется в процессе работы обновления системные накатывать)
Go to the top of the page
 
+Quote Post
vgovseychuk
сообщение Dec 17 2015, 09:15
Сообщение #9


Участник
*

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



Цитата(MikleV @ Dec 17 2015, 11:49) *
Можете сразу грузить Linux после linux-prep без загрузчиков (если у вас не планируется в процессе работы обновления системные накатывать)


Можно попробовать, но хочется же все как у людей, с блэкджеком и обновлениями
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 17 2015, 10:25
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
vgovseychuk
сообщение Dec 17 2015, 12:22
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 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 вообще выкинуть пока из конфига?
Go to the top of the page
 
+Quote Post
_3m
сообщение Dec 17 2015, 13:10
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(vgovseychuk @ Dec 17 2015, 15:22) *
В чем тут дело? Нет сорцов для SSL? Может, SSL вообще выкинуть пока из конфига?

SSL всегда и везде выеживается. Выкидывайте.
Go to the top of the page
 
+Quote Post
quarter
сообщение Dec 17 2015, 13:26
Сообщение #13


Участник
*

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



если не нравятся бесплатные средства разработки (которые вытекают в применение u-boot, linux, и прочего бесплатного зоопарка), то всегда есть CodeWarrior Development Suite.
Go to the top of the page
 
+Quote Post
vgovseychuk
сообщение Dec 17 2015, 13:41
Сообщение #14


Участник
*

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



UPD:

Поставил пакеты
apt-get install libssl-dev
Скомпилился .sb файлик.

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

Сообщение отредактировал vgovseychuk - Dec 17 2015, 14:24
Go to the top of the page
 
+Quote Post
MikleV
сообщение Dec 18 2015, 07:21
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01486 секунд с 7
ELECTRONIX ©2004-2016