===== How to create a simple "Hello, World!" application with PTXdist ===== In this tutorial we use the STKa6x and BSP Rev.0109, but you can easily adapt this example to any other TQ staterkit and BSP. Make sure you are in the BSP root directory user@ubuntu-vm:~$ cd workspace/TQMa6x-BSP-REV.0109/ user@ubuntu-vm:~/workspace/TQMa6x-BSP-REV.0109$ To create a new package, we will use the command ''ptxdist newpackage''. user@ubuntu-vm:~/workspace/TQMa6x-BSP-REV.0109$ ptxdist newpackage usage: 'ptxdist newpackage ', where type is: host create package for development host target create package for embedded target cross create cross development package klibc create package for initramfs built against klibc src-autoconf-lib create autotoolized library src-autoconf-prog create autotoolized binary src-autoconf-proglib create autotoolized binary+library src-cmake-prog create cmake binary src-qmake-prog create qmake binary src-linux-driver create a linux kernel driver src-make-prog create a plain makefile binary src-stellaris create stellaris firmware font create a font package file create package to install existing files kernel create package for an extra kernel barebox create package for an extra barebox image-tgz create package for a tgz image image-genimage create package for a genimage image blspec-entry create package for a bootloader spec entry user@ubuntu-vm:~/workspace/TQMa6x-BSP-REV.0109$ For further details on adding packages please see the PTXdist manual\\ [[http://www.pengutronix.de/software/ptxdist/appnotes/OSELAS.BSP-Pengutronix-Generic-arm-Quickstart.pdf#section.4.2|"How to become a PTXdist Guru", section 4.2 Adding new Packages]]. In this tutorial we will create a package of type **//src-make-prog//** (which simply consists of a Makefile and a single C source file) by executing: user@ubuntu-vm:~/workspace/TQMa6x-BSP-REV.0109$ ptxdist newpackage src-make-prog You need to provide some basic details regarding your package, namely //package name//, //version number//, //package author// and the //package section//((The default value for //package section// is **project_specific**, which means we will find our "Hello, World!" application at the very top when looking at the Software Platform Configuration (''ptxdist menuconfig'') of our BSP)) ptxdist: creating a new 'src-make-prog' package: ptxdist: enter package name...........: hello-world ptxdist: enter version number.........: 0.1 ptxdist: enter package author.........: TQ-Embedded ptxdist: enter package section........: project_specific After entering the required information two files are created within the BSP's local ''rules/'' directory. generating rules/hello-world.make generating rules/hello-world.in | ''rules/hello-world.make'' | so called "rule file", controls the build process | | ''rules/hello-world.in'' | so called "menu file", defines menu entries, dynamic configuration and dependencies | Unless it alread exists, PTXdist asks if it should create a folder ''local_src/hello-world''. If you say **Y** here (or just confirm the preset [**Y**/n] by hitting *ENTER*) PTXdist will create a skeleton for our package: local_src/hello-world does not exist, create? [Y/n] y ./ ./Makefile ./wizard.sh ./@name@.c user@ubuntu-vm:~/workspace/TQMa6x-BSP-REV.0109$ | ''Makefile'' | Makefile used by the ''make'' program | | ''@name@.c'' | source file (where //name// is actually the name of our package) | Let's have a look at the contents of ''local_src/hello-world/hello-world.c'': user@ubuntu-vm:~/workspace/TQMa6x-BSP-REV.0109$ cat local_src/hello-world/hello-world.c #include #include int main(int argc, char *argv[]) { printf("Hello World, I'm hello-world!\n"); exit(EXIT_SUCCESS); } user@ubuntu-vm:~/workspace/TQMa6x-BSP-REV.0109$ In order to have our new application built by PTXdist, you have to select it in the ptxdist software configuration. Please execute ''ptxdist menuconfig'' and select ''hello-world '': user@ubuntu-vm:~/workspace/TQMa6x-BSP-REV.0109$ ptxdist menuconfig .config - PTXdist 2015.05.0 ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ┌───────────────────────────────────────────────────── PTXdist 2015.05.0 ─────────────────────────────────────────────────────┐ │ Arrow keys navigate the menu. selects submenus ---> (or empty submenus ----). Highlighted letters are hotkeys. │ │ Pressing includes, excludes, modularizes features. Press to exit, for Help, for Search. │ │ Legend: [*] built-in [ ] excluded module < > module capable │ │ │ │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ < > Enable DVI on startup │ │ │ │ <*> eGalax touchscreen support │ │ │ │ [*] eGalax for HardFloat toolchain │ │ │ │ <*> gpio service scripts │ │ │ │ < > hello-world (NEW) │ │ │ │ <*> kmsfbwrap │ │ │ │ [*] netperf │ │ │ │ <*> phyio │ │ │ │ <*> regmon │ │ │ │ < > smsc9303 │ │ │ │ <*> configure SMSC95xx MAC on MBa6x REV.0200 on startup │ │ │ │ <*> spidev_test │ │ │ │ < > stm32flash │ │ │ │ <*> stress-ng │ │ │ │ <*> tq-systems-media │ │ │ │ < > collection of small examples (Qt5) │ │ │ │ --- ------------------------------------ │ │ │ │ Project Name & Version ---> │ │ │ │ --- --------- Host Options ------------- │ │ │ │ PTXdist Options ---> │ │ │ │ Host Tools ---> │ │ │ │ Cross Tools ---- │ │ │ │ Debug Tools ---> │ │ │ │ --- ------------------------------------ │ │ │ │ Root Filesystem ---> │ │ │ │ Core (libc, locales) ---> │ │ │ │ [ ] Core (initramfs) ---- │ │ │ │ --- ------------------------------------ │ │ │ │ Shell & Console Tools ---> │ │ │ └─────────────────────────┴(+)────────────────────────────────────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ │