Linux Kernel - 3.10

Last modified by Microchip on 2025/03/03 06:28

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:

$ 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

  • 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.10 (83A9EB4B2F16D9B388DAA473A954FB2A563A7CCB)
BoardDescriptionBinaryDevice Tree Binary (DTB)Configuration file
sama5d3 Xplainedlinux-3.10-at91 zImagezImage-sama5d3_xplained.binhttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gifat91-sama5d3_xplained.dtbhttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gif
at91-sama5d3_xplained_pda4.dtbhttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gif
at91-sama5d3_xplained_pda7.dtbhttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gif
sama5d3_xplained_defconfighttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gif
3.10 (LINUX4SAM_4.6 TAG)
sama5d4ek_xplainedlinux-3.10-at91 zImagezImage-sama5d4_xplained.binhttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gifat91-sama5d4_xplained.dtbhttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gifsama5d4_defconfighttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gif
3.10 (LINUX4SAM_4.5 TAG)
sama5d4eklinux-3.10-at91 zImagezImage-sama5d4.binhttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gifsama5d4ek.dtbhttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gifsama5d4_defconfighttps://www.linux4sam.org/pub/TWiki/TWikiDocGraphics/external-link.gif

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.

Recent FAQ

• How to use Pulse Width Modulation driver
• Use of the AT91 ADC driver