返回> 网站首页 

gcc编译STM32程序指定常量和函数位置

yoours2023-10-02 17:35:29 阅读 1330

简介一边听听音乐,一边写写文章。

一、boot程序跳转App

        1. 由bootloader跳转到应用需要修改应用的ld文件的FLASH地址,如:

        MEMORY

        {

                RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 128K

                CCMRAM (xrw)      : ORIGIN = 0x10000000, LENGTH = 64K

                BOOT_FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 64K

                FLASH (rx)      : ORIGIN = 0x8010000, LENGTH = 960K

        }

        2. 修改中断向量表地址

        3. 注意bootloader跳转之前的栈顶校验地址

二、指定常量版本信息和函数在FLASH上的地址

        1. 修改ld文件

  .isr_vector :

  {

    . = ALIGN(4);

    KEEP(*(.isr_vector)) /* Startup code */

    . = ALIGN(4);

  } >FLASH


  .version_addr 0x8010200:

  {

    KEEP(*(.version_addr))

  } >FLASH


  .bspInit_addr 0x8010300:

  {

    KEEP(*(.bspInit_addr))

  } >FLASH

        *在 为避免影响中断向量表地址,则在isr_vector 后进行定义。

        2. 修改.c文件

        版本常量定义

        __volatile__ const char Version[] __attribute__((section(".version_addr"))) =

{

'y', 'x', 't', '2', '.',

'0', ' ', '_', '2', '3',

'0', '8', '2', '1', '_',

'0', '0', '4', '8', '5'

};


     函数定义:

    __attribute__((section(".bspInit_addr"))) void bspInit() 

    {

    }


微信小程序扫码登陆

文章评论

1330人参与,0条评论