배경 : EBML 파일을 작성하기 위해 마이크로 컨트롤러 C 코드를 작성하고 있습니다. EBML은 중첩 된 요소가있는 이진 XML과 유사하지만 시작 및 끝 태그 대신 시작 ID, 길이 및 데이터가 있습니다. 저전력 응용 프로그램에서 외부 플래시에 이것을 쓰고 있으므로 플래시 액세스를 최소로 유지하고 싶습니다. 쉬운 일이 없기 때문에 메모리도 제한됩니다.
전체 EBML 요소를 메모리에 보관할 수 있으면 해당 길이가 무엇인지 알고 난 후 각 요소의 길이를 다시 채울 수 있으므로 생성이 쉽습니다. 문제는 전체 요소를 메모리에 담을 수 없을 때해야 할 일입니다. 내가 볼 수있는 옵션은 다음과 같습니다.
- 내가 아는 내용을 작성한 다음 돌아가서 길이를 추가하십시오 (가장 쉬우지만 원하는 것보다 더 많은 플래시 액세스를 추가합니다)
- 쓰기를 시작하기 전에 각 요소의 길이를 계산하십시오 (상대적으로 쉽지만 많은 프로세서 시간)
- 메모리가 가득 차면 모드를 전환하여 데이터를 계속 진행하지만 메모리에 이미 예약 된 요소의 길이 만 계산합니다. 그런 다음 내가 가진 것을 메모리에 쓰고 돌아가서 중단 한 곳에서 데이터를 계속 처리하십시오. (지금까지 내가 좋아하는 옵션)
- 요소를 작성해야하고 최종 길이를 아직 알 수없는 경우 최대 또는 최악의 경우 길이를 지정하십시오. (위보다 쉽지만 역화 및 공간 낭비 가능)
질문 : 사람들이 생각한 비교적 일반적인 문제인 것 같습니다. 일부 데이터 패킷을 형성 할 때도 발생할 수 있다는 것을 알고 있습니다. 여기서 누락 된 더 나은 / 더 일반적인 / 더 많은 인정 된 기술이 있습니까? 아니면 내가 검색 할 수있는 문제에 대한 용어가 있습니까?