Linux для embedded применений

встраиваемые модели

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 18:31

Olej писал(а): Очень прилично идёт ... разворачивание, потому как инсталляцией это назвать нельзя, здесь ничего не инсталлируется (и это радует :lol: ).
Видно состав устанавливаемого и есть возможность его оперативно выбирать.
CodeBench_06.png
CodeBench_06.png (124.12 КБ) 11307 просмотров
CodeBench_05.png
CodeBench_05.png (42.26 КБ) 11307 просмотров

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 18:34

Olej писал(а): Видно состав устанавливаемого и есть возможность его оперативно выбирать.
Очень приличный (и по объёму и по качеству) комплект документации, который устанавливается сразу вместе с пакетом. Одного только getting-started.pdf на 83 стр. более чем достаточно, чтобы не только всё установить и настроить, но и написать, скомпилировать и запустить и исполнить первые пробные приложения.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 21:25

Olej писал(а):Одного только getting-started.pdf на 83 стр. более чем достаточно,
Проверяем как закончилась инсталляция:

Код: Выделить всё

[olej@notebook 05]$ arm-none-eabi-g++ -v
bash: arm-none-eabi-g++: команда не найдена
Ooops ... как говорит ядро Linux, когда ему сильно туго приходится :lol:
Но это только потому, что установка как-то странно устанавливает $PATH ... в зависимости от дистрибутива и вида shell? Стоит сделать так, и всё ОК:

Код: Выделить всё

[olej@notebook ~]$ export PATH=$PATH:~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin
[olej@notebook ~]$ arm-none-eabi-g++ -v
Using built-in specs.
COLLECT_GCC=arm-none-eabi-g++
COLLECT_LTO_WRAPPER=/home/olej/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/../libexec/gcc/arm-none-eabi/4.6.1/lto-wrapper
Target: arm-none-eabi
Configured with: /scratch/jwlemke/2011.09-arm-eabi-lite/src/gcc-4.6-2011.09/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-eabi --enable-threads --disable-
...
Thread model: single
gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-69) 
- там очень большой и интересный вывод опций.
Всё! Пакет готов к использованию!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 21:36

Любопытно сравнить 2 разных toolchain по размеру сразу после установки:

Код: Выделить всё

[olej@notebook Sourcery_CodeBench_Lite_for_ARM_EABI]$ pwd
/home/olej/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI
[olej@notebook Sourcery_CodeBench_Lite_for_ARM_EABI]$ du -hs
254M    .

[olej@notebook buildroot-2011.08]$ pwd
/home/olej/buildroot-2011.08
[olej@notebook buildroot-2011.08]$ du -hs
19M     .
Это так ... для справки ;-)
Потому как мало что значит:
- Sourcery CodeBench содержит в этом составе несколько томов объёмной PDF документации;
- BuildRoot здесь не содержит самих исходников, ни GNU (gcc etc.) ни исходников kernel Linux, которых всех он знает URL самих проектов, и их подтягивает по wget...
- Sourcery CodeBench, как я понял, уже содержит GNU tools (он уже является каким-то форком gcc) и ничего этого не подтягивает, kernel Linux он тоже не подтягивает ... собирать Linux ядро по дефаулту не входит в его функции (? как я понял), но и это можно делать, если ним компилировать скачанный исходник ядра.

P.S. а вот пакет BuildRoot (на другом компьютере) после того, как он подтянул kernel и весь tools + собрал всё это (т.е. там достаточно много мусора, но это максимальный объём):

Код: Выделить всё

[olej@nvidia buildroot-2011.08]$ du -hs
2,6G	.
Последний раз редактировалось Olej 07 янв 2012, 00:02, всего редактировалось 2 раза.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 22:07

Olej писал(а):Всё! Пакет готов к использованию!
Берём исходный код примера прямо из getting-started.pdf :

Код: Выделить всё

#include <stdio.h>
int factorial(int n) {
  if (n == 0)
    return 1;
  return n * factorial (n - 1);
}
int main () {
  int i;
  int n;
  for (i = 0; i < 10; ++i) {
    n = factorial (i);
    printf ("factorial(%d) = %d\n", i, n);
  }
  return 0;
}
- файл main.c

В документации есть такая фраза (что отличает компилятор от GCC):
Sourcery CodeBench requires that you specify a linker script with the -T option to build applications
for bare-board targets.
Ни где находятся такие линкер-скрипты (как я понимаю, это некоторый стартовый код, который отличается для разных подархитектур ARM? для Cortex он вообще может быть пустой?), ни то, какой линкер-скрипт нужно выбрать для использования с эмулятором ARM, который есть в составе пакета ( :!: ) - этого я в документации не нашёл.
Но это достаточно легко устанавливается:

1. каталог скриптов ~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/arm-none-eabi/lib + в нём подкаталоги;
2. файлы скриптов с расширением .ld;
3. для сборки исполнения под эмулятором используем скрипт generic-hosted.ld;
4. там же есть скрипты для различных некоторых железок (board) для запуска в них... это нужно разбираться.

В итоге:

Код: Выделить всё

[olej@notebook CodeSourcery]$ arm-none-eabi-gcc -o factorial main.c -T generic-hosted.ld
Всё ОК.

А вот как это выглядит под ARM эмулятором из состава пакета:

Код: Выделить всё

[olej@notebook CodeSourcery]$ arm-none-eabi-run factorial
factorial(0) = 1
factorial(1) = 1
factorial(2) = 2
factorial(3) = 6
factorial(4) = 24
factorial(5) = 120
factorial(6) = 720
factorial(7) = 5040
factorial(8) = 40320
factorial(9) = 362880
Вот здесь : iki.cyanogenmod.com/wiki/Building_Kernel_from_source#Download_ARM_EABI_Toolchain_.28Optional.29 - есть объёмная статья : "Building Kernel from source"
О том, как использовать ARM EABI Toolchain (а это о нём мы и разговариваем) для сборки ядра Linux чтоб его затолкать потом в качестве ядра в Android в некоторые мобильные устройства под ARM.
Очень любопытно!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 22:18

Olej писал(а): А вот как это выглядит под ARM эмулятором из состава пакета:
А вот как всё то же, но исполнение под отладчиком GDB из состава того же пакета:

Код: Выделить всё

[olej@notebook CodeSourcery]$ > arm-none-eabi-gdb factorial
bash: factorial: команда не найдена
[olej@notebook CodeSourcery]$ arm-none-eabi-gdb factorial
GNU gdb (Sourcery CodeBench Lite 2011.09-69) 7.2.50.20100908-cvs
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-eabi".
For bug reporting instructions, please see:
<https://support.codesourcery.com/GNUToolchain/>...
Reading symbols from /home/olej/CodeSourcery/factorial...(no debugging symbols found)...done
(gdb) r
Starting program: /home/olej/CodeSourcery/factorial
Don't know how to run.  Try "help target".
(gdb) s
The program is not being run.
(gdb) q
Это настолько важно, что отдельной темой прописал... :lol:

И сама идентификация исполнимого файла для полноты картины:

Код: Выделить всё

[olej@notebook CodeSourcery]$ file factorial
factorial: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 22:24

Olej писал(а): Берём исходный код примера прямо из getting-started.pdf :
Но и это ещё не всё :lol:
Попадались мне как-то две статейки:
Программирование AVR и ARM микроконтроллеров в Eclipse. Часть 1
Программирование AVR и ARM микроконтроллеров в Eclipse. Часть 2
...не очень внятные и не очень связно излагающие, но ... - именно об использовании ARM EABI Toolchain но для разработки под IDE Eclipse.
Eclipse_01.png
Eclipse_01.png (40.94 КБ) 11308 просмотров
Eclipse_02.png
(98.1 КБ) 9052 скачивания
Ну так вот оно и есть :lol:

Я не настраивал детально Eclipse (по используемому toolchine и созданию для этого профиля Eclipse), а просто перенёс созданное раньше консольное приложение под ARM в IDE, и сделал там компиляцию и выполнение. Этого достаточно, для того, чтобы дальше использовать Eclipse как среду разработки под ARM!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 22:39

Лирическое отступление:

Меня как-то спрашивали: зачем я описываю для вас так детально и подробно, с URL и картинками, довольно частные технические вопросы???

Ответ:

1. Это может сразу стать интересным тем немногим, кто как-раз сейчас над этим ломает голову - даст какую-то подсказку в размышлениях.

2. Я пишу это не для вас, а для себя :lol: - это такая для себя памятка, где я в одно место складываю весь необходимый материал, для того чтобы позже, по свободе, написать из всего этого подробную статью.

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

4. Если кому не близка такая тематика, и нет охоты разгребаться с путанными мелочами - так и не читайте, не насилуйте свой мозг, как это называл Иосиф Бродский :lol: . Подождите, пока будет готова и описана ясная картина происходящего.

5. А разработка программ для ARM - это актуальнейшая проблема! Потому как эпоха Intel x86 проходит, этот процессор для массовых применений будет умирать, и сменять его будут разнообразные процессоры развивающие линейку ARM: XScale, Cortex, ... TI OMAP5. Вот для чего нужно нарабатывать инструментарий :!:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 22:47

Olej писал(а): 5. А разработка программ для ARM - это актуальнейшая проблема! Потому как эпоха Intel x86 проходит, этот процессор для массовых применений будет умирать, и сменять его будут разнообразные процессоры развивающие линейку ARM: XScale, Cortex, ... TI OMAP5. Вот для чего нужно нарабатывать инструментарий :!:
Кстати, о самой архитектуре ARM: хотелось бы иметь самые поверхностные обзоры (не для разработчиков плат и чипсетов, а для программистов, даже более прикладных программистов).
Но ничего хорошего (такого, что можно бы назвать хорошим) на этот счёт не попадается.
Вот неплохой обзор: ARM
Но это ж нужно было додуматься :!: :?: :twisted: : отморозить это на украинском языке :twisted:

Если ещё будет попадаться - буду добавлять ссылки.
Если кто знает хорошие материалы - будьте любезны, давайте сюда! ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Linux для embedded применений

Непрочитанное сообщение Olej » 06 янв 2012, 22:54

Olej писал(а): + вот совершенно другой tools (в сравнении с BuildRoot) построения ARM embedded:
1. Virtual Development Board - http://www.elinux.org/Virtual_Development_Board
2. Sourcery G++ Lite 2011.03-41 for ARM GNU/Linux - https://sourcery.mentor.com/sgpp/lite/a ... elease1803
3-й из названных уже инструментов: Virtual Development Board.
Это, скорее, не инструментарий какой-то, как первые 2, а, скорее, технология создания виртуального полигона ARM под QEMU (и, как могу предполагать?, в равной степени под VirtualBox?).

По крайней мере, что сразу полезное бросается в глаза - ссылка на собранный образ ARM VM, который определённо стоит порассмотреть.

P.S. (дописано позже!)
Виноват! Ввёл в заблуждение.
Данное описание никак не является 3-м каким-то вариантом, в качестве Cross Toolchain они используют всё тот же ARM EABI Toolchain, который рассматривался выше, как 2-й из инструментариев.
Так что это может быть только приятным дополнением к тому, что рассматривалось раньше.

Ответить

Вернуться в «Одноплатные компьютеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя