COM AM335x Linux: Difference between revisions
(21 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
:* The latest Linux Kernel source code is available on GitHub: [https://github.com/dh-electronics/linux-am33x https://github.com/dh-electronics/linux-am33x] | :* The latest Linux Kernel source code is available on GitHub: [https://github.com/dh-electronics/linux-am33x https://github.com/dh-electronics/linux-am33x] | ||
==== How to build a | ==== How to build a Kernel ==== | ||
Get sources from Github | {| class="wikitable" align="center" | style="width: 100%; background: #f3f3f3;" valign="top" | | ||
{| class="wikitable" | | | ||
|1. Start a terminal on Linux | Get sources from Github | ||
{| class="wikitable" style="width: 100%; color: #000000; background: #ffffff;" | | |||
| | |||
1. Start a terminal on Linux<br/> | |||
2. <tt># ''git clone [https://github.com/dh-electronics/linux-am33x.git https://github.com/dh-electronics/linux-am33x.git]''</tt><br/> | |||
3. <tt># ''cd linux-am33x''</tt><br/> | |||
4. <tt># ''git checkout release/20160719'' # checkout latest/required release branch</tt> | |||
| | |} | ||
|5. <tt># '' | Configure and build the kernel using 5 threads and a build directory | ||
{| class="wikitable" style="width: 100%; color: #000000; background: #ffffff;" | | |||
| | |||
5. <tt># ''mkdir ../build''</tt><br/> | |||
6. <tt># ''ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make O=../build/ am335x_dhcom_defconfig''</tt><br/> | |||
7. <tt># ''ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make O=../build/ menuconfig''</tt> (optional: Add/Remove Kernel Features)<br/> | |||
8. <tt># ''ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j5 O=../build/ zImage''</tt><br/> | |||
9. <tt># ''ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make -j5 O=../build/ dtbs''</tt><br/> | |||
|} | |} | ||
* Your new <tt>zImage</tt> file is available in <tt>../build/arch/arm/boot</tt> | * Your new <tt>zImage</tt> file is available in <tt>../build/arch/arm/boot</tt> | ||
* The Devicetree file <tt>am335x-dheva01.dtb</tt> is available in <tt>../build/arch/arm/boot/dts</tt> | * The Devicetree file <tt>am335x-dheva01.dtb</tt> is available in <tt>../build/arch/arm/boot/dts</tt> | ||
|} | |||
=== Update the Kernel with U-Boot === | === Update the Kernel and Devicetree with U-Boot === | ||
Please refere to the [[DHCOM Update Mechanism |DHCOM Update Mechanism for am335x]]. | Please refere to the [[DHCOM Update Mechanism |DHCOM Update Mechanism for am335x]]. | ||
=== Update | === Update Kernel and Devicetree on a running Linux === | ||
{| class="wikitable" align="center" | style="width: 100%; background: #f3f3f3;" valign="top" | | |||
{| class="wikitable" | | | ||
==== Kernel ==== | |||
{| class="wikitable" style="width: 100%; color: #000000; background: #ffffff;" | | |||
| | | | ||
1. Copy the kernel zImage file to the path <tt>'''/boot'''</tt><br/> | '''1.''' Copy the kernel zImage file to the path <tt>'''/boot'''</tt><br/> | ||
2. Check whether the correct zImage file name is set in <tt>'''/boot/uLinuxEnv.txt'''</tt> (e.g. <tt>'''zImage_file=zImage'''</tt>)<br/> | '''2.''' Check whether the correct zImage file name is set in <tt>'''/boot/uLinuxEnv.txt'''</tt> (e.g. <tt>'''zImage_file=zImage'''</tt>)<br/> | ||
3. Restart the system (e.g. <tt>'''reboot'''</tt>) | |} | ||
==== Devicetree ==== | |||
{| class="wikitable" style="width: 100%; color: #000000; background: #ffffff;" | | |||
| | |||
'''3.''' Copy the devicetree file am335x-dheva01.dtb to the path <tt>'''/boot/dtbs'''</tt><br/> | |||
'''4.''' Check '''fdtfile''' variable in <tt>'''/boot/uLinuxEnv.txt'''</tt> (e.g. <tt>'''fdtfile=/dtbs/am335x-dheva01.dtb'''</tt>)<br/> | |||
|} | |||
==== Reboot System ==== | |||
{| class="wikitable" style="width: 100%; color: #000000; background: #ffffff;" | | |||
| | |||
'''5.''' Restart the system (e.g. <tt>'''reboot'''</tt>) | |||
|} | |||
|} | |} | ||
Line 98: | Line 111: | ||
=== Serial (UART) Interfaces === | === Serial (UART) Interfaces === | ||
:{| class="wikitable" style="width: | :{| class="wikitable" style="width: 600px" | ||
||DHCOM ( | !Interface || Kernel 4.1.x || Kernel > 4.4.x | ||
|- | |||
||DHCOM UART 1 (Rx Tx Rts Cts)||<code>/dev/ttyO0</code> ||<code>/dev/ttyS0</code> | |||
|- | |- | ||
||DHCOM ( | ||DHCOM UART 2 (Rx Tx) ||<code>/dev/ttyO1</code> ||<code>/dev/ttyS1</code> | ||
|- | |- | ||
||DHCOM | ||DHCOM UART 3 || not available || not available | ||
|} | |} | ||
=== I2C Interfaces === | === I2C Interfaces === | ||
:{| class="wikitable" style="width: 400px" | :{| class="wikitable" style="width: 400px" | ||
||DHCOM I2C 1||<code>/dev/i2c- | ||DHCOM I2C 1||<code>/dev/i2c-2</code> | ||
|- | |- | ||
||DHCOM I2C 2 || | ||DHCOM I2C 2 || not available | ||
|- | |- | ||
||On Module Devices ||<code>/dev/i2c- | ||On Module Devices ||<code>/dev/i2c-0</code> | ||
|} | |} | ||
=== SPI Interfaces === | === SPI Interfaces === | ||
:{| class="wikitable" style="width: 400px" | :{| class="wikitable" style="width: 400px" | ||
||DHCOM SPI 1||<code>/dev/ | ||DHCOM SPI 1||<code>/dev/spidev1.1</code> | ||
|- | |- | ||
||DHCOM SPI 2 || | ||DHCOM SPI 2 || not available | ||
|} | |} | ||
:: '''Remark:''' DHCOM SPI1 interface doesn‘t work with DHCOM Premium Developer Kit (HD00013). | :: '''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 | ::Reason: At DHCOM Premium Developer Kit SPI 1 isn‘t connected, because otherwise AM335x doesn‘t boot with the current schematic. | ||
=== MMC/SD/eMMC Interfaces === | === MMC/SD/eMMC Interfaces === | ||
:{| class="wikitable" style="width: 400px" | :{| class="wikitable" style="width: 400px" | ||
||DHCOM SD-Interface ||<code>/dev/mmcblk0pX</code> | ||DHCOM SD-Interface ||<code>/dev/mmcblk0pX</code> (optional) | ||
|- | |- | ||
||on module µSD Card ||<code>/dev/ | ||on module µSD Card ||<code>/dev/mmcblk0pX</code> (optional) | ||
|- | |- | ||
||on module eMMC ||<code>/dev/ | ||on module eMMC ||<code>/dev/mmcblk1pX</code> | ||
|} | |} | ||
: 'X' has to be replaced with the partition number | : 'X' has to be replaced with the partition number | ||
: DHCOM SD-Interface '''or''' on module µSD slot is available | |||
=== Control the display brightness === | === Control the display brightness === | ||
: | :{|class="wikitable" style="width: 600px" | ||
|- | |||
| ''<tt>echo [0..8] > /sys/class/backlight/backlight/brightness</tt>'' | |||
|} | |||
=== Control GPIOs === | === Control GPIOs === | ||
Line 154: | Line 163: | ||
! DHCOM Name: !! alt. DHCOM Name: !! SO-DIMM Pin# !! Linux <GPIO#> | ! DHCOM Name: !! alt. DHCOM Name: !! SO-DIMM Pin# !! Linux <GPIO#> | ||
|- | |- | ||
| GPIO A || || 154 || | | GPIO A || || 154 || 20 | ||
|- | |- | ||
| GPIO | | GPIO B || || 156 || 115 | ||
|- | |- | ||
| GPIO | | GPIO C || || 162 || 116 | ||
|- | |- | ||
| | | GPIO D || || 163 || 65 | ||
|- | |- | ||
| | | GPIO E || || 164 || 114 | ||
|- | |- | ||
| | | GPIO F || || 165 || 112 | ||
|- | |- | ||
| | | GPIO G || || 167 || 111 | ||
|- | |- | ||
| | | GPIO H || || 173 || 7 | ||
|- | |- | ||
| | | GPIO I || || 175 || 113 | ||
|- | |- | ||
| CIF | | CIF HSYNC || GPIO J || 74 || 117 | ||
|- | |- | ||
| CIF | | CIF PCLK || GPIO K || 72 || 57 | ||
|- | |- | ||
| CIF | | CIF MCLK || GPIO L || 70 || 56 | ||
|- | |- | ||
| CIF | | CIF VSYNC || GPIO M || 68 || 55 | ||
|- | |- | ||
| CIF | | CIF D9 || GPIO N || 66 || 54 | ||
|- | |- | ||
| CIF | | CIF D8 || GPIO O || 64 || 51 | ||
|- | |- | ||
| CIF | | CIF D7 || GPIO P || 62 || 50 | ||
|- | |- | ||
| CIF | | CIF D6 || GPIO Q || 60 || 49 | ||
|} | |} | ||
:: '''Remark:''' | :: '''Remark:''' The parallel camera interface is not available on DHCOM AM335x. | ||
:Export | :Export | ||
Line 238: | Line 235: | ||
:Get can-utils: | :Get can-utils: | ||
:* [[media:can-utils_armel.zip|Debian package containing can-utils (ARM)]] | :* Debian Jessie (armhf): <tt> apt-get install can-utils </tt> | ||
:* Debian Squeeze (armel):[[media:can-utils_armel.zip|Debian package containing can-utils (ARM)]] | |||
=== Configure your own display === | === Configure your own display === | ||
To customize the devicetree to support your display please follow these steps: | |||
1. Type in the display values into the device tree file <tt>[https://github.com/dh-electronics/linux-am33x/blob/release/20160219/arch/arm/boot/dts/am335x-dhcom.dtsi arch/arm/boot/dts/am335x-dhcom.dtsi]</tt> | |||
*Where in the file? | |||
:{| | |||
|style="width: 8em"|Parallel display:||<tt>&panel</tt> | |||
|} | |||
*How? | |||
::Here is an example: | |||
::{| | |||
|< | |<tt> | ||
display-timings { | display-timings { | ||
DataImage_7inch_FG0700G3DSSW { | DataImage_7inch_FG0700G3DSSW { | ||
Line 275: | Line 269: | ||
pixelclk-active = <1>; | pixelclk-active = <1>; | ||
}; | }; | ||
}; | }; </tt> | ||
</ | |||
|} | |} | ||
2. Build the devicetree dtb files <tt>ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make dtbs</tt><br/> | |||
3. Copy the dtb files into your <tt>/boot</tt> partition <tt>/dtbs</tt> (SD, µSD, eMMC, or NAND) | |||
== Additional Information == | == Additional Information == | ||
*[[Linux Kernel Features | Linux Kernel Features ]] | *[[Linux Kernel Features | Linux Kernel Features ]] | ||
*[[ELBE Overview| Embedded Linux Build Environment (ELBE)]] | *[[ELBE Overview| Embedded Linux Build Environment (ELBE)]] |
Latest revision as of 12:36, 29 September 2016
Linux virtual machine for development
- Please have a look at: Virtual Machine for Application Development
Linux Kernel
Sources for the DHCOM AM335x Linux Kernel v4.1.x
- The latest Linux Kernel source code is available on GitHub: https://github.com/dh-electronics/linux-am33x
How to build a Kernel
Get sources from Github
Configure and build the kernel using 5 threads and a build directory
|
Update the Kernel and Devicetree with U-Boot
Please refere to the DHCOM Update Mechanism for am335x.
Update Kernel and Devicetree on a running Linux
Kernel
Devicetree
Reboot System
|
Debian Rootfilesystem
Available Rootfilesystems
Please have a look at the DHCOM AM335x Downloads section.
External Documentation
- The Debian Administrator's Handbook: A reference book presenting the Debian distribution, from initial installation to configuration of services. The administration and configuration chapters apply to our Debian based root filesystems.
- Debian Documentation
Login
Debian GNU/Linux 8 dhcom ttyO0 dhcom login: root |
Shutdown
# shutdown -h now |
Calibrating the touchscreen (tslib has to be installed)
# source setup_tslib.sh # setup environment for use of tslib |
- 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) |
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 |
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
Interface Kernel 4.1.x Kernel > 4.4.x DHCOM UART 1 (Rx Tx Rts Cts) /dev/ttyO0
/dev/ttyS0
DHCOM UART 2 (Rx Tx) /dev/ttyO1
/dev/ttyS1
DHCOM UART 3 not available not available
I2C Interfaces
DHCOM I2C 1 /dev/i2c-2
DHCOM I2C 2 not available On Module Devices /dev/i2c-0
SPI Interfaces
DHCOM SPI 1 /dev/spidev1.1
DHCOM SPI 2 not available
- 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 AM335x doesn‘t boot with the current schematic.
MMC/SD/eMMC Interfaces
DHCOM SD-Interface /dev/mmcblk0pX
(optional)on module µSD Card /dev/mmcblk0pX
(optional)on module eMMC /dev/mmcblk1pX
- 'X' has to be replaced with the partition number
- DHCOM SD-Interface or on module µSD slot is available
Control the display brightness
echo [0..8] > /sys/class/backlight/backlight/brightness
Control GPIOs
DHCOM Name: alt. DHCOM Name: SO-DIMM Pin# Linux <GPIO#> GPIO A 154 20 GPIO B 156 115 GPIO C 162 116 GPIO D 163 65 GPIO E 164 114 GPIO F 165 112 GPIO G 167 111 GPIO H 173 7 GPIO I 175 113 CIF HSYNC GPIO J 74 117 CIF PCLK GPIO K 72 57 CIF MCLK GPIO L 70 56 CIF VSYNC GPIO M 68 55 CIF D9 GPIO N 66 54 CIF D8 GPIO O 64 51 CIF D7 GPIO P 62 50 CIF D6 GPIO Q 60 49
- Remark: The parallel camera interface is not available on DHCOM AM335x.
- Export
echo <GPIO#> >/sys/class/gpio/export
- Remark: Have a look into
/sys/class/gpio/
for already configured gpios.
- Remark: Have a look into
- 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:
- Debian Jessie (armhf): apt-get install can-utils
- Debian Squeeze (armel):Debian package containing can-utils (ARM)
Configure your own display
To customize the devicetree to support your display please follow these steps:
1. Type in the display values into the device tree file arch/arm/boot/dts/am335x-dhcom.dtsi
- Where in the file?
Parallel display: &panel
- 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 devicetree dtb files ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make dtbs
3. Copy the dtb files into your /boot partition /dtbs (SD, µSD, eMMC, or NAND)