Linux Kernel

Ecosystem

Linux Kernel Archives is the primary site for the Linux kernel source. All Linux kernel versions, including latest snapshot or "release candidate" (-rc) can be easily found here.
Linux Kernel Archives는 Linux kernel source를 위한 primary site이다. 최신 snapshot 또는 "release candidate"(-rc)을 포함하는 모드 Linux kernel version은 여기서 쉽게 찾을 수 있다.

The ARM Linux Project lead by Russell King. Russell is in charge to ensure the ARM core support in the Kernel mainline and to integrate ARM based system on chip specific patch sets. Specific ARM Linux discussion groups, patches and information are also available.
The ARM Linux Project는 Russell King에 의해 지휘된다. Russell은 Kernel mainline에서 제공하는 ARM core를 보증하는 것과  chip에 특정화된 patch set에서 ARM based system을 통합하는 것을 담당한다.

You will find on ARM Linux website :
ARM Linux 웹사이트에서 아래 내용을 찾을 수 있다.

AT91 linux 2.6 patches maintained by Andrew Victor. Andrew is the official Linux kernel maintainer for AT91 machines. You can find patches against official Linux kernel releases and driver development status. All AT91 patches should be sent to Andrew except if it exists a specific development branch like SD/MMC, ALSA, netdev, etc...
AT91 linux 2.6 patches는 Andrew Victor에 의해 유지된다. Andrew는 AT91 machine을 위한 공식적인  Linux kernel  maintainer이다. 공식적인 Linux kernel release와 driver development status에 대한 patch를 찾을 수 있다. 모든 AT91의 patch는 Andrew 에게 보내져야 한다.

The provided patches, on this wiki, are always against the official kernel release and Andrew's patches. 
이 wiki에서 제공되는 patch는 공신적인 kernel release와 Andrew의 patch에  대한 것이다.
 

Pre-built images

