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 ...

Efficient Computation of Deadline-Miss Probability and Potential Pitfalls

Fortunately, I will attend the DATE 2019 conference to present my work. The title of my work is: Efficient Computation of Deadline-Miss Probability and Potential Pitfalls This work is regarding the approximation of Deadline-Miss probability for soft real-time systems. The abstract is as the following: In soft real-time systems, rare deadline misses are often tolerable by the applications. Towards this, probabilistic arguments and analyses are applicable to the timing analyses of this class of systems, as demonstrated in many existing researches. Convolution-based analyses allow to derive tight deadline-miss probabilities, but suffer from a high time complexity. Among the analytical approaches, which result in a significantly faster runtime than the convolution-based approaches, the Chernoff bounds provide the tightest results. In this paper, we show that calculating the deadline-miss probability using Chernoff bounds can be solved by considering an equivalent convex optimization ...