2012-05-25 1 views
1

플래시 Nand (파일 시스템 없음)에서 데이터를 읽는 코드를 만들었습니다. 그것은 작동C 읽기 오류 플래시에서 O_RDWR 열기 NAND MTD0

fd = open("/dev/mtd0", O_RDONLY) 

은, 그때 그래서 나는에 코드를 변경 .. 그것을 쓰기 읽으려고 할 :

fd = open("/dev/mtd0", O_RDWR) 

그러나 그것은 수단을 열 수 없습니다, -1 반환합니다. 하지만 다른 MTD에서는 작동합니다.

가 그럼 난 cat /proc/mtd이 MTD0이 RO이고 다른 하나는 RW이라고 말했다 볼

fd을 필요로하기 때문에 내가 MEMUNLOCK

ioctl(fd, MEMUNLOCK, &mtdLockInfo) 

을 사용하려고 (내가 그것을 읽기 전용 및 읽기 쓰기 생각) , open이 필요하므로 O_RDONLY이 아닌 O_RDWR (return -1)을 사용하십시오.

그러나 오류 Bad file description을 반환합니다. O_RDONLY이므로 O_WRONLY 또는 O_RDWR을 사용해야합니다.

이 MTD0을 잠금 해제하거나 잠금 해제하지 않고 쓸 수있는 방법이 있습니까 ??

답변

1

DTS (장치 트리 소스)에서 낸드 플래시의 파티션을 변경하려고했습니다.

읽기 전용 옵션이 있습니다. 그러나 크기 만 변경되었습니다.

그리고 완료되었습니다. 내 NAND 플래시에 액세스 할 수 있습니다.

1

장치의 커널 드라이버가 작업을 금지했을 수 있습니다. 기기가 실제로 읽기 전용이거나 드라이버에서 표시 한 것 같습니다.

+0

그래서 .. 잠금을 해제 할 수있는 옵션이 있습니까? 커널을 수정하지 않고? –

+0

해당 장치에 대한 관련 메시지가 있는지 dmesg를 확인하십시오. 물리적 하드웨어 란 무엇입니까? 어떤 운전자가 그것을 집어 들고 있습니까? 모듈에 전달되는 매개 변수가 있습니까? –

+0

(ST 마이크로 NAND 256MiB 3,3V 8 비트), Linux Embedded를 사용하고 있습니다. –