FLASH API 的配置

Posted 白大官人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FLASH API 的配置相关的知识,希望对你有一定的参考价值。

FLASH的配置步骤

  1. 将FLASH2812_API_v210.lib 添加到头文件中。

(2)将Flash281x_API_Config.h Flash281x_API_Library.h 两个头文件添加进include目录下。这两个头文件主要包含的是 FLASH_API函数的定义 状态返回的定义

本工程中将两个头文件合并为ALLdefine.h

 

  1. 配置API的频率

    修改define.h 中CPU_RATE 来设置正确的CPU频率配置算法

     

  2. 在alldefine . h 中初始化 Flash_CPUScaleFactor 变量

    这个变量具体的操作 除了赋值以外 可能在F2812_API_V210.Lib中进行,我们看不见。我们只能给这个FALSH API 全局变量进行赋值 如下图

     

    在alldefine.h 中定义了这个API全局变量, 但是在downloader()函数中完成赋值。

    如下面的两张图

     

     

     

     

     

    (4)初始化PLLCR 寄存器

     

     

     

    (5)初始化CALLBACK 函数指针 (这个可以补充进入指针的用法的文档中去)

    在 alldef.h 头文件中 声明一个函数 用指向函数的指针变量

    然后在downloader()函数中 将函数名字&flashcallbackfunction 赋给 指针变量    Flash_CallbackPtr.

    Flashcallbackfunction() 函数 在downloader .c 中定义。见下面的三张图,

    Flashcallbackfunction()函数的 作用是在 flash 烧写过程中 接收数据?

     

     

(6) 禁止中断和看门狗

在CodeStartBranch.asm 中禁止看门狗的写法

下面是汇编语言的写法

 

LB _c_int00 ? 是什么意思?

 

和以下用C编写的代码 是等价的

# define WDCR(volatile Uint16 *) 0X00007029 //WDCR

Asm ("EALLOW")

*WDCR=(*WDCR|0X0086); //禁止看门狗

Asm ("EDIS")

 

 

 

(7)将API 复制到RAM 区,为保证其正常运行,API需要在RAM 区中执行,

一般而言 API 函数保存在FLASH A 扇区,改扇区为保留, 需要在CMD文件中 为API 的源代码分配响应的空间

 

_Flash28_API_RunStart 是 Flash28_API 运行的首地址 是全局变量

_Flash28_API_LoadStart 是 Flash28_API 装载的首地址 是全局变量

_Flash28_API_LoadEnd 是段 Flash28_API 装载的结束地址 是全局变量

 

在alldef.h 中上面的三个全局变量进行声明 因为是在 cmd 文件中已经定义

所以在alldef.h 中 用extern 关键字修饰


函数的调用 在main 函数中 已经解锁以后

 

 

Memcopy 函数的定义

 

  源WORD文档版 链接

 

以上是关于FLASH API 的配置的主要内容,如果未能解决你的问题,请参考以下文章

F28335第十六篇——内部Flash操作

Arduino ESP32 flash分区表配置信息查询示例程序

Arduino ESP32 flash各型号分区表配置详略整理

Arduino IDE增加ESP32flash分区配置选项

关于DSP配置CMD文件的使用

flash的跨域访问策略文件配置详解