기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

c110의 OneNAND를 u-boot 상에서는 onenand 커맨드를 이용해

onenand read, onenand write, onenand erase 등을 활용해 제어는 가능합니다.

 

문제는 안드로이드 어플에서 OneNAND의 특정 파티션의 데이터를 얻어갈 필요가 있어서

안드로이드 어플 JAVA layer -> JNI -> C layer -> user space -> char dev -> kernel space 까지 내려와

커널 소스상에서 OneNAND를 제어하려고 합니다.

 

일주일을 삽질하면서 커널 소스상에서 read/write 는 어떻게 짜맞추긴 했는데

현재 문제가 OneNAND에 write 하기 전에 꼭 erase 를 해줘야하는데...

(erase 안하고 write 할 경우 해당 블럭이 배드블럭 처리가 되어버리네요. T_T)

이 rease 를 커널 소스상에서 처리하지 못해 write를 못하고 있습니다.

 

mtd-utils을 빌드해 flash_erase 란 툴을 이용하면 커널 MTD driver의 ioctl을 거쳐 OneNAND가 잘 지워지는데

제가 구현해야 하는 환경이 커널에서 OneNAND를 erase 해야하기 때문에

OneNAND를 지우기 위해 필요한 struct erase_info 구조체 내용을 채우지 못해서

onenand_base.c 의 onenand_erase 함수를 호출하면 인자중 NULL point가 있다고

커널 패닉으로 OneNAND의 특정 addr의 한블럭을 지우지 못하고 있습니다.

 

혹시 커널에서 OneNAND의 특정 블럭을 지우려면 어떤 절차로 구현할수 있는지

커널의 user 영역의 /dev/mtd/mtd0 같은 char nod를 통하지 않고

커널에서만 지울수 있는 방법이 있는지 문의 드립니다.


funmoney

2011.09.02 20:29:37
*.169.251.167

mtd device driver 를 경유하여 physical onenand 를 제어하는 구조로 되어 있다면

이미 mtd device driver 에 구현하기고자 하는 기능이 구현되어 있습니다.

 

mtd device driver 는 HW 를 직접 제어하는 driver 가 아니고 그 하위에 HW 관련된 driver 를 따로 가지고 있으며

OS 와 APP 에게 서비스하는 logical driver 로 보셔야 합니다.

 

즉 , 지우시고자 하는 부분이 /dev/mtd0 에 있는 있다면  이 디바이스 파일을 open 하시어 ioctl() 함수를 app 수준에서

호출하여 원하는  block 을 지울 수 있습니다.

 

app 로 부터의 호출이 없이 Kernel 이 스스로 지워야 한다면 ./drivers/mtd/mtdchar.c 에서 ioctl 을 분석하여

이것을 응요하시는 것도 좋을 듯 합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
4928 SDIO Wifi Suspend/Resume 동작 중 문의 [1] 불쏠 2011-09-09 1443
4927 odroid-7 커널을 T에 밀어 넣어 봤습니다. [1] 나론 2011-09-09 923
4926 odroid-t froyo kernel을 gb kernel에 이식 중입니다. hkdkc110 보... [1] 나론 2011-09-09 927
4925 AMS369FG06 AMOLED 전원 세팅 [1] ziraff 2011-09-08 1145
4924 PVR 에러 [1] 데카 2011-09-08 880
4923 c110에서 sleep 진입 시 gpio conpdn pudpdn 레지스터 관련 질... [1] 비트머슴 2011-09-07 1079
4922 GPS hardware interface 관련 문의 [1] 신기루 2011-09-07 933
4921 진저브레드 포팅 중 안드로이드 중단 문제 [1] 데카 2011-09-06 989
4920 안드로이드 다운로드 메커니즘 [2] 10번 2011-09-06 1023
4919 x11 porting [1] marvin 2011-09-06 941
4918 이솝 S5PC100 보드에서 안드로이드 Gingerbread 구동이 가능할까요... [1] 겟페우스 2011-09-05 1074
4917 gpio interrupt 타이밍 관련해서 질문 좀 드릴께요 [3] 로커스 2011-09-05 1038
4916 CentOS 5.6 설치 후 무선랜 문제 blue0sky 2011-09-04 662
4915 nor flash 인식을 못합니다. [1] 김명준 2011-09-03 1002
4914 Sleep 상태에서 Key 를 눌러서 Wake-Up 할 때 키 이벤트 받으려면... [1] 레몬 2011-09-02 1154
» OneNAND를 kernel에서 erase 하는 방법? [1] 텡구 2011-09-02 1386
4912 apk 가 설치가 될때 Root file system 에 어디에 설치되는지 궁금... [1] 거봉 2011-09-02 1351
4911 shell 관해서 질문이 있습니다. [1] 한승우 2011-09-01 1114
4910 24bit lcd 출력에 관한질문입니다. [2] 서연아빠 2011-09-01 1477
4909 .class 파일이 어떻게 만들어지나요?? [1] 한승우 2011-09-01 897

사용자 로그인