강좌 & 팁
머신 번호 불일치 디버그 메세지
[A009_010_kernel_boot1.png]
그래도 이 화면까지 왔다면 압축 해제는 정상적으로 진행된 겁니다.
그런데 그 다음 진행이 안되겠죠?
일단 영어를 해석해 봅시다.
아시는 분은 아시겠지만 제가 영어는 영 꽝입니다. ㅠㅠ
표출된 내용을 콩글리쉬로 해석하면
에러: 그런 머신 ID는 지원하지 않는다.( r1 = 0x00000bb8 )
뭐 이런 겁니다.
그 다음에 지원하는 것들은 이런 이름이 있고 ID는 이런 거다.
솔찍히, 저 이 메시지 보고 무척 놀랐습니다.
이렇게 친절하게 커널이 바뀌었다니
오호호호..
옛날에는 상상도 못했던 일입니다.
여러분들은 복 받은지 아십시오… 쩝.
Machine Type Number(머신 타입 번호)
이 Machine ID란 개념은 리눅스 커널 중에서 ARM 만 있습니다.
다른 말로 Machine Type Number 란 말을 씁니다.
하여간 리쉘 워킹( 발음이 맞는지 잘 모르겠음) 이 양반이 ARM 용 커널을 만들었으니 이 양반 마음대로 이지만 이 부분 만큼은 영 맘에 안 듭니다.
처음 만드실 때 나름대로 고민 하셨겠지만 하여간 영 아니라는 겁니다.
어쨌든 규칙은 규칙
이건 부트로더가 커널을 호출할 때
R1 에 머신 타입 번호 를 넘겨 주어야 하고 커널이 넘겨진 번호를 인지 할 수 있어야 합니다.
이 머신 타입 번호는 커널이 보드를 구별하기 위한 번호인데 이 머신 ID를 얻기 위해서는
http://www.arm.linux.org.uk/developer/machines/
요기로 가셔서 등록해야 합니다.
EZ-S2410 은 다음과 같이 등록되어 있습니다.
1309 EZ-S2410(FALINUX) ez_s2410 Hyung-Gi Jang
즉 1309 번이 이에 해당하는 ID 입니다.
그럼 여러분이 가지신 보드로는 ID 등록을 하지 못하면 커널을 못 사용 하냐구요?
그건 아니죠..
남에 것 일단 빌려서 써도 되죠..
그냥 규칙일 뿐인걸요..
우리도 일차 목표는 시리얼 부팅이잖아요.. 머신 번호와 보드 셋업을 하기 위한 정식 절차는 조금 미루어 보자구요….
자 일단 현재 커널의 불만은 내가 알고 있는 보드 ID가 없다는 거잖아요..
그렇다면 위에 나온 것 중 하나를 이용해서 처리 하면 되지 않겠습니까?
이지부트에서 Machine Type Number 설정
이지부트에서는 set 명령을 통해서 커널에 전달할 Machine Type Number를 설정할 수 있습니다.
일단 삼성에서 나온 보드 중 공식적인 보드 SMDK2410 의 ID를 이용해 보기로 하지요
부팅 에러 메시지를 보면 이렇게 되어 있습니다.
000000c1 SMDK2410
즉 0xC1 ? 193 번 이 Machine Type Number 입니다.
그런데 웹 페이지에 가보면
193 smdk2410 smdk2410 Jaeoh Cha 도 있고
1703 SMDK2410 control Han Jae Lyong 라고 되어 있습니다.
어떤게 맞을까요?
예 일단 커널 부팅 에러 메시지에 나온 항목이 맞습니다.
왜 이렇게 부팅에서 여러가지 ID 값들이 나오고 있을까요?
예 가능한 모든 보드 종류를 모두 커널 소스상에 포함 시켰기 때문입니다.
그래서 최적화 시키고 싶다면 필요한 보드와 관련된 것만 커널 소스상에 포함 시키면 됩니다.
어찌되었든
부트로더에서 set 명령을 통해서 193 을 Machine Type Number로 사용합시다.
[A010_010_boot_loader_set_machine.png]
13번 항목을 고치면 됩니다.
그리고 S 를 이용하여 저장하고 Q 로 빠져 나간후
rst 명령으로 재 부팅하여 커널 부팅을 해 봅니다.
EZBOOT>rst
System Soft Reset.......
EZBOOT>0123B
WELCOME EZBOOT V2.3.04 (FALINUX Co.,Ltd) ......S3C2410(EZ-S3C2410) (266MHz)
Program by You Young-chang, Oh Jae-Kyong, Jang Hyung-Gi
Last Modify May 10 2009
Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76
SIZE 64-Mbytes (page=512, block=16K)
Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar].
Copy Kernel Image .....
Copy Ramdisk Image .....
Starting kernel [MARCH 193]...
kernel command [EZBOOT mem=64M initrd=0x30800000,5M root=/dev/ram0 ramdisk=16384 console=ttySAC2,115200 ip0=192.168.102.101 mac=00:FA:01:A2:13:04 netmask=255.255.0.0 gw=192.168.10.1 host=192.168.10.61 nandparts=2,8,54 ]
Uncompressing Linux..................................................................................................................... done, booting the kernel.
Linux version 2.6.28.10 (root@localhost.localdomain) (gcc version 3.4.3) #6 Tue May 26 10:46:55 EDT 2009
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: SMDK2410
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410A (id 0x32410002)
S3C2410: core 266.000 MHz, memory 133.000 MHz, peripheral 66.500 MHz
S3C24XX Clocks, (c) 2004 Simtec Electronics
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: EZBOOT mem=64M initrd=0x30800000,5M root=/dev/ram0 ramdisk=16384 console=ttySAC2,115200 ip0=192.168.102.101 mac=00:FA:01:A2:13:04 netmask=255.255.0.0 gw=192.168.10.1 host=192.168.10.61 nandparts=2,8,54
irq: clearing pending status 00000400
irq: clearing subpending status 00000080
PID hash table entries: 256 (order: 8, 1024 bytes)
timer tcon=00000009, tcnt d877, tcfg 000002ff,00003333, usec 00001719
Console: colour dummy device 80x30
console [ttySAC2] enabled
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 55952KB available (3320K code, 327K data, 152K init)
Calibrating delay loop... 132.71 BogoMIPS (lpj=331776)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 484 bytes
NET: Registered protocol family 16
S3C2410 Power Management, (c) 2004 Simtec Electronics
S3C2410: Initialising architecture
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4808000, irq 33
DMA channel 1 at c4808040, irq 34
DMA channel 2 at c4808080, irq 35
DMA channel 3 at c48080c0, irq 36
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd
Freeing initrd memory: 5120K
NetWinder Floating Point Emulator V0.97 (extended precision)
JFFS2 version 2.2. (NAND) (SUMMARY) 짤 2001-2006 Red Hat, Inc.
msgmni has been set to 119
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
s3c2410-lcd s3c2410-lcd: no platform data for lcd, cannot attach
s3c2410-lcd: probe of s3c2410-lcd failed with error -22
lp: driver loaded but no devices found
ppdev: user-space parallel port driver
Serial: 8250/16550 driver4 ports, IRQ sharing enabled
s3c2410-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
brd: module loaded
loop: module loaded
dm9000 Ethernet Driver, V1.31
Uniform Multi-Platform E-IDE driver
ide-gd driver 1.18
ide-cd driver 5.00
Driver 'sd' needs updating - please use bus_type methods
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand s3c2410-nand: Tacls=3, 22ns Twrph0=8 60ns, Twrph1=3 22ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Bad eraseblock 32 at 0x00080000
Bad eraseblock 655 at 0x00a3c000
Creating 8 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00004000 : "Boot Agent"
0x00000000-0x00200000 : "S3C2410 flash partition 1"
0x00400000-0x00800000 : "S3C2410 flash partition 2"
0x00800000-0x00a00000 : "S3C2410 flash partition 3"
0x00a00000-0x00e00000 : "S3C2410 flash partition 4"
0x00e00000-0x01800000 : "S3C2410 flash partition 5"
0x01800000-0x03000000 : "S3C2410 flash partition 6"
0x03000000-0x04000000 : "S3C2410 flash partition 7"
usbmon: debugfs is not available
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.4.3:USB FTDI Serial Converters Driver
USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
pl2303: Prolific PL2303 USB to serial adaptor driver
mice: PS/2 mouse device common for all mice
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c2410-i2c s3c2410-i2c: slave address 0x10
s3c2410-i2c s3c2410-i2c: bus frequency set to 377 KHz
s3c2410-i2c s3c2410-i2c: i2c-0: S3C I2C adapter
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
RAMDISK: Couldn't find valid RAM disk image starting at 0.
List of all partitions:
1f00 16 mtdblock0 (driver?)
1f01 2048 mtdblock1 (driver?)
1f02 4096 mtdblock2 (driver?)
1f03 2048 mtdblock3 (driver?)
1f04 4096 mtdblock4 (driver?)
1f05 10240 mtdblock5 (driver?)
1f06 24576 mtdblock6 (driver?)
1f07 16384 mtdblock7 (driver?)
No filesystem could mount root, tried: ext3 ext2 cramfs vfat msdos iso9660 romfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
음 하하하…
일단 커널은 떴습니다.
자 이제 다른 보드들도 진행해야 하겠죠?
EZ-S2410 보드 사신 분이야 상관 없지만
다른 고객분들도 아쉬워 하시잖아요?
자 이제 이제까지 작업한 환경 설정을 다음에 보는 것과 같은 명령을 이용하여 저장하고
[root@localhost linux]# cp .config arch/arm/configs/ezs3c2410_defconfig
서브 버전에 커밋 합시다.
[root@localhost configs]# svn st
? ezs3c2410_defconfig
[root@localhost configs]# svn add ezs3c2410_defconfig
A ezs3c2410_defconfig
[root@localhost configs]# svn ci -m "EZ-S2410 serial first portign sucess"