:::: MENU ::::
Posts tagged with: buildroot

Buildroot kullanimi

Genel hatlarıyla versiyon seçimleri ve konfigürasyon değerleri buildroot ozelinde değişkenlik gösterebilir. Buildroot detaylarina; mimari, toolchain, kernel, target packages secimlerinin detaylarina girilmeyecektir. Fakat bu yazida stabil çalışan pandaboard dagitimi icin yapilacak seçim ve değerleri bulabilirsiniz. Ayrica buildroot uzerinden kernel’e build time’da nasil yama yapilacagi da, preempt_rt yamasiyla orneklenecektir.

İndirme

Buildroot versiyon 2014.11-rc1, http://git.buildroot.net/buildroot/snapshot/buildroot-2014.11-rc1.tar.gz adresinden indirilir.

Buildroot ana konfigürasyonu

buildroot-pandaboard-linux.config indirilip, buildroot dizininde:

make menuconfig

diyerek acilan menuden bu konfigürasyon dosyası yüklenir.

Realtime yaması

Bu konfigürasyon dosyasının realtime ile ilgili ihtiyacı olan diğer dosyalar ve menüdeki ilgili yerleri şu şekildedir:

Realtime preempt_rt yamasını uygulamak istiyorsak:

Derleme ve çıktılar

make diyerek derleme işlemlerinin çalışması sağlanır. Bootloaders -> U-Boot version: ayarına 2011.11.2 girilmesi durumunda buildroot/output/images altindaki

MLO
u-boot.bin
uImage

dosyaları sd-karta atılır. Sd-kartın tek bir partition şeklinde fat-32 kullanarak formatlanmış ve boot etme yeteneği atanmış olması gerekmektedir.

https://github.com/eckucukoglu/linux-tools/tree/master/make-sdcard incelenerek, ihtiyaca uygun hale getirilebilinir.

Bootloaders -> U-Boot version: 2013.01.01 girilmesi durumunda (4460 pandaboard u-boot versiyonu için bu versiyon kullanılmaktadır) sd-kart içerisine /output/images/u-boot.bin yerine output/build/uboot-2013.01.01/u-boot.img  konulmalıdır.

Aynı zamanda sd-kart içerisine konulacak boot.scr dosyası şu şekilde oluşturulur:

setenv bootargs ‘root=/dev/mmcblk0p2 rw rootwait rootfstype=ext3 console=ttyO2,115200n8 vram=16M’
fatload mmc 0 82000000 uImage
bootm start 82000000
bootm loados
bootm go 82000000

içeriği ile oluşturulacak boot_mmc.txt dosyasından,

mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n “Panda SD Boot” -d boot_mmc.txt boot.scr

komutu ile boot.scr oluşturulur ve sd-kart ana dizinine diğer dosyaların yanına atılır.

Pandaboard’a takılacak sd-kart boot edecek ve komut istemini verecektir.

  • Derlenirken izlek oluşturmamak için -jX parametresi girilmemelidir.
  • Adımlar izlenirken öncelikli kaynak olarak [2] kullanılmıştır.
Referanslar

[1]: http://www.linux-magazine.com/Online/Features/Qemu-and-the-Kernel
[2]: http://fooprotected.wordpress.com/2014/03/13/buildroot-linux-on-the-pandaboard-rev-3/
[3]: http://www.rte.se/blog/linux-0/buildroot-basics-building-real-target-pandaboard/1.2
[4]: http://elinux.org/Panda_How_to_buildroot
[5]: http://delog.wordpress.com/2011/09/04/custom-embedded-linux-system-for-pandaboard-with-buildroot/


build error on bash 4.3.30

During the building operations of bash 4.3.30 using buildroot, some errors may occur:

bashline.o: In function `bash_event_hook':
bashline.c:(.text+0x2328): undefined reference to `rl_signal_event_hook'
bashline.o: In function `bash_execute_unix_command':
bashline.c:(.text+0x2d5c): undefined reference to `rl_executing_keyseq'
bashline.o: In function `bashline_set_event_hook':
bashline.c:(.text+0x3734): undefined reference to `rl_signal_event_hook'
bashline.o: In function `bashline_reset_event_hook':
bashline.c:(.text+0x3748): undefined reference to `rl_signal_event_hook'
bashline.o: In function `initialize_readline':
bashline.c:(.text+0x4464): undefined reference to `rl_filename_stat_hook'
bashline.o: In function `attempt_shell_completion':
bashline.c:(.text+0x4b0c): undefined reference to `rl_filename_stat_hook'
bashline.o: In function `bashline_reset':
bashline.c:(.text+0x4bb8): undefined reference to `rl_filename_stat_hook'
bashline.c:(.text+0x4bc0): undefined reference to `rl_signal_event_hook'
bashline.o: In function `command_word_completion_function':
bashline.c:(.text+0x572c): undefined reference to `rl_filename_stat_hook'
collect2: error: ld returned 1 exit status
make[2]: *** [bash] Error 1

This error may depend on your external toolchain, however solution is as easy as making symlink. Main source of this error comes from readline library. It seems that readline 6.2 & 6 (afaik) do not have above functions.

In buildroot sysroot directory,

$BUILDROOT_DIR/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/

libreadline.so exists in usr/lib/arm-linux-gnueabihf and linked to lib/arm-linux-gnueabihf/libreadline.so.6 which also linked to libreadline.so.6.2. Changing this linkage to libreadline.so.6.3:

cp usr/lib/libreadline.so.6.3 lib/arm-linux-gnueabihf/
cd usr/lib
ln -sf libreadline.so.6.3 libreadline.so.6

should solve the build problem.