2.6.30 (2.6.30-at91-exp.patch)
Board Description Binary Configuration file
at91sam9260ek linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9260ek.bin at91sam9260ek_defconfig
at91sam9xeek linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9xeek.bin at91sam9xeek_defconfig
at91sam9261ek linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9261ek.bin at91sam9261ek_defconfig
at91sam9263ek linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9263ek.bin at91sam9263ek_defconfig
at91sam9rlek linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9rlek.bin at91sam9rlek_defconfig
at91sam9g20ek linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9g20ek.bin at91sam9g20ek_defconfig
at91sam9g20ek_2mmc linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9g20ek_2mmc.bin at91sam9g20ek_2mmc_defconfig
at91sam9g10ek linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9g10ek.bin at91sam9g10ek_defconfig
at91sam9g45ekes linux-2.6.30 uImage linux-2.6.30-at91-exp-at91sam9g45ekes.bin at91sam9g45ekes_defconfig
2.6.27 (2.6.27-at91-exp.3.patch)
Board Description Binary Configuration file
at91sam9260ek linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9260ek.bin at91sam9260ek_defconfig
at91sam9xeek linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9xeek.bin at91sam9xeek_defconfig
at91sam9261ek linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9261ek.bin at91sam9261ek_defconfig
at91sam9263ek linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9263ek.bin at91sam9263ek_defconfig
at91sam9rlek linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9rlek.bin at91sam9rlek_defconfig
at91sam9g20ek linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9g20ek.bin at91sam9g20ek_defconfig
at91sam9g20ek_2mmc linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9g20ek_2mmc.bin at91sam9g20ek_2mmc_defconfig
at91sam9g10ek linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9g10ek.bin at91sam9g10ek_defconfig
at91sam9g45ekes linux-2.6.27 uImage linux-2.6.27-at91-exp.3-at91sam9g45ekes.bin at91sam9g45ekes_defconfig
2.6.27 (2.6.27-at91-exp.2.patch)
Board Description Binary Configuration file
at91sam9260ek linux-2.6.27 uImage linux-2.6.27-at91-exp.2-at91sam9260ek.bin at91sam9260ek_defconfig
at91sam9xeek linux-2.6.27 uImage linux-2.6.27-at91-exp.2-at91sam9xeek.bin at91sam9xeek_defconfig
at91sam9261ek linux-2.6.27 uImage linux-2.6.27-at91-exp.2-at91sam9261ek.bin at91sam9261ek_defconfig
at91sam9263ek linux-2.6.27 uImage linux-2.6.27-at91-exp.2-at91sam9263ek.bin at91sam9263ek_defconfig
at91sam9rlek linux-2.6.27 uImage linux-2.6.27-at91-exp.2-at91sam9rlek.bin at91sam9rlek_defconfig
at91sam9g20ek linux-2.6.27 uImage linux-2.6.27-at91-exp.2-at91sam9g20ek.bin at91sam9g20ek_defconfig
at91sam9g10ek linux-2.6.27 uImage linux-2.6.27-at91-exp.2-at91sam9g10ek.bin at91sam9g10ek_defconfig
at91sam9g45ekes linux-2.6.27 uImage linux-2.6.27-at91-exp.2-at91sam9g45ekes.bin at91sam9g45ekes_defconfig
2.6.27 (2.6.27-at91-exp.patch)
Board Description Binary Configuration file
at91sam9260ek linux-2.6.27 uImage linux-2.6.27-at91-exp-at91sam9260ek.bin at91sam9260ek_defconfig
at91sam9xeek linux-2.6.27 uImage linux-2.6.27-at91-exp-at91sam9xeek.bin at91sam9xeek_defconfig
at91sam9261ek linux-2.6.27 uImage linux-2.6.27-at91-exp-at91sam9261ek.bin at91sam9261ek_defconfig
at91sam9263ek linux-2.6.27 uImage linux-2.6.27-at91-exp-at91sam9263ek.bin at91sam9263ek_defconfig
at91sam9rlek linux-2.6.27 uImage linux-2.6.27-at91-exp-at91sam9rlek.bin at91sam9rlek_defconfig
at91sam9g20ek linux-2.6.27 uImage linux-2.6.27-at91-exp-at91sam9g20ek.bin at91sam9g20ek_defconfig
2.6.24 (2.6.24.at91.2-exp.patch)
Board Description Binary Configuration file
at91sam9260ek linux-2.6.24 uImage linux-2.6.24.at91.2-at91sam9260ek.bin at91sam9260ek_defconfig
at91sam9xeek linux-2.6.24 uImage linux-2.6.24.at91.2-at91sam9xeek.bin at91sam9xeek_defconfig
at91sam9261ek linux-2.6.24 uImage linux-2.6.24.at91.2-at91sam9261ek.bin at91sam9261ek_defconfig
at91sam9263ek linux-2.6.24 uImage linux-2.6.24.at91.2-at91sam9263ek.bin at91sam9263ek_defconfig
at91sam9rlek linux-2.6.24 uImage linux-2.6.24.at91.2-at91sam9rlek.bin at91sam9rlek_defconfig
2.6.24 (2.6.24-at91-exp.patch)
Board Description Binary Configuration file
at91sam9260ek linux-2.6.24 uImage linux-2.6.24-at91sam9260ek.bin at91sam9260ek_defconfig
at91sam9xeek linux-2.6.24 uImage linux-2.6.24-at91sam9xeek.bin at91sam9xeek_defconfig
at91sam9261ek linux-2.6.24 uImage linux-2.6.24-at91sam9261ek.bin at91sam9261ek_defconfig
at91sam9263ek linux-2.6.24 uImage linux-2.6.24-at91sam9263ek.bin at91sam9263ek_defconfig
at91sam9rlek linux-2.6.24 uImage linux-2.6.24-at91sam9rlek.bin at91sam9rlek_defconfig
2.6.22
Board Description Binary Configuration file
at91sam9260ek linux-2.6.22 uImage linux-2.6.22-at91sam9260ek.bin at91sam9260ek_defconfig
at91sam9xeek linux-2.6.22 uImage linux-2.6.22-at91sam9xeek.bin at91sam9xeek_defconfig
at91sam9261ek linux-2.6.22 uImage linux-2.6.22-at91sam9261ek.bin at91sam9261ek_defconfig
at91sam9263ek linux-2.6.22 uImage linux-2.6.22-at91sam9263ek.bin at91sam9263ek_defconfig

