查看: 8014|回复: 8

[其他] 用MCF52259开发BootLoader时遇到了中断向量表的问题

[复制链接]

该用户从未签到

4

主题

26

帖子

0

新手上路

Rank: 1

积分
51
最后登录
1970-1-1
发表于 2010-9-4 20:28:54 | 显示全部楼层 |阅读模式
想用MCF52259做一个可以更新用户程序的BootLoader程序,在中断向量表这里遇到了一点问题,求高人可以指点迷津啊~1、我想把BootLoader相关的程序都放到FLASH的高地址上,包括该程序中的中断向量表,于是,我就对flash.lcf的Memory中中断向量表的地址做了修改,由ORIGIN = 0x00000000修改成了ORIGIN = 0x00010000;但是这样修改后烧写进的该程序根本就无法运行。问题1:中断向量表的地址 必须放在 0x00000000 处吗?2、如果中断向量表 必须从0x00000000开始,那么更新的用户程序的 中断向量表 不就在一次更新后把原先BootLoader的 中断向量表 给覆盖了吗?问题2:上述情况时,这两个 中断向量表 间的关系是如何处理的?
我知道答案 目前已有7人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-9-6 09:16:20 | 显示全部楼层

    RE:用MCF52259开发BootLoader时遇到了中断向量表的问题

    1、中断向量表的位置可以随便放,但是启动向量地址是不能动的。否则不能运行程序;
    2、你可以通过修改启动向量地址来选择启动程序。但是中断向量要放在一个固定的位置。
    该会员没有填写今日想说内容.

    该用户从未签到

    2

    主题

    224

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    322
    最后登录
    1970-1-1
    发表于 2010-9-6 20:46:58 | 显示全部楼层

    RE:用MCF52259开发BootLoader时遇到了中断向量表的问题

    由于lz需要把bootloader烧写到高地址,那么任何情况下都启动用户程序:
    由用户程序判定当前应该执行哪个程序(io口电平判断等),此时0地址为用户程序中断向量表;当需要bootloader运行时,程序跳转到bootloader地址运行,必要初始化之后,修改VBR寄存器将中断向量表重新定位到bootloader向量表位置。
    也就是说:
    1. 用户程序必须知道bootloader入口
    2. 烧写用户程序或bootloader时,不能全片擦除,更新需要更新的sector即可

    该用户从未签到

    10

    主题

    100

    帖子

    0

    新手上路

    Rank: 1

    积分
    222
    最后登录
    1970-1-1
    发表于 2010-9-7 09:00:49 | 显示全部楼层

    回复:用MCF52259开发BootLoader时遇到了中断向量表的问题

    回复第 1 楼 eijeij于2010-09-04 12:28:54发表:
    想用MCF52259做一个可以更新用户程序的BootLoader程序,在中断向量表这里遇到了一点问题,求高人可以指点迷津啊~ 1、我想把BootLoader相关的程序都放到FLASH的高地址上,包括该程序中的中断向量表,于是,我就对flash.lcf的Memory中中断向量表的地址做了修改,由ORIGIN = 0x00000000修改成了ORIGIN = 0x00010000;但是这样修改后烧写进的该程序根本就无法运行。问题1:中断向量表的地址 必须放在 0x00000000 处吗? 2、如果中断向量表 必须从0x00000000开始,那么更新的用户程序的 中断向量表 不就在一次更新后把原先BootLoader的 中断向量表 给覆盖了吗?问题2:上述情况时,这两个 中断向量表 间的关系是如何处理的? 

    弱弱的请教一下版主,用MCF52259更新用户程序怎么的思路?什么方式更新(usb?以太网?)?

    该用户从未签到

    2

    主题

    224

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    322
    最后登录
    1970-1-1
    发表于 2010-9-8 09:26:36 | 显示全部楼层

    RE:用MCF52259开发BootLoader时遇到了中断向量表的问题

    回楼上,飞思卡尔有现成的通过USB更新用户程序的应用。
    bootloader启动,通过io口判定运行更新程序后,将会把MCU内部Flash虚拟成一个简单的Mass Storage设备,USB连到PC后,可以直接把.S19文件copy到此设备上以实现烧写用户程序的目的。

    该用户从未签到

    33

    主题

    441

    帖子

    0

    新手上路

    Rank: 1

    积分
    7703
    最后登录
    1970-1-1
    发表于 2010-9-8 15:21:47 | 显示全部楼层

    RE:用MCF52259开发BootLoader时遇到了中断向量表的问题

    基于mass storage的bootloader fsl已经有了,不必自己做了吧

    该用户从未签到

    4

    主题

    26

    帖子

    0

    新手上路

    Rank: 1

    积分
    51
    最后登录
    1970-1-1
     楼主| 发表于 2010-9-8 18:49:12 | 显示全部楼层

    回复:用MCF52259开发BootLoader时遇到了中断向量表的问题

    回LS,我是自己在免费提供的USB BootLoader示例程序基础上改的利用UDP通讯实现S19文件下载,可以调用现成的程序?不是很清楚了。
    如果基于USB BootLoader示例程序,这样做出是可以的,但是以后所有的工作程序里就必须要设置一个跳转的地址了,与起先设想的更新程序完全独立有冲突了。

    该用户从未签到

    4

    主题

    26

    帖子

    0

    新手上路

    Rank: 1

    积分
    51
    最后登录
    1970-1-1
     楼主| 发表于 2010-9-8 19:28:54 | 显示全部楼层

    回复:用MCF52259开发BootLoader时遇到了中断向量表的问题

    回复第 3 楼 居颖轶于2010-09-06 12:46:58发表:
    由于lz需要把bootloader烧写到高地址,那么任何情况下都启动用户程序:
    由用户程序判定当前应该执行哪个程序(io口电平判断等),此时0地址为用户程序中断向量表;当需要bootloader运行时,程序跳转到bootloader地址运行,必要初始化之后,修改VBR寄存器将中断向量表重新定位到bootloader向量表位置。
    也就是说:
    1. 用户程序必须知道bootloader入口
    2. 烧写用户程序或bootloader时,不能全片擦除,更新需要更新的sector即可 

    按照这种流程写出来的话,每个用户程序里都要加上对是否进行bootloader的判断了,好像比较的麻烦哦,
    综合看下来,是不是还是把bootloader和它的中断向量表都放在地地址上比较合理?更新程序只需要把flash.lcf文件的flash分配地址改下就好了。
    流程的话就是 进入bootloader的入口程序,进行一些初始化,后通过通讯判断是不是要bootloader,是就继续,不是就跳到用户程序那里,再做用户程序的初始化,复制它的向量表。
    这样流程和USB的bootloade示例程序一样了,不过好像是相对方便一点的了,不知道是不是这样

    该用户从未签到

    2

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    27
    最后登录
    1970-1-1
    发表于 2012-3-4 15:33:24 | 显示全部楼层

    回复:用MCF52259开发BootLoader时遇到了中断向量表的问题

     大侠,我用MCF52259现在遇到了不知道 中断地址的问题,就是一个中断源找不到它的入口地址在哪,能否告知我一下。再此先谢谢了啊。能不能方便加我qq 243373073
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-28 01:42 , Processed in 0.101529 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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