Linux Kernel - 3.10
Linux 3.10 for AT91 source code
The Linux kernel for Atmel ARM-based SoC (aka AT91) is distributed as a GIT tree hosted on GitHub as a fork of the official Linus Torvalds' git tree. The objective of the Atmel Linux team is to integrate all the AT91-related material in the official Linux Kernel.
Before completing this inclusion process, which can take time, this website provides the Linux4SAM Linux Kernel git tree for AT91 devices at:
https://github.com/linux4sam/linux-at91/tree/linux-3.10-at91
Changes
- Add devicetree support
- HDMI driver for SiI902x component on SAMA5D4-EK and SAMA5D4 Xplained boards
- VDEC is supported on SAMA5D4-EK board
- For drivers which not fully support devicetree, atmel ISI, hlcdc and etc, using arch/arm/mach-at91/board-dt-[sama5.c,sam9.c] add the devices
- Serial RX & TX DMA support
- Serial fixes and enhancements
Tags
linux4sam_4.6 tag
- SAMA5D4 Xplained board support
- HDMI driver for SiI902x component on SAMA5D4-EK and SAMA5D4 Xplained boards
- Power management enhancements
- Power management states on pin configuration (pinctrl OUTPUT configuration)
- Power management pin states for: SPI, i2c, MMC, serial, LCD, SSC, IIO (ADC), ETH, NAND, CAN
- Serial RX & TX DMA support
- Serial fixes and enhancements
- And of course everything listed below
linux4sam_4.5 tag
- ARM Cortex-A5 support (include SAMA5D4 chip family support)
- VFP + NEON support
- L2 Cache for SAMA5D4 family
- Linux drivers for Hardware Video Decoder
- Ethernet driver enhancements for both 10/100 and Gigabit Ethernet
- Power management enhancement
- PWM interface
Getting Kernel sources
To get the source code, you have to clone the repository:
Cloning into 'linux-at91'...
remote: Counting objects: 5239592, done.
remote: Compressing objects: 100% (764014/764014), done.
Receiving objects: 100% (5239592/5239592), 1018.56 MiB | 11.18 MiB/s, done.
remote: Total 5239592 (delta 4448248), reused 5218219 (delta 4427054)
Resolving deltas: 100% (4448248/4448248), done.
Checking out files: 100% (38567/38567), done.
The source code has been taken from the master branch which is pointing on the latest branch we use.
$ git remote update linux4sam
Fetching linux4sam
From git://github.com/linux4sam/linux-at91
* [new branch] linux-2.6.39-at91 -> linux4sam/linux-2.6.39-at91
* [new branch] linux-3.10-at91 -> linux4sam/linux-3.10-at91
* [new branch] linux-3.15-at91 -> linux4sam/linux-3.15-at91
* [new branch] linux-3.18-at91 -> linux4sam/linux-3.18-at91
* [new branch] linux-3.4.9-at91 -> linux4sam/linux-3.4.9-at91
* [new branch] linux-3.6.9-at91 -> linux4sam/linux-3.6.9-at91
* [new branch] master -> linux4sam/master
If you want to use an other branch, you can list them and use one of them by doing this:
origin/HEAD -> origin/master
origin/linux-2.6.39-at91
origin/linux-3.10-at91
origin/linux-3.15-at91
origin/linux-3.18-at91
origin/linux-3.4.9-at91
origin/linux-3.6.9-at91
origin/master
$ git checkout origin/linux-3.10-at91 -b linux-3.10-at91
Branch linux-3.10-at91 set up to track remote branch linux-3.10-at91 from origin.
Switched to a new branch 'linux-3.10-at91'
Setup ARM Cross Compiler
- Ubuntu:
In Ubuntu, you can install the ARM Cross Compiler by doing:
export CROSS_COMPILE=arm-linux-gnueabi-
- Others:
For others, you can download the Linaro cross compiler and setup the environment by doing:
tar xf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz
export CROSS_COMPILE=`pwd`/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-
Configuration files for boards
3.10 (83A9EB4B2F16D9B388DAA473A954FB2A563A7CCB) | ||||
---|---|---|---|---|
Board | Description | Binary | Device Tree Binary (DTB) | Configuration file |
sama5d3 Xplained | linux-3.10-at91 zImage | zImage-sama5d3_xplained.bin![]() | at91-sama5d3_xplained.dtb![]() at91-sama5d3_xplained_pda4.dtb ![]() at91-sama5d3_xplained_pda7.dtb ![]() | sama5d3_xplained_defconfig![]() |
3.10 (LINUX4SAM_4.6 TAG) | ||||
sama5d4ek_xplained | linux-3.10-at91 zImage | zImage-sama5d4_xplained.bin![]() | at91-sama5d4_xplained.dtb![]() | sama5d4_defconfig![]() |
3.10 (LINUX4SAM_4.5 TAG) | ||||
sama5d4ek | linux-3.10-at91 zImage | zImage-sama5d4.bin![]() | sama5d4ek.dtb![]() | sama5d4_defconfig![]() |
Configure and Build the Linux kernel
Now you have to configure the Linux kernel according to your hardware. We have two default configuration at91 SoC in arch/arm/configs
arch/arm/configs/sama5_defconfig
- at91_dt_defconfig: for at91sam ARM926 series chips
- sama5d4_defconfig: for SAMA5 series chips
- sama5d3_xplained_defconfig: for SAMA5D3-Xplained board
Now we Configure and Build kernel for board:
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
#
# configuration written to .config
#
At this step, you can modify default configuration using the menuconfig
And build the Linux kernel image, before you build you need set up the cross compile toolchain, check this section.
[..]
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
[..]
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-3.10.0+
Created: Wed May 6 16:25:11 2015
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2927040 Bytes = 2858.44 kB = 2.79 MB
Load Address: 20008000
Entry Point: 20008000
Image arch/arm/boot/uImage is ready
[..]
DTC arch/arm/boot/dts/at91rm9200ek.dtb
DTC arch/arm/boot/dts/at91sam9263ek.dtb
DTC arch/arm/boot/dts/at91sam9g20ek.dtb
DTC arch/arm/boot/dts/at91sam9g20ek_2mmc.dtb
DTC arch/arm/boot/dts/at91sam9m10g45ek.dtb
DTC arch/arm/boot/dts/at91sam9n12ek.dtb
DTC arch/arm/boot/dts/at91sam9g15ek.dtb
DTC arch/arm/boot/dts/at91sam9g25ek.dtb
DTC arch/arm/boot/dts/at91sam9g35ek.dtb
DTC arch/arm/boot/dts/at91sam9x25ek.dtb
DTC arch/arm/boot/dts/at91sam9x35ek.dtb
DTC arch/arm/boot/dts/at91-sama5d3_xplained.dtb
DTC arch/arm/boot/dts/at91-sama5d3_xplained_pda4.dtb
DTC arch/arm/boot/dts/at91-sama5d3_xplained_pda7.dtb
DTC arch/arm/boot/dts/sama5d31ek.dtb
DTC arch/arm/boot/dts/sama5d31ek_pda4.dtb
DTC arch/arm/boot/dts/sama5d31ek_pda7.dtb
DTC arch/arm/boot/dts/sama5d31ek_revc.dtb
DTC arch/arm/boot/dts/sama5d31ek_revc_pda4.dtb
DTC arch/arm/boot/dts/sama5d31ek_revc_pda7.dtb
DTC arch/arm/boot/dts/sama5d33ek.dtb
DTC arch/arm/boot/dts/sama5d33ek_pda4.dtb
DTC arch/arm/boot/dts/sama5d33ek_pda7.dtb
DTC arch/arm/boot/dts/sama5d33ek_revc.dtb
DTC arch/arm/boot/dts/sama5d33ek_revc_pda4.dtb
DTC arch/arm/boot/dts/sama5d33ek_revc_pda7.dtb
DTC arch/arm/boot/dts/sama5d34ek.dtb
DTC arch/arm/boot/dts/sama5d34ek_pda4.dtb
DTC arch/arm/boot/dts/sama5d34ek_pda7.dtb
DTC arch/arm/boot/dts/sama5d34ek_revc.dtb
DTC arch/arm/boot/dts/sama5d34ek_revc_pda4.dtb
DTC arch/arm/boot/dts/sama5d34ek_revc_pda7.dtb
DTC arch/arm/boot/dts/sama5d35ek.dtb
DTC arch/arm/boot/dts/sama5d35ek_revc.dtb
DTC arch/arm/boot/dts/sama5d36ek.dtb
DTC arch/arm/boot/dts/sama5d36ek_hdmi.dtb
DTC arch/arm/boot/dts/sama5d36ek_pda4.dtb
DTC arch/arm/boot/dts/sama5d36ek_pda7.dtb
DTC arch/arm/boot/dts/sama5d36ek_revc.dtb
DTC arch/arm/boot/dts/sama5d36ek_revc_pda4.dtb
DTC arch/arm/boot/dts/sama5d36ek_revc_pda7.dtb
DTC arch/arm/boot/dts/at91-sama5d4_xplained.dtb
DTC arch/arm/boot/dts/at91-sama5d4_xplained_pda4.dtb
DTC arch/arm/boot/dts/at91-sama5d4_xplained_hdmi.dtb
DTC arch/arm/boot/dts/sama5d4ek.dtb
DTC arch/arm/boot/dts/sama5d4ek_hdmi.dtb
If the building process is successful, the final images can be found under arch/arm/boot/ directory.
Recent FAQ
• How to use Pulse Width Modulation driver
• Use of the AT91 ADC driver