Diva Embedded Linux Kit (DIVELK for short) provides all the necessary components required to set up the developing environment to:
* build the bootloader (U-Boot)
* build and run Linux operating system on Diva-based systems
* build Linux applications that will run on the target.
The main kit components are:
* hardware platform composed by Diva system-on-module (SOM for short) and carrier board. Supported carrier boards are:
** DivaEVB-Lite standalone
** DivaEVB-Lite plugged on Dacu carrier board
* Development virtual machine containing:
** Toolchain
** U-Boot bootloader sources
** Linux kernel sources
** Build system
** Pre-built root file systems
* Technical documentation such hardware manuals, mechanical drawings, reference schematics, application notes etc.
The documents related to the software issues help the user to quickly start configuring the bootloader and the operating system, by hiding most of the complexity of the underlying hardware. For more details about Diva hardware characteristics, please refer to the Diva Hardware Manual. An account for the reserved area of [http://www.dave.eu '''DAVE Embedded Systems''' website] is required to access the kit contents.
|Please refer to [[Diva_Embedded_Linux_Kit_(DIVELK)#Target_setup_and_first_boot | First boot]]
|-
|}
== DIVELK software components ==
'''DAVE Embedded Systems''' adds to the latest AMSDK from Texas Instruments the customization required to support the DIVA platform. For this reason most of the documentation provided by TI remains valid for the DIVELK development kit. However, some customization is required, in particular at bootloader and linux kernel levels.
The following table shows how DIVELK releases are related to <b>AMSDK</b> or <b>Processor SDK</b> releases.
{| class="wikitable"
!
! colspan="6" | DIVELK version
|-
|Release number
|1.0.0
|2.0.0
|2.1.0
|2.2.0
|3.0.0
|4.0.2
|-
|Status
|Released
|Released
|Released
|Released
|Released
|Released
|-
|Release date
|June 2013
|October 2014
|June 2015
|October 2015
|June 2017
|May 2019
|-
|'''Release notes'''
|[[Diva_Embedded_Linux_Kit_(DIVELK)#DIVELK_1.0.0 | Ver 1.0.0]]
|[[Diva_Embedded_Linux_Kit_(DIVELK)#DIVELK_2.0.0 | Ver 2.0.0]]
|[[Diva_Embedded_Linux_Kit_(DIVELK)#DIVELK_2.1.0 | Ver 2.1.0]]
|[[Diva_Embedded_Linux_Kit_(DIVELK)#DIVELK_2.2.0 | Ver 2.2.0]]
|[[Diva_Embedded_Linux_Kit_(DIVELK)#DIVELK_3.0.0 | Ver 3.0.0]]
|[[Diva_Embedded_Linux_Kit_(DIVELK)#DIVELK_4.0.2 | Ver 4.0.2]]
| valign="top" | SPI NOR Flash (boot)<br>NAND 8 bit (boot)<br>UART0 (2-wire)<br>USB Host<br>SD/MMC1<br>GPIO<br>LCD<br>Touch screen controller<br>EMAC0 RMII (Fast Ethernet)<br>PMIC RTC (battery powered)<br>
Audio (ALSA)
| valign="top" | SPI NOR Flash (boot)<br>NAND 8 bit (boot)<br>UART0 (2-wire)<br>USB Host<br>SD/MMC1<br>GPIO<br>LCD<br>Touch screen controller<br>EMAC0 RMII (Fast Ethernet)<br>PMIC RTC (battery powered)<br>
Audio (ALSA)<br>USB OTG<br>CAN (*)<br>ADC
| valign="top" | SPI NOR Flash (boot)<br>NAND 8 bit (boot)<br>UART0 (2-wire)<br>USB Host<br>SD/MMC1<br>GPIO<br>LCD<br>Touch screen controller<br>EMAC0 RMII (Fast Ethernet)<br>PMIC RTC (battery powered)<br>
Audio (ALSA)<br>USB OTG<br>CAN (*)<br>ADC<br>Splash screen in u-boot<br>[[ConfigID_and_UniqueID | ConfigID]]
| valign="top" | SPI NOR Flash (boot)<br>NAND 8 bit (boot)<br>UART0 (2-wire)<br>USB Host<br>SD/MMC1<br>GPIO<br>LCD<br>Touch screen controller<br>EMAC0 RMII (Fast Ethernet)<br>PMIC RTC (battery powered)<br>
Audio (ALSA)<br>USB OTG<br>CAN (*)<br>ADC<br>Splash screen in u-boot<br>[[ConfigID_and_UniqueID | ConfigID]]
| valign="top" | SPI NOR Flash (boot)<br>NAND 8 bit (boot)<br>UART0 (2-wire)<br>USB Host<br>SD/MMC1<br>GPIO<br>LCD<br>Touch screen controller<br>EMAC0 RMII (Fast Ethernet)<br>PMIC RTC (battery powered)<br>
Audio (ALSA)<br>USB OTG<br>CAN (*)<br>ADC<br>Splash screen in u-boot<br>[[ConfigID_and_UniqueID | ConfigID]]
| valign="top" | SPI NOR Flash (boot)<br>NAND 8 bit (boot)<br>UART0 (2-wire)<br>USB Host<br>SD/MMC1<br>GPIO<br>LCD<br>Touch screen controller<br>EMAC0 RMII (Fast Ethernet)<br>PMIC RTC (battery powered)<br>
Audio (ALSA)<br>USB OTG<br>CAN (*)<br>ADC<br>Splash screen in u-boot<br>[[ConfigID_and_UniqueID | ConfigID]]
|-
|TI
|AMSDK 05.06.00.00
|AMSDK 07.00.00.00
|AMSDK 07.00.00.00
|AMSDK 07.00.00.00
|Processor SDK 02.00.02
|Processor SDK 04.00.00
|-
|Build System
| -
|Yocto Dylan (1.4)
|Yocto Dylan (1.4)
|Yocto Dylan (1.4)
|Yocto Fido (1.8)
|Yocto Morty (2.2)
|-
|Graphic libraries
|Qt 4.8.4
|Qt 4.8.4<br>Qt 5.x
|Qt 4.8.4<br>Qt 5.3
|Qt 4.8.4<br>Qt 5.3
|Qt 5.5
|Qt 5.7.1
|-
|}
'''(*) CAN''' support is limited to CAN driver and dtb configuration: '''ONLY''' SBCD Eval Kit has CAN PHY installed on board. DIVELK Evaluation Kit has to be properly hardware modified for providing ''Physical'' access to external CAN bus interface
====Downloadable binary images====
All binary images for DIVELK are hosted on [[mirror:diva|DAVE Embedded System mirror server]]. There you can find a sub directory for each version of this development kit.
A summary of images with a brief description can be found into the table below:
{{ImportantMessage|text=In order to boot Linux from SD card files, '''the binary files must be renamed''' as follows:
U-boot 1st stage <code>MLO</code>
U-boot file <code>u-boot.img</code>
}}
{| class="wikitable"
|-
! Image !! colspan="2" |DIVELK version 3.0.0||colspan="2" |DIVELK version 4.0.2
**DIVELK virtual machine image in OFV format ([[Managed_Virtual_Machine_(MVM)|MVM]] basic version)
**7-zip Windows executable file
*an <code>ext3</code> partition (<code>mmcblk0p2</code>) containing the root file system for the target.
<code>bootscript</code> and root file system are used to boot the target as described in [[#Target_setup_and_first_boot|this section]].
It is worth remembering that the microSD card is bootable, because U-Boot image files ('''MLO''' and '''u-boot.img''') and kernel image ('''uImage''') are present into first FAT32 partition: filename '''MUST''' be the one written before.
However, even if U-Boot is run from the microSD card, '''the environment is retrieved from NOR flash'''.
====How to create a bootable microSD card====
For creating a bootable microSD card, simply follows the following steps:
* create two partition: first partition FAT32 and a second partition ext3
* mark as "bootable" the first partition (using for example <code>gparted</code> on VM)
* copy MLO, u-boot.img and boot.scr on FAT32 partition
** copy kernel and dtb on the same partition
** all files can be retrieved from [[Diva_Embedded_Linux_Kit_(DIVELK)#Downloadable_binary_images|here]]
* extract rfs on ext3 partition
Alternatively, it is also possible to create a bootable sd using this script:
echo "[Extracting rfs (this may take a while...)]"
mount "$DRIVE$PART"2 /mnt
tar jxf $RFS -C /mnt > /dev/null
chmod 755 /mnt
umount "$DRIVE$PART"2
echo "[Done]"
</pre>
To use this script, simply copy its content to a mksd.sh file.
Then, run:
<pre>
chmod a+x mksd.sh
</pre>
to give executable permissions to the file.
Once this has been done, insert a 16gb microsd card and run:
<pre>
./mksd /dev/sdX binaries-folder rootfs.tar.bz2
</pre>
The script will partition the sd card and copy the binaries and rootfs to the correct partition on the sd card.
The operation will take few minutes.
=== DIVELK Updates ===
{{ImportantMessage|text=It's recommended to use the latest available DIVELK version. Customer who want to update to the latest DIVELK release can send an email to [mailto:support-diva@dave.eu support-diva@dave.eu]. Please refer to [[Diva_Embedded_Linux_Kit_(DIVELK)#Release_notes|Release notes]] for further information.}}
{{ImportantMessage|text='''N.B.''' '''Customers who want to update from DIVELK 2.x.x to DIVELK 3.0.0 or DIVELK 4.0.x must install new DIVELK VM'''.}}
For DIVELK older releases information, please click on Expand here below (on the right)
<div class="mw-collapsible mw-collapsed">
'''N.B.''' '''Customers who want to update from DIVELK 1.0.0 to DIVELK 2.x.x can send an email to [mailto:support-diva@dave.eu support-diva@dave.eu]'''.
{{ImportantMessage|text=It's highly recommended to read the [[ConfigID_and_UniqueID]] page.}}
* Maintenance release
* Bug fixes
* Added support for SBC-DIVA
* Updated kernel and u-boot versions
==== Known limitations ====
{| class="wikitable"
|-
!Issue #
!Component
!Subsystem
!Description
|-
|0001
|Linux
|USB
|USB0, when configured as OTG, requires loading of the gadget module for detecting devices (and entering host mode)
|-
|0002
|Yocto
|ADT
|The Yocto ADT plugin for Eclipse doesn't work
|-
|0003
|Linux
|Audio
|Codec on the DACU board doesn't work out-of-the-box. A software patch is required, please contact [mailto:support-diva@dave.eu support-diva@dave.eu] for information on how to enable the audio codec.
|-
|}
=== DIVELK 2.1.0 ===
* Release date: June 2015
* Status: Released
* AMSDK version: 07.00.00.00
* Supported carrier boards: DIVAEVB-Lite, Dacu
==== Notes ====
{{ImportantMessage|text=It's highly recommended to read the [[ConfigID_and_UniqueID]] page.}}
* Maintenance release
* Updated kernel and u-boot versions
* Bug fixes
==== Known limitations ====
{| class="wikitable"
|-
!Issue #
!Component
!Subsystem
!Description
|-
|0001
|Linux
|USB
|USB0, when configured as OTG, requires loading of the gadget module for detecting devices (and entering host mode)
|-
|0002
|Yocto
|ADT
|The Yocto ADT plugin for Eclipse doesn't work
|-
|0003
|Linux
|Audio
|Codec on the DACU board doesn't work out-of-the-box. A software patch is required, please contact [mailto:support-diva@dave.eu support-diva@dave.eu] for information on how to enable the audio codec.
|-
|}
=== DIVELK 2.0.0 ===
* Release date: October 2014
* Status: Released
* AMSDK version: 07.00.00.00
* Supported carrier boards: DIVAEVB-Lite, Dacu
==== Notes ====
* First major update
* Added Yocto support
* Updated kernel and u-boot versions
* Bug fixes
==== Known limitations ====
{| class="wikitable"
|-
!Issue #
!Component
!Subsystem
!Description
|-
|0001
|Linux
|USB
|USB0, when configured as OTG, requires loading of the gadget module for detecting devices (and entering host mode)
|-
|0002
|Yocto
|ADT
|The Yocto ADT plugin for Eclipse doesn't work
|-
|}
=== DIVELK 1.0.0 ===
* Release date: June 2013
* Status: released
* AMSDK version: 05.06.00.00
* Supported carrier boards: DIVAEVB-Lite, Dacu
==== Notes ====
* First official release
</div>
==Quick start guide==
This chapter describes how to quickly start working with the DIVELK kit. The following paragraphs will guide you through the setup and installation procedures.
=== DIVA SOM ===
[[File:Diva-400.png|300px]]
The heart of DIVA SOM is Texas Instruments [http://www.ti.com/lsds/ti/processors/sitara/arm_cortex-a8/am335x/overview.page "Sitara"]. From a software point of view, Texas Instruments supports this processor family through so-called <b>Processor Software Development Kit</b> (Processo SDK for short). Processor SDK releases are published on a regular basis. For more details please refer to:
DIVA Embedded Linux Kit, in turn, is directly derived from <code>Processor SDK</code>. Hence DIVELK documentation often refers to this resource.
=== Carrier boards ===
==== DIVAEVB-Lite ====
DIVAEVB-Lite is an adapter board designed to evaluate the functions of DIVA system-on-module.
[[File:Diva-evb-with-som.png|300px]]
For further information on the DIVAEVB-Lite, please refer to [[DivaEVB-Lite]]
The following figure shows the carrier board block diagram:
[[File:Divaevb-bd.png|600px]]
==== Dacu ====
DIVAEVB-Lite can be plugged on the Dacu carrier board to extend the set of available interfaces.
[[File:Diva divaevb dacu.png|450px]]
For further information on Dacu, please refer to:
* [[Dacu]]
* [[Dacu_for_the_Diva_SOM]]
The following figure shows the carrier board block diagram:
[[File:Dacu-diva-block diagram.png|600px]]
===Kit registration===
{{ImportantMessage|text='''Customers are strongly recommended to register their kits'''. Registration grants access to reserved material such as source code and additional documentation.}}
Please register your development kit by sending an email to [mailto:support-diva@dave.eu support-diva@dave.eu], providing the kit P/N and CODE.
===Target setup and first boot===
This section describes how to quick start DIVA board delivered along with DIVELK kit:
*connect the DB9 serial cable adapter to J25 pin-strip connector on DACU as shown on picture below
*insert microSD card in the DACU slot J34
*optionally connect the system to Ethernet LAN by plugging cable into connector J7
*on host side start your favorite terminal that will be used to interact with the target's serial console; communication parameters are 115200-8-N-1
*connect the provided 12V power supply to JP2 DACU connector
[[File:DIVELK.png|thumb|center|400px|Target setup for first boot]]
Once power has been applied to the target, U-Boot bootloader will be fetched from the SPI NOR flash and executed. Boot messages will be printed out to the serial console. Redundant U-Boot environment is stored in the NOR flash as well, as depicted in the following image.
{{ImportantMessage|text=The DIVELK bootable microSD card delivered along with the kit is set up to do a full bootstrap sequence. For more details, please refer to [[Working_with_the_Yocto_build_system#bootscript|this section]].}}
By default, U-Boot is configured to retrieve Linux kernel image stored in the microSD card [1]. In turn, Linux kernel shall mount root file system from the <code>mmcblk0p2</code> partition of the [[#DIVELK microSD Layout|microSD card itself]]. At the end of boot process, Linux shell shall be available on the serial console.
The following dump shows the typical messages printed out to the console during bootstrap process.
Using Device Tree in place at 80f80000, end 80f8cfff
WARNING: could not find splashscreen reserved memory path
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 4.1.18-divelk-3.0.0-gdc0123a (jenkins@trustybakery) (gcc version 4.9.3 20150413 (prerelease) (Linaro GCC 4.9-2015.05) ) #1 PREEMPT Tue May 30 23:53:41 CEST 2017
[ 0.182090] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.208983] cpuidle: using governor ladder
[ 0.238973] cpuidle: using governor menu
[ 0.243773] OMAP GPIO hardware version 0.1
[ 0.252215] omap-gpmc 50000000.gpmc: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/nandflash_pins_default, deferring probe
Starting rpcbind daemon...rpcbind: cannot create socket for udp6
rpcbind: cannot create socket for tcp6
done.
starting statd: done
starting Busybox UDHCP Server: udhcpd... done.
Starting syslogd/klogd: done
Starting thttpd.
Starting Lighttpd Web Server: lighttpd.
2017-05-31 09:45:49: (/mnt/devel/divelk-3.0.0-ci/build/tmp-external-linaro-toolchain/work/cortexa8hf-vfp-neon-linux-gnueabi/lighttpd/1.4.35-r1/lighttpd-1.4.35/src/log.c.164) server started
/
Starting Matrix GUI application.
Enabling thermal zones...
/etc/rc5.d/S98thermal-zone-init: line 7: /sys/class/thermal/thermal_zone*/mode: No such file or directory
[1] <code>bootscript</code> is used to do this task.
===Host setup===
As stated previously, DIVELK host tools are based on a [[Managed_Virtual_Machine_(MVM)|Managed Virtual Machine]]. As indicated [[#DIVELK microSD Layout|here]], microSD card delivered along with DIVELK includes basic version of MVM that is the default option.
In case you choose to use the [[Managed_Virtual_Machine_(MVM)#Advanced_version|''Advanced'' version]] of the MVM instead, the <code><i>project-name</i></code> to be used is <code>diva</code>.
Either version you choose, please follow the procedure described [[Managed_Virtual_Machine_(MVM)#Installation_and_configuration|here]] to install the MVM.
It is also worth remembering that access to git repositories is required to download target source code. To enable it, please refer to [[Accessing_DAVE_Embedded_Systems_restricted_git_repositories|this page]].
{{ImportantMessage|text=Either version of MVM is installed, it provides the tools required to build [[Building_U-Boot_(DIVELK)|U-boot]] and [[Building_Linux_kernel_(DIVELK)|Linux kernel]]. It does not include the tools required to run Yocto build system instead.}}
DIVELK MVM can be downloaded [https://cloud.dave.eu/ws-reserved-area-divelk/DIVELK-3.0.0 here]. For accessing <b><i>DIVELK Reserved area</i></b> please contact our [mailto:sales@dave.eu sales department]
===Target configuration for the development stage (<code>net_nfs</code>)===
{{ImportantMessage|text=The default DIVELK Virtual Machine network configuration is using NAT: this allows to accessing external network (i.e. Internet) using the host computer's networking connection.
For software development using <code>net_nfs</code> with tftp/nfs protocols, please configure your VM network interface in ''Bridge mode'' (see below)}}
During the development stage, the target is usually connected via Ethernet LAN to the host machine and is configured to:
*retrieve binary images (i.e. Linux kernel) via TFTP protocol
*mount the development root file system via NFS protocol. This root file system is physically in the file system of the host machine as depicted [[Deploying_Embedded_Linux_Systems#The_development_environment|here]]. An example of ''Bridge mode'' configuration for DIVELK can be found [[Booting_the_system_via_NFS_(DIVELK) | here]]
In DAVE Embedded Systems development kits, this configuration is generally denoted as <code>net_nfs</code>. U-Boot bootloader supports this configuration. Some U-Boot environment variables are needed to set it up. They are detailed [[Booting_Linux_Kernel#Configuration_net_nfs|here]].
For more details about TFTP and NFS servers on host side, please refer to this [[Setting_up_tftp_and_nfs|page]].
===Target configuration for standalone boot===
Please refer to [[Standalone_boot_(DIVELK)|this page]].
===Developing the software for the target===
Please refer to [[Developing the software for the target (DIVELK)|this page]].
==Advanced topics==
===Debugging with Eclipse===
Please refer to [[Debugging with Eclipse (MVM)|this page]].