커널 부팅 후 NAND Flash의 mtd에 접근할 경우에 일반적으로 Permission denied  이 발생합니다.

이것은 NAND 의 mtd 파티션 설정시 mask_flags 에 의하여 다음과 같은 설정을 사용기 때문입니다.


리눅스 커널의 include/mtd/mtd-abi.h에 define 되어 있습니다.


// Some common devices / combinations of capabilities
#define MTD_CAP_ROM                   0
#define MTD_CAP_RAM                   (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
#define MTD_CAP_NORFLASH       (MTD_WRITEABLE | MTD_BIT_WRITEABLE)
#define MTD_CAP_NANDFLASH    (MTD_WRITEABLE)


기본적으로 MTD 파티션 설정시 " .mask_flags     = MTD_CAP_NANDFLASH, " 로 되어 있습니다.

이를 경우 MTD_WRITEABLE로 마스크 되기 때문에  쓰기 금지가 설정이 되어 커널 부팅 후 mtd 에 접근할 경우 Permission denied  이 발생합니다.


" .mask_flags =  0, " 으로 설정하면 읽기, 쓰기가 모두 가능하게 됩니다.