查看: 2289|回复: 5

[求助] 【求助】MDK怎么像IAR一样设定中断向量表的位置

[复制链接]
  • TA的每日心情
    开心
    2018-8-30 16:02
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    36

    主题

    1065

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1851
    最后登录
    2019-11-19
    发表于 2015-6-3 16:14:44 | 显示全部楼层 |阅读模式
    山外在其库中函数:
    void set_vector_handler(VECTORn_t vector , void pfunc_handler(void))
    {
        extern uint32 __VECTOR_RAM[];
        ASSERT(SCB->VTOR == (uint32)__VECTOR_RAM);  //断言,检测中断向量表是否在 RAM 里
        __VECTOR_RAM[vector] = (uint32)pfunc_handler;
    }

    其中__VECTOR_RAM在icf文件中定义:
    define symbol __ICFEDIT_region_RAM_start__ = 0x1fff0000;
    define exported symbol __VECTOR_RAM = __ICFEDIT_region_RAM_start__;


    现在我想把该库移到MDK中,求问怎么在MDK中设置__VECTOR_RAM 的位置?

    我知道答案 目前已有5人回答
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-3 16:26:59 | 显示全部楼层
    山外的代码不清楚,但是你可以参考官方KL25或者KE的代码,比如KE02的,是这样定义的:
    #ifdef KEIL
    const vector_entry  __vector_table[] __attribute__((at(0x00))) =
    {
       VECTOR_000,           /* Initial SP           */
       VECTOR_001,           /* Initial PC           */
       VECTOR_002,
       VECTOR_003,
       VECTOR_004,
       V
    具体的请去参考KE02的driver代码:
    https://www.freescale.co
    m/weba ... nt_pageType=product

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-8-30 16:02
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    36

    主题

    1065

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1851
    最后登录
    2019-11-19
     楼主| 发表于 2015-6-3 18:51:33 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2015-6-3 16:26
    山外的代码不清楚,但是你可以参考官方KL25或者KE的代码,比如KE02的,是这样定义的:
    #ifdef KEIL
    const v ...

    谢谢!我去看看。
    但我有个问题:这样将数组定位于0x00位置后,编译器会不会把别的东西再放到0x00处?
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-12 10:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    386

    帖子

    0

    高级会员

    Rank: 4

    积分
    541
    最后登录
    2018-6-28
    发表于 2015-6-3 21:35:30 | 显示全部楼层
    这个问题问的好,学习了
    falajf
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16712
    最后登录
    1970-1-1
    发表于 2015-6-3 22:29:40 | 显示全部楼层
    学习学习
    回复

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-4 09:14:40 | 显示全部楼层
    kingsings 发表于 2015-6-3 18:51
    谢谢!我去看看。
    但我有个问题:这样将数组定位于0x00位置后,编译器会不会把别的东西再放到0x00处? ...

    其实,MDK具体的flash存放是在.s文件里面有一个分布的,你可以看看你MDK工程里面的.s文件。
    关于.s文件的讲解,之前有个网友分析的很好,你可以参考下:
    飞思卡尔Cortex M0+系列 Keil MDK启动文件详解

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-27 04:13 , Processed in 0.100174 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表