经典:对外部存储器读写指定长度大小字节 急。。。。。
给定线性地址空间0x00000000~0xFFFFFFFF的逻辑地址,现在在物理存储器上需要这样来存储这些实际数据:指定有效数据块长度,在等长数据块之间插入一个校验字节。该校验字节数值等于该块数据所有以字节方式的累加和。例如:指定块长度63字节为一块,对于一个0x00000000逻辑首地址,长度64字节的数据块来说,实际物理地址存储为:0x00000000~0x0000003E是该数据块的前63个字节,0x0000003F字节是前63字节累加和-为校验字节,0x00000040为该块第64个字节的存储地址。
现在,给定某一逻辑首地址,并且给出预读数据字节长度,请从物理存储器上读或写入指定长度的数据。
#define u32 unsigned long
#define u8 unsigned char
/*假定用Sim_Mem_Buf 模拟存储器 存储字节大小1024字节*/
u8 Sim_Mem_Buf[1024];
/*
函数名:void Pub_Data_RW(u32 log_addr,u8 mode,u8 * buf,u8 len)
输 入:log_addr : 逻辑首地址;mode : 操作方式,1-读,2-写;buf : 缓存区首地址; len : 读,写数据长度
返回值:无
功 能:读写存储器