毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
嵌入式设备的远程更新平台(6)
图3-10 复制Flash API函数
步骤5:初始化Flash_CPUScaleFacter
Flash API使用一个32位的全局变量Flash_CPUScaleFacter来产生合适的软件延时,Flash_CPUScaleFacter值通过步骤2最后的公式计算得到,只要在应用程序中加入如下说明即可:
图3-11 Flash_CPUScaleFacter赋值
步骤6:初始化回调函数指针
回调函数是指在Flash API函数执行期间执行其他的功能的函数,例如通过通信端口发生信息或者清除看门狗。此时Flash和OTP处于安全的状态,可以对其进行任意操作。在本系统中Flash API函数执行时不需要进行其他操作,所以回调函数指针为NULL。
步骤7:解锁代码安全模块CSM
代码安全模块(CSM)保证Flash、OTP、L0、L1模块中的数据被非法读取和修改。当Flash API函数从CSM保护的模块中运行时,它可以修改任何被CSM保护的模块的内容,包括Flash。在这种情况下,不需要对CSM解锁。当Flash API从不被CSM保护的存储器执行时,API就不能读取保护模块内的内容,即不可以修改Flash中的程序。在这种情况下,应用程序必须先解锁CSM,然后调用API。
在完成了以上的准备工作后,就可以调用Flash API函数。
擦除函数
擦除函数Flash_Erase()用来擦除指定的段,其他未指定的段中的数据保持不变。函数声明如下:
Uint16 Flash_Erase(Uint16 SectorMask, FLASH_ST *FEraseStat);
第一个参数是指要擦除的段掩码,指明要擦除的Flash段。利用Flash API擦除只能整个段来擦除,不能擦除任意存储器内容。TMS320F281x系列Flash段掩码与段的对应关系如下图3-12所示:
图3-12 TMS320F281x系列中的Flash段
第二个参数是指向FLASH_ST结构体的指针,FLASH_ST在Flash2812x_API_Library.h中定义,用来向调用函数传递擦除信息成功或者失败的信息:
typedef struct {
Uint32 FirstFailAddr;
Uint16 ExpectedData;
Uint16 ActualData;
}FLASH_ST;
函数的返回值有两种:1)当擦除成功时,函数返回STATUS_SUCCESS;2)当擦除失败时,函数返回状态值说明失败的原因;擦除完成后,所有指定擦除的段内容变为0xFFFF。
烧写函数
烧写函数将一个16位值的缓冲区内的值烧写近Flash或者OTP。函数原型声明如下:
Uint16 Flash_Program(volatile Uint16 *FlashAddr, volatile Uint16 *BufAddr, Uint32 Length, FLASH_ST *FProgStatus);
第一个参数是指向Flash中需要烧写的16位的起始地址的指针;第二个参数是指向数据缓冲区;第三个参数说明要烧写进Flash中的数据的长度;第四个参数指向FLASH_ST结构体。函数的返回值也有两种:1)当擦除成功时,函数返回STATUS_SUCCESS;2)当擦除失败时,函数返回状态值说明失败的原因。Flash API每次烧写16位数据,直到缓冲区内所有内容烧写结束或者遇到错误;烧写操作将Flash中位值1变为0,以和缓冲区内数据一致。通常情况下一个Flash段必须先擦除再烧写。但是,为了保护Flash和给用户更大的操作自由,烧写操作不会尝试烧写先前已被烧写过的位。烧写函数是将位值有1变0,如果没有1则会报错,这是因为擦除函数不可以将单个位的值由0变1。
校验函数
检验缓冲区和相应Flash内容是否一致。尽管烧写函数也有校验步骤,但检验函数作为额外的检验,可以进一步确认烧写进Flash内的数据和缓冲区内的数据一致。函数原型如下:
Uint16 Flash_Verify(volatile Uint16 *StartAddr, volatile Uint16 *BufAddr, Uint32 Length, FLASH_ST *FVerifyStat);
第一个参数指向烧写进Flash中的数据的第一个位置;第二个数据指向缓冲区数据;第三个参数说明烧写的数据的长度,第四个参数指向FLASH_ST结构体。函数的返回值也是两种:1)当擦除成功时,函数返回STATUS_SUCCESS;2)当擦除失败时,函数返回状态值说明失败的原因。
共9页:
上一页
1
2
3
4
5
6
7
8
9
下一页
上一篇:
基于非线性规划的数据校正联合算法的研究
下一篇:
STC89C52单片机控制的高精度脉冲恒流源的设计与实现
热环境对磁记忆信号的影响ANSYS有限元分析
连续-离散型状态观测器设...
基于Kinect手势识别的遥操...
冷库GPRS的无线数据采集系统设计
STC89C52单片机盲人用时钟的设计+电路图+程序
PLC物料自动分拣系统的设计+源程序
单相电压型逆变电路的谐...
浅谈新形势下妇产科护理...
多元化刑事简易程序构建探讨【9365字】
拉力采集上位机软件开发任务书
高校网球场馆运营管理初探【1805字】
辩护律师的作证义务和保...
浅谈传统人文精神茬大學...
《醉青春》导演作品阐述
中国古代秘书擅权的发展和恶变
谷度酒庄消费者回访调查问卷表
国内外无刷直流电动机研究现状