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

안녕하세요.

NOR Flash의 한 섹터 지울때 메뉴얼에는 인터럽트를 disable 시키는것으로 추천하던데 왜 그럴까요?

한 섹터가 60000바이트정도 되고 erase 시간이 1초정도 걸리던데

동영상 같은것 플레이 중일때 1초 정도면 끊어지네요.

disable 시키지 않아도 아직까지는 문제없이 잘 돌아가구요.

꼭 disable를 시켜야 되나요?

답변 부탁드릴께요.

감사합니다.

고현철

2006.07.20 04:16:52
*.117.46.252

보통 Interrupt가 뜨면 해당 interrupt 처리 루틴으로 점프하기 때문에, erase에 문제가 있을 수도 있습니다.

개발에서 제일 힘든것이 평소때 잘 동작하는게 문제가 아니라,
가끔가다 특정상황에서 오동작을 하는게 문제입니다.

ISR이 발생하면 현재 context(현재 cpu가 하고 있는일)를 멈춰버리고
다른 짓을 해 버리기 때문에, 어떤 동작이 발생할지는 잘 모르는 문제지요.

일단 시키는대로 해주는게 좋습니다만, 꼭 해야한다고 한다면...
꽤 오랜기간 테스트를 해보시기 바랍니다.

뭐, erase니깐.....erase 안될 경우에는 write 안되니...또 지우고
쓰면 되겠습니다만...ㅎㅎ

고현철

2006.07.20 11:53:12
*.232.213.232

개발환경이 어떤 환경인가요? OS가 올라간 환경이라면 큰 상관은 없을거라고 보여집니다만...

최원철

2006.07.21 08:54:23
*.238.108.105

크게 두가지 문제가 있었습니다. 플래시 쓰기나 삭제 시퀀스 중에 인터럽트 루틴으로 인해 다른 플래시 접근 시퀀스가 끼어들어 해당 시퀀스가 깨지는 일이 있을 수 있고요.. 이 경우 당연히 작동하지 않겠죠. 두번째로는 OS 사용시 FLASH 접근 시퀀스중 (특히 파일 시스템 접근 중에) TASK SWITCHING을 허용함은 시스템의 예외 상황(시스템 종료등의)을 허용하는 것이 되기 때문에 문제가 될 수 있습니다.

플래시 중. 쓰기와 읽기가 동시에 가능한 제품도 있긴있다고 들었습니다. (삭제 명령 후 삭제가 진행중인 상태에서 다른 섹터에서 작업을 할 수 있는 등의)

플래시나 파일 시스템 관련은 추후 심각한 상황(소송 같은?)이 올 수 있으므로 스펙을 준수하는게 좋습니다.

최원철

2006.07.21 08:56:26
*.238.108.105

여럿이 작업할 경우. 원래의 구조 컨셉에서 벗어나 특정 TASK(파일 시스템 TASK 같은)에서 사용해야 하는 루틴을 다른 테스크에서 직접 호출 할 경우 시퀀스 깨지는 문제가 간헐로 나타나는 경우도 있었습니다.

김선엽

2006.07.21 20:31:05
*.94.41.89

환경은 OS올라간 셋탑박스였구요. 충분히 테스트를 해봐야 될 듯하네요.
플래시 write 할 경우 앞뒤로 세마포어를 쓰기때문에 중복으로 불릴 일은 없을듯 합니다.
늦었지만 답변 감사합니다.
List of Articles
번호 제목 글쓴이 날짜sort 조회 수

사용자 로그인