포럼 회원으로 등록하신분만 다운로드가 가능합니다. 최대 업로드 가능한 용량은 1GB 입니다.
안녕하세요.
처음으로 자료를 올립니다.
다음 내용을 모두 모아서 정리한 Kernel을 올립니다.
----------
김재훈님의 AESOP6410 : Kernel 2.6.29 - Android & X-Windows - 090725
고도리님의 sound device driver
Vanilla Kernel 2.6.29 ~ 2.6.29.6의 diff를 merge
android git에서 android-2.6.29를 2009/09/05까지 merge
SD Memory Channel1 Card Detect Patch
smc911x.c ethernet device driver rxen disable bug patch (nfs server not responding문제 해결)
----------
아직 여러가지 문제가 있지만 여러 kernel version의 source를 merge하는게 상당히 귀찮은 작업이라 생각하기 떄문에 비슷한 작업을 하고 있는 사람들을 위해 지금까지 정리한 내용을 올립니다.
알려진 문제
----------
xwindow에서만 test했고, android가 잘 안 작동합니다. 부팅에 다 성공하고 나서 battery가 없다면서 작동을 안 합니다. ( AESOP6410에 battery가 어디에 달려있나. -_-;; ) 최신버전으로 올리면서 뭔가 호환성이 깨진 것이 아닌가 의심하고 있습니다. 아니면 제가 merge를 하다가 뭔가 실수를 했을 수도 있습니다. 조사가 필요합니다. adb도 정상적으로 작동하지 않습니다.
touchscreen이나 usb mouse로 window를 클릭하다 보면 LCD화면이 일그러지면서 kernel이 freeze됩니다. 이 문제는 김재훈님의 AESOP6410 : Kernel 2.6.29 - Android & X-Windows - 090725에서도 동일하게 발생합니다.
sound를 play할 때 DMA1에서 IRQ 74/AC97 PCM Stereo out: IRQF_DISABLED is not guaranteed on shared IRQs warning이 출력됩니다. 일단은 무시해도 특별히 문제는 없는 듯 합니다.
----------
compile방법
----------
make aesop6410_defconfig
make zImage
----------
bootargs
----------
setenv bootargs root=/dev/nfs rw nfsroot=192.168.0.77:/opt/RootFS-aESOP6410,nolock,tcp,rsize=4096,wsize=4096 ip=192.168.0.102:192.168.0.77:192.168.0.1:255.255.255.0::eth0:off console=ttySAC0,115200n81 ethaddr=00:09:c0:ff:ec:48 serverip=192.168.0.77
----------
AESOP-6410 : GPE Root File System - 090327사용시 변경사항
----------
DHCP로 인해 중간에 부팅도중에 IP가 바뀌는 경우에는
/etc/network/interfaces에서
iface eth0 inet dhcp를
iface eth0 inet static
address 192.168.0.102
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
로 변경해서 dhcp를 사용하지 않도록 설정해 주시기 바랍니다.
/lib/modules/2.6.29.6가 없다고 부팅도중에 에러가 나오면
/lib/modules/2.6.29.6를 /lib/modules/2.6.21.5-cfg-v19로
symbolic link를 걸어 주시기 바랍니다.
INIT: Id "S" respawning too fast: disabled for 5 minutes
INIT: no more processes left in this runlevel
부팅이 끝나고 에러가 발생하는 경우에는
/etc/inittab에서S:2345:respawn:/sbin/getty 115200 s3c_serial0를
S:2345:respawn:/sbin/getty 115200 s3c2410_serial0로 변경해 주시기 바랍니다.
----------
기타사항
----------
usb memory을 꼽아서 /dev/sda1에 인식되는 것을 확인했습니다.
sd memory를 channel1(baseboard에 붙어 있는 slot)에 꼽아서 /dev/mmcblk0p1에 인식되는 것을 확인했습니다. sd memory channel1을 사용하도록 기본설정되어 있으니 sd memory channel0를 사용하실 때는 make menuconfig하셔서 변경하시기 바랍니다.
ext2하고 vfat하고 mount되는 것을 확인했습니다.
s3c6410특유의 기능들(mfc등)은 application이 없어서 test를 못 해봤습니다. NDA를 맺고(NDA를 맺을 수 있을까 -_-;;) 자료를 받으면 samsung linux kernel git 최신버전하고 merge를 해서 테스트를 해 볼 예정입니다.
SD Memory Channel1 Card Detect Patch와 smc911x.c ethernet device driver rxen disable bug patch는 제가 땜질로 넣은 patch입니다. 다른 예기치 않은 문제가 발생할 수도 있습니다.
OTG쪽에는 Gadget Zero를 설정해 놓았습니다. 변경하고 싶으시면 make menuconfig하셔서 변경하시기 바랍니다.
merge를 할 때 s3c6410과 관련된다고 파악되는 부분은 건드리지 않도록 노력했습니다. ( 실수가 있을 수도 있습니다. )
----------
adb는 초기 android git에는 들어있지 않았는데 김재훈님이 배포하실 때 넣으신 것 같이 보이더군요. 일단 최신 android에는 adb가 들어있어서 김재훈님이 넣으신 것을 빼고 android에 있는 것을 넣었는데 단순히 그 문제로 작동하지 않았을 수도 있습니다. 일단 김재훈님이 넣으신 내용이랑 android git에 있는 내용이랑 비교해 보면 아마 뭐가 문제인지는 금방 파악이 되지 않을까 생각됩니다.
가능하면
에 있는 v2.6.28.6-samsung-v2도 smdk6410_linux-2.6-samsung_v2.6.28.6-r5_090430와 diff를 해서 merge를 할 까 했습니다만 S3C6410에서 작동했던 2.6.21용 application이 2.6.29에서는 작동을 하지를 않더군요. 테스트할 길이 없어서 일단 관뒀습니다. (정보가 없어서. 끄응.)
누군가 정보를 가지고 있는 사람이 나서서 v2.6.28.6-samsung-v2까지 merge해 주면 좋을 것 같습니다. 그렇게 되면 일단 나름대로 쓸만한 거의 perfect버전이 될 듯 합니다.
http://www.aesop.or.kr/?mid=board_android_platform&category=47238&document_srl=58633
게시물의 3.compile 부분을 보시면 됩니다.
커널 써 넣는 방법과 u-boot 셋팅 방법입니다.
nand erase 80000 300000;tftp c0000000 zImage-20090905;nand write c0000000 80000 300000
setenv bootcmd nand read c0008000 80000 300000;bootm c0008000
setenv bootargs root=/dev/mmcblk0p2 rw rootdelay=5 init=/init ip=192.168.0.101:192.168.0.199:192.168.0.1:255.255.255.0::eth0:off console=ttySAC0,115200n81 ethaddr=00:40:5c:26:0a:5b
saveenv
aesop-6410 android용 key patch를 했습니다.
main board상의 5개 키입니다.
맨 왼쪽서부터
back, home, menu, end, send 키로 매핑 되어 있습니다.
여러분들이 작업하신 내용을 보니 작업하기가 수월하네요. ^^;
고맙습니다.
그런데...
수정할 곳이 한군데 있는것 같아서 몇자 적어 봅니다.
archarmplat-s3c64xxirq-eint.c
static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
{ ...
...
if (offs > 15)
reg = S3C64XX_EINT0CON0;
else
reg = S3C64XX_EINT0CON1;
이 부분을 다음과 같이 수정하였습니다
if (offs < 16)
reg = S3C64XX_EINT0CON0;
else
reg = S3C64XX_EINT0CON1;
인터럽트 부분이 반대로 되어 있더라구요.
오~ 소스가 여기저기 분산되어서, 정리하는게 쉽지 않은 작업인데, 정말 수고가 많으셨습니다.
전에 알려주셨던 Ethernet 관련 패치는 적용해 보니 정말 잘 동작해서, 유용하게 사용하고 있습니다. :)
아마, Android 동작 시 배터리 없다면서 죽어버리는 문제는 Android에서 관련 소스 패치를 해야 하는 것으로 알고
있습니다. (Android에서 배터리가 만땅으로 보이게 하거나, 배터리가 없어도 죽어버리지 않게 하는 방법에 대해,
소스 코드를 수정해 주는 부분이 있습니다.)
ADB의 경우, 다른 분에 빌려준 이솝 보드가 오는데로 테스트 해보겠습니다.
좋은 자료 정말 감사드립니다.!