我想为闪存访问模块编写一些单元测试。我有
extern char_t _internal_flash_start[]; /**< Exported from ICF file. */
extern char_t _internal_flash_end[]; /**< Exported from ICF file. */
我认为将自己的数组作为Flash内容注入是完美的,因为在应用程序中这些符号是通过链接器文件提供的。在我的测试中,我想要以下内容:
char_t _internal_flash_start[2048]; /**< Exported from ICF file. */
char_t _internal_flash_end[1];
但是我需要第二个数组才能在第一个数组之后开始。我做了很多尝试,但无法为我工作。有没有办法满足给定的声明并在内存中有连续的数组?
我需要第二个数组才能在第一个数组之后开始。
形成一个 struct
struct my_data {
char_t _internal_flash_start[2048]; /**< Exported from ICF file. */
char_t _internal_flash_end[1];
} x;
成员之间仍然可能存在填充:肯定不太可能char_t [2048]
。
特定于实现的方法packed
将确保没有填充。
一个学究的解决方案将创建一个数组,并使用指向其各个部分的指针。但是现在我们有2个指针,而不是两个数组。他们的sizeof
意志与上面有所不同。
char_t _internal_flash[2048+1];
char_t *_internal_flash_start = &_internal_flash[0];
char_t *_internal_flash_end = &_internal_flash[2048];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句