Pre-built images are delivered into uImage U-Boot format. To download them on AT91 boards, see the section How to load Linux kernel with U-Boot in the U-Boot page.
Pre-built image는 uImgae U-Boot format으로 인도된다. AT91 보드에 download하기 위해 U-Boot page에서 How to load Linux kernel with U-Boot section을 보아라.

Linux4SAM Experimental Patches

The experimental AT91 patch set is built and contributed by people from the AT91 Linux community. These patches are against Andrew Victor patches. They contain unpublished or not yet included piece of code or driver.
실험적인 AT91 patch set은 AT91 Linux community로부터 사람들에 의해 built 되고 기부되었다. 이 patch들은 Andrew Victor patches에 대한 것이다.  그것들은 공개되지 않았거나 아직 code나 driver의 included 되지 않은 것을 포함한다.

2.6.30-at91-exp.patch

  • basically all support provided by previous 2.6.27-at91-exp patch
  • in comparison to previous experimental patch remove HW ECC and ISI driver (need rework)
  • updated LCD pixel clock for AT91SAM9G45 non ES parts
  • several gpio buttons, SD card detect and led support for AT91SAM9G20EK, AT91SAM9G20EK-2MMC and AT91SAM9RLEK
  • Linux kernel default configuration updated for all products (*_defconfig files)
  • update of the sound/soc directory from Linux 2.6.32-rc3 to update this part of ALSA to 1.0.21

2.6.27-at91-exp.3.patch

  • add support for AT91SAM9G20EK with dual SD/MMC slot
  • change default configuration for the use of 128MB of RAM on AT91SAM9G45EKES
  • All 2.6.27-at91-exp.2.patch enhancements included (see below)

2.6.27-at91-exp.2.patch

  • add support for new AT91SAM9G10 chip and AT91SAM9G10EK board
  • add support for new AT91SAM9G45 chip and AT91SAM9G45EKES board
  • ISI driver for AT91SAM9G45 & AT91SAM9263 (use OV9655 camera sensor)
  • DMA driver at_hdmac for AT91SAM9RL & AT91SAM9G45
  • atmel_mci MCI driver adaptation for DMA usage on AT91SAM9G45
  • USB high speed drivers for AT91SAM9G45 (both host and gadget)
  • atmel_lcd fix wrong FIFO size for some products
  • All 2.6.27-at91-exp.patch enhancements included (see below)

2.6.27-at91-exp.patch

  • AT91SAM9G20EK - add audio support
  • merge AT32 and AT91 ssc DAI (Digital Audio Interface)
  • AC97 playback and capture driver
  • DMA engine driver on AT91SAM9RL
  • AT91SAM9RLEK - fix touchscreen
  • LED - on AT91SAM9RLEK
  • AT91_MCI - fixes
  • ATMEL_MACB - Add SRAM Tx buffers capabilities for AT91SAM926[03]EK
  • ATMEL_LCD - fixes & RGB 555 wiring mode
  • new NandFlash partitioning
  • buttons (on AT91SAM9RLEK and AT91SAM9G20EK)
  • hardware ECC on NandFlash for AT91SAM9G20

2.6.24.at91.2-exp.patch

  • fix NandFlash timings
  • new NandFlash partitioning
  • atmel_lcd manage underflow error
  • pwm_led driver
  • buttons (& pullups conf.)

2.6.24-at91-exp.patch

  • Fix some typos on SSC, RTC
  • Enhancement in support for AT91SAM9RL : LCD fifo, USB HS, buttons, leds, AC97
  • Note that the touchscreen is not supported yet on AT91SAM9RL
  • LCD wiring mode : BGR or RGB selection
  • backlight for LCD panel
  • Power management support

