已经做好了..
一个函数实现写.(通过工装烧录字模到FLASH)
void WirteMODtoDataFlash(unint32 pageaddress, unint32 startbyte, unint8 *p, unint32 length, unint32 pNextPage, unint32 pNextStartByte) {
}
pageaddress 字模写入的开始页地址(0~4095 in AT45DB161) startbyte 字模写入的开始字节(0~527 in AT45DB161) p 指向字模数组的指针 length 字模数组长度 pNextPage 将本字模写入后,通过指针将下一个字模写入的页面地址给出 pNextStartByte 将本字模写入后,通过指针将下一个字模写入的字节给出
WriteMODtoDataFlash(0, 0, PICTURE1, sizeof(PICTURE1)/sizeof(*PICTURE1), NextPage, NextByte); WriteMODtoDataFlash(NextPage, NextByte, PICTURE2, sizeof(PICTURE1)/sizeof(*PICTURE1), &NextPage, &NextByte); WriteMODtoDataFlash(NextPage, NextByte, PICTURE3, sizeof(PICTURE1)/sizeof(*PICTURE1), &NextPage, &NextByte); ...
这样PICTURE1,PICTURE2,PICTURE3就顺序存在DATAFLASH里了,PICTURE1从第0页第0字节开始,PICTURE2开始的地方由PICTURE1大小决定. ..函数内部只需要判断换页就行(用了递归)..(一页只有528字节)
另一个函数实现读
void ReadMODFromFlash(unsigned int page_address, unsigned int start_byte, unsigned char *pMOD, unsigend int length) {
}
pageaddress 需要读取字模的开始页地址(0~4095 in AT45DB161) startbyte 需要读取字模的开始字节(0~527 in AT45DB161) p 指向RAM缓冲区,用于暂存字模 length 读出的长度
ReadMODFromFlash(0, 0, RAMBuf, 1024); 读出位于0页0字节开始的1024个字节的字模到RAMBuf..
不过这样工程的时候,需要对FLASH芯片先编程一次.不知道AT的是不是有专门的烧录器.
|