ARM 코어 텍스 M3의 내부 플래시를 저장하고자하는 구성 구조가 있습니다. 사양에 따르면 내부 플래시의 데이터 저장은 32 비트로 정렬되어야합니다. 부울이 많고 구조체에 문자가 있기 때문에 8 비트를 저장하는 데 32 비트를 사용하고 싶지 않습니다 ... __packed
전 처리기 pragma를 사용하여 구조체를 패킹하기로 결정한 다음 전체 구조체로 저장할 때 , 구조체 크기가 4 (4 바이트 = 32 비트)로 나눌 수 있는지 확인해야합니다. 필요한 경우 패딩 바이트를 추가하여 수행합니다. 현재 개발 중에 구조를 많이 변경하고 32 비트와 정렬되도록하기 위해 항상 패딩 바이트를 변경해야합니다. 현재 구조는 내가 뭘하는지 달성하기 위해 더 나은 방법이 있나요이내부 플래시 메모리의 C 구조체 정렬
typedef __packed struct
{
uint8_t status;
uint16_t delay;
uint32_t blabla;
uint8_t foo[5];
uint8_t padding[...] // this has to be changed every time I alter the structure.
} CONFIG;
을 slike 보면? 임베디드 프로그래밍의 새로운 점은 실수를 저 지르지 않기 위해서입니다.
편집 :주의 사항 : 데이터는 내장 플래시의 말에 유지, 그래서 작동하지 않습니다 패딩 ...
귀하의 이해가 정확하지 않다고 생각했습니다. 플래시 메모리의 명령어는 정렬되어야하며 컴파일러가이를 보장해야합니다. 그러나 팔에 정렬되지 않은 상태로 저장된 데이터는 팔 대뇌 m3 코어로 관리 할 수 있습니다. 어떤 회사의 MCU를 사용합니까? –