我正在linux嵌入式主板下开发我有一个NVRAM存储我所有的敏感数据。 我设法通过mmap / dev / mem访问它,现在问题是写,通过unsigned char *指针没有问题,但我需要编写一个完整的结构,例如:
struct t_game_data
{
int energy;
int bet;
int coin;
};
用我的内存映射后:
unsigned char* mem_ptr = (unsigned char*)mmap((void *)0x0, 512*1024, PROT_READ | PROT_WRITE,MAP_SHARED, fd, 0x90600000);
我可以通过mem_ptr写在NVRAM上没有问题:
*mem_ptr++ = 1;
*mem_ptr++ = 2;
*mem_ptr++ = 3;
mem_ptr++;
*mem_ptr++ = 4;
// What i get reading NVRAM is(NVRAM is filled with 255 by default)
1 2 3 255 4
但如果我尝试做这样的事情:
t_game_data* data = (t_game_data*)mmap((void *)0x0,512*1024, PROT_READ |PROT_WRITE, MAP_SHARED, fd, 0x90600000);
当我尝试使用数据写入时,我无法正确写入NVRAM,所以我尝试使用unsigned int *只是为了解问题而且我得到了一些非常奇怪的东西:
unsigned int* mem_ptr_int = (unsigned int*)mmap((void *)0x0, 512*1024, PROT_READ | PROT_WRITE,MAP_SHARED, fd, 0x90600000);
*mem_ptr_int++ = 1;
*mem_ptr_int++ = 2;
*mem_ptr_int++ = 3;
mem_ptr_int++;
*mem_ptr_int++ = 4;
// What i get reading NVRAM is(NVRAM is filled with 255 by default)
0 255 255 255 0 255 255 255 0 255 255 255 255 255 255 255 0
也许解决问题我希望它不是hw的物理极限;
提前谢谢。