2.6.22-at91-exp.patch

  • AT91SAM9261EK - Add button interface
  • AT91_MCI - Enhancements 1
  • ATMEL_LCD - Add STN and alpha in 32bpp mode support
  • AT91SAM9261Ek - Make NAND FLASH partition match those on AT91SAM926[03]EK
  • ATMEL_MACB - Add SRAM Tx buffers capabilities for AT91SAM926[03]EK
  • AT91_AC97 driver for AT91SAM9263EK (playback only)
  • AT73C213 (I2S DAC audio) support for AT91SAM926[01]EK

c Source : check the summary table below (last column).


Build

AT91 Linux kernel sources summary table

Linux Kernel revision Vanilla Linux Kernel AT91 Maintainer patchset Experimental patches
Linux 2.6.30 linux-2.6.30.tar.bz2 2.6.30-at91.patch.gz 2.6.30-at91-exp.tar.gz
Linux 2.6.28 linux-2.6.28.tar.bz2 2.6.28-at91.patch.gz Not ported to this revision
Linux 2.6.27 linux-2.6.27.tar.bz2 2.6.27-at91.patch.gz 2.6.27-at91-exp.3.patch.gz
Linux 2.6.27 linux-2.6.27.tar.bz2 2.6.27-at91.patch.gz 2.6.27-at91-exp.2.patch.gz
Linux 2.6.27 linux-2.6.27.tar.bz2 2.6.27-at91.patch.gz 2.6.27-at91-exp.patch.gz
Linux 2.6.26 linux-2.6.26.tar.bz2 Not ported to this revision Not ported to this revision
Linux 2.6.25 linux-2.6.25.tar.bz2 2.6.25-at91.patch.gz Not ported to this revision
Linux 2.6.24 linux-2.6.24.tar.bz2 2.6.24-at91.patch.gz 2.6.24.at91.2-exp.patch.gz
Linux 2.6.24 linux-2.6.24.tar.bz2 2.6.24-at91.patch.gz 2.6.24-at91-exp.patch.gz
Linux 2.6.23 linux-2.6.23.tar.bz2 2.6.23-at91.patch.gz Not ported to this revision
Linux 2.6.22 linux-2.6.22.tar.bz2 2.6.22-at91.patch.gz 2.6.22-at91-exp.patch.gz 2

hand From left to right, each patch applies on top of the previous source tree.
왼쪽에서 오른쪽으로 각 patch는 이전 source tree의 상단에 적용된다.

For the vanilla Linux kernel, do not forget to use preferably kernel.org mirrors found here : http://www2.kernel.org/mirrors/ 
평범한 Linux kernel을 위해, 되도록이면 kernel.org mirror를 사용하는 것을 잊지 말아라. : http://www2.kernel.org/mirrors/ 

tip We also advice you to use the powerful ketchup tool. You can thus easily get a Linux Kernel without having to consume bandwidth each time you update it.
또한 powerful한 ketchup tool을 사용하기를 권장한다. 쉽게 Linux Kernel을 얻을 수 있다.

Get and patch the Linux kernel

To get an experimental Linux4SAM kernel up and running on an AT91 product, you have to go through the following steps:
실험용 Linux4SAM kernel을 얻고 AT91 제품에 running하기 위해 아래 과정을 수행해야 한다.

    1. identify on which linux kernel revision the experimental patches will apply
    2. download the corresponding Linux kernel

    1.실험용 patch를 적용할 linux kernel revision을 확인한다.
    2. 관련 Linux kernel을 download 한다.

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.xx.tar.bz2
tar xvjf linux-2.6.xx.tar.bz2
cd linux-2.6.xx
 
    3. download the AT91 Maintainer's patch and apply it
    3. AT91 Maintainer의 path를 다운로드 하고 그것을 적용한다.
