公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

PSoC 4定义一个存放在固定地址的常类型 (const) 变量 – KBA229222

PSoC 4定义一个存放在固定地址的常类型 (const) 变量 – KBA229222

ChaitanyaV_61
Employee
Employee
50 questions asked 25 likes received 25 sign-ins

Author: LinglingG_46           Version: **

问题:
针对PSoC® 4, 如何定义一个存放在固定地址的const变量?

答案:
Const变量可以分配给闪存中的固定地址。为此,必须修改链接器控制文件 (linker script)

必须计算应用程序结束地址,然后选择const变量存储(const var storage)的地址,避免存储和应用程序出现内存空间重叠。

根据下面的这些步骤去更新GCCMDK编译器针对PSoC 4生成的链接器控制文件,同时进行变量的定义: 

1. 打开一个工程进行编译,这是生成linker script必须的。

2. 从目录\<project_name>.cydsn\Generated_Source\PSoC<4, 5>\ 下找到生成的linker script.

GCC编译器,linker script的命名是cm0gcc.ld\cm0plusgcc.ld

MDK编译器,linker script的命名是Cm0RealView.scat / Cm0plusRealView.scat

3. 选择所需的linker script,将其复制到同一目录中,然后重命名脚本。例如,将cm0gcc.ld重命名为custom_cm0gcc.ld (类似地将Cm0RealView.scat重命名为Custom_Cm0RealView.scat)

4. 打开“Build Settings”对话框,从左侧窗格中,在所选编译器展开节点下面选中Linker,在下一级目录中选择General。然后,单击与Custom Linker Script对应的省略号[]按钮并选择适当的文件。

GCC编译器,选择文件custom_cm0gcc.ld

MDK编译器,把文件的类型改成*.scat,然后选择文件Custom_Cm0RealView.scat。 

5. 单击OK

6. 针对GCC编译器,打开自定义脚本链接文件 (custom_cmogcc.ld),搜索下面的声明:

.cy_checksum_exclude : { KEEP(*(.cy_checksum_exclude)) } >rom

      a. 复制以下代码并将其粘贴在声明之后:

     #define   MY_VAR_START_ADDRESS      < the absolute address in flash>

     .my_emulated_eeprom MY_VAR_START_ADDRESS :

     {

          KEEP(*(.my_var_fix_addr))

     } >rom

      b. 保存改动并关闭文件。

     针对MDK编译器,打开自定义脚本链接文件 (Custom_CmoRealView.scat),搜索下面的申明:

     APPLICATION APPL_START (CY_FLASH_SIZE - APPL_START)

     {

         ...

     }

      c. 复制以下代码并将其粘贴在声明之后

     #define   MY_VAR_START_ADDRESS      < the absolute address in flash>

       EM_EEPROM ( MY_VAR_START_ADDRESS )

       {

            . my_var_fix_addr+0

     {

                 *(.my_var_fix_addr)

            }

       }

      d. 保存改动并关闭文件。

7. 在新创建的部分中声明const var。为此,在闪存中声明一个数组。下面是数组声明的示例:

const uint8 Test[512] 

CY_SECTION(".my_var_fix_addr") = {0xFFu,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF,0x55};

0 点赞
443 次查看
贡献者