我正在开发一款嵌入式硬件,需要从PC获取一些数据。我使用格式为FAT32的SD卡提供这些信息。数据只是一个excel表格,我将其导出为CSV格式。我的问题是,我是否应该让uC(AT Mega 128L)使用
性能,只要足够快速,就不是主要问题,文件大小也不是主要问题。最大的问题是SRAM的使用。
每行的长度最多为40个字符。有大约7个字段,其中两个基本上是索引。uC通过查看这些索引并查看是否匹配来检索它感兴趣的信息。例如,假设uC需要关于存储在索引5处的某些内容的信息。然后,它需要在这里检索其他5个字段,并在屏幕上显示它们。uC需要对文件进行“随机”访问-即在某一时刻,它可能需要从索引7中获取某些内容,而在另一个时刻,它可能需要从索引70中获取某些内容。
据我所理解,如果这是一个具有严格定义格式的二进制文件(即每个字段将是固定字节数),那么效果会更好。优点是uC可以直接寻找它感兴趣的字节。例如,假设每个“记录”占用100个字节(实际上会少得多,只是举个例子)。uC知道第二个索引从100开始(第一条记录为0-99),第三个从200开始等等。
因此,如果需要访问第7个记录,它只需寻找到第700个字节并检索相关信息即可。以二进制文件方式处理是否比CSV更好?我主要关注SRAM的使用和合理的性能。
char * strtok(char * s,const char * delim)
来处理它,还是应该编写一个小工具将此CSV文件转换为二进制格式?性能,只要足够快速,就不是主要问题,文件大小也不是主要问题。最大的问题是SRAM的使用。
每行的长度最多为40个字符。有大约7个字段,其中两个基本上是索引。uC通过查看这些索引并查看是否匹配来检索它感兴趣的信息。例如,假设uC需要关于存储在索引5处的某些内容的信息。然后,它需要在这里检索其他5个字段,并在屏幕上显示它们。uC需要对文件进行“随机”访问-即在某一时刻,它可能需要从索引7中获取某些内容,而在另一个时刻,它可能需要从索引70中获取某些内容。
据我所理解,如果这是一个具有严格定义格式的二进制文件(即每个字段将是固定字节数),那么效果会更好。优点是uC可以直接寻找它感兴趣的字节。例如,假设每个“记录”占用100个字节(实际上会少得多,只是举个例子)。uC知道第二个索引从100开始(第一条记录为0-99),第三个从200开始等等。
因此,如果需要访问第7个记录,它只需寻找到第700个字节并检索相关信息即可。以二进制文件方式处理是否比CSV更好?我主要关注SRAM的使用和合理的性能。