기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
영역을 확인 할 수 있는 방법을 찾았습니다!!
# cat /proc/mtd
가 있더군요... 이걸 못찾아서 엉뚱한데 자꾸 지워서 날려먹는 바람에...
게다가, mount에 -t jffs2 옵션을 주고 마운트를 해서 쓰니 잘 써지고 읽히는것을 확인 했습니다.
헌데... ls로 마운트한 디렉토리의 내용이 잘 안보였었는데...
오늘 해보니 잘 먹히네요;;; 제가 할때 정신이 없었던건지...
좌우간 감사드립니다.
=========================================================================
[질문내용]
궁금한 내용이 있어 추가로 질문을 드리려고 합니다.
원하는 작업은
1. 플래쉬 메모리의 특정 영역에 접근하여 간단한 데이터를 Write/Read 할 수 있는 기능
2. 플래쉬 메모리의 특정 영역에 통계수치와 같은 데이터를 저장하고,
시스템이 재부팅 되었을 시 해당 데이터를 다시 사용할 수 있도록 하는 기능
의 두가지 입니다.
현재 Ramdisk가 올라간 상태에서 MTD 디바이스를 이용하여 특정 영역에
데이터를 쓰고 읽어보고 있습니다만, 많이 불안한 상태입니다.
하여 질문은 세가지 입니다.
1. 플래시 메모리의 특정영역이라 칭하는 곳이 safe 한 부분인지 알 수 있는 방법이 있나요?
- mtdblock을 이용하여 read/write 하지만 해당영역이 kernel/filesystem등과같은 부분이라면
사용하면 안되는 영역일것 같습니다. 그런데 대체 어느 블록이 어떤 데이터를 갖고 있는지 cat으로 일일히
볼수는 없을것 같습니다.
2. mtdblock의 크기를 알 수 있는 방법은 어떤것이 있나요?
- /dev/mtd0~16까지 분할된 영역이 어떤 크기를 갖는지 확인 할 방법이 있는지 궁금합니다.
- flash_info를 이용하여 체크를 해본 결과 mtd0~6까지의 디바이스는 'Device /dev/mtd0 has 0 erase regions'가
'7~16'까지의 디바이스는 'File open error'가 발생되고 있습니다.
3. 플래시 영역에 일반 ext2 파일시스템처럼 파일을 저장하고 읽어들일 수 있는 방법이 있는지 알고 싶습니다.
- 위에 하고자하는 기능에서 처럼 특정 수치나 정보데이터를 파일화 하여 해당 파일을 지속적으로 읽고 쓸수
있으면 좋을것 같은데 어떻게 해야 하는것인지 잘 모르겠습니다 (ㅠ_ㅠ)
- 2006년 5월 30일 12:05경에 올라온 '민세홍'님의 질문의 내용과 같은 매직넘버 비트마스크를 찾지 못하는 증상이
나타나고 있습니다.
이상의 세가지 질문사항을 문의 드려보겠습니다.
커널과 플래시 부트로더 버전은 아래와 같습니다.
※ Kernel Version : 2.6.37.7
※ U-Boot : 2009.11.1
※ Flash : (S29GL512P10TFIR1)
감사합니다.
=========================================================================
[기존 질문]
PPC460 기반 보드에 Flash 소자에 데이터를 쓰고 읽으려 하고 있습니다.
물론 재부팅후 날아가지 않도록 해야하는 데이터이고요...
이것저것 찾다보니 MTD를 이용하면 flash소자에 데이터를 읽고 쓸 수 있다는 것을 알았는데요
한번 데이터를 써넣어본 뒤 재부팅 후 결과 마운트가 안되는 현상이 발생되고 있습니다.
처음에 부팅하면서 커널이 올라가고 파일시스템을 RAMDISK로 읽어들인것 까진 좋은데
'df -h'로 살펴보니
'/dev/ram0'가 '/'로 마운트 되었고
'tmpfs'가 '/tmp'로 마운트 되어있으며,
'/dev/mtdblock3' 이 '/mnt/jffs2'로 마운트 되어 있을뿐 다른 블록은 보이질 않고 있습니다.
mtdblock3에 데이터를 써넣은 것이 써넣으면 안되는곳을 접근한것인지...
어떤것인지 갈피를 못잡고 있는 현실입니다.
어떤 부분을 어떻게 수정해야 Flash Memory 영역에 데이터를 쓰고 읽을수 있고
재부팅 후에도 데이터가 남아 있도록 할 수 있는지 문의 드려봅니다.
감사합니다.
P.S.
Kernel Version : 2.6.37.7
U-Boot : 2009.11.1
Flash : (S29GL512P10TFIR1)
=======================================================================
앗! 감사드립니다. 링크 해주신 문서가 많은 도움이 되었습니다~ ^^
헌데 제가 쓰고 있는 보드가 특이한건지
이게... 따로 설정없이 MTD를 menuconfig에서 enable 시킨 뒤 올리면
올라가서 잡히는걸로 확인이 되고 있습니다.
헌데 이게... 한 열댓개... 그러니까 정확히는 17개(0~16)가 잡히더군요... RAM쪽을 건드려야 하는건지...
(flash_eraseall을 이용하여)mtd0을 지우면 커널이미지가 날아가 버리더군요...
그래서 cat을 이용해 소자를 보고 있는데 각 디바이스마다 바이너리도 있고, environment도 있고...
쓰기 조금 애매한 구조인것 처럼 보입니다.
어디에 뭐가 쓰였는지 확인을 해봐야 할것 같습니다.
지금은 램디스크 이미지랑 같이 쓰는중이라... 램에 플래시 관련 어플을 포함시켜서 한번 올려봐야겠네요
감사합니다.
[추가질문사항이 있어 글을 수정하였습니다]
허거덩.....ppc460....정말 오랜만에 들어보는 말이네요...
flash가 NOR인 듯 싶네요.(구글링 할 기운도 없습니다..........4일 밤새서요)
NOR면 jffs2를 사용하셔야 합니다.
간단하게 말씀드리면 이 문서를 참고하시면 됩니다.
예전에 nor에 mtd 올리는 하우투니 지금도 그대로 적용될겁니다.........^^
http://www.aesop.or.kr/Board_Resources_S3C2410/38059