Sunday, October 20, 2013

RTEMS – stm32F407 Discovery Board

  • Environment :
Host O.S. : Windows 7 64bits With stlink v2 Driver + VMWare Workstation 10.0.0 build 1.295980.
Guest O.S. : Ubuntu 13.10 Desktop 64bits.
  • PreInstall :
sudo apt-get update;sudo apt-get upgrade -y
sudo apt-get install -y autoconf automake autotools-dev build-essential git \
dpkg-dev g++ g++-4.6 libalgorithm-diff-perl libalgorithm-diff-xs-perl \
libalgorithm-merge-perl libdpkg-perl libgmp-dev libgmp3-dev libgmpxx4ldbl \
libltdl-dev libmpc-dev libmpfr-dev libstdc++6-4.6-dev libtimedate-perl \
libtool texinfo flex bison gawk expat libexpat-dev libncurses5-dev \
libusb-1.0.0-dev libsgutils2-dev
mkdir for source & build
br prefix : for arm-rtems4.11 BSP
bre prefix : for arm-rtemseabi4.11 BSP
$ mkdir ~/rtems
$ mkdir ~/rtems/source
$ mkdir ~/rtems/build
$ mkdir ~/rtems/build/b-autoconf
$ mkdir ~/rtems/build/b-automake
$ mkdir ~/rtems/build/br-binutil
$ mkdir ~/rtems/build/bre-binutil
$ mkdir ~/rtems/build/br-gcc
$ mkdir ~/rtems/build/bre-gcc
$ mkdir ~/rtems/build/br-gdb
$ mkdir ~/rtems/build/bre-gdb
$ sudo mkdir /opt/rtems-4.11
$ sudo chown -R $USER /opt/rtems-4.11
$ export PATH=/opt/rtems-4.11/bin:$PATH
  •  Install autoconf & automake :
$ mkdir b-autoconf
 $ cd b-autoconf/
 $ ../autoconf-2.69/configure --prefix=/usr
 $ make
 $ sudo make install
 $ cd ..
 $ rm -fr b-autoconf/
 $ mkdir b-automake
 $ cd b-automake/
 $ ../automake-1.12.2/configure --prefix=/usr
 $ make
 $ sudo make install
 $ cd ..
 $ rm -fr b-automake/
  • Build – Crosstool :
For BSP arm-rtems4.11
~/rtems/source/rtems$ export TARGET="arm-rtems4.11"
For BSP arm-rtemseabi4.11
~/rtems/source/rtems$ export TARGET="arm-rtemseabi4.11"

  • Build – O.S.  & test sample :
~/rtems/source$ git clone git:// rtems
configure & build :
~/rtems/source/rtems$ ./bootstrap
~/rtems/source/rtems$ cd ~/rtems/build/br-stm32
~/rtems/build/br-stm32$ ../../source/rtems/configure --target=${TARGET} --enable-rtemsbsp=stm32f4 --enable-tests=samples --prefix=/opt/rtems-4.11
~/rtems/build/br-stm32$make install

  • Build – st-util :
~/rtems/source$ git clone git:// stlink
~/rtems/source$ cd stlink
~/rtems/source/stlink$ sudo cp 49-stlinkv*.rules /etc/udev/rules.d/.
~/rtems/source/stlink$ sudo udevadm control --reload-rules
~/rtems/source/stlink$ ./
~/rtems/build/b-stlink$ ./configure --prefix=/opt/rtems-4.11
~/rtems/build/b-stlink$ make
~/rtems/build/b-stlink$ make install

  • Flush sample file (ex : hello[ps]) to stm32F407 Discovery Board :
...$ arm-rtemseabi4.11-objcopy -O binary hello.exe hello.bin
...$ st-flash write hello.bin 0x08000000
Screen Capture :

Open407V-D With Extension Board Uart 3 pin def :
Tx : PC10
Rx : PC11
RTEMS Hello.exe :
Using UART 3, Pin Define :
Tx : PD8
Rx : PD9

RTEMS Source Builder For Debian / Ubuntu :


popovich said...
This comment has been removed by the author.
popovich said...

You have idea how to write a makefile to build custom applications??

turmoil said...

Hello Tony,
I can also manage to work hello.exe on my discovery board, but in Centos host. Thank you very much. Where did you define USART3 pins of discovery board for RTEMS Hello.exe? I just locate an init.c file in .../rtems/testsuites/samples/hello, but there seems to be printf and some #define statements.
Thank you...

Tony Jou said...

For makefile, ref

For uart pin def (printf redirect), check following file pls.
....rtemssource/c/src/lib/libbsp/arm/stm32f4/console/ usart.c

DWM.EXE is consuming a lot of memory

Environment : Windows 10 1903 64 Bits, Thinkpad P1 Gen 2. The Memory Usage Of Desktop Windows Manager (dwm.exe) : Display Configuration ...