你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

MDK中汇编文件自定义段

[复制链接]
海洋_ 提问时间:2023-8-21 14:17 / 未解决

我想在自定义一个段,然后在这个段里面进行弱定义,就类似于中断向量表

        PRESERVE8
        THUMB

        AREA U_FIRMWARE, DATA, READONLY
        EXPORT __user_V
        EXPORT __user_V_End
        EXPORT __user_V_Size

__user_V DCD Firmware_Init DCD LED_ONN user_V_End user_V_Size EQU user_V_End - user_V AREA |.text|, CODE, READONLY EXPORT Firmware_Init [WEAK] EXPORT LED_ONN [WEAK] Firmware_Init LED_ONN B . END

我还修改了sct文件

LR_IROM1 0x08000000 0x00020000 { ; load region size_region ER_IROM1 0x08000000 0x00010000 { ; load address = execution address .o (RESET, +First) (InRoot$$Sections) .ANY (+RO) .ANY (+XO) } ER_IROM2 0x08010000 0x00010000 { ; load address = execution address *.o (U_FIRMWARE, +First) } RW_IRAM1 0x20000000 0x00010000 { ; RW data .ANY (+RW +ZI) }

C文件里面是这样的

typedef struct U_FUN { void (Firmware_Init)(void); void (LED_ONN)(void); }U_FUNC_S;

在map文件也有这个段

Exec Addr Load Addr Size Type Attr Idx E Section Name Object

0x08010000 0x08004024 0x00000008 Data RO 201 U_FIRMWARE user_apiexport.o

逻辑上当我调用Firmware_Init时,应该会找到在C文件中同名的函数去执行

gFUNC_S->Firmware_Init();

gFUNC_S->LED_ONN();

但是这样调用不会执行

收藏 评论0 发布时间:2023-8-21 14:17

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版