Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: EV-iMX287-Micro
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Kolya87
Я новичок во встраиваемых системах. Имею отладочный комплект EV-iMX287-Micro. На нем по умолчанию установлен Linux. Кто что посоветует, с чего начать. Для начала просто Hello world, помигать светодиодом. Соответственно как, с помощью каких средств настраивать аппаратную часть платы? Приложения предполагаю писать на Qt.
По поводу виртуальной машины. С сайта http://otladka.com.ua/wiki/doku.php образ виртуальной машины скачать не получается, выдает ошибку сети. Но как я понимаю, можно создать свою виртуальную машину, поставить на нее действующую версию Ubuntu или Debian, поставить необходимые средства разработки приложений и отлаживать уже на ней.
samike
Для начала все же нужно скачать образ виртуальной машины с http://otladka.com.ua - это на порядок ускорит процесс познания (у меня, например, все отлично скачивается). Скачать, развернуть, а дальше читать http://otladka.com.ua/wiki/doku.php?id=ev-imx287-micro и параллельно пробовать. В этом описании для сборки ядра, загрузчика и файловой системы используется система сборки LTIB, кажется Qt там входит в состав сборки. Если же нет, то ядро можно собирать LTIB'ом, а файловую систему - системой сборки Buildroot - там Qt точно входит в состав. Можно Qt собрать и отдельно, но это заметно сложнее.
У freescale неплохой форум
Kolya87
Сейчас читаю сайт starterkit-org раздел wiki. На данный момент застрял на сборке кросскомпилятора с помощью crosstool-ng. Дошел до ct-ng build. Выдает ошибки:

[INFO ] Performing some trivial sanity checks
[INFO ] Build started 20140821.000748
[INFO ] Building environment variables
[ERROR] Missing: 'x86_64-unknown-linux-gnu-gcj' or 'x86_64-unknown-linux-gnu-gcj' or 'gcj' : either needed!
[ERROR]
[ERROR] >>
[ERROR] >> Build failed in step '(top-level)'
[ERROR] >>
[ERROR] >> Error happened in: CT_Abort[scripts/functions@331]
[ERROR] >> called from: CT_TestAndAbort[scripts/functions@351]
[ERROR] >> called from: main[scripts/crosstool-NG.sh@452]
[ERROR] >>
[ERROR] >> For more info on this error, look at the file: 'build.log'
[ERROR] >> There is a list of known issues, some with workarounds, in:
[ERROR] >> '/usr/local/share/doc/crosstool-ng/ct-ng.1.19.0/B - Known issues.txt'
[ERROR]
[ERROR] (elapsed: 0:00.55)
[00:01] / make: *** [build] Error 1


Пока непонятно что делать.
Вообще возникает вопрос, нужно ли собирать свой кросскомпилятор, или LTIB и BUILDROOT вставляют какой-то стандартный?
samike
Цитата(Kolya87 @ Aug 21 2014, 09:15) *
Вообще возникает вопрос, нужно ли собирать свой кросскомпилятор, или LTIB и BUILDROOT вставляют какой-то стандартный?


В подавляющем большинстве случаев собирать свой кросскомпилятор не нужно, в LTIB и BUILDROOT уже имеются компиляторы.

Вот полная документация по Linux для imx28 от Freescale: i.MX28 Linux Documentation Bundle, вот еще ссылка.
Требуется регистрация на сайте freescale.
Что там есть:
MX28_EVK_Linux_Reference_Manual.pdf
MX28_EVK_Linux_Release_Notes.pdf
MX28_EVK_Linux_User_Guide.pdf
Setting_Up_LTIB_Host_on_Ubuntu_9_04.pdf
uboot_mx28.pdf
imx28-kernel-warnings.txt

Т.е. все, что нужно для разработки, рекомендую.
Kolya87
Спасибо за ссылки. Буду изучать.
alx2
Цитата(Kolya87 @ Aug 21 2014, 11:15) *
[ERROR] Missing: 'x86_64-unknown-linux-gnu-gcj' or 'x86_64-unknown-linux-gnu-gcj' or 'gcj' : either needed!

Пока непонятно что делать.

Очевидным решением мне кажется установить gcj... Или тут кроется какой-то подвох? sm.gif
Kolya87
Поставил LTIB, поставляемый в пакете BSP от Freescale, на Debian. Собрал Linux kernel, rootfs. Пробую загрузить в NAND flash через MFGTool. Не получается, выдает ошибку Updater Error 0xffffffea (-22) -
samike
Цитата(Kolya87 @ Aug 27 2014, 12:51) *
Пробую загрузить в NAND flash через MFGTool. Не получается, выдает ошибку Updater Error 0xffffffea (-22) -


А на Вашей плате u-boot есть (или все стерто)?
Можно все записать в NAND из под u-boot.
Kolya87
Пока с платы ничего не стирал, т.е. в плате зашита изначально OS, которая еще была при покупке. По поводу зашитого u-boot ответить затрудняюсь. Сейчас буду пробовать др. способы записи образов.

Похоже никакого u-boot там не зашито.
samike
Цитата(Kolya87 @ Aug 28 2014, 06:44) *
Похоже никакого u-boot там не зашито.


U-Boot - это первоначальный загрузчик, он инициализирует плату, загружает ядро и передает ему управление.
U-Boot должен быть.
Если не ошибаюсь, ваша плата имеет возможность загрузки с SD карты.
Попробуйте пока поиграться с SD карточкой. Почитайте wiki, раздел Создание загрузочной SD карты
Kolya87
Создал загрузочную SD карту. Записал на нее ядро и rootfs. Загрузка системы происходит успешно.

