笔者作为一枚小小的程序员已经快三年了,和大家分享一点有技术含量的东西,关于FLASH EE参数存储的方法
#define OFFSETOF(s,m) (Uint16)&(((s*)0)->m)
#define LENOF(s,m) sizeof(((s*)0)->m)
typedef struct
{
unsigned char A_RSVD; // this is rsvd by developer
//for user
unsigned char A_PDDI[4];
//0xF184 //applicationSoftwareFingerprint 10
unsigned char A_ASFP[10];
//0xF190 Original VIN 17
unsigned char A_OVIN[17];
//0xF1A0 Current VIN 17
unsigned char A_CVIN[17];
}USER_DATA;
#define USER_VARS_ADDR(m) OFFSETOF(USER_DATA,m)
#define USER_VARS_LEN(m) LENOF(USER_DATA,m)
参数初始化方法
const USER_DATA user_data_val = {
1000, //rsvd0;
1, //rsvd1;
"\x20\x14",// rsvd2[4];
"123",//rsvd3[5];
"",//rsvd4[6];
"",//rsvd5[7];
"",//rsvd6[8];
"",//rsvd7[9];
"",//rsvd8[10];
"",//rsvd9[11];
};
读写方法
write_user_vars(USER_VARS_ADDR(A_CVIN), tmp, USER_VARS_LEN(A_CVIN));
read_user_vars(USER_VARS_ADDR(A_RSVD), tmp, USER_VARS_LEN(A_RSVD));
核心思想,用结构体自动分配地址,免得人工分配地址的麻烦,维护起来非常方便