Linux Kernel - legacy

Linux 3.6.9 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.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

linux4sam_4.2 tag

  • 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.

Pointing hand 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

  • Ubuntu:
    In Ubuntu, you can install the ARM Cross Compiler by doing:
    sudo apt-get install gcc-arm-linux-gnueabi
    export CROSS_COMPILE=arm-linux-gnueabi-
       

  • Others:
    For others, you can download the Linaro cross compiler and setup the environment by doing:
    wget -c https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabi/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz
    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.6.9 (linux4sam_4.2 tag)
Board Description Binary Device Tree Binary (DTB) Configuration file
sama5d3xek linux-3.6.9-at91 zImage zImage-sama5d3.bin sama5d31ek.dtb
sama5d33ek.dtb
sama5d34ek.dtb
sama5d35ek.dtb
sama5d36ek.dtb
sama5d3_defconfig
linux-3.6.9-at91 uImage uImage-sama5d3.bin

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.

r2 - 06 Sep 2017 - 09:42:46 - LudovicDesroches
 
Linux & Open Source related information for AT91 Smart ARM Microcontrollers

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.

Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.

Atmel® and others, are registered trademarks or trademarks of Atmel Corporation or its subsidiaries. This site is powered by the TWiki collaboration platform

ARM® and others are registered trademarks or trademarks of ARM Ltd. Other terms and product names may be trademarks of others.

Ideas, requests, contributions ? Connect to LinksToCommunities page.

Syndicate this siteRSS ATOM