Пробовал загрузку по tftp. Загружаю u-boot 2013.04 с SD или по usb, и качаю ядро с tftp - сервера (файлы uImage и imx28-evk.dtb) с помощью программы Tftpd32. Затем командой bootm загружаю их. Как только начинает загружаться ядро ( Uncompressing Linux... done, booting the kernel), проц перезагружается.
К tftp-серверу запущенному на linux почему то не конектится. Запускал на готовой виртуальной машине, на которой сказано что tftp-сервер установлен. Пока не разбирался в данном вопросе.

Пробую опять загрузить в Nand flash через MfgTool. Указанную выше ошибку преодолел заменой файлов update.sb update_ivt.sb, собранных ltib (при запуске команды ./ltib --selectype и выборе в меню «mfg firmware profile» ). Процесс застрял на следующем во время загрузки ядра:

Код
1 - Panel A Start processing Singlechip NAND <LIST/>.
1 - Panel A Start <CMD/> type="boot" body="Recovery" file="updater.sb" timeout="60" onError="" text="Booting update firmware.".
1 - Panel A Finished <CMD/> type="boot" body="Recovery" file="updater.sb" timeout="60" onError="" text="Booting update firmware." SUCCESS code=0.
1 - Panel A Start <CMD/> type="boot" body="Recovery" file="updater_ivt.sb" timeout="60" onError="" text="Booting update firmware.".
1 - Panel A Finished <CMD/> type="boot" body="Recovery" file="updater_ivt.sb" timeout="60" onError="" text="Booting update firmware." SUCCESS code=0.
1 - Panel A Start <CMD/> type="find" body="Updater" file="" timeout="180" onError="" text="".
1 - Panel A Finished <CMD/> type="find" body="Updater" file="" timeout="180" onError="" text="" SUCCESS code=0.
1 - Panel A Start <CMD/> type="push" body="mknod class/mtd,mtd0,/dev/mtd0" file="" timeout="10" onError="" text="".
Panel A: Operation stopped by user.



ucl.xml файл пока не менял.

samike
Вот хорошая статья про tftp-сервер на linux: Setting Up a TFTP Server

Если я правильно понял, задача в том, чтобы залить загрузчик в SPI Flash, а ядро и rootfs в NAND и вы пытаетесь сделать это с помощью MfgTool? При этом, ядро записанное на SD-карту, грузится нормально, а то же самое ядро, загружаемое ручками из консоли, перезагружает проц?
Попробуйте залить в SPI Flash с помощью MfgTool загрузчик (в wiki это пункт 4: SPI-Write uboot - запишет в микросхему SPI Flash только загрузчик imx28_ivt_uboot.sb (том /dev/mtd2)). А уже потом, из под загрузчика, с помощью команд tftpboot, nand erase и nand write, запишите в NAND ядро и rootfs.
Kolya87
Наконецто удалось зашить образы в NAND. Сделал следующим образом: загрузил ядро Linux с SD, примонтировал flash-ку с необходимыми образами ядра и rootfs, и дальше выполнил последовательность действий, указанных вот по этой ссылке https://community.freescale.com/thread/276571.

Т.к. под linux ни разу не прогал, то сейчас стоит вопрос, как писать программы? Какую IDE использовать. В Windows часто приходилось пользоваться Eclipse и Qt. Под linux тоже они есть, либо же лучше использовать обычный текстовый редактор и потом просто компилить проект.
samike
Я использую Geany - простое, но очень функциональное мини-IDE.
Но я не применяю в своих приложениях графику. Вы же вроде планировали использовать Qt, тогда Qt Creator и т.п....

Путь примерно такой:
- собираете Qt под свою железку (информации в сети - море, рекомендую тот же community.freescale.com),
- заливаете собранные библиотеки на железку, запускаете демки
- настраиваете Qt Creator для сборки приложений под железку (это не делал, опыта нет).

На мой взгляд, Qt проще всего собрать, используя Buildroot, собирал так qt 4.8.5, но в последних релизах Buildroot есть Qt 5.x.x (погуглите Buildroot + Qt5).

Kolya87
Возникла проблема. Во время сборки rootfs с помощью LTIB указываю toolchain gcc-4.4.4-.... Но после записи образа на плату и при попытки компиляции какого нибудь исходного файла выдает ошибку

gcc: not found

Пробовал задать во время сборки rootfs др. toolchain, от freescale (arm-fsl-linux-gnueabi-gcc). Но его тоже почему то нету в rootfs.
samike
Так все правильно - тулчейн и не кладется в rootfs, он так и остается на хосте.
Тулчейн не нужен на плате, т.к. редко кто собирает проекты непосредственно на плате sm.gif Обычно компилируют на хосте и затем переносят собранное приложение на плату.

Если я конечно правильно понял вашу мысль...
Kolya87
Да так и есть. С этим вопросом я уже разобрался. Просто добавил на хосте путь к собранному тулчейну в переменную PATH и дальше уже провожу сборку проекта с применением данного тулчейна. Сейчас только опять вопрос, как запустить на выполнение собранный бинарник на хосте, или же этот бинарник будет запускаться только на моей плате, т.е. только на конкретной платформе.
samike
Не понял, зачем запускать собранный бинарник на хосте?
Запускать и отлаживать нужно уже на плате - это обычный путь разработки под железку.
Kolya87
Вот еще такой вопрос. Как я понял в NAND Flash два mtd устройства. В одно записывается ядро, в другое rootfs. Эти mtd устройства закладываются сразу производителем NAND, или же их можно самому как то задать?
samike
Нет, производителем NAND никакие mtd устройства не закладываются.
Вы можете сами разбить флешку как вам нравится.

Почитайте про mtd:
здесь (раздел Linux MTD partitions и ниже)
и здесь

Очень хорошо написано.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.