Skip to main content

[RTEMS/QORIQ] How to deploy RTEMS 4.11(12) on NXP T4240RDB / TFTP on Ubuntu 14.04 LTS

Update:
Thanks for Jan Hafemeister, I put in how I get the dtb file.
I generate the file via the original SDK of freescale/NXP and get uImage-t4240rdb.dtb
For example, in the following folder:
~/QorIQ-SDK-V2.0-20160527-yocto/build_t4240rdb/tmp/work/t4240rdb-fsl-linux$
then in the following folder, you can find:
./linux-qoriq/4.1-r0/build/arch/powerpc/boot/fsl/t4240rdb.dtb

BSP is qoriq_t4240rdb (which can be found in c/lib/libbsp/powerpc/qoriq/preinstall.am)
Toolchain is powerpc

The command for building up the toolchain by rtems-source-builder:

../source-builder/sb-set-builder --log=build-nxp-log.txt --prefix=$HOME/development/rtems/compiler/4.12 4.12/rtems-powerpc

The command for configuring the build up procedure:
../rtems-kuan/configure --target=powerpc-rtems4.12 --enable-rtemsbsp=qoriq_t4240rdb --enable-smp --enable-tests=yes --prefix=$HOME/development/rtems/4.12-powerpc

make install

If you use the original source code from RTEMS:
After Juli 28, 2017, there is no longer existing BSP qoriq_t4240rdb.
Instead, it is covered by qoriq_core_0:

../rtems-kuan/configure --target=powerpc-rtems4.12 --enable-rtemsbsp=qoriq_core_0 --enable-smp --enable-tests=yes --prefix=$HOME/development/rtems/4.12-powerpc

make install

The comment from the commit is as follows:

Due to the FDT support we can now reduce the BSP variants.  Use the
processor core to define the BSP variants.

Please make sure that the versions of rtems-source-builder is the latest version!


-----------------------------------------------
As the u-boot loader is provided together with the board, I have a chance to learn how to deploy operating system and dtb it to boot the board. There are many ways: upload kernel to RAM, FLASH, SDcard. Or using tftp to load the file from tftp server to the board.
Reference about U-boot:
http://ftp1.digi.com/support/documentation/90000852_K.pdf

By referring to the manual, I choose to set up TFTP server in my host machine.
The u-boot loader already has TFTP feature.
However I face some issues as follows:
  1.  Host and device have internet but cannot communicate with each other.
    (by using ping, you can know if the internet works or not)
    I figure out that all the tutorials I can find in the internet are not suitable to my host.
    I have to install a standalone tftp server (standalone means not be managed by xinetd): tftpd-hpa and configure it's setting /etc/default/tftpd-hpa correctly.

    with options:
    TFTP_OPTIONS="-l -c -s"
    TFTP_DIRECTORY="/tftpboot"

    Then restart!
    service tftpd-hpa restart
  2. As I am not going to run Linux on the device, all the found tutorial are also inapplicable.
    For RTEMS, the essential information is here:
    https://github.com/RTEMS/rtems/tree/master/c/src/lib/libbsp/powerpc/qoriq
    The executable should be wrapped as a image file with loadaddr 0x4000 and entryaddr 0x4000. I also notice that the dynamic FDT adjustment is required. Therefore I build a dtb by using the sdk provided by NXP and see if it works for RTEMS as well.
For the sake of completeness, here I write down the commands I use to wrap the executable:

# powerpc-rtems4.12-objcopy -O binary 'hello.exe' 'hello.bin'
# gzip -f -9 'hello.bin'
# mkimage -A ppc -O linux -T kernel -a 0x4000 -e 0x4000 -n 'RTEMS' -d hello.bin.gz 'hello.img'

# cp hello.img /tftpboot

To load the kernel and dtb on the boards, I use the following commands:

tftp 1000000 app.img
tftp c00000 t4240rdb.dtb
bootm 1000000 - c00000

Please note, if there is PANIC ERROR 0 in the end of execution, it is normal.
All termination paths end up here.

Comments

Popular posts from this blog

RSB+RTEMS 5/6 with QEMU-SMP (ARM realview_pbx_a9_qemu as example)

Since I got a request regarding this blog  written in 2016, summarizing again the complete flow with the latest version of RTEMS could be a good idea. Prepare a suitable workspace according to the adopted operating system on your host ( https://docs.rtems.org/branches/master/user/hosts/index.html ):  sudo apt-get build-dep build-essential gcc-defaults g++ gdb git unzip pax bison flex texinfo unzip python3-dev libpython-dev libncurses5-dev zlib1g-dev Checkout RSB and build: git clone git://git.rtems.org/rtems-source-builder.git rsb change directory to rsb/rtems/ and type ../source-builder/sb-set-builder --prefix=<the path you like to store the built toolchains> <the name of bsp> For example, to use QEMU, I need toolchains for ARM, so: ../source-builder/sb-set-builder --prefix=/home/kh.chen/respository/build/. 6/rtems-arm This will take a while. Please ensure your connection is reliable. Add the built folder into your PATH. For example, you can add one line in ~/.bas...

[Gem5] Full system Simulation with Official Kernel

I follow the youtube provided by Gem5 to get the inspiration. (http://gem5.org/Running_gem5#Full_System_.28FS.29_Mode) I download the file here: http://www.gem5.org/dist/current/arm/ with http://www.gem5.org/dist/current/arm/aarch-system-20170616.tar.xz Then Set up M5_PATH as the place I extract the files: "/home/khchen/full_system_images/" If the setting is correct, assigning the disk-image will finish the rest of setting for dtb and kernel specifications. So far I can only use this img (aarch32-ubuntu-natty-headless.img) as my disk-image to run up to the login interface of the ubuntu: build/ARM/gem5.opt configs/example/fs.py --disk-image=/home/khchen/full_system_images/disks/aarch32-ubuntu-natty-headless.img With the other imgs, for example like "aarch64-ubuntu-trusty-headless.img", I think the kernel and the dtb should be given manually, because it will automatically load something with aarch32 prefix which doesn't make sense: info: kernel ...

[ubuntu] Removing the instance/package which is not fully installed from apt-get

When I'm installing g77-3.4 for pgplot, I trivially use dkpg to install it. However, g77-3.4-doc is not able to fully installed. And I stuck for this kind of error due to the broken packages (refer to here ): dpkg: error processing realplayer (--configure/--purge/--remove): (Whatever messages) Errors were encountered while processing: g77-3.4-doc cd /var/lib/dpkg/info sudo rm g77-3.4-doc* sudo dpkg --remove --force-remove-reinstreq g77-3.4-doc Hmm, now apt-get works well again. https://www.youtube.com/watch?v=S9HJ-iAzf3k