[Armadillo:00406] [PATCH] カーネル2.6用Armadillo-9 パッチ
Takeharu KATO
email@hidden
2005年 7月 11日 (月) 00:43:46 JST
加藤と申します。
現在、カーネル2.6.12.2でArmadillo9を動作させるためのパッチを作成しています。
とりあえず、ある程度動作するようになったのでパッチを送付します。
-- 使用法
私家版 カーネル2.6 Armadillo-9 パッチ
2005/07/10
加藤 丈治
[1] この文書について
本文書は, アットマークテクノ社製ARM9評価ボードであるArmadillo9
でカーネル2.6を動作させるためのパッチに関する説明書です.
本パッチに関る如何なる問題の発生についても当方では責任を負いません。
あくまで、自己責任でご利用下さい.
[2] 動作確認済デバイスについて
個人的に, 以下のデバイスの動作について確認していますが、
動作を保証するものではありませんし、本パッチの使用によりご使用の
機器が破損することになっても責任を負いかねます。
・RTC(S-3531A)
・USB HOST(USB soundデバイスの動作を確認)
・シリアル
・PCMCIA(CFがPCMCIAモードでマウントできることで確認)
・SDRAM(64M非連続メモリが正しくマップされることを確認)
・LAN(NFSマウントによるルートファイルシステムをマウントできることで確認)
これ以外のデバイスについては動作未確認です.
[3] 免責事項
本パッチに関る如何なる問題の発生についても当方では責任を負いません。
あくまで、自己責任でご利用下さい.
[4] パッチの適用法
(1) カーネルソースの取得
The Linux Kernel Archivesからlinux-2.6.12.2のカーネルを取得してください.
なるべく近場のミラーサイトから取得するほうが良いでしょう.
参考までに, 本家のURLは以下の通りです.
URL: http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.2.tar.gz
(2) (1) で取得したカーネルソースを任意のディレクトリで展開した後,
カーネルを展開したディレクトリ配下(カーネルソースのトップディレクトリ)に
以下のパッチを``linux-2.6.12.2-armadillo9-full.patch.gz''という
名前で保存します.
http://tmp.ninth-nine.com/linux-2.6.12.2-armadillo9-full.patch.gz
(3) パッチの適用
(2)で展開したカーネルソースのトップディレクトリで
以下のようにコマンドを入力し, パッチが正しく適用できることを確認します.
zcat linux-2.6.12.2-armadillo9-full.patch.gz|patch --dry-run -p1
ここで、リジェクトされたファイルが無いことを確認して下さい.
パッチの確認ができたら、以下のようにしてパッチを実際に適用します.
zcat linux-2.6.12.2-armadillo9-full.patch.gz|patch -p1
(4) カーネルのコンパイルの準備
カーネルをコンパイルするために以下の環境変数を設定します.
・ARCH...コンパイル対象のターゲットアーキテクチャです.
armを指定して下さい.
・CROSS_COMPILE...クロスコンパイラのプレフィクスです.
クロスコンパイラが
/usr/cross/armv4l/bin/armv4l-unknown-linux-gnu-gcc
という名前で保存されている場合は,
コンパイラ名称であるgccを除いた(プレフィクスである)
/usr/cross/armv4l/bin/armv4l-unknown-linux-gnu-
を指定します.
具体例としては, 以下のようにします(bashなどのBSH系の場合),
export ARCH=arm
export CROSS_COMPILE=/usr/cross/armv4l/bin/armv4l-unknown-linux-gnu-
(5) カーネルのコンフィグレーション
(2)で展開したカーネルソースのトップディレクトリで, 以下のようにコマンドを
発行することでデフォルトのカーネルコンフィグレーションを読みこみます.
make armadillo9_defconfig
この後で, 以下のコマンドを入力し, カーネルのコンフィグレーションを
調整します.
make menuconfig
デフォルトでは, nfsルートを使用するように設定されていますので, 適宜
設定を修正して下さい.
(6) カーネルのコンパイル
通常のカーネルと同様に以下のコマンドを入力し, カーネルを構築して下さい.
make Image
構築が完了すると, カーネルソースのarch/arm/bootディレクトリに``Image''
というカーネルの実行形式が作成されます.
以下のコマンドを入力し, カーネルの実行形式を圧縮します.
gzip -9 arch/arm/boot/Image
ここで作成されたImage.gzを, 本カーネルをArmadillo9のマニュアルの手順に
従って, CFに配置(CFの/bootディレクトリ配下に配置)してください.
このCFを使用することでカーネル2.6でシステムが起動します.
[5] 拡張コンフィグレーション項目
本パッチでは, 拡張コンフィグレーション項目として以下の
コンフィグレーションを追加しています.
(1) コマンドライン強制設定オプション(デフォルト:Y)
・コンフィグレーション項目の場所:
System Type-> EP93xx
``Ignore command line passed from the bootloader''
(CONFIG_IGNORE_BOOTLOADER_CMDLINE)
・機能概要:
ブートローダから渡されるカーネルコマンドラインを無視し,
デフォルトのカーネルコマンドライン(CONFIG_CMDLINEで指定)を
使用する.
[6] 本パッチについて
本パッチは, Armadillo9附属のカーネルソースおよび
``Unofficial Linux 2.6.x support for Cirrus EP93xx processors''の成果を
元にしています.
Unofficial Linux 2.6.x support for Cirrus EP93xx processors
URL: http://members.inode.at/m.burian/ep93xx/
本パッチのdiffstatは, 下記の通りです.
Documentation/arm/ep93xx/config.txt | 207 +
Documentation/arm/ep93xx/dma.txt | 300 ++
Documentation/arm/ep93xx/status.txt | 293 ++
Makefile | 2
arch/arm/Kconfig | 28
arch/arm/Makefile | 3
arch/arm/configs/adssphere_defconfig | 1240 +++++++++
arch/arm/configs/armadillo9_defconfig | 1254 +++++++++
arch/arm/configs/edb9301_defconfig | 965 +++++++
arch/arm/configs/edb9312_defconfig | 920 ++++++
arch/arm/configs/edb9315_defconfig | 955 +++++++
arch/arm/configs/ttml_defconfig | 923 +++++++
arch/arm/configs/zefeerdzb_defconfig | 961 +++++++
arch/arm/configs/zefeerdzq_defconfig | 1002 +++++++
arch/arm/kernel/setup.c | 4
arch/arm/mach-ep93xx/Kconfig | 204 +
arch/arm/mach-ep93xx/Makefile | 19
arch/arm/mach-ep93xx/Makefile.boot | 8
arch/arm/mach-ep93xx/dma_ep93xx.c | 3286 +++++++++++++++++++++++++
arch/arm/mach-ep93xx/dma_ep93xx.h | 193 +
arch/arm/mach-ep93xx/ep93xx.c | 570 ++++
arch/arm/mach-ep93xx/irq.c | 141 +
arch/arm/mach-ep93xx/mach-acc.c | 63
arch/arm/mach-ep93xx/mach-adssphere.c | 277 ++
arch/arm/mach-ep93xx/mach-armadillo9.c | 306 ++
arch/arm/mach-ep93xx/mach-edb9301.c | 215 +
arch/arm/mach-ep93xx/mach-edb9302.c | 358 ++
arch/arm/mach-ep93xx/mach-edb9312.c | 215 +
arch/arm/mach-ep93xx/mach-edb9315.c | 215 +
arch/arm/mach-ep93xx/mach-ttml.c | 365 ++
arch/arm/mach-ep93xx/mach-zefeerdzb.c | 176 +
arch/arm/mach-ep93xx/mach-zefeerdzq.c | 219 +
arch/arm/mach-ep93xx/ssp-cirrus.c | 646 ++++
arch/arm/mach-ep93xx/ssp.c | 246 +
arch/arm/mach-ep93xx/ssp2.c | 354 ++
arch/arm/mach-ep93xx/time.c | 40
arch/arm/mm/Kconfig | 4
arch/arm/mm/init.c | 4
arch/arm/tools/mach-types | 4
drivers/char/Kconfig | 17
drivers/char/Makefile | 2
drivers/char/ep93xx-rtc.c | 376 ++
drivers/char/ttml.c | 642 ++++
drivers/char/watchdog/Kconfig | 11
drivers/char/watchdog/Makefile | 1
drivers/char/watchdog/ep93xx_wdt.c | 210 +
drivers/i2c/busses/Kconfig | 29
drivers/i2c/busses/Makefile | 3
drivers/i2c/busses/i2c-armadillo9.c | 300 ++
drivers/i2c/busses/i2c-at24cxx.c | 203 +
drivers/i2c/busses/i2c-at24cxx.h | 23
drivers/i2c/busses/i2c-ep93xx.c | 177 +
drivers/i2c/chips/Kconfig | 19
drivers/i2c/chips/Makefile | 3
drivers/i2c/chips/ds1307.c | 654 ++++
drivers/i2c/chips/ds1307.h | 54
drivers/i2c/chips/eeprom.c | 19
drivers/i2c/chips/s3531a.c | 419 +++
drivers/i2c/chips/s3531a.h | 57
drivers/i2c/i2c-core.c | 27
drivers/ide/Kconfig | 16
drivers/ide/arm/Makefile | 1
drivers/ide/arm/ide-ep93xx.c | 1967 ++++++++++++++
drivers/ide/arm/ide_arm.c | 16
drivers/input/keyboard/Kconfig | 29
drivers/input/keyboard/Makefile | 3
drivers/input/keyboard/ep93xx_kbd_8x8.c | 371 ++
drivers/input/keyboard/ep93xx_kbd_8x8_keymap.h | 15
drivers/input/keyboard/ep93xx_spi_kbd.c | 398 +++
drivers/input/keyboard/ep93xx_spi_kbd.h | 147 +
drivers/input/touchscreen/Kconfig | 11
drivers/input/touchscreen/Makefile | 1
drivers/input/touchscreen/ep93xx_ts.c | 732 +++++
drivers/mtd/maps/Kconfig | 30
drivers/mtd/maps/Makefile | 5
drivers/mtd/maps/ads-flash.c | 221 +
drivers/mtd/maps/armadillo9.c | 105
drivers/mtd/maps/zefeerdzb.c | 129
drivers/mtd/maps/zefeerdzq.c | 137 +
drivers/mtd/mtdchar.c | 4
drivers/mtd/nand/Kconfig | 6
drivers/mtd/nand/Makefile | 1
drivers/mtd/nand/zefeerevb.c | 280 ++
drivers/net/Space.c | 4
drivers/net/arm/Kconfig | 15
drivers/net/arm/Makefile | 1
drivers/net/arm/ep93xx_eth.c | 1840 +++++++++++++
drivers/net/arm/ep93xx_eth.h | 368 ++
drivers/pcmcia/Kconfig | 6
drivers/pcmcia/Makefile | 5
drivers/pcmcia/ep93xx_adssphere.c | 190 +
drivers/pcmcia/ep93xx_base.c | 190 +
drivers/pcmcia/soc_common.c | 12
drivers/serial/Kconfig | 19
drivers/serial/Makefile | 1
drivers/serial/ep93xx.c | 863 ++++++
drivers/usb/Kconfig | 1
drivers/usb/host/Kconfig | 7
drivers/usb/host/Makefile | 2
drivers/usb/host/ohci-ep93xx.c | 255 +
drivers/usb/host/ohci-hcd.c | 5
drivers/video/Kconfig | 112
drivers/video/Makefile | 2
drivers/video/cx25871.c | 200 +
drivers/video/ep93xxfb.c | 786 +++++
drivers/video/ep93xxfb.h | 278 ++
include/asm-arm/arch-ep93xx/adssphere.h | 55
include/asm-arm/arch-ep93xx/clocks.h | 161 +
include/asm-arm/arch-ep93xx/crunch.h | 48
include/asm-arm/arch-ep93xx/cx25871.h | 69
include/asm-arm/arch-ep93xx/debug-macro.S | 56
include/asm-arm/arch-ep93xx/dma.h | 233 +
include/asm-arm/arch-ep93xx/entry-macro.S | 39
include/asm-arm/arch-ep93xx/hardware.h | 60
include/asm-arm/arch-ep93xx/ide.h | 230 +
include/asm-arm/arch-ep93xx/io.h | 51
include/asm-arm/arch-ep93xx/irq.h | 46
include/asm-arm/arch-ep93xx/irqs.h | 216 +
include/asm-arm/arch-ep93xx/keyboard.h | 54
include/asm-arm/arch-ep93xx/mach-edb9302.h | 20
include/asm-arm/arch-ep93xx/mach-ttml.h | 23
include/asm-arm/arch-ep93xx/memory.h | 263 ++
include/asm-arm/arch-ep93xx/param.h | 21
include/asm-arm/arch-ep93xx/platform.h | 92
include/asm-arm/arch-ep93xx/regmap.h | 1113 ++++++++
include/asm-arm/arch-ep93xx/regs_ac97.h | 168 +
include/asm-arm/arch-ep93xx/regs_dma.h | 264 ++
include/asm-arm/arch-ep93xx/regs_gpio.h | 31
include/asm-arm/arch-ep93xx/regs_hardcode.h | 110
include/asm-arm/arch-ep93xx/regs_i2s.h | 91
include/asm-arm/arch-ep93xx/regs_ide.h | 250 +
include/asm-arm/arch-ep93xx/regs_irda.h | 24
include/asm-arm/arch-ep93xx/regs_pcmcia.h | 72
include/asm-arm/arch-ep93xx/regs_raster.h | 279 ++
include/asm-arm/arch-ep93xx/regs_spi.h | 76
include/asm-arm/arch-ep93xx/regs_syscon.h | 257 +
include/asm-arm/arch-ep93xx/regs_touch.h | 94
include/asm-arm/arch-ep93xx/regs_uart.h | 84
include/asm-arm/arch-ep93xx/serial.h | 49
include/asm-arm/arch-ep93xx/ssp-cirrus.h | 30
include/asm-arm/arch-ep93xx/ssp.h | 121
include/asm-arm/arch-ep93xx/ssp2.h | 29
include/asm-arm/arch-ep93xx/system.h | 68
include/asm-arm/arch-ep93xx/timex.h | 26
include/asm-arm/arch-ep93xx/uncompress.h | 91
include/asm-arm/arch-ep93xx/vmalloc.h | 32
include/asm-arm/arch-ep93xx/zefeerevb.h | 37
include/asm-arm/ide.h | 6
include/asm-arm/procinfo.h | 1
include/linux/input.h | 1
include/linux/irda.h | 1
include/linux/sched.h | 5
include/linux/serial_core.h | 3
include/linux/ttml.h | 61
include/net/irda/ep93xx_irda.h | 261 +
init/do_mounts.c | 4
kernel/power/Kconfig | 7
sound/oss/Kconfig | 7
sound/oss/Makefile | 3
sound/oss/ac97_codec.c | 2
sound/oss/ep93xx-ac97.c | 1172 ++++++++
sound/oss/ep93xx-audio.c | 2141 ++++++++++++++++
sound/oss/ep93xx-audio.h | 126
163 files changed, 39130 insertions(+), 22 deletions(-)
[7] 起動ログ
起動時の起動ログを以下に示します(ユーザランドは自前のものを使用).
Hermit v1.3-armadillo9-3 compiled at 16:20:09, Apr 21 2005
Disk drive detected: SanDisk SDCFB-512 HDX 2.15 012124F1704M3433
/dev/hdc1: start=0x0000003f, size=0x000f45b1
Image.gz is found.
Copying kernel......done.
Uncompressing kernel...........................................................................done.
Doing console=ttyAM0,115200
Doing root=/dev/nfs
Doing mtdparts=armadillo9-nor:0x10000(bootloader)ro,0x170000(kernel),0x670000(userland),-(config)
Linux version 2.6.12.2 (email@hidden) (gcc version 3.4.4) #1 Sun Jul 10 23:39:38 JST 2005
CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Machine: Armadillo9
Ignoring unrecognised tag 0x00000000
Memory policy: ECC disabled, Data cache writeback
Built 2 zonelists
Kernel command line: console=ttyAM0,115200 root=/dev/nfs nfsroot=192.168.1.20:/opt/nfs/armv4l/target ip=192.168.1.21:192.168.1.20:192.168.1.20:255.255.255.0 mtdparts=armadillo9-nor:0x10000(bootloader)ro,0x170000(kernel),0x670000(userland),-(config)
PID hash table entries: 512 (order: 9, 8192 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 32MB 32MB = 64MB total
Memory: 62268KB available (1952K code, 452K data, 92K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
CPU model: Cirrus Logic EP9312, silicon rev E
SCSI subsystem initialized
Linux Kernel Card Services
options: none
usbcore: registered new driver hub
Generic SSP Support version 0.1
EP93xx SSP driver version 0.1
Configuring 640x480x32bpp
fb0: Cirrus EP93xx frame buffer device
ep93xxfb: framebuffer at 0xc1c00000, mapped to 0xffc00000, size 1204k
ep93xxfb: mode is 0x0x0, linelength=2560, pages=0
Serial: EP93xx driver $Revision: 1.42 $
ttyAM0 at MMIO 0xe08c0000 (irq = 52) is a uart-ep93xx
ttyAM1 at MMIO 0xe08d0000 (irq = 54) is a uart-ep93xx
ttyAM2 at MMIO 0xe08e0000 (irq = 55) is a uart-ep93xx
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
loop: loaded (max 8 devices)
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
ide_init_hwif_ports
ide_init_hwif_ports(hw=c02f7f20 data_port=00000000, ctrl_port=00000006
io_ports: 00000002
io_ports: 00000006
io_ports: 0000000a
io_ports: 0000000e
io_ports: 00000012
io_ports: 00000016
io_ports: 0000001a
io_ports: 0000001e
-io_ports: 00000019
Cirrus Logic EP93XX IDE initialization - driver version 1.0, 5/21/03.
physmap flash device: 800000 at 60000000
phys_mapped_flash: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
phys_mapped_flash: CFI does not contain boot bank location. Assuming top.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Searching for RedBoot partition table in phys_mapped_flash at offset 0x7f0000
No RedBoot partition table detected in phys_mapped_flash
mtd: Giving out device 0 to phys_mapped_flash
ARMADILLO9-NOR:0x00800000 at 0x60000000
ARMADILLO9-NOR:ioremaped to 0xc7080000
NOR flash on ARMADILLO9: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
NOR flash on ARMADILLO9: CFI does not contain boot bank location. Assuming top.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
4 cmdlinepart partitions found on MTD device armadillo9-nor
ARMADILLO9-NOR:using command line partition definition
Creating 4 MTD partitions on "armadillo9-nor":
0x00000000-0x00010000 : "bootloader"
mtd: Giving out device 1 to bootloader
0x00010000-0x00180000 : "kernel"
mtd: Giving out device 2 to kernel
0x00180000-0x007f0000 : "userland"
mtd: Giving out device 3 to userland
0x007f0000-0x00800000 : "config"
mtd: Giving out device 4 to config
USB: EP93xx driver $Revision: 1.42 $
ohci-ep93xx 0x80020000:usb: EP93xx OHCI
ohci-ep93xx 0x80020000:usb: new USB bus registered, assigned bus number 1
ohci-ep93xx 0x80020000:usb: irq 56, io base 0x00000000
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 3 ports detected
drivers/usb/host/ohci-ep93xx.c: ohci_hcd (EP93xx) at 0xe0020000, irq 56
Initializing USB Mass Storage driver...
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
usb 1-1: new full speed USB device using ohci-ep93xx and address 2
usbcore: registered new driver hiddev
input: USB HID v1.00 Device [C-Media USB Headphone Set ] on usb-amba-1
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.01:USB HID core driver
mice: PS/2 mouse device common for all mice
EP93xx touchscreen driver configured for 4-wire operation
i2c /dev entries driver
i2c-armadillo9: i2c Armadillo9 driver, (C) 2004-2005 Atmark Techno, Inc.
i2c-at24cxx: i2c at24cxx eeprom driver, (C) 2004 Atmark Techno, Inc.
i2c-core.o: S-3531A Status 0x00
i2c-s3531a: Device Type [S-353x0A]
i2c-s3531a: i2c S-3531A driver, (C) 2001-2005 Atmark Techno, Inc.
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP established hash table entries: 4096 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
ep93xx_eth() version: ep93xx_eth.c: V1.0 09/04/2003 Cirrus Logic
EP9312_Eth #0 at 0xe0010000 IRQ:39 MAC:00:00:00:00:00:00
IP-Config: Complete:
device=eth0, addr=192.168.1.21, mask=255.255.255.0, gw=192.168.1.20,
host=192.168.1.21, domain=, nis-domain=(none),
bootserver=192.168.1.20, rootserver=192.168.1.20, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.20
Looking up port of RPC 100005/1 on 192.168.1.20
VFS: Mounted root (nfs filesystem) readonly.
Freeing init memory: 92K
Setting clock : Sun Jul 10 23:37:04 JST 2005 [ OK ]
Setting hostname localhost: [ OK ]
Remounting root filesystem in read-write mode: [ OK ]
Activating swap partitions: [ OK ]
Checking filesystems
Starting xinetd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
localhost login: root
-sh-3.00# uname -a
Linux localhost 2.6.12.2 #3 Sun Jul 10 22:04:06 JST 2005 armv4tl armv4tl armv4tl GNU/Linux
-sh-3.00# /etc/init.d/pcmcia start
Starting PCMCIA services: cardmgr[875]: watching 1 socket
cardmgr[875]: could not adjust resource: IO ports 0xc00-0xcff: Function not implemented
cardmgr[875]: could not adjust resource: IO ports 0x800-0x8ff: Function not implemented
cardmgr[875]: could not adjust resource: IO ports 0x100-0x4ff: Function not implemented
cardmgr[875]: could not adjust resource: memory 0xc0000-0xfffff: Function not implemented
cardmgr[875]: could not adjust resource: memory 0x60000000-0x60ffffff: Function
not implemented
cardmgr[875]: could not adjust resource: memory 0xa0000000-0xa0ffffff: Function
not implemented
cardmgr[875]: could not adjust resource: IO ports 0xa00-0xaff: Function not implemented
cardmgr[875]: executing: './ide start hda 2>&1'
done.
-sh-3.00# mount /dev/hda1 /mnt
-sh-3.00# ls /mnt/
bin dev home linuxrc mnt root tmp var
boot etc lib lost+found proc sbin usr
-sh-3.00# alsaplayer onlyamatteroftime.wav
Playing (1/1): 0:12 (7:21) (no title information available)
...done playing
-sh-3.00#
armadillo メーリングリストの案内