COM AM335x Linux: Difference between revisions
Line 34: | Line 34: | ||
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 === | ||
==== Kernel ==== | ==== Kernel ==== | ||
{| class="wikitable" | {| 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/> | ||
|} | |} | ||
==== Devicetree ==== | ==== Devicetree ==== | ||
{| class="wikitable" | {| class="wikitable" style="width: 100%; color: #000000; background: #ffffff;" | | ||
| | | | ||
'''3.''' Copy the kernel am335x-dheva01.dtb file 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>) | |||
|} | |} | ||
Revision as of 13:51, 22 March 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 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 Kernel and Devicetree on a running Linux
Kernel
1. Copy the kernel zImage file to the path /boot |
Devicetree
3. Copy the kernel am335x-dheva01.dtb file to the path /boot/dtbs |
Reboot System
5. Restart the system (e.g. reboot) |
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
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.
- 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:
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 inarch/arm/boot/dts