Template:DebianVM Development

From Wiki-DB
Revision as of 15:09, 24 February 2020 by Christoph (talk | contribs)
Jump to navigationJump to search

Introduction

For cross developing of applications we provide virtual machines with preinstalled toolchains. Choose the virtual machine which fits to your DHCOM target (Debian 8 on target -> Debian 8 virtual machine). Debian 8 does include support for architecture armhf and armel (Debian 6 only armel). By default Debian 8 is configured for armhf. The sections Code Examples for Userspace-Applications to Access SPI, I2C, GPIOs, and more and Booting via NFS apply for Debian 6 and Debian 8.

Debian 9 "Stretch" VM image (for VMware and VirtualBox)

Get the virtual machine

Remark: For security reasons, you must set your own password when starting the virtual machine for the first time:
  1. Enter default user devel password (devel)
  2. Enter default user devel password again (devel)
  3. Enter your own user devel password
  4. Enter your own user devel password again
Version: File: Changes:
v2.0.Vx Debian Stretch v2.0.Vx.zip - First release version of Debian 9 VM

Installed Toolchains

  • Used for building the Linux Kernel for our ARMv7 DHCOM devices.
  • ARM GCC 8.3
armhf: CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
  • Linaro GCC 7.4
armhf: CROSS_COMPILE=/opt/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
  • Linaro GCC 6.3
armhf: CROSS_COMPILE=/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
  • Linaro GCC 4.9
armhf: CROSS_COMPILE=/opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
  • Used for building the Linux Kernel for our ARMv5 DHCOM devices.
  • CodeSourcery GCC 4.5
armel: CROSS_COMPILE=/opt/CodeSourcery-2011.03-41/bin/arm-none-linux-gnueabi-

Debian 8 "Jessie" VM image (for VMware)

Get the virtual machine

Version: File: Changes:
v1.3 Debian Jessie v1.3.zip - Debian Security updates
- Compatibility VMware player 5.0
- Ready for yocto build
- Build environment for DHCOM i.MX6 Qt5.7.1 / Qt5.9.1
- Add some useful tools
v1.2 Debian Jessie v1.2.zip - Debian Security updates
- Qt Creator + Support for imx6 modules + Demos
- Update elbe to v1.0
- Add some tools / editors
v1.1 Debian Jessie v1.1.zip - Compatibility VMware player 6.0
v1.0 Debian Jessie v1.0.zip - New Debian 8 VM

Installed Toolchains

  • Used for building the Linux Kernel for our ARMv7 DHCOM devices.
  • Debian Multiarch Cross Toolchain GCC 4.9
armhf: CROSS_COMPILE=arm-linux-gnueabihf-
The Cross Toolchains is preinstalled. They should be used for cross development of native Linux applications. They are downloaded and installed with the Debian Package Manager.
Install directory is /usr/bin/. Please have a look at the preconfigured Examples for cross development using the Eclipse IDE.
  • Linaro GCC 4.9
armhf: CROSS_COMPILE=/opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
  • Used for building the Linux Kernel for our ARMv5 DHCOM devices.
  • Debian Multiarch Cross Toolchain
armel: CROSS_COMPILE=arm-linux-gnueabi-
The Cross Toolchains is preinstalled. They should be used for cross development of native Linux applications. They are downloaded and installed with the Debian Package Manager.
Install directory is /usr/bin/. Please have a look at the preconfigured Examples for cross development using the Eclipse IDE.
  • CodeSourcery GCC 4.5
armel: CROSS_COMPILE=/opt/CodeSourcery-2011.03-41/bin/arm-none-linux-gnueabi-

Qt5 Development

Qt5.5.1 prebuilt and preinstalled

We provide the prebuilt Qt5.5.1 libraries including WebEngine (only QtQuick) and WebKit in /work/qt5/sysroot/. This directory contains a Debian 8 based rootfilesystem which is prepared for DHCOM i.MX6, the matching sysroot (*-dev packages), and the Qt5.5.1 libraries installed.

Qt5.7.1

We support the latest Qt5.7.1 on our DHCOM i.MX6 and DHCOM am335x. Please download and install the qmake-sysroot-mx6-crossarmhf_5.7.1-1.0 or qmake-sysroot-am33-crossarmhf_5.7.1-1.0 package to the DebianVM:

  1. open a terminal
  2. # for i.MX6: wget https://dl.dropboxusercontent.com/u/19433555/DHCOM/imx6/qmake-sysroot-mx6-crossarmhf_5.7.1-1.0_amd64.deb
  3. # for AM335x: wget https://dl.dropboxusercontent.com/u/19433555/DHCOM/am335x/qmake-sysroot-am33-crossarmhf_5.7.1-1.0_amd64.deb
  4. install the package
  5. # sudo dpkg -i qmake-sysroot-mx6-crossarmhf_5.7.1-1.0_amd64.deb
  6. now the sysroot and qmake is ready to use
  7. path to qmake is /work/qt5_mx6_armhf/sysroot/usr/local/qt5.7.1/bin/qmake

Build a Qt5 Application via console

  1. open a terminal
  2. navigate to your Qt5 sources
  3. # /work/qt5/sysroot/usr/local/qt5.5.1/bin/qmake your_own_app.pro
  4. # make

Qt Creator

  1. Start Qt Creator IDE
  2. Open demo project TwoLED: /work/qt5_Demos/TwoLED
  3. There you can find the configurations for your own project.

Debian 6 "Squeeze" VM image (for VMware)

Get the virtual machine

