플래시 메모리가 지워진다구? - 2009/02/09 17:05
그림1의 플래시 메모리 인터페이스 는 임베디드 시스템 설계시 흔히 보는 일반적인 플래시 메모리의 인터페이스를 보이고 있습니다.
이 시간에는 올바른 플래시 메모리의 디지탈 회로 구성법에 대하여 알아보고 의도되지 않은 플래시 메모리의 지워짐 현상 발생에 대한 대책과 그 예방법을 함께 생각해 보도록 합니다.
[그림1] 플래시 메모리 인터페이스
문제의 발단과 그 증상
플래시 메모리 내용의 일부가 깨진다?. 플래시 메모리의 내용이 훼손된 시료들이 시스템의 일부에서 목격되었다. 이에 대하여 긴급 조사를 실시한 결과 회로, 소프트웨어 등. 설계상의 뚜렷한 오류는 없는 것으로 1차 진단 하였다. 이에 공정상의 오류 가능성을 위해 2차 진단 태스크 포스팀 구성을 진행중에 있다. 회로는 필드에서 흔히 사용되는 플래시 회로 인터페이스를 카피(copy)하여 사용하였고, 또한 플래시는 write 모드에서만 기록이 된다는 점 때문에 소프트웨어 문제일 가능성은 더 더욱 아닌것으로 추측 되었다. 중략 . . .
위의 내용은 가상의 시나리오를 하나 구성 해 본 것입니다.
인터넷 모 사이트에 올라온 플래시 지워짐 현상에 대한 문의 글을 보고 문득 생각이 나서 이렇게 한 자 적어 봅니다.
예상되는 원인(인자)들
플래시는 Vpp(12V 혹은 Vcc), WE#, CE#, WP#, 쓰기 모드 커맨드등의 여러가지 구비 요소가 모두 충족이 되어야 기록(writing)이 된다는 특징 때문에 시스템 설계자는 '그림1.플래시 메모리 인터페이스' 처럼의 회로 구성을 갖춘것 만으로 잠시 안심하기 쉽습니다.
하지만, 실상을 들여다 보면 이내 그 헛점들이 드러나게 됩니다.
(1)Vpp 에 대해서
블럭 지우기(BLOCK ERASE) 플래시가 등장한 이후부터는 플래시의 Vcc 전원을 Vpp 전원으로도 사용 할 수 있게 되었습니다. 12V의 별도 전원이 필요 없슴으로 그만큼 편해 진 것은 사실입니다. Vpp 전원이 공급되지 않으면 플래시로의 어떤 쓰기(writing) 시도도 무력 할 수 밖에 없습니다. 뒤집어서 이야기 해 본다면 Vpp 전원은 필요 할때만 공급 하도록 디지탈 회로를 설계 한다면 훌륭한 플래시 protection 대책이 됩니다. 이 이유는 후술 합니다.
(2)WE#, CE#, WP# 에 대해서
이 신호들이 플래시 기록시에 함께 액티브 되지 않으면 플래시에 쓰기가 성공할 수 없다는 점에서는 Vpp 와 그 맥락을 같이 합니다만, 유감스럽게도 이 신호들은 시스템의 POWER-UP, POWER-DOWN 순간에는 잠시나마 예측 할 수 없는 un-stable 한 상태에 놓여 있다는 것이 바로 우리가 생각해 봐야 할 첫번째 인자가 됩니다.
(3)쓰기 모드 커맨드 에 대해서
플래시는 기록을 위하여는 별도의 쓰기 모드 커맨드를 실행하여 해당 모드로 변경 후 쓰기가 가능해 집니다. 이것도 물론 정상적인 사용시에는 전혀 문제가 될 것이 없습니다. 하지만, 시스템의 POWER-UP, POWER-DOWN 에는 이 또한 이야기는 전혀 달라 집니다. 시스템의 전원이 안정화 되어 내부 디지탈 회로들이 steady 한 상태로 넘어갈때 까지 tri-state 신호의 특성을 가진 어드레스 / 데이터 버스 또한 위의 WE#, CE#, WP# 처럼 플래시가 이를 어떻게 받아들일지 알 수 없습니다. 데이터 버스상의 의도 되지 않은 값을 쓰기 모드 커맨드(0x40)로 플래시가 오해 하기란 확률적으로도 그리 어려운 일이 아닙니다.
고작 1바이트 즉, 256 경우의 수밖에는 되지 않기 때문이죠.
자, 그러면 문제는 이렇게 정리가 되겠네요. 위의 인자중 (2), (3)은 믿을 수 없슴.
이제 남은 (1)번은 과연 믿을 만 한 것인가 보도록 합니다. Vpp은 통상 [그림1] 에 보시는 것처럼 많은 플래시 응용 회로들은 Vpp 전원을 'Always' 공급하고 있도록 처리하고 있습니다. 시스템의 POWER-UP 시에 Vpp 전압은 Vcc 가 안정화 상태에 돌입하기 전에 이미 플래시 쓰기가 가능한 전압인 VppL에 도달 할 수가 있습니다.
만약, 이것이 가능해 진다면 어떻게 될까요?. 시스템의 POWER-UP 시에는 (1), (2), (3) 항목의 모든 조건이 만족이 되어 얼마든지 플래시에 잘못된 쓰레기 값들이 채워 질 수 있게 되는 것입니다.
대책과 그 예방
(1)Vpp 전원은 필요시에만 공급한다.
: 가장 중요하며 확실한 대책이 됩니다.
(2)시스템 리셋(RP#) 단자를 POWER-GOOD 리셋으로 처리한다.
: 시스템의 전원이 안정화 된 이후에 시스템 리셋이 풀리도록(해제 되도록) 처리합니다.
[그림2] 시스템 파워 온/오프시 리셋 회로
(3)플래시 전용 쓰기 신호(WE#)을 이용한다(그림3.WE# Gating 참고)
: 마이크로 프로세서의 WR# 신호를 플래시에 직접 입력 시키지 않고 GPIO 을 이용하여 안전하게 처리하여 플래시에 입력되도록 조치합니다.
[그림3] WE# Gating
[그림4] WE# Gating 을 적용한 회로 구성 도면
FAQ
Q. 플래시 지워지는 현상이 발생했는데 어떻게 조치하면 좋을까요?
A. 플래시 지워지는 유형은 크게 시스템의 런타임 동작중 발생 가능성(유형1)과 전원의 켜고 꺼질때 지워지는 가능성(유형2)으로 나누어 볼 수 있으며 이에 대한 대책은 각기 구별되어야 겠습니다. 유형1에 대한 원인을 파악코저 다음과 같은 검사를 우선 해 보시기를 권합니다.
동작중 플래시가 지워졌고 이의 재현이 가능하다면 위에서 이미 언급한 바 있던 플래시의 WE# Gating 조치를 취한후 시스템의 개선 여부를 확인 해 보세요.
만약 이 조치만으로 문제가 해결된 것처럼 보인다면 아마도 현재 작업 중이신 시스템의 플래시 칩셀렉트(인에이블) 조건이 다른 I/O장치와 충돌이 생기고 있지는 않은지 확인해 보십시오. 한편, 계측기를 이용하여 의도되지 않은 플래시의 칩셀렉트 신호가 발생하는 일은 없는지도 조사 하여야 할 것입니다.
다음은 유형2에 대한 조치입니다.
증상으로 보아 현재의 문제가 유형2에 해당 된다고 판단 되신다면 다음의 검사를 실시하는 것을 우선적으로 행 하시길 권합니다.
계측기를 이용하셔서 플래시 메모리의 주요 신호인 Vpp, WE#, CE#, WP#, RP# 을 프로빙(probe) 하신 후 전원의 켜고 꺼짐 동작시 이를 면밀히 주시 하시기 바랍니다. 이를 이용하여 정확한 원인을 찾아 낼 수만 있다면 가장 효과적인 대책이 나올 수 있겠지만 상황이 그렇지 못할 경우에는 단계별 개선책을 시도하여 이의 효과를 확인하는 방법으로 진행 하는것이 좋겠습니다. 아래의 조치를 단계적으로 혹은 동시 처방하여 그 개선 여부를 확인하여 보십시오.
(1)Vpp 전원은 필요시에만 공급한다.
(2)시스템 리셋(RP#) 단자를 POWER-GOOD 리셋으로 처리한다
Q. 바람직한 플래시 메모리 회로 설계 ABC는?
A. Vpp 전원을 필요시에만 인가 할 수 있도록 하는것이 가장 안전하면서도 또한 중요 합니다. 만약 이것이 여의치 않을 경우 시스템 리셋(RP#) 단자를 POWER-GOOD 리셋으로 처리한 후 이의 신뢰도(개선여부)를 꼭 확인 하여 보시길 권합니다. 마지막으로 플래시 메모리는 통상 임베디드 시스템의 내장 소프트웨어가 존재하는 곳이므로 중요하고도 또한 안전하게 처리 해야 함을 항시 잊지 않는 다면 비극적인 사태(catastrophe)는 발생하지 않을 것입니다.
posted by 가일(GUILE)
♡ 포스팅이 유익 하셨다면 E-mail로 가일의 임베디드 스쿨을 구독하세요-> 