wget http://maxim.org.za/AT91RM9200/2.6/2.6.xx-at91.patch.gz
zcat 2.6.xx-at91.patch.gz | patch -p1
    
    4. take the experimental patchset and apply it on top of the AT91 one
    4. 실험용 patch를 얻고 AT91 제품의 상단에 그것을 적용한다.

before Linux 2.6.30 experimental patches
Download experimental patch:
wget ftp://www.linux4sam.org/pub/linux/2.6.xx-at91-exp.patch.gz
or
wget ftp://www.linux4sam.org/pub/linux/2.6.xx.at91.y/2.6.xx.at91.y-exp.patch.gz
And then:
zcat linux-2.6.xx-at91-exp.diff.gz | patch -p1
Linux 2.6.30 experimental patches and onwards
Download experimental patch archive:
wget ftp://www.linux4sam.org/pub/linux/2.6.xx.at91/2.6.xx-at91-exp.y.tar.gz
Decompress archive with:
tar xvzf 2.6.xx-at91-exp.y.tar.gz
And then apply patchset one patch after the other in proper order:
for p in 2.6.xx-at91-exp.y/*; do patch -p1 < $p ; done

You will now have an updated copy of the experimental Linux4SAM kernel.
실험용 Linux4SAM kernel의 updated copy를 갖게 된다.

Configure and Build the Linux kernel

Now you have to configure the Linux kernel according to your hardware. First identify your kernel revision, your board and then, download the corresponding configuration file. Default configuration files are provided here.
지금  하드웨어에 따라 Linux kernel을 configure 해야 한다. 먼저 kernel revision, 보드를 확인하고 관련 configuration file을 download 한다. default configuration file은 here에서 제공된다.

wget http://www.at91.com/linux4sam/pub/Linux4SAM/LinuxKernel/at91sam926yek_defconfig
cd linux-2.6.xx
cp at91sam926yek_defconfig .config
make ARCH=arm oldconfig 

At this step, you can modify default configuration
이 과정에서 default configuration을 modify할 수 있다.

make ARCH=arm menuconfig 

And build the Linux kernel image
그리고 Linux kernel image를 build한다.

make ARCH=arm  CROSS_COMPILE=<path_to_cross-compiler/cross-compiler-prefix->


Notes

1: at91_mci enhancement with those upstream patches :
- folow flowcharts
- disable handling of blocks with size not multiple of 4 bytes
- bug-in-at91-mci-suspend-routines.patch
- whitespace
- typo
- add multiwrite cap

2: For AT91SAM9XE chips, there is an additional tiny patch that locates TX Ethernet buffers in internal SRAM : adapt_macb_sam9xe.diff


  Attachment Action Size Date Who Comment
else adapt_macb_sam9xe.diff props, move 0.7 K 17 Jan 2008 - 16:24 NicolasFerre 2.6.22 - 9xe update
else at91sam9260ek_defconfig props, move 24.6 K 26 Sep 2007 - 12:44 RfoLnx4sam 2.6.22 - linux4sam_1.0_20070913
else at91sam9261ek_defconfig props, move 25.7 K 27 Sep 2007 - 08:16 RfoLnx4sam 2.6.22 - linux4sam_1.0_20070913
else at91sam9263ek_defconfig props, move 25.5 K 27 Sep 2007 - 08:17 RfoLnx4sam 2.6.22 - linux4sam_1.0_20070913
else at91sam9xeek_defconfig props, move 24.5 K 17 Jan 2008 - 16:23 NicolasFerre 2.6.22
r51 - 12 Nov 2009 - 11:27:34 - NicolasFerre

'[C-03] AT91SAM9260' 카테고리의 다른 글

Linux4SAM - BuildRoot  (0) 2009.11.16
Linux4SAM - OpenEmbedded / Angstrom  (0) 2009.11.16
Linux4SAM - U-Boot  (0) 2009.11.15
Linux4SAM - AT91Bootstrap  (0) 2009.11.15
Linux4SAM - Software Tools  (0) 2009.11.15
Posted by eoseontaek