2012-05-28 2 views
1

내 보드에는 128 메가 바이트 페이지로 구성된 64KB EEPROM이 있으며 AT Mega 1281과 통신합니다.이 보드에는 SD 카드 슬롯이 있으며 일부 구성 파일을 EEPROM (내부 메모리로 작동). 보드의 성격으로 인해 서킷 데이터와 위치 데이터라는 두 가지 유형의 파일 만 필요합니다. 둘 다 바이너리 파일입니다.데이터를 EEPROM에 저장

지금까지 EEPROM을 2 개의 32K 반으로 분할하고 회로 데이터를 상단 절반에, 위치 데이터를 하단 절반에 썼습니다. 두 파일 모두 25 바이트 헤더도 있습니다. 각 파일의 마지막 페이지에 헤더를 복사합니다. 즉, 주소 0x7F80에서 시작하는 페이지는 회로 데이터 파일의 헤더를 가지고 0xFF80에서 시작하는 주소는 다른 헤더를 갖습니다. 데이터는 항상 고정 너비가되어 임의 액세스를 아주 쉽게 만듭니다.

제 질문은 EEPROM에 데이터를 구성하는 더 나은 방법이 있습니까? 현재로서는 데이터의 길이를 저장하지 않아도 실제로는 필요하지 않습니다. 그러나 머리 부분에 추가하면 안전에 대한 또 다른 단계가 추가 될 수 있다고 생각합니다.

답변

1

더 나은가요? 그것은 달려있다. 더 간단한가? 진짜로. 그것은 당신의 "항상"얼마나 강한가에 달려 있습니다. 파일이 항상 고정 길이가 될 것이라고 생각합니까? 이 질문을하고 있다는 사실은 아마도 약간의 의구심을 의미합니다. KISS principle 명심하십시오. 마이크로 컨트롤러 개발은 여전히 ​​불필요한 기능이 솔루션 안정성에 직접적인 위협이되는 분야입니다. 헤더에 데이터 길이가 있으면 EEPROM 액세스를 좀 더 일반화하려는 경우에 유용합니다. 그러나 다시 한 번, 두 파일의 일반화는 과도한 것입니다.

두 번째 생각 : 당신이 실제로 필요하지 않은 파일 길이를 소개하는 것이 아니라, 나는 왜 당신이 각각의 메모리 청크의 반대쪽에 파일 헤더를 저장하는지 알고 싶습니다. "머리글"은 파일 자체 앞에 읽어야 할 내용입니다. 읽기 주소를 EEPROM으로 한 번 전송할 수 있습니다.

1

저는 모든 임베디드 프로젝트에서 가장 간단한 해결책이 최선이라고 생각합니다. 스토리지 구성 방법은 간단하며 모든 요구 사항을 충족하는 것처럼 보입니다.

이 솔루션을 "개선"하거나 "최적화"하려고하면 코드가 복잡해지고 버그를 만들 가능성이 높아집니다. 따라서 모든 엔지니어링 솔루션을 최대한 단순하게 유지하십시오. 새로운 요구 사항이 나오면 항상 새로운 간단한 솔루션을 찾을 수 있습니다. 조숙 한 최적화를하지 마십시오.