예상 포인터

휴~~

어려운 문제에 봉착 했습니다.

커널 해킹용 시리얼 포트까지 열어 놓았는데

압축 해제 시리얼 메시지까지 나오고 그 뒤로 전혀 나오지 않고 있죠…

이럴 경우에는 여러 가지 가능성이 있습니다.

 

1) console= 에 지정하는 디바이스 드라이버 이름 지정에 문제가 있거나

2) 아니면 콘솔 디바이스 드라이버가 동작하기 전에 커널이 멈추어 버리거나

3) 가끔 있는 경우지만 console=로 지정한 시리얼 포트가 다른 용도로 사용되거나

 

그 밖에 몇 가지가 있습니다.


그런데 첫번째 console= 에 지정하는 디바이스 드라이버 이름 문제는 별로 의심하고 싶지 않습니다.

왜냐하면 삼성 것은 대부분 이 이름을 사용하고 이미 2410에서 적용해서 문제가 없었기 때문입니다.

 

그리고 두 번째는 일단 디버깅 하기가 무섭습니다. 무한 삽질의 시작이거든요

 

일단 세번째를 먼저 의심하고 싶습니다. 시리얼 포트가 다른 용도로 사용될 경우라면현재와 같은 증상이 나올 수 있거든요..

 

시리얼 포트 리소스 지정 위치

ARM은 각각의 보드에 따른 하드웨어 설정 내용을

 

MACHINE_START( … 을 포함하는 소스상에 대부분 존재 합니다.

SMDK2440 보드는 다음 소스에 위치합니다.

arch/arm/mach-s3c2440/mach-smdk2440.c

이 파일에는 SMDK2440에 설치되는 디바이스드라이버 목록이나 기타 설정 사항들이 있습니다.

여기서 잘 찾아보면 시리얼 포트에 관련된 설정 값들이 있습니다.

 

다음이 있네요

3c2410_uartcfg smdk2440_uartcfgs


오옷!!

뭔가 이 설정 내용 중 주석에 IRPORT란 것이 눈에 보입니다. 그리고 내용도 조금 이상하네요

 

static struct s3c2410_uartcfg smdk2440_uartcfgs[] __initdata = {
        [0] = {
                .hwport      = 0,
                .flags       = 0,
                .ucon        = 0x3c5,
                .ulcon       = 0x03,
                .ufcon       = 0x51,
        },
        [1] = {
                .hwport      = 1,
                .flags       = 0,
                .ucon        = 0x3c5,
                .ulcon       = 0x03,
                .ufcon       = 0x51,
        },
        /* IR port */
        [2] = {
                .hwport      = 2,
                .flags       = 0,
                .ucon        = 0x3c5,
                .ulcon       = 0x43,
                .ufcon       = 0x51,
        }
};


포트 2 를 설정하는 부분에 주석으로 IR port 라고 하고 있고
더구나 ulcon 이 다른 것과 다르게 0x43으로 설정되어 있습니다.

 

오호…

이 부분은 아무래도 IR 포트용으로 line 특성을 달리 설정한 것 같습니다.

.ulcon       = 0x43,

 

이 부분을

.ulcon       = 0x03,

으로 고쳐서 재 컴파일 한 다음 보드에 올려 보겠습니다.

 

EZBOOT>tfk
 receive zImage.ez-s3c2440
 tx ARP
 ARP error
 tx ARP
 rx ARP
 HOST MAC : 00:FF:A7:1F:64:00
 HOST  IP : 192.168.10.61
 LOCAL IP : 192.168.10.183
 option [timeout 120 tsize 1790920]
argv=TFK1781760
 size = 1790920

 ...write 1790920  complete
 ...verify complete

EZBOOT>rst
System Soft Reset.......
EZBOOT>0123B

WELCOME EZBOOT V2.3.05 (FALINUX Co.,Ltd) ......S3C2440(EZ-S3C2440) (400MHz)
Program by You Young-chang, Oh Jae-Kyong, Jang Hyung-Gi
Last Modify Jun  1 2009

  Detect Samsung NAND 64M 3.3V 8-bit Flash : vid=EC pid=76
  SIZE 64-Mbytes (page=512, block=16K)

 ... not supported part_nr=2
  clear lcd .....

Quickly Autoboot [ENTER] / Goto BOOT-MENU press [space bar]

Copy Kernel Image .....
Copy Ramdisk Image .....
Starting kernel [MARCH 362]...
kernel command [EZBOOT mem=64M initrd=0x30800000,5M root=/dev/ram0 ramdisk=16384 console=ttySAC2,115200 video=ezfb:panel:2   ip0=192.168.10.183 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) #8 Fri Jun 5 09:13:12 EDT 2009
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: SMDK2440
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C244X: core 399.651 MHz, memory 133.217 MHz, peripheral 66.608 MHz
S3C24XX Clocks, (c) 2004 Simtec Electronics
CLOCK: Slow mode (2.116 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 video=ezfb:panel:2   ip0=192.168.10.183 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 000000c0
irq: clearing subpending status 00000080
PID hash table entries: 256 (order: 8, 1024 bytes)
timer tcon=00000009, tcnt d8d2, tcfg 000002ff,00003333, usec 0000170f
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: 55928KB available (3320K code, 327K data, 152K init)
Calibrating delay loop... 199.47 BogoMIPS (lpj=498688)
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
S3C2440: Initialising architecture
S3C2440: IRQ Support
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
S3C244X: Clock Support, DVS off
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 (no cpio magic); 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
Console: switching to colour frame buffer device 30x40
fb0: s3c2410fb frame buffer device
lp: driver loaded but no devices found
ppdev: user-space parallel port driver
Serial: 8250/16550 driver4 ports, IRQ sharing enabled
s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440
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
s3c2440-nand s3c2440-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
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
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 378 KHz
s3c2440-i2c s3c2440-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: Compressed image found at block 0
length error
VFS: Mounted root (ext2 filesystem) readonly.
Freeing init memory: 152K
INIT: version 2.86 booting
INIT: Entering runlevel: 3
SIOCSIFADDR: No such device
SIOCSIFNETMASK: No such device
SIOCGIFFLAGS: No such device
route: SIOC[ADD|DEL]RT: No such device
mount: Mounting /dev/mtdblock2 on /app failed: No such device
/usr/local/apache/bin/apachectl start: httpd started
Starting system logger: [  OK  ]
Starting INET services: [  OK  ]

Welcome to FALinux (www.falinux.com)
Linux Kernel 2.6.28.10
falinux login:


 

음하하하하

심 봤습니다.

 

시리얼 포트가 제대로 동작해서 정상 부팅 됩니다.

EZ-S2440 도 시리얼 포트 포팅이 거져 끝났습니다.

 

자 이제 이제까지 작업한 환경 설정을 다음에 보는 것과 같은 명령을 이용하여 저장하고

 

[root@localhost linux]# cp .config arch/arm/configs/ezs2440_defconfig


커널을 클리어 합니다.

 

 [root@localhost linux]# make clean


새로 추가된 파일이 있는가 확인 합니다.

 

[root@localhost linux]# svn st


 

새로 생성된 것중 서브버전에 추가 할 파일을 추가 합니다.

 

[root@localhost linux]# cd arch/arm/configs/
[root@localhost configs]#svn add ezs3c2440_defconfig


서브 버전에 커밋 합니다.

 

[root@localhost configs]# cd ../.../..
[root@localhost linux]#  svn ci -m "EZ-S2440 serial first portign sucess"



아…

오늘도 힘찬 하루 …