No.41895 作者:MICKEYMOUSE 邮件:zhanghf@embedinfo.com ID:104569 登陆:13次 文章数:28篇 最后登陆IP:183.38.85.6 最后登陆:2011/6/29 15:33:54 注册:2008/4/1 15:50:28 财富:301 发帖时间:2008/5/5 8:47:08 发贴者IP:218.17.64.104 标题:MICKEYMOUSE:在MDK中添加自己的FLASH编程算法[讨论] 摘要:No.41895在MDK中添加自己的FLASH编程算法[讨论] Embest 徐良平 在Realview MDK中,Flash烧写算法不是通用的,都是针对具体的Flash存储芯片的。由于市面上的Flash种类比较多,所以Realview MDK不可能包含所有的Flash芯片烧写程序。但是在具体的应用中,开发者在Realview MDK中可能会找不到自己所需要的Flash烧写程序,这时,用户就必须自己添加Flash烧写程序。本文将详细的探讨这种方法。 Realview MDK已经定义好了添加到其中的Flash烧写算法的接口,包括1个描述Flash芯片的结构体和6个对Flash芯片操作的函数定义。详细的内容可以参考下面的代码。 struct FlashDevice { unsigned short Vers; // 体系结构及版本号; char DevName[128]; // 设备的名称及描述; unsigned short DevType; // 设备的类型,例如: ONCHIP, EXT8BIT, EXT16BIT等等; unsigned long DevAdr; // 默认设备的起始地址; unsigned long szDev; // 设备的总容量; unsigned long szPage; // 页面的大小; unsigned long Res; // 保留,以便将来扩展之用; unsigned char valEmpty; // Flash擦除后储存单元的值; unsigned long toProg; // 页写函数超时的时间; unsigned long toErase; // 扇区擦除函数超时的时间; struct FlashSectors sectors[SECTOR_NUM]; //扇区的起始地址及容量设置数组。 }; extern int Init (unsigned long adr, unsigned long clk, unsigned long fnc); extern int UnInit (unsigned long fnc); extern int BlankCheck (unsigned long adr, unsigned long sz, unsigned char pat); extern int EraseChip (void); ......
>>返回讨论的主题
|