Linux Kernel - legacy
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.6.9-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
- ARM Cortex-A5 support (include SAMA5D36 chip support)
- VFP support
- Timer Counter
- Watchdog (beware, can be deactivated by AT91Bootstrap)
- RTC
- Serial driver with DMA support
- I2C interface with DMA support
- SPI interface with DMA support
- CAN
- ADC (with 12 bits support)
- ISI interface (support OV2640, OV2643 and OV5640)
- MCI interface with DMA support
- NAND flash with hadware ECC and DMA support
- serial flash (SPI - at25)
- Enhanced Ethernet drivers & Enhanced Gigabit Ethernet drivers
- USB: host (OHCI & EHCI)
- USB: device/gadget high speed
- LCD base layer / LCD overlay 1, 2 / LCD High End Overlay
- Crypto engines (AES, DES/TDES, SHA) with DMA support
- Pinctrl (PIO muxing, PIO control and configuration)
- Resistive touchscreen
- Capacitive touchscreen maXTouch - PDA module
- Touch button QT1070
- LEDs
- Audio using SSC/I2S - wm8904 codec
- Power management
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.6.9-at91 -b linux-3.6.9-at91
Branch linux-3.6.9-at91 set up to track remote branch linux-3.6.9-at91 from origin.
Switched to a new branch 'linux-3.6.9-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 SAMA5D4 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
[..]
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-3.6.9+
Created: Mon Feb 4 12:26:46 2013
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2837352 Bytes = 2770.85 kB = 2.71 MB
Load Address: 20008000
Entry Point: 20008000
Image arch/arm/boot/uImage is ready
make ARCH=arm dtbs
[..]
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9g20ek.dts"
DTC arch/arm/boot/at91sam9g20ek_2mmc.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9g20ek_2mmc.dts"
[..]
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9m10g45ek.dts"
DTC arch/arm/boot/at91sam9n12ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9n12ek.dts"
DTC arch/arm/boot/at91sam9g15ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9g15ek.dts"
DTC arch/arm/boot/at91sam9g25ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9g25ek.dts"
DTC arch/arm/boot/at91sam9g35ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9g35ek.dts"
DTC arch/arm/boot/at91sam9x25ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9x25ek.dts"
DTC arch/arm/boot/at91sam9x35ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/at91sam9x35ek.dts"
DTC arch/arm/boot/sama5d31ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d31ek.dts"
DTC arch/arm/boot/sama5d31ek_pda.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d31ek_pda.dts"
DTC arch/arm/boot/sama5d33ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d33ek.dts"
DTC arch/arm/boot/sama5d33ek_pda.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d33ek_pda.dts"
DTC arch/arm/boot/sama5d34ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d34ek.dts"
DTC arch/arm/boot/sama5d34ek_pda.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d34ek_pda.dts"
DTC arch/arm/boot/sama5d35ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d35ek.dts"
DTC arch/arm/boot/sama5d36ek.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d36ek.dts"
DTC arch/arm/boot/sama5d36ek_pda.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/sama5d36ek_pda.dts"
If the building process is successful, the final images can be found under
arch/arm/boot/ directory.