Страница 4 из 5
Re: Linux для embedded применений
Добавлено: 06 янв 2012, 23:19
Olej
Olej писал(а):приятным дополнением к тому, что рассматривалось раньше.
Ну например, напишем знаменитую программу
Код: Выделить всё
#include <unistd.h>
int main () {
write (STDERR_FILENO, "Hello, world!\n", 14);
return 0;
}
Скомпилируем так:
Код: Выделить всё
[olej@notebook CodeSourcery]$ arm-none-eabi-gcc -o hello hello.c -T generic-hosted.ld
Теперь выполнение:
Код: Выделить всё
[olej@notebook CodeSourcery]$ arm-none-eabi-run hello
Hello, world!
Ура!
Но это выполнение под собственным эмулятором ARM из пакета CodeSourcery.
А вот так:
Код: Выделить всё
[olej@notebook CodeSourcery]$ qemu-arm -L ~/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/libc hello
Hello, world!
- это совершенно другое выполнение под эмулятором ARM из проекта QEMU:
Код: Выделить всё
[olej@notebook ~]$ qemu-arm --help
qemu-arm version 0.12.3 (qemu-kvm-0.12.3), Copyright (c) 2003-2008 Fabrice Bellard
usage: qemu-arm [options] program [arguments...]
Linux CPU emulator (compiled for arm emulation)
...
Re: Linux для embedded применений
Добавлено: 06 янв 2012, 23:56
Olej
Olej писал(а):
А вот так:
Код: Выделить всё
[olej@notebook CodeSourcery]$ qemu-arm -L ~/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/libc hello
Hello, world!
- это совершенно другое выполнение под эмулятором ARM из проекта QEMU:
Здесь автор чего-то намудрячил, потому как:
Код: Выделить всё
[olej@notebook CodeSourcery]$ qemu-arm hello
Hello, world!
[olej@notebook ~]$ qemu-arm -cpu ?
Available CPUs:
arm926
arm946
arm1026
arm1136
arm1136-r2
arm11mpcore
cortex-m3
cortex-a8
cortex-a9
ti925t
...
[olej@notebook CodeSourcery]$ qemu-arm -cpu cortex-a9 hello
Hello, world!
[olej@notebook CodeSourcery]$ qemu-arm -cpu ti925t hello
Hello, world!
Как я предполагаю, приложение с libc.a компонуется статически:
Код: Выделить всё
[olej@notebook CodeSourcery]$ arm-none-eabi-gcc -c -o hello.o hello.c
[olej@notebook CodeSourcery]$ ls -l hello*
-rwxrwxr-x 1 olej olej 48633 Янв 6 00:33 hello
-rw-rw-r-- 1 olej olej 96 Янв 6 00:33 hello.c
-rw-rw-r-- 1 olej olej 996 Янв 6 22:30 hello.o
[olej@notebook CodeSourcery]$ arm-none-eabi-readelf -s hello | grep ' FUNC '
...
189: 000002ec 48 FUNC GLOBAL DEFAULT 1 write
...
213: 00000268 48 FUNC GLOBAL DEFAULT 1 main
...
222: 00000298 32 FUNC GLOBAL DEFAULT 1 atexit
...
235: 000002b8 52 FUNC GLOBAL DEFAULT 1 exit
...
Re: Linux для embedded применений
Добавлено: 07 янв 2012, 00:39
Olej
Olej писал(а):
По крайней мере, что сразу полезное бросается в глаза -
ссылка на собранный образ ARM VM, который определённо стоит порассмотреть.
После разархивирования получаем:
Код: Выделить всё
[olej@nvidia arm-test]$ ls
arm_root.img README zImage.integrator
Делаем стартовый файл (чтоб каждый раз не набирать) и стартуем под QEMU:
Код: Выделить всё
[olej@nvidia arm-test]$ cat arm-run
qemu-system-arm -kernel zImage.integrator -initrd arm_root.img
[olej@nvidia arm-test]$ ./arm-run
Green LED off
...
- ARM-QEMU-01.png (22.57 КБ) 9168 просмотров
- ARM-QEMU-02.png (20.19 КБ) 9168 просмотров
Очень так даже миленько ... ARM Linux
Re: Linux для embedded применений
Добавлено: 12 мар 2012, 23:27
Olej
Здесь, на титульной странице сайта, дали ссылку на
отличный перевод:
http://dmilvdv.narod.ru/Translate/ELSDD/index.html
Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman, "Драйверы Устройств Linux, Третья Редакция" (перевод на русский язык - dmilvdv, автор перевода, к сожалению, не указал своего имени).
Вот за это администрации сайта: простое человеческое спасибо
Re: Linux для embedded применений
Добавлено: 05 ноя 2013, 19:40
Olej
Olej писал(а):
Для этих дел существует некоторое число инструментальных проектов, свободных и коммерческих...
Для определённости нужно на чём-то остановиться. Я буду раскручивать всё пользуясь пакетом BuildRoot.
Подробное описание ещё одного набора tools для создания embedded Linux системы:
Создание специальных дистрибутивов Linux для встраиваемых систем с помощью Yocto Project.
Описание настолько подробное, что не составит труда по нему собрать собственную Linux-систему.
Как и предыдущие инструменты, для исполнения и тестирования оно грузит результат в QEMU.
Re: Linux для embedded применений
Добавлено: 01 июл 2017, 14:34
Olej
Я давно не обращался к такой тематике по своим делам ... нужды не возникало...
Но вот такая книга, и, более того, её
русскоязычный перевод, не может не быть отмечена в теме про встраиваемый Linux:
Разработка и внедрение системы на встраиваемом Linux.
Оригиналы книги можете найти здесь:
Название Embedded Linux System Design and Development
Авторы P. Raghavan, Amol Lad, Sriram Neelakandan
Издание: иллюстрированное
Издатель CRC Press, 2005
ISBN 1420031619, 9781420031614
Количество страниц Всего страниц: 432
Re: Linux для embedded применений
Добавлено: 25 июн 2018, 14:55
Olej
Olej писал(а):
Для этих дел существует некоторое число инструментальных проектов, свободных и коммерческих...
Для определённости нужно на чём-то остановиться. Я буду раскручивать всё пользуясь пакетом BuildRoot.
После большого перерыва (и это очень хорошо - стабильность проекта)...
При помощи
BuildRoot собирают (
пишут) загрузочные образы .img под такие популярные SBC как Oraange Pi, Rapsbery Pi :
обратите внимание на систему сборки
https://github.com/buildroot/buildroot
наши платы там присутствуют, и есть опция в
Target packages ---> Real-Time --->
Код: Выделить всё
x x [*] Xenomai Userspace x x
x x () Custom Xenomai version (NEW) x x
x x Xenomai core (Mercury) ---> x x
x x [*] Enable SMP support (NEW) x x
x x [ ] Enable registry (NEW) x x
x x () Additional configure options (NEW) x x
x x [ ] Install testsuite (NEW) x x
x x [ ] RTCan utilities (NEW) x x
x x [ ] Analogy libs and utils (NEW) x x
x x Skin selection --->
Работает или нет ? не знаю, но можно копать в этом направлении.
Нужно пробовать в этом направлении...
BuildRoot свежий берём здесь:
Git repository.
Re: Linux для embedded применений
Добавлено: 28 июн 2018, 12:59
Olej
Olej писал(а):
Нужно пробовать в этом направлении...
BuildRoot свежий берём здесь:
Git repository.
Правильнее будет грузить не с GIT, а
со страницы проекта:
Latest long term support release: 2018.02.3
...
Latest stable release: 2018.05
...
Как видно, проект весьма динамично развивается!
Я загружаю
по-другому только потому, что мне а). нужно это для
последних моделей микрокомпьютеров (SBC) Orange Pi и б). применительно только к возможностей использования с realtime патчами Xenomai.
Re: Linux для embedded применений
Добавлено: 28 июн 2018, 13:01
Olej
Я скачивал zip-архив, потому как мне обновления с GIT не нужны будут:
Код: Выделить всё
[olej@xenix ~]$ ls -l buildroot-master.zip
-rw-rw-r-- 1 olej olej 8653101 июн 25 13:32 buildroot-master.zip
Разархивируем:
Код: Выделить всё
[olej@xenix Orange_Pi]$ unzip buildroot-master.zip
...
buildroot-master/system/skeleton/dev/stderr -> ../proc/self/fd/2
buildroot-master/system/skeleton/dev/stdin -> ../proc/self/fd/0
buildroot-master/system/skeleton/dev/stdout -> ../proc/self/fd/1
buildroot-master/system/skeleton/etc/mtab -> ../proc/self/mounts
buildroot-master/system/skeleton/etc/resolv.conf -> ../tmp/resolv.conf
[olej@xenix Orange_Pi]$ du -hs buildroot-master
46M buildroot-master
Re: Linux для embedded применений
Добавлено: 28 июн 2018, 13:07
Olej
Olej писал(а):
Разархивируем:
Код: Выделить всё
[olej@xenix buildroot-master]$ pwd
/home/olej/buildroot-master
Для многих-многих конфигураций
BuildRoot имеет на сегодня предустановленные
начальные конфигурации (это очень сильно помогает, особенно для ARM конструкций):
Код: Выделить всё
[olej@xenix buildroot-master]$ make list-defconfigs
Built-in configs:
acmesystems_aria_g25_128mb_defconfig - Build for acmesystems_aria_g25_128mb
acmesystems_aria_g25_256mb_defconfig - Build for acmesystems_aria_g25_256mb
acmesystems_arietta_g25_128mb_defconfig - Build for acmesystems_arietta_g25_128mb
acmesystems_arietta_g25_256mb_defconfig - Build for acmesystems_arietta_g25_256mb
amarula_vyasa_rk3288_defconfig - Build for amarula_vyasa_rk3288
arcturus_ucls1012a_defconfig - Build for arcturus_ucls1012a
arcturus_ucp1020_defconfig - Build for arcturus_ucp1020
armadeus_apf27_defconfig - Build for armadeus_apf27
armadeus_apf28_defconfig - Build for armadeus_apf28
armadeus_apf51_defconfig - Build for armadeus_apf51
arm_foundationv8_defconfig - Build for arm_foundationv8
arm_juno_defconfig - Build for arm_juno
asus_tinker_rk3288_defconfig - Build for asus_tinker_rk3288
at91sam9260eknf_defconfig - Build for at91sam9260eknf
at91sam9g20dfc_defconfig - Build for at91sam9g20dfc
at91sam9g45m10ek_defconfig - Build for at91sam9g45m10ek
at91sam9rlek_defconfig - Build for at91sam9rlek
at91sam9x5ek_defconfig - Build for at91sam9x5ek
at91sam9x5ek_dev_defconfig - Build for at91sam9x5ek_dev
at91sam9x5ek_mmc_defconfig - Build for at91sam9x5ek_mmc
at91sam9x5ek_mmc_dev_defconfig - Build for at91sam9x5ek_mmc_dev
atmel_sama5d27_som1_ek_mmc_dev_defconfig - Build for atmel_sama5d27_som1_ek_mmc_dev
atmel_sama5d2_xplained_mmc_defconfig - Build for atmel_sama5d2_xplained_mmc
atmel_sama5d2_xplained_mmc_dev_defconfig - Build for atmel_sama5d2_xplained_mmc_dev
atmel_sama5d3xek_defconfig - Build for atmel_sama5d3xek
atmel_sama5d3_xplained_defconfig - Build for atmel_sama5d3_xplained
atmel_sama5d3_xplained_dev_defconfig - Build for atmel_sama5d3_xplained_dev
atmel_sama5d3_xplained_mmc_defconfig - Build for atmel_sama5d3_xplained_mmc
atmel_sama5d3_xplained_mmc_dev_defconfig - Build for atmel_sama5d3_xplained_mmc_dev
atmel_sama5d4_xplained_defconfig - Build for atmel_sama5d4_xplained
atmel_sama5d4_xplained_dev_defconfig - Build for atmel_sama5d4_xplained_dev
atmel_sama5d4_xplained_mmc_defconfig - Build for atmel_sama5d4_xplained_mmc
atmel_sama5d4_xplained_mmc_dev_defconfig - Build for atmel_sama5d4_xplained_mmc_dev
bananapi_m1_defconfig - Build for bananapi_m1
bananapi_m2_plus_defconfig - Build for bananapi_m2_plus
bananapi_m64_defconfig - Build for bananapi_m64
bananapro_defconfig - Build for bananapro
beagleboardx15_defconfig - Build for beagleboardx15
beaglebone_defconfig - Build for beaglebone
beaglebone_qt5_defconfig - Build for beaglebone_qt5
chromebook_snow_defconfig - Build for chromebook_snow
ci20_defconfig - Build for ci20
csky_gx6605s_defconfig - Build for csky_gx6605s
cubieboard2_defconfig - Build for cubieboard2
engicam_imx6qdl_icore_defconfig - Build for engicam_imx6qdl_icore
engicam_imx6qdl_icore_qt5_defconfig - Build for engicam_imx6qdl_icore_qt5
engicam_imx6qdl_icore_rqs_defconfig - Build for engicam_imx6qdl_icore_rqs
engicam_imx6ul_geam_defconfig - Build for engicam_imx6ul_geam
engicam_imx6ul_isiot_defconfig - Build for engicam_imx6ul_isiot
freescale_imx28evk_defconfig - Build for freescale_imx28evk
freescale_imx6dlsabreauto_defconfig - Build for freescale_imx6dlsabreauto
freescale_imx6dlsabresd_defconfig - Build for freescale_imx6dlsabresd
freescale_imx6qsabreauto_defconfig - Build for freescale_imx6qsabreauto
freescale_imx6qsabresd_defconfig - Build for freescale_imx6qsabresd
freescale_imx6sxsabresd_defconfig - Build for freescale_imx6sxsabresd
freescale_imx7dsabresd_defconfig - Build for freescale_imx7dsabresd
freescale_imx8mqevk_defconfig - Build for freescale_imx8mqevk
freescale_p1025twr_defconfig - Build for freescale_p1025twr
freescale_t1040d4rdb_defconfig - Build for freescale_t1040d4rdb
friendlyarm_nanopi_a64_defconfig - Build for friendlyarm_nanopi_a64
friendlyarm_nanopi_neo2_defconfig - Build for friendlyarm_nanopi_neo2
galileo_defconfig - Build for galileo
grinn_chiliboard_defconfig - Build for grinn_chiliboard
grinn_liteboard_defconfig - Build for grinn_liteboard
imx23evk_defconfig - Build for imx23evk
imx6-sabreauto_defconfig - Build for imx6-sabreauto
imx6-sabresd_defconfig - Build for imx6-sabresd
imx6-sabresd_qt5_defconfig - Build for imx6-sabresd_qt5
imx6slevk_defconfig - Build for imx6slevk
imx6sx-sdb_defconfig - Build for imx6sx-sdb
imx6ulevk_defconfig - Build for imx6ulevk
imx6ulpico_defconfig - Build for imx6ulpico
imx7dpico_defconfig - Build for imx7dpico
lego_ev3_defconfig - Build for lego_ev3
linksprite_pcduino_defconfig - Build for linksprite_pcduino
minnowboard_max_defconfig - Build for minnowboard_max
minnowboard_max-graphical_defconfig - Build for minnowboard_max-graphical
mx25pdk_defconfig - Build for mx25pdk
mx51evk_defconfig - Build for mx51evk
mx53loco_defconfig - Build for mx53loco
mx6cubox_defconfig - Build for mx6cubox
mx6sx_udoo_neo_defconfig - Build for mx6sx_udoo_neo
mx6udoo_defconfig - Build for mx6udoo
nanopi_m1_defconfig - Build for nanopi_m1
nanopi_m1_plus_defconfig - Build for nanopi_m1_plus
nanopi_neo_defconfig - Build for nanopi_neo
nexbox_a95x_defconfig - Build for nexbox_a95x
nitrogen6sx_defconfig - Build for nitrogen6sx
nitrogen6x_defconfig - Build for nitrogen6x
nitrogen7_defconfig - Build for nitrogen7
odroidc2_defconfig - Build for odroidc2
olimex_a13_olinuxino_defconfig - Build for olimex_a13_olinuxino
olimex_a20_olinuxino_lime2_defconfig - Build for olimex_a20_olinuxino_lime2
olimex_a20_olinuxino_lime_defconfig - Build for olimex_a20_olinuxino_lime
olimex_a20_olinuxino_lime_mali_defconfig - Build for olimex_a20_olinuxino_lime_mali
olimex_a20_olinuxino_micro_defconfig - Build for olimex_a20_olinuxino_micro
olimex_a64_olinuxino_defconfig - Build for olimex_a64_olinuxino
olimex_imx233_olinuxino_defconfig - Build for olimex_imx233_olinuxino
openblocks_a6_defconfig - Build for openblocks_a6
orangepi_lite_defconfig - Build for orangepi_lite
orangepi_one_defconfig - Build for orangepi_one
orangepi_pc2_defconfig - Build for orangepi_pc2
orangepi_pc_defconfig - Build for orangepi_pc
orangepi_pc_plus_defconfig - Build for orangepi_pc_plus
orangepi_plus_defconfig - Build for orangepi_plus
orangepi_prime_defconfig - Build for orangepi_prime
orangepi_win_defconfig - Build for orangepi_win
orangepi_zero_defconfig - Build for orangepi_zero
orangepi_zero_plus2_defconfig - Build for orangepi_zero_plus2
pandaboard_defconfig - Build for pandaboard
pc_x86_64_bios_defconfig - Build for pc_x86_64_bios
pc_x86_64_efi_defconfig - Build for pc_x86_64_efi
pine64_defconfig - Build for pine64
pine64_sopine_defconfig - Build for pine64_sopine
qemu_aarch64_virt_defconfig - Build for qemu_aarch64_virt
qemu_arm_versatile_defconfig - Build for qemu_arm_versatile
qemu_arm_versatile_nommu_defconfig - Build for qemu_arm_versatile_nommu
qemu_arm_vexpress_defconfig - Build for qemu_arm_vexpress
qemu_m68k_mcf5208_defconfig - Build for qemu_m68k_mcf5208
qemu_m68k_q800_defconfig - Build for qemu_m68k_q800
qemu_microblazebe_mmu_defconfig - Build for qemu_microblazebe_mmu
qemu_microblazeel_mmu_defconfig - Build for qemu_microblazeel_mmu
qemu_mips32r2el_malta_defconfig - Build for qemu_mips32r2el_malta
qemu_mips32r2_malta_defconfig - Build for qemu_mips32r2_malta
qemu_mips32r6el_malta_defconfig - Build for qemu_mips32r6el_malta
qemu_mips32r6_malta_defconfig - Build for qemu_mips32r6_malta
qemu_mips64el_malta_defconfig - Build for qemu_mips64el_malta
qemu_mips64_malta_defconfig - Build for qemu_mips64_malta
qemu_mips64r6el_malta_defconfig - Build for qemu_mips64r6el_malta
qemu_mips64r6_malta_defconfig - Build for qemu_mips64r6_malta
qemu_nios2_10m50_defconfig - Build for qemu_nios2_10m50
qemu_or1k_defconfig - Build for qemu_or1k
qemu_ppc64_e5500_defconfig - Build for qemu_ppc64_e5500
qemu_ppc64le_pseries_defconfig - Build for qemu_ppc64le_pseries
qemu_ppc64_pseries_defconfig - Build for qemu_ppc64_pseries
qemu_ppc_g3beige_defconfig - Build for qemu_ppc_g3beige
qemu_ppc_mpc8544ds_defconfig - Build for qemu_ppc_mpc8544ds
qemu_ppc_virtex_ml507_defconfig - Build for qemu_ppc_virtex_ml507
qemu_sh4eb_r2d_defconfig - Build for qemu_sh4eb_r2d
qemu_sh4_r2d_defconfig - Build for qemu_sh4_r2d
qemu_sparc64_sun4u_defconfig - Build for qemu_sparc64_sun4u
qemu_sparc_ss10_defconfig - Build for qemu_sparc_ss10
qemu_x86_64_defconfig - Build for qemu_x86_64
qemu_x86_defconfig - Build for qemu_x86
qemu_xtensa_lx60_defconfig - Build for qemu_xtensa_lx60
qemu_xtensa_lx60_nommu_defconfig - Build for qemu_xtensa_lx60_nommu
raspberrypi0_defconfig - Build for raspberrypi0
raspberrypi0w_defconfig - Build for raspberrypi0w
raspberrypi2_defconfig - Build for raspberrypi2
raspberrypi3_64_defconfig - Build for raspberrypi3_64
raspberrypi3_defconfig - Build for raspberrypi3
raspberrypi3_qt5we_defconfig - Build for raspberrypi3_qt5we
raspberrypi_defconfig - Build for raspberrypi
roseapplepi_defconfig - Build for roseapplepi
s6lx9_microboard_defconfig - Build for s6lx9_microboard
sheevaplug_defconfig - Build for sheevaplug
snps_aarch64_vdk_defconfig - Build for snps_aarch64_vdk
snps_arc700_axs101_defconfig - Build for snps_arc700_axs101
snps_archs38_axs103_defconfig - Build for snps_archs38_axs103
snps_archs38_haps_defconfig - Build for snps_archs38_haps
snps_archs38_hsdk_defconfig - Build for snps_archs38_hsdk
snps_archs38_vdk_defconfig - Build for snps_archs38_vdk
socrates_cyclone5_defconfig - Build for socrates_cyclone5
solidrun_clearfog_defconfig - Build for solidrun_clearfog
solidrun_macchiatobin_mainline_defconfig - Build for solidrun_macchiatobin_mainline
solidrun_macchiatobin_marvell_defconfig - Build for solidrun_macchiatobin_marvell
stm32f429_disco_defconfig - Build for stm32f429_disco
stm32f469_disco_defconfig - Build for stm32f469_disco
toradex_apalis_imx6_defconfig - Build for toradex_apalis_imx6
ts4800_defconfig - Build for ts4800
ts4900_defconfig - Build for ts4900
ts5500_defconfig - Build for ts5500
ts7680_defconfig - Build for ts7680
wandboard_defconfig - Build for wandboard
warp7_defconfig - Build for warp7
warpboard_defconfig - Build for warpboard
zynq_microzed_defconfig - Build for zynq_microzed
zynq_zc706_defconfig - Build for zynq_zc706
zynq_zed_defconfig - Build for zynq_zed
zynq_zybo_defconfig - Build for zynq_zybo
В частности, здесь есть интересующие меня модели Orange Pi (и Rapsberry Pi) ... Поэтому всё дальнейшее относительно сборки
BuildRoot я буду, для конкретности,
конспектировать в теме
Orange Pi (себе не память и, может быть, кому-то пригодится ).