COM AM335x Linux

From Wiki-DB
Jump to navigationJump to search

Linux virtual machine for development

Linux Kernel

Sources for the DHCOM AM335x Linux Kernel v4.1.x

How to build a Kernel

Get sources from Github and build the linux kernel using 5 threads and a build directory

1. Start a terminal on Linux
2. # git clone https://github.com/dh-electronics/linux-am33x.git
3. # mkdir build
4. # cd linux-am33x
5. # git checkout release/20160219 # checkout latest/required release branch
6. # ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- make O=../build/ am335x_dhcom_defconfig
7. # ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- make O=../build/ menuconfig (optional: If you want to add/remove Kernel features)
8. # ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- make -j5 O=../build/ zImage
9. # ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- make -j5 O=../build/ dtbs
  • Your new zImage file is available in ../build/arch/arm/boot
  • The Devicetree file am335x-dheva01.dtb is available in ../build/arch/arm/boot/dts

Update the Kernel and Devicetree with U-Boot

Please refere to the DHCOM Update Mechanism for am335x.

Update the Kernel and Devicetree in running Linux

Kernel

1. Copy the kernel zImage file to the path /boot
2. Check whether the correct zImage file name is set in /boot/uLinuxEnv.txt (e.g. zImage_file=zImage)
3. Restart the system (e.g. reboot)

Devicetree

1. Copy the kernel am335x-dheva01.dtb file to the path /boot/dtbs
2. Check whether the correct zImage file name is set in /boot/uLinuxEnv.txt (e.g. fdtfile=/dtbs/am335x-dheva01.dtb)
3. Restart the system (e.g. reboot)

Debian Rootfilesystem

Available Rootfilesystems

Please have a look at the DHCOM AM335x Downloads section.

External Documentation

Login

Debian GNU/Linux 8 dhcom ttyO0

dhcom login: root
Password: foo

Shutdown

# shutdown -h now

Calibrating the touchscreen (tslib has to be installed)

# source setup_tslib.sh # setup environment for use of tslib
# ts_calibrate

  • Check the enviroment variable "TSLIB_TSDEVICE=/dev/input/event0" with printenv if an error occurs.

How to create a microSD-card with a rootfilesystem on it

1. Format a microSD card like following (in linux e.g. gparted, palimpsest) with Master Boot Record partition scheme

P1 ext3, name="boot" (Primary partition: 100MiB)
P2 ext3, name="rootfs" (Primary part.: Residual space)

2. Untar the root file system to the "rootfs" partition of the microSD card (Don't copy the tar archive directly to the microSD card)

Start the Console on Linux
# su
# chmod 755 /path/of/the/microSD_card
# cd /path/of/the/microSD_card
# tar xfjv path/to/RootFS/Name_of_RootFS_file.tar.bz2

Remark: If you got a *.tar.gz file so type tar xfzv ... to extract the rootfilesystem.

Kernel Userspace Interfaces to Access Hardware

Serial (UART) Interfaces

DHCOM (FF) UART 1 /dev/ttymxc0
DHCOM (BT) UART 2 /dev/ttymxc4
DHCOM (STD) UART 3 /dev/ttymxc3

I2C Interfaces

dhcom3B = Hardware revision 300
DHCOM I2C 1 /dev/i2c-1
DHCOM I2C 2 /dev/i2c-0
On Module Devices /dev/i2c-2
old: dhcom2B = Hardware revision 200
DHCOM I2C 1 /dev/i2c-0
DHCOM I2C 2 /dev/i2c-1
On Module Devices /dev/i2c-2

SPI Interfaces

DHCOM SPI 1 /dev/spidev0.2
DHCOM SPI 2 /dev/spidev1.0
Remark: DHCOM SPI1 interface doesn‘t work with DHCOM Premium Developer Kit (HD00013).
Reason: At DHCOM Premium Developer Kit SPI 1 isn‘t connected, because otherwise i.MX6 doesn‘t boot with the current schematic.

MMC/SD/eMMC Interfaces

DHCOM SD-Interface /dev/mmcblk0pX
on module µSD Card /dev/mmcblk1pX
on module eMMC /dev/mmcblk2pX
'X' has to be replaced with the partition number

Control the display brightness

Coming soon

Control GPIOs

DHCOM Name: alt. DHCOM Name: SO-DIMM Pin# Linux <GPIO#>
GPIO A 154 2
GPIO B 156 4
GPIO C 162 5
GPIO D 163 163
GPIO E 164 101
GPIO F 165 116
GPIO G 167 91
GPIO H 173 103
GPIO I 175 104
CIF HSYNC GPIO J 74 174
CIF PCLK GPIO K 72 175
CIF MCLK GPIO L 70 105
CIF VSYNC GPIO M 68 192
CIF D9 GPIO N 66 193
CIF D8 GPIO O 64 149
CIF D7 GPIO P 62 205
CIF D6 GPIO Q 60 18
CIF D5 GPIO R 58 16
CIF D4 GPIO S 56 17
CIF D3 GPIO T 54 19
CIF D2 GPIO U 52 20
CIF D1 GPIO V 50 146
CIF D0 GPIO W 48 147
Remark: Depending on your board configuration some of the additional gpios shared with the camera interface are not available on your system.
Export
echo <GPIO#> >/sys/class/gpio/export
Remark: Have a look into /sys/class/gpio/ for already configured gpios.
Set direction
echo in >/sys/class/gpio/gpio<GPIO#>/direction
echo out >/sys/class/gpio/gpio<GPIO#>/direction
Set state
echo 0 >/sys/class/gpio/gpio<GPIO#>/value
echo 1 >/sys/class/gpio/gpio<GPIO#>/value

Initialize and Test CAN Interface

Initialize:
ip link set can0 up type can bitrate 500000
Send test message via cansend (part of can-utils):
cansend can0 100#11.2233.44556677.88
Receive can messages (part of can-utils):
candump can0
Get can-utils:

Configure your own display

To configure your own display you have to do the following steps:
1. Type in the display values into the device tree file /arch/arm/boot/dts/imx6qdl-dheva01.dtsi
  • Where in the file?
Parallel display: display@di0
LVDS display: &ldb
Remarks: If you don't want to use both interfaces comment the unwanted out! The frame buffer resolution depends on the higher display resolution of both displays
  • How?
Here is an example:
 display-timings {
   DataImage_7inch_FG0700G3DSSW {
   clock-frequency = <33260000>;
   hactive = <800>;
   vactive = <480>;
   hback-porch = <86>;
   hfront-porch = <42>;
   vback-porch = <33>;
   vfront-porch = <10>;
   hsync-len = <128>;
   vsync-len = <2>;
   hsync-active = <0>;
   vsync-active = <0>;
   de-active = <1>;
   pixelclk-active = <1>;
   };
 };

2. Build the device tree dtb files ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- make dtbs
3. Copy the dtb files onto your boot partition /dtbs (SD, µSD or eMMC)
The built imx6xx-dheva01.dtb device tree files will you find in arch/arm/boot/dts

Additional Information