프로그램 실행중에 NOR flash 에 데이타를 저장하고 읽는것이 가능한가요.?

guriis의 이미지

현재 개발중인 장비에는 S3c2410x 와 8mb NOR Flash 가 있습니다.
NOR Flash 의 5mb 정도는 code 영역이 저장되어 있고 나머지 1mb 를 데이타 저장용으로 사용할려고 합니다.

RealView Debugger 를 사용해서 테스트를 할때는 NOR Flash 에 쓰고 읽는것이 가능한데.
release mode 로 컴파일후 테스트 하면 장비가 멈쳐버리네요.

프로그램 실행중에 NOR Flash 에 데이타를 저장하고 읽는것이 가능한지 알고 싶습니다.

익명 사용자의 이미지

일반적으로 불가능 하다고 말합니다.
multi bank 구조인 고용량 제품의 경우 다른 bank에 대한 program/erase 가 가능합니다.

code 영역은 bank0, data 저장 영역은 bank1 인 경우라면
bank0에 있는 code 중에서 nor program/erase code가 정상 수행 할 수 있습니다.

그런데 bank가 1개인 일반 저용량 NOR는 불가능 합니다.

그래도 꼭 데이터 저장용으로 사용을 하고 싶다면 NOR access(read/program/erase) 하는 코드를
별도로 RAM으로 복사해서 RAM에서 수행하도록 하면 됩니다. (shadow 기법)
이렇게 하려면 ld script를 바꾸거나 realview 컴파일러에서는 scatter loading script 파일로
로딩하는 주소를 명시해서 할 수 있습니다.

보통 SW 자체 업그레이드 기능이 있는 임베디드 SW의 경우 shadow 기법으로 펌웨어를 업그레이드 합니다.

익명 사용자의 이미지

저희는 write 하는데 문제가 없습니다.