1336SBRF10AAEN

更新时间: 2023-11-01

 初始化Flash控制寄存器

    Flash控制寄存器FOPT、FPWR、:FSTDBY-WAIT、FACTIVEWAIT、FBANKWAIT、FOTPWAIT的初始化代码不能从Flash存储器当中运行.否则就会有不可预料的结果出现。所以,Flash控制寄存器的初始化函数在运行时必须从Flash(它的装载地址)拷贝到RAM(它的运行地址)。

    Flash控制寄存器由CodeSecurityModule(CSM)保护。如果CSM被保护起来了,那么必须从被保护的RAM(例如:L0或者L1SARAM)运行Flash控制寄存器的初始化代码,否则Flash控制寄存器的初始化代码无法访问Flash控制寄存器。要注意的是,当器件复位的时候CSM一般都是被保

    护起来的,虽然使用假密码0FFFF时ROMBOOTLOAD-ER会把它解锁。

    C编译器的CODE_SECTION指令可以用来为FLASH控制寄存器的初始化函数创建独立的可连接段。例如:假定Flash控制寄存器的配置在C函数InitFlash()中实现,并且想把这个函数放置在名为secureRamFuncs的可连接段当中。

SecureRamFuncs段可以使用用户连接命令文件(.cmd)进行连接。这个段需要独立的装载和运行地址。另外,还想让连接器生成一些全局符号,这些全局符号可以用来决定装载地址、运行地址、段长度。在实现把这个段从装载地址拷贝到它的运行地址时需要这些信息。

用户连接命令文件

    在这个例子中,假定存储器Flash和SECURE_R

    AM都已经在用户连接命令文件中的MEMORY段中定义。这些存储器的PAGE标识符要与它们的存储器定义相匹配。在上面的例程中假定两个存储空间都已经在PAGE0(程序存储空间)中声明过了。RUN_START、LOAD_START、LOAD_END指令将生成全局符号,这些全局符号有特定的名称,对应着相应的地址。**,这个段必须在运行时从Flash拷贝到RAM,可以用到编译器运行支持库里面的函数memcpy()。

 


上一篇:1336MODKB010

下一篇:1336PBSP19C