Version: File: Changes:
v1.5 Debian Squeeze v1.5pw.zip - Update VMware Tools
- DH UBI-Tools
- Language: English
- System updates
v1.4 Debian Squeeze v1.4pw.zip - ELBE v0.3.1
- ELDK 4.2
- Qt Creator 2.6.1 + Qt target libs 4.7.2
- System updates
v1.3 Debian Squeeze v1.3.zipx - Mono 2.10
- mtd-utils
- System updates
v1.2 Debian Squeeze v1.2.zipx - Emdebian Toolchain gcc 4.3 / g++ 4.3 (arm-linux-gnueabi-...)
- TortoiseHg + TortoiseHg for Nautilus
- Add Plugin "REST Client" in Iceweasel
v1.1 Debian Squeeze v1.1.zipx - Update Eclipse Indigo with CDT 8.0
- Add demo project "crosshelloworld"
v1.0 Debian Squeeze.zipx - First Release
- CodeSourcery Toolchain (arm-none-linux-gnueabi-...)
- Eclipse Helios & Indigo

Installed Toolchains

  • Used for building the Linux Kernel for our ARMv5 DHCOM devices.
  • Debian Multiarch Cross Toolchain GCC 4.3
armel: CROSS_COMPILE=arm-linux-gnueabi-
The Cross Toolchains is preinstalled. They should be used for cross development of native Linux applications. They are downloaded and installed with the Debian Package Manager.
Install directory is /usr/bin/. Please have a look at the preconfigured Examples for cross development using the Eclipse IDE.
  • CodeSourcery GCC 4.5
armel: CROSS_COMPILE=/opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-

Setting up a Eclipse Cross Executable Project:

  • Use Eclipse Indigo (version 3.7.1) for your project.
  • Create a new C++ Project and choose as Executable Project type Cross-Compile Project and as Toolchains Cross GCC
  • Click the Button "Next" and specify under Tool command path the Toolchain path.
  • CodeSourcery:
Folder "/opt/CodeSourcery/Sourcery_G++_Lite/bin"
Prefix type "arm-none-linux-gnueabi-"
  • Emdebian Toolchain:
Folder "/usr/bin"
Prefix type "arm-linux-gnueabi-"

Use Virtualbox instead of VMware Player/Workstation

VMware Maschine mit VirtualBox starten (German)

Booting via TFTP/NFS

Prepare the virtual machine

  1. Setup nfs-kernel-server
    • Install thf nfs server: $ sudo apt-get install nfs-kernel-server
    • Create a nfsservice directory: $ mkdir /work/nfsroot
    • Place the root file system in the folder $ cd /work/nfsroot; sudo tar xf jessie....tar.gz
    • Remove network config from rootfs $ rm /work/nfsroot/etc/systemd/network/wired-dhcp.network
    • Check whether the line below is part of the /etc/exports file
    • /work/nfsroot X.X.X.0/255.255.255.0(rw,no_root_squash,no_subtree_check,insecure)
      • The X must be substituted by our network settings
    • Restart the nfs-server with 4 /etc/init.d/nfs-kernel-server restart
  2. Setup tftp-hpa server
    • Install a tftp server : $ sudo apt-get install tftpd-hpa
    • Create a tftp service directory: $ mkdir /work/tftp
    • Edit config: $ sudo vi /etc/default/tftpd-hpa
      • Take care that TFTP_DIRECTORY points to your tftp service directory, for example '/work/tftp'
    • Copy Kernel and DeviceTree into the tftp service directory
    • Restart the tftp-server with $ /etc/init.d/tftp-hpa restart

Setup the DHCOM Module for TFTP/NFS Boot

This example works with static IP addresses and is tested with DHCOM i.MX6 U-Boot 2015.10 and Kernle 4.4.38. It is possible to work with DHCP, too. For further information see https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt

  • Enter U-Boot console by pressing DEL/BACKSPACE on a RS232 terminal while switching on the power supply of the target
  • Set IP addresses
# env set serverip 192.168.178.90
# env set ipaddr 192.168.178.91
  • bootargs for nfs root (up to Debian Jessie)
# env set rootfs 'root=/dev/nfs nfsroot=192.168.178.90:/work/nfsroot/ ip=192.168.178.91:192.168.178.90::255.255.255.0:dhcom:eth0:none'
  • bootargs for nfs root (since Debian Stretch)
# env set rootfs 'root=/dev/nfs nfsroot=192.168.178.90:/work/nfsroot/,nfsvers=3 ip=192.168.178.91:192.168.178.90::255.255.255.0:dhcom:eth0:none'
  • load Linux kernel and devicetree with tftp (change filename and path to match you setup)
# tftp ${loadaddr} zImage
# tftp ${fdt_addr} dtbs/imx6dl-dhcom3B-pdk2.dtb
  • set bootargs and boot
# run linuxargs
# bootz ${loadaddr} - ${fdt_addr}
  • optional: save it to be permanent
# env set bootcmd 'tftp ${loadaddr} zImage; tftp ${fdt_addr} dtbs/imx6dl-dhcom3B-pdk2.dtb; run linuxargs; bootz ${loadaddr} - ${fdt_addr}
# env save

Code Examples for Userspace-Applications to Access SPI, I2C, GPIOs, and more

  • The following code samples are designed to get you started quickly with the device interfaces to SPI, I2C, GPIOs and more in Linux userspace applications.
  • Within Eclipse you can Import the provided projects:
  1. Execute ">File>Import ..."
  2. Navigate to ">General>Existing Projects into Workspace" within the import dialog
  3. Follow the dialog until you have finished.

Download Code Examples SPI, I2C, GPIOs and more

Included Demos:

  • SPI
  • I2C
  • GPIO
  • RTC
  • UART
  • Watchdog
  • ADC (only for i.MX25)

Download C++ HAL class library for SPI, I2C, GPIO, UART and physical address space access