Linux Kernel - 3.10
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
- 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
- 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:
$ git clone git://github.com/linux4sam/linux-at91.git
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.
Note that you can also add this Linux4SAM repository as a
remote GIT repository to your usual Linux git tree. It will save you a lot of bandwidth and download time:
$ git remote add linux4sam git://github.com/linux4sam/linux-at91.git
$ 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:
$ git branch -r
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
Configuration files for boards
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/at91_dt_defconfig
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:
$ make ARCH=arm sama5d4_defconfig # this is for SAMA5 series chips
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
$ make ARCH=arm menuconfig
And build the Linux kernel image, before you build you need set up the cross compile toolchain, check
this section.
$ make ARCH=arm
[..]
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
make ARCH=arm uImage
[..]
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
make ARCH=arm dtbs
[..]
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.
- linux-3.10-at91
-
• Pwm Faq: PWM Driver. (Sama5d29Curiosity, Sam9x75Curiosity, Sam9x60Curiosity, Sam9x60EK, Sama5d27WLSom1EK, Sama5d27Som1EK, Sama5d2PtcEK, Sama5d2Xplained, Sama5d4Xplained, Sama5d3Xplained, Sama5d3xek)
• Iio Adc Driver: Adc IIO driver introduction. (Sama5d4Xplained, Sama5d4ek, Sama5d3Xplained, Sama5d3xek, AT91sam9x5-ek, other AT91SAM9 boards)