Building and testing RTEMS-libbsd for BeagleBone Black BSP

------------------------------------------------------------------------
Building and testing libbsd for BeagleBone Black BSP
------------------------------------------------------------------------


== Installation overview ==

=== Initial setup ===

- Jump into your workspace and make a directory named sandbox
  This folder will contain all our project files
- cd sandbox/
- export sandbox=$PWD
- git clone git://git.rtems.org/rtems-source-builder.git
- git clone git://git.rtems.org/rtems.git
- git clone git://git.rtems.org/rtems-libbsd.git

=== Building desired toolset for ARM ===

- cd rtems-source-builder/rtems/
- ../source-builder/sb-check
- ../source-builder/sb-set-builder --prefix=$sandbox/5 5/rtems-arm
- cd $sandbox
- export PATH=$PWD/5/bin:$PATH

After having required toolchain, we can now proceed towards building our Board Support Package(BSP)

=== Building Beagleboneblack BSP ===

- cd $sandbox
- mkdir beagleboneblack
- cd rtems
- ./bootstrap -c &&  ./bootstrap
- ../rtems-source-builder/source-builder/sb-bootstrap
- cd ..
- cd beagleboneblack/
- ../rtems/configure --prefix=$sandbox/5 --target=arm-rtems5 --disable-networking --enable-rtemsbsp=beagleboneblack
- make
- make install
- cd $sandbox

BeagleBone black  BSP is now ready, and we should start building libbsd now

=== Building libbsd ===

Before moving forward, we have to install waf(https://waf.io/)

- cd $sandbox
- curl -o waf https://waf.io/waf-2.0.6
- chmod +x waf

Adding it to path,

- export PATH=$PWD:$PATH

Verify installment by,

- waf --version

Now, let's start by configuring and initializing libbsd module

- git submodule init
- git submodule update rtems_waf
- waf configure --prefix="$sandbox/5" --rtems-bsps=arm/beagleboneblack
- waf
- waf install

Libbsd installation is done, now we can move on to testing and building test suite examples

== Testing and Building Examples ==

Default libbsd test examples can be found under $sandbox/rtems-libbsd/build/arm-rtems5-beagleboneblack/

=== Building selectpollkqueue01 example ===

By now, under the example directory ( $sandbox/rtems-libbsd/build/arm-rtems5-beagleboneblack/ )
you can find selectpollkqueue01.exe file. We need to convert this file to its image file
i.e. selectpollkqueue01.img. There are several ways to do that, few of them are:

1)  Direct method: Here, binary of the executable is directly converted into its image file via mkimage tool.
    STEPS:
    # arm-rtems4.11-objcopy selectpollkqueue01.exe -O binary selectpollkqueue01.bin
    # gzip -9 selectpollkqueue01.bin
    # mkimage -A arm -O rtems -T kernel -a 0x80000000 -e 0x80000000 -n RTEMS -d selectpollkqueue01.bin.gz selectpollkqueue01.img

    Here, selectpoolkqueue01.img is the image file, that need to be loaded via uboot.
    Please note that this method is depreciated as it doesn't incorporate bootloader and Device tree. So, for
    loading it, one has to interrupt uboot's(Which is already present in the EMMC) default setup and then load
    the image file via fatload command (for this to work, you should have image in sd card with filesystem type as FAT) for example:

    # fatload mmc :0 0x80800000 selectpollkqueue01.img
    # bootm 0x80800000

2)  Via automated script: create-sdcardimage.sh script file takes the executable file as input and outputs the image file
    after including uboot along with device tree. This method will be elaborated with next example.

As of now, this post is partially complete, i'll update it asap.

Comments

Popular posts from this blog

Understanding SD, SDIO and MMC Interface

Software licensing : Introduction and it's types

Implementing a MMC/SD/SDIO stack using CAM framework(Part 2)