Changes

Jump to: navigation, search

Diva Embedded Linux Kit (DIVELK)

8,684 bytes added, 10:42, 11 June 2019
Target configuration for the development stage (net_nfs)
!Notes
|-
|style="text-align: center;" | [[File:Diva-400.png|60px]]
|Diva SOM<br>CPU: TI AM3359<br>SDRAM: 512 MB DDR3<br>NOR: bootable SPI flash 32 MB<br>NAND: 1GB
|Please refer to [[Hardware Manual (Diva) | Diva Hardware Manual]]
|-
|style="text-align: center;" | [[File:Divaevb-divelk 01.png|40px]]
|Diva-EVB-Lite Carrier board
|Please refer to [[DivaEVB-Lite | DivaEVB-Lite]] page
|-
|style="text-align: center;" | [[File:Dacu-top-view.png|80px]]
|Dacu Carrier board
|Please refer to [[Dacu | Dacu]] page
|-
|style="text-align: center;" | [[File:Display.jpg|60px]]
|Ampire AM-800480STMQW<br>7” 800x480 LCD display<br>LVDS interface
|Please refer to [[Diva_Embedded_Linux_Kit_(DIVELK)#Target_setup_and_first_boot | First boot]]
|-
|style="text-align: center;" | [[File:Alimentatore.jpg|40px]]
|AC/DC Single Output Wall Mount adapter<br>Output: +12V – 2.0 A
|Please refer to [[Diva_Embedded_Linux_Kit_(DIVELK)#Target_setup_and_first_boot | First boot]]
|-
|style="text-align: center;" | [[File:Cavetto-seriale2.jpg|50px]]
|DB9 Male Serial port adapter
|Please refer to [[Diva_Embedded_Linux_Kit_(DIVELK)#Target_setup_and_first_boot | First boot]]
|-
|style="text-align: center;" | [[File:ProdSDC-MBLY-thumb.png|50px]]
|MicroSDHC card with SD adapter and USB adapter
|Please refer to [[Diva_Embedded_Linux_Kit_(DIVELK)#Target_setup_and_first_boot | First boot]]
'''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="56" | DIVELK version
|-
|Release number
|2.2.0
|3.0.0
|4.0.2
|-
|Status
|Released
|Released
|Released
|October 2015
|June 2017
|May 2019
|-
|'''Release notes'''
|[[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]]
|-
|SOM PCB version
|CS133012C
|CS133012C
|CS133012C
|CS133012C
|-
|[[DivaEVB-Lite]]<br>[[:Category:Dacu | Dacu]]
|[[DivaEVB-Lite]]<br>[[:Category:Dacu | Dacu]]
|[[DivaEVB-Lite]]<br>[[:Category:Dacu | Dacu]]<br>[[:Category:SBC-DIVA | SBC-DIVA]]
|[[DivaEVB-Lite]]<br>[[:Category:Dacu | Dacu]]<br>[[:Category:SBC-DIVA | SBC-DIVA]]
|[[DivaEVB-Lite]]<br>[[:Category:Dacu | Dacu]]<br>[[:Category:SBC-DIVA | SBC-DIVA]]
|2013.10-divelk-2.2.0
|2015.07-divelk-3.0.0
|2017.01-divelk-4.0.2
|-
|Linux version
|3.12.10-divelk-2.2.0
|4.1.18-divelk-3.0.0(LTS)
|4.9.28-divelk-4.0.2(LTS)
|-
|Drivers
|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 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 Fido (1.8)
|Yocto Morty (2.2)
|-
|Graphic libraries
|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====
{{ImportantMessage|text=In order to boot Linux from SD card files, '''the binary files must be renamed''' as follows:
*bootscript: <code>boot.scr</code>
 
U-boot 1st stage <code>MLO</code>
{| class="wikitable"
|-
! Image !! colspan=5"2" |DIVELK version 3.0.0||colspan="2" |DIVELK version 4.0.2|-| Platform || DIVELK || SBCD || DIVELK || SBCD
|-
| Platform Carrier Board [[ConfigID_and_UniqueID |ConfigID]]| DIVELK |0001 | SBCD| 0002|| 0001 || 0002
|-
| Carrier Board [[ConfigID_and_UniqueID LCD panel | ConfigID]]|colspan="4" style="text-align: center" | 0001 || 0002Ampire 800 x 480 7" LVDS 262K colors (RGB666)
|-
| LCD panel Touchscreen || colspan=2 "4" style="text-align: center" | Ampire 800 x 480 7" LVDS 262K colors (RGB666)resistive
|-
| Touchscreen bootscript || colspan="2" style="text-align: center" |[[mirror:diva/divelk-3.0.0/boot.scr|boot.scr]]||colspan="2 " style="text-align: center" | resistive [[mirror:diva/divelk-4.0.2/boot.scr|boot.scr]]
|-
| bootscript U-Boot || colspan="2 " style="text-align: center" |[[mirror:diva/divelk-3.0.0/divelk-3.0.0_boot0_diva_MLO|u-boot (MLO)]]<br>[[mirror:diva/divelk-3.0.0/divelk-3.0.0_diva_spiboot_MLO.byteswap|u-boot SPI (MLO)]]<br>[[mirror:diva/divelk-3.0.0/divelk-3.0.0_diva_spiboot_u-boot.img|u-boot SPI]]<br>[[mirror:diva/divelk-3.0.0/divelk-3.0.0_diva_nandboot_MLO|u-boot NAND (MLO)]]<br>[[mirror:diva/divelk-3.0.0/divelk-3.0.0_diva_nandboot_u-boot.img|u-boot NAND]]<br>||colspan="2" style="text-align: center" |[[mirror:diva/divelk-4.0.2/divelk-4.0.2_diva_MLO|u-boot (MLO)]]<br>[[mirror:diva/divelk-4.0.2/divelk-4.0.2_diva_spiboot_MLO.byteswap|u-boot SPI (MLO)]]<br>[[mirror:diva/divelk-4.0.2/divelk-4.0.2_diva_spiboot_u-boot.img|u-boot SPI]]<br>[[mirror:diva/divelk-4.0.2/divelk-4.0.scr2_diva_nandboot_MLO|u-bootNAND (MLO)]]<br>[[mirror:diva/divelk-4.scr0.2/divelk-4.0.2_diva_nandboot_u-boot.img|u-boot NAND]]<br>
|-
| U-Boot Linux kernel || colspan="2 " style="text-align: center" |[[mirror:diva/divelk-3.0.0/divelk-3.0.0_diva_MLO0_uImage|u-boot (MLO)uImage]]<br>[[mirror:diva/divelk-3.0.0/divelk-3.0.0_diva_spiboot_MLO.byteswap|u-boot SPI (MLO)]]<br>[[mirror:diva/divelk-3.0.0/divelk-3.0.0_diva_spiboot_u-boot.img|ucolspan="2" style="text-boot SPI]]<br>[[mirroralign:diva/divelk-3.0.0/divelk-3.0.0_diva_nandboot_MLOcenter" |u-boot NAND (MLO)]]<br>[[mirror:diva/divelk-34.0.02/divelk-34.0.0_diva_nandboot_u-boot.img2_uImage|u-boot NANDuImage]]<br>
|-
| Linux kernel modules || colspan="2 " style="text-align: center" |[[mirror:diva/divelk-3.0.0/divelk-3.0.0_uImage0_modules.tar.gz|modules]]|| colspan="2" style="text-align: center" |[[mirror:diva/divelk-4.0.2/divelk-4.0.2_modules.tar.gz|uImagemodules]]
|-
| Device tree || [[mirror:diva/divelk-3.0.0/divelk-3.0.0_am335x-divelk.dtb|am335x-divelk.dtb]] || [[mirror:diva/divelk-3.0.0/divelk-3.0.0_am335x-sbcd.dtb|am335x-sbcd.dtb]]|| [[mirror:diva/divelk-4.0.2/divelk-4.0.2_am335x-divelk.dtb|am335x-divelk.dtb]] || [[mirror:diva/divelk-4.0.2/divelk-4.0.2_am335x-sbcd.dtb|am335x-sbcd.dtb]]
|}
 
=== DIVELK microSD Layout ===
The microSD card provided with DIVELK is partitioned as shown in the following image:
 
 
[[File:DIVELK-uSD-partitioning.png|thumb|center|300px|microSD card partitioning]]
 
Most of storage space is occupied by two partitions:
*a <code>FAT32</code> partition (<code>mmcblk0p1</code>) containing:
**U-Boot <code>bootscript</code>
**Linux kernel and DTB binary images
**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:
<pre>
#!/bin/bash
 
if [[ -z $1 || -z $2 || -z $3 ]]
then
echo "$0 Usage:"
echo " $0 <device> <binaries directory> <rootfs tar.bz2>"
echo " Example: $0 /dev/sdc binaries/ rootfs.tar.bz2"
exit
fi
 
if [ "$(whoami)" != "root" ]
then
echo "you must be root to run this script!"
exit
fi
 
if ! [[ -b $1 ]]
then
echo "$1 is not a valid block device!"
exit
fi
 
if ! [[ -d $2 ]]
then
echo "Incorrect Binaries location!"
exit
fi
 
if ! [[ -f $3 ]]
then
echo "Incorrect rootfs location!"
exit
fi
 
DRIVE=$1
if [[ "$DRIVE" == *"mmcblk"* ]]
then
echo "You're using a mmc device, I need to fix partition names"
PART="p"
else
PART=""
fi
BINARIES=$2
RFS=$3
 
echo "All data on "$DRIVE" now will be destroyed! Continue? [y/n]"
read ans
if ! [ $ans == 'y' ]
then
exit
fi
 
echo "[Partitioning $1...]"
 
dd if=/dev/zero of=$DRIVE bs=1024 count=1024
 
SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`
 
echo DISK SIZE - $SIZE bytes
 
CYLINDERS=`echo $SIZE/255/63/512 | bc`
 
# check if we're running an old (e.g. 2.20.x) or new (e.g. 2.24.x) sfdisk
sfdisk --help | grep -- -H
 
if [ "$?" -eq "0" ]
then
{
echo 10,1380,0x0c,*
echo 1390,,83,-
} | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE
else
{
echo 10,4086M,0x0c,*
echo 4096M,,83,-
} | sfdisk $DRIVE
fi
 
partprobe
 
 
echo "[Making filesystems...]"
mkfs.vfat -F 32 -n BOOT "$DRIVE$PART"1 #> /dev/null
mkfs.ext3 -L ROOTFS "$DRIVE$PART"2 #> /dev/null
 
echo "[Copying files...]"
 
binaries_dir=${BINARIES%/}
mount "$DRIVE$PART"1 /mnt
cp -av --no-preserve=ownership $binaries_dir/* /mnt/
umount "$DRIVE$PART"1
 
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 [[Software_Manual_Diva_Embedded_Linux_Kit_(DivaDIVELK)#Release notes 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'''.}}
== Release notes ==
=== DIVELK 4.0.2 ===
 
* Release date: May 2019
* Status: Released
* Processor SDK version: 04.00.00
* Supported carrier boards: DIVAEVB-Lite, Dacu, SBC-DIVA
** added support for NOR ISSI SPI
 
==== Notes ====
* Fix of manual reset for the gigabit ethernet phy eht1 for SBCD boards.
 
==== 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
|Linux
|Audio
|Codec on the DACU board does not supported anymore.
|-
|}
'''N.B.''' '''Customers who want to update from DIVELK 2.x.x to DIVELK 3.0.0 must install new DIVELK VM'''.
=== DIVELK 3.0.0 ===
* Updated kernel and u-boot according to TI Processor SDK
* Qt 5.5 support on top of Weston
* New DIVELK Virtual Machine with updated cross-toolchain ([[Managed_Virtual_Machine_(MVM)|MVM]] generated)
==== Known limitations ====
|Audio
|Codec on the DACU board does not supported anymore.
|-
|0003
|MVM
|Toolchain
|Support for C++ application cross-building failure
|-
|}
 
===== C++ cross-building patch =====
For issue <code>003</code>, please apply the following patch:
 
<pre>
cd diva/sdk/divelk-3.0.0
wget https://mirror.dave.eu/diva/divelk-3.0.0/update/environment-setup.patch
patch < environment-setup.patch
</pre>
 
The output should be something like:
 
<pre class="board-terminal">
dvdk@vagrant-ubuntu-trusty-64:~$ cd diva/sdk/divelk-3.0.0
dvdk@vagrant-ubuntu-trusty-64:~/diva/sdk/divelk-3.0.0$ wget https://mirror.dave.eu/diva/divelk-3.0.0/update/environment-setup.patch
--2018-12-18 08:37:49-- https://mirror.dave.eu/diva/divelk-3.0.0/update/environment-setup.patch
Resolving mirror.dave.eu (mirror.dave.eu)... 79.143.179.155
Connecting to mirror.dave.eu (mirror.dave.eu)|79.143.179.155|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1225 (1.2K) [text/x-diff]
Saving to: ‘environment-setup.patch’
 
100%[======================================>] 1,225 --.-K/s in 0s
 
2018-12-18 08:37:49 (64.4 MB/s) - ‘environment-setup.patch’ saved [1225/1225]
 
dvdk@vagrant-ubuntu-trusty-64:~/diva/sdk/divelk-3.0.0$ patch < environment-setup.patch
patching file environment-setup-cortexa8hf-vfp-neon-linux-gnueabi
dvdk@vagrant-ubuntu-trusty-64:~/diva/sdk/divelk-3.0.0$
</pre>
=== DIVELK older releases ===
|-
|}
 
=== DIVELK 2.1.0 ===
|-
|}
 
 
=== DIVELK 2.0.0 ===
[[File:Diva-400.png|300px]]
The heart of DIVA SOM is Texas Instruments "Sitara" [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 Linux AM <b>Processor Software Development Kit </b> (AMSDK Processo SDK for short). AMSDK Processor SDK releases are published on a regular basis. For more details please refer to:
* http://www.ti.com/tool/PROCESSOR-SDK-AM335X
* http://processors.wiki.ti.com/index.php/Processor_SDK_Linux_Release_Notes
===Target setup and first boot===
This section describes how to quick start DIVA board delivered along with DIVELK kit:
*connect the provided TTL/DB9 serial cable adapter to J24 J25 pin-strip connector on DACU connector 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
*optionally connect the system to Ethernet LAN by plugging cable into connector J16
*connect the provided 12V power supply to JP2 DACU connector
*insert microSD card in the DACU slot J34
{{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]].
8,154
edits

Navigation menu