안녕하세요.
고도리입니다.
회사를 나온지 1달반이 좀 넘어가네요.
회사를 나오면서 정말 일이 많았습니다. 회사가 어려워진것도 있었고, 개인적으로
힘든일도 많이 있었고요....
나오면서 무엇을 해야할까 고민하다가 그냥 제일 잘 할 수 있는 일을 하기로 했습니다.
새로운 칩에 리눅스 돌려보는 정도는 좀 오래하다보니 조금은 익숙해져서 할만 할 듯 싶더군요.
그러다 제안이 하나 들어와서 현재는 pollux란 칩에 리눅스를 포팅하고 있습니다.
2달 넘게 고생하다보니 어느정도 끝이 보이기 시작합니다.
처음에는 mp2530f와 유사해서 금방 할 수 있는 것처럼 보였는데, 실제로 작업에 들어가니
상상을 초월할 정도로 힘드네요.
칩벤더가 아니다 보니, 정보에 한계가 있고, 메뉴얼과 wince소스만 보고 개발하려니
나름 많이 힘들었습니다.
============================================================
U-Boot 1.1.6 (May 8 2008 - 12:50:04)
U-Boot code: 03680000 -> 036A61D0 BSS: -> 036AB5A8
RAM Configuration:
Bank #0: 00000000 64 MB
Get flash bank 0 size @ 0x80000000
Total Flash bank's sizes: 0x400000
protect monitor 261d0 bytes @ address 80000000
Flash: 4 MB
NAND: 64 MiB
nand_read_ecc: from = 0x00040000, len = 16384
In: serial
Out: serial
Err: serial
### main_loop entered: bootdelay=2
### main_loop: bootcmd="tftp 0x02000000 uImage; bootm 0x02000000"
Hit any key to stop autoboot: 0
11:0:33:22:55:44:TFTP from server 192.168.0.250; our IP address is 192.168.0.100
Filename 'uImage'.
Load address: 0x2000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
##################################################
done
Bytes transferred = 2914700 (2c798c hex)
## Booting image at 02000000 ...
Image Name: Linux-2.6.20-pollux
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2914636 Bytes = 2.8 MB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
OK
No initrd
## Transferring control to Linux (at address 00008000) ...
Starting kernel ...
Linux version 2.6.20-pollux (root@pollux) (gcc version 4.0.2) #397 Sun May 18 11:49:16 KST 2008
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: AESOP_POLLUX
Memory policy: ECC disabled, Data cache writeback
clkmodereg = 0x05010480
pollux_cmr.cpu0_div = 0
pollux_cmr.cpu0_src_pll= 0
pollux_cmr.cpu0_AHB_div= 2
pollux_cmr.bclk_div = 0
pollux_cmr.bclk_src_pll= 1
pollux_cmr.pll_pdown1 = 0
pll 0 = 528000000
pll 1 = 147000000
ARM926 fclk = 528000000 Hz
ARM926 AHB clock = 176000000 Hz
BCLK = 147000000 Hz
PCLK = 73500000 Hz
DRAM CLK = 73500000 Hz
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
Built 1 zonelists. Total pages: 13970
Kernel command line: mem=55M root=/dev/nfs rw nfsroot=192.168.0.250:/root/gwork/rootfs ip=192.168.0.100:192.168.0.250:192.168.0.1:255.255.255.0:godori:eth0:off console=ttySAC0,115200n81 mtdparts=pollux-nor:-(extra)
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 55MB = 55MB total
Memory: 52736KB available (2416K code, 477K data, 96K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
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: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 2048 bind 1024)
TCP reno registered
NetWinder Floating Point Emulator V0.97 (double precision)
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
pollux-uart.0: pollux_serial0 at MMIO 0xf0016000 (irq = 44) is a POLLUX
pollux-uart.1: pollux_serial1 at MMIO 0xf0016080 (irq = 48) is a POLLUX
pollux-uart.2: pollux_serial2 at MMIO 0xf0016800 (irq = 52) is a POLLUX
pollux-uart.3: pollux_serial3 at MMIO 0xf0016880 (irq = 56) is a POLLUX
RAMDISK driver initialized: 1 RAM disks of 8192K size 1024 blocksize
loop: loaded (max 8 devices)
nbd: registered device at major 43
Linux video capture interface: v2.00
pollux_spi_probe: res->start = 0xf0007800
pollux_spi_probe: GPIO_SSPFRM = 44, function = 0
pollux_spi_probe: GPIO_SSPCLK = 45, function = 1
pollux_spi_probe: GPIO_SSPRXD = 46, function = 1
pollux_spi_probe: GPIO_SSPTXD = 47, function = 1
usbmon: debugfs is not available
usbcore: registered new interface driver usbhid
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
lf1000_udc_probe: base addr = f0018000
mice: PS/2 mouse device common for all mice
pollux-rtc pollux-rtc.0: rtc core: registered pollux-rtc as rtc0
POLLUX Real Time Clock driver initialized.
i2c /dev entries driver
MagicEyes POLLUX I2C Bus driver
pollux-i2c pollux-i2c.0: i2c-0: POLLUX I2C adapter
initialization done.
TCP cubic registered
NET: Registered protocol family 1
pollux-rtc pollux-rtc.0: setting the system clock to 2009-05-05 13:33:15 (1241530395)
mmcblk0: mmc0:0002 992256KiB
mmcblk0: p1
IP-Config: Complete:
device=eth0, addr=192.168.0.100, mask=255.255.255.0, gw=192.168.0.1,
host=godori, domain=, nis-domain=(none),
bootserver=192.168.0.250, rootserver=192.168.0.250, rootpath=
Looking up port of RPC 100003/2 on 192.168.0.250
Looking up port of RPC 100005/1 on 192.168.0.250
VFS: Mounted root (nfs filesystem).
Freeing init memory: 96K
INIT: version 2.84 booting
rc.udev start
Initializing udev dynamic device directory.
Starting udevd: /sbin/udevd --daemon
mount: Mounting /dev/root on / failed: No such file or directory
INIT: Entering runlevel: 3
AESOP Linux
/) /)
(='.'=) <- godori
login[560]: root login on `tts/0'
============================================
이제 남은 device driver는 MLC nand와 usb device controller정도네요.
참, video관련 YUV -> RGB plane 쓰는 법도 있네요.
개인적으로 칩을 개발하면서 느낀점은....
- 속도가 굉장히 빠르다. arm9 528Mhz로 돌리고 있는데, 2440에 비해서도 빠르다는 느낌입니다.
- 이전에 써 왔던 매직아이 칩들에 비해서 불확실한 부분이 많이 줄었다.
- system용도로 쓰기에는 아주 좋다(2410/2440/2443을 대체할)
- 가격적인 부분에서 아주 맘에 든다....^^
대략 이정도입니다.
단점은...
- 몇가지 버그땜에 삽질을 심하게 했음. 대놓고 설명하기는....ㅎㅎ
큰 버그가 현재까지는 1개 나왔고, 나머지 짜잘한 버그들은 5개 언더....
- RAM을 대용량 붙이기가 난감하다.
- PLL이 2개인데, 하나가 모자라서 삽질을 심하게 해야한다.
- reference코드가 딸랑 wince다(매직아이의 코드방식이라, 익숙하지 않으면 엄청 짜증난다는)
장점은
- 속도
- 가격(전체 시스템 단가도 낮아짐)
- SD 가 2포트
- CS가 10개
- MLC컨트롤러가 붙어 있음
- 4 port serial
- IIS만 붙어있음 --> 가격에는 장점, 제어에는 약점...
대략 이정도입니다. 현재까지는 큰 칩버그 하나만 빼면, 어떤 다른 칩들과도 떨어지지 않는 성능을 보여줍니다.
앞으로 더 완성도 있는 녀석을 만들어 봐야할 듯 합니다.
한달정도 고생하면 될래나....ㅎㅎ
더 신경을 써야하는데, 1달 넘게 하루도 못 쉬었습니다.
이 일이 끝난 후에야 신경을 쓸 수 있을 듯 합니다.
그리고, 한가지 더.....
aesop-mp2530f 보드 두매를 스페인에서 사 갑니다.
음....개인적으로 너무나 기쁜 일이라서요....
해외서 우리 한글 사이트를 보면서......예전에 aesop 초창기에 이제현님께서 말씀하신, 남들이 우리를 찾아올 수 있게(한글 배워서?) 만들어 보자...라는게 조금이나마 현실화 된게, 너무너무 기쁩니다.
^^