Видно состав устанавливаемого и есть возможность его оперативно выбирать.Olej писал(а): Очень прилично идёт ... разворачивание, потому как инсталляцией это назвать нельзя, здесь ничего не инсталлируется (и это радует ).
Linux для embedded применений
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Linux для embedded применений
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Linux для embedded применений
Очень приличный (и по объёму и по качеству) комплект документации, который устанавливается сразу вместе с пакетом. Одного только getting-started.pdf на 83 стр. более чем достаточно, чтобы не только всё установить и настроить, но и написать, скомпилировать и запустить и исполнить первые пробные приложения.Olej писал(а): Видно состав устанавливаемого и есть возможность его оперативно выбирать.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Linux для embedded применений
Проверяем как закончилась инсталляция:Olej писал(а):Одного только getting-started.pdf на 83 стр. более чем достаточно,
Код: Выделить всё
[olej@notebook 05]$ arm-none-eabi-g++ -v
bash: arm-none-eabi-g++: команда не найдена
Но это только потому, что установка как-то странно устанавливает $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 применений
Любопытно сравнить 2 разных toolchain по размеру сразу после установки:
Это так ... для справки
Потому как мало что значит:
- 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@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 применений
Берём исходный код примера прямо из getting-started.pdf :Olej писал(а):Всё! Пакет готов к использованию!
Код: Выделить всё
#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;
}
В документации есть такая фраза (что отличает компилятор от GCC):
Ни где находятся такие линкер-скрипты (как я понимаю, это некоторый стартовый код, который отличается для разных подархитектур ARM? для Cortex он вообще может быть пустой?), ни то, какой линкер-скрипт нужно выбрать для использования с эмулятором ARM, который есть в составе пакета ( ) - этого я в документации не нашёл.Sourcery CodeBench requires that you specify a linker script with the -T option to build applications
for bare-board targets.
Но это достаточно легко устанавливается:
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
О том, как использовать ARM EABI Toolchain (а это о нём мы и разговариваем) для сборки ядра Linux чтоб его затолкать потом в качестве ядра в Android в некоторые мобильные устройства под ARM.
Очень любопытно!
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Linux для embedded применений
А вот как всё то же, но исполнение под отладчиком GDB из состава того же пакета:Olej писал(а): А вот как это выглядит под ARM эмулятором из состава пакета:
Код: Выделить всё
[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
И сама идентификация исполнимого файла для полноты картины:
Код: Выделить всё
[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 писал(а): Берём исходный код примера прямо из getting-started.pdf :
Попадались мне как-то две статейки:
Программирование AVR и ARM микроконтроллеров в Eclipse. Часть 1
Программирование AVR и ARM микроконтроллеров в Eclipse. Часть 2
...не очень внятные и не очень связно излагающие, но ... - именно об использовании ARM EABI Toolchain но для разработки под IDE Eclipse. Ну так вот оно и есть
Я не настраивал детально Eclipse (по используемому toolchine и созданию для этого профиля Eclipse), а просто перенёс созданное раньше консольное приложение под ARM в IDE, и сделал там компиляцию и выполнение. Этого достаточно, для того, чтобы дальше использовать Eclipse как среду разработки под ARM!
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Linux для embedded применений
Лирическое отступление:
Меня как-то спрашивали: зачем я описываю для вас так детально и подробно, с URL и картинками, довольно частные технические вопросы???
Ответ:
1. Это может сразу стать интересным тем немногим, кто как-раз сейчас над этим ломает голову - даст какую-то подсказку в размышлениях.
2. Я пишу это не для вас, а для себя - это такая для себя памятка, где я в одно место складываю весь необходимый материал, для того чтобы позже, по свободе, написать из всего этого подробную статью.
3. Которая будет выложена может на этом сайте, может в другом месте, для использования всеми заинтересованными ... но это только тогда, когда этого чернового материала накопится достаточно для того, чтобы он замкнулся в ясную картину вопроса.
4. Если кому не близка такая тематика, и нет охоты разгребаться с путанными мелочами - так и не читайте, не насилуйте свой мозг, как это называл Иосиф Бродский . Подождите, пока будет готова и описана ясная картина происходящего.
5. А разработка программ для ARM - это актуальнейшая проблема! Потому как эпоха Intel x86 проходит, этот процессор для массовых применений будет умирать, и сменять его будут разнообразные процессоры развивающие линейку ARM: XScale, Cortex, ... TI OMAP5. Вот для чего нужно нарабатывать инструментарий
Меня как-то спрашивали: зачем я описываю для вас так детально и подробно, с URL и картинками, довольно частные технические вопросы???
Ответ:
1. Это может сразу стать интересным тем немногим, кто как-раз сейчас над этим ломает голову - даст какую-то подсказку в размышлениях.
2. Я пишу это не для вас, а для себя - это такая для себя памятка, где я в одно место складываю весь необходимый материал, для того чтобы позже, по свободе, написать из всего этого подробную статью.
3. Которая будет выложена может на этом сайте, может в другом месте, для использования всеми заинтересованными ... но это только тогда, когда этого чернового материала накопится достаточно для того, чтобы он замкнулся в ясную картину вопроса.
4. Если кому не близка такая тематика, и нет охоты разгребаться с путанными мелочами - так и не читайте, не насилуйте свой мозг, как это называл Иосиф Бродский . Подождите, пока будет готова и описана ясная картина происходящего.
5. А разработка программ для ARM - это актуальнейшая проблема! Потому как эпоха Intel x86 проходит, этот процессор для массовых применений будет умирать, и сменять его будут разнообразные процессоры развивающие линейку ARM: XScale, Cortex, ... TI OMAP5. Вот для чего нужно нарабатывать инструментарий
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Linux для embedded применений
Кстати, о самой архитектуре ARM: хотелось бы иметь самые поверхностные обзоры (не для разработчиков плат и чипсетов, а для программистов, даже более прикладных программистов).Olej писал(а): 5. А разработка программ для ARM - это актуальнейшая проблема! Потому как эпоха Intel x86 проходит, этот процессор для массовых применений будет умирать, и сменять его будут разнообразные процессоры развивающие линейку ARM: XScale, Cortex, ... TI OMAP5. Вот для чего нужно нарабатывать инструментарий
Но ничего хорошего (такого, что можно бы назвать хорошим) на этот счёт не попадается.
Вот неплохой обзор: ARM
Но это ж нужно было додуматься : отморозить это на украинском языке
Если ещё будет попадаться - буду добавлять ссылки.
Если кто знает хорошие материалы - будьте любезны, давайте сюда!
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Linux для embedded применений
3-й из названных уже инструментов: Virtual Development Board.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
Это, скорее, не инструментарий какой-то, как первые 2, а, скорее, технология создания виртуального полигона ARM под QEMU (и, как могу предполагать?, в равной степени под VirtualBox?).
По крайней мере, что сразу полезное бросается в глаза - ссылка на собранный образ ARM VM, который определённо стоит порассмотреть.
P.S. (дописано позже!)
Виноват! Ввёл в заблуждение.
Данное описание никак не является 3-м каким-то вариантом, в качестве Cross Toolchain они используют всё тот же ARM EABI Toolchain, который рассматривался выше, как 2-й из инструментариев.
Так что это может быть только приятным дополнением к тому, что рассматривалось раньше.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей