查看: 4775|回复: 5

[求助] KEAZ128-IAR配置相关问题请教

[复制链接]

该用户从未签到

2

主题

9

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2020-10-20
发表于 2019-7-19 00:58:22 | 显示全部楼层 |阅读模式
目前正在进行KEAZ128相关软件开发工作,开发环境IAR-V8.10版本,遇到一些问题,向大家请教。
      由于要进行CANBOOT,所以参考官方说明,在IAR的options-linker-config中.intvtor start改为0x4000,将ROM Start改为0x4000/0x4d10/...等等。如此出现异常。
      程序时钟配置完成后,将中断向量SCB->VTOR设置与上述配置文件的.intvtor start地址保持一致,程序可正常运行(烧写完不复位的情况下,下电重启后芯片自动加载的仍然是.intvtor start 为0x0000的程序 )。
      如上括号所述。修改中断向量表和ROM配置的程序,在仿真器刷写--芯片不复位的情况下正常。芯片下电复位后又自动加载原来0x0000起始的那段应用程序。我一直认为,通过仿真器刷写程序后,自动将FLASH所有数据擦除,然后新编译的0x4000程序烧入,再重新运行。 0x0000~0x4000里除了芯片自保护的数据,其余应该没有,为何出现这种情况。是否和链接文件的编写有关?还是IAR-flash刷写配置方式不对?
      当然,bootloader开发文件里有很多类似配置的例子,低地址为bootloader程序,让其自动向应用程序跳转(但仿真器没有擦出低地址数据的现象很费解)。
附件有通过IAR编译器修改的和从网上找来的icf文件。(附件无法上传)

请大家帮忙解惑,谢谢先。@小恩GG




     

我知道答案 目前已有5人回答
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24915
最后登录
2025-7-23
发表于 2019-7-19 09:40:04 | 显示全部楼层
IAR链接文件的修改,建议参考IAR自己的用户手册,每个IDE对应的链接文件都是不相同的。
说实话我不很明白你要表达的是什么,是bootloader跳转不成功吗?
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

9

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2020-10-20
 楼主| 发表于 2019-7-20 13:01:35 | 显示全部楼层
本帖最后由 zhou13579 于 2019-7-20 13:06 编辑
小恩GG 发表于 2019-7-19 09:40
IAR链接文件的修改,建议参考IAR自己的用户手册,每个IDE对应的链接文件都是不相同的。
说实话我不很明白你 ...
看了IAR的帮助文档,但纯英文的有些地方不太明白,还在继续看。
我要表达的意思是:
程序1:配置-向量表/ROM起始地址为  0x0000,也就是默认。
程序2:配置-向量表起始地址为-0x4000,ROM起始地址0x4d10,(并在应用程序中将SCB->VTOR的地址也同步修改为0x4000)。,
程序1和2,均是正常应用程序。未通过软件进行跳转或其他操作。

操作:
step1;仿真器把“程序1”刷入芯片的FLASH,可正常运行。重启后仍旧运行程序1逻辑。
step2:在step1基础上,把“程序2”刷入芯片FLASH,仿真器模式等MCU不复位时,程序运行的是“程序
2”,但芯片复位后,就再次运行“程序1”。

这样的表述不知道您是否明白了。
我不理解的地方,很多编译器(比如codewarior,ccs等)没做特别配置,刷入新程序时会自动先将FLASH清空,再刷入新的程序。在执行step2后,理论上MCU的-FLASH里应该只有程序2,不再有程序1。
但目前观察到的现象却是:程序1+程序2共同存在MCU里。





回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

9

帖子

0

注册会员

Rank: 2

积分
96
最后登录
2020-10-20
 楼主| 发表于 2019-7-20 23:51:48 | 显示全部楼层
小恩GG 发表于 2019-7-19 09:40
IAR链接文件的修改,建议参考IAR自己的用户手册,每个IDE对应的链接文件都是不相同的。
说实话我不很明白你 ...

找到原因了,是IAR编译器写新程序的时候,默认不进行擦除所有存储区的操作,直接新程序覆盖,里面有个选项,需要手动操作。
回复 支持 反对

使用道具 举报

  • TA的每日心情

    2018-11-27 09:26
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    13

    主题

    46

    帖子

    3

    中级会员

    Rank: 3Rank: 3

    积分
    205
    最后登录
    2019-10-16
    发表于 2019-9-16 18:00:02 | 显示全部楼层
    IAR不不完全擦除。而且就算你完全擦除了,如果你掉电再上,程序是一定从0开始执行的,这个时候,你的程序2依然跑不起来
    CAN唤醒还是没整好
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    9

    帖子

    0

    注册会员

    Rank: 2

    积分
    96
    最后登录
    2020-10-20
     楼主| 发表于 2020-4-9 23:17:42 | 显示全部楼层
    zchunhua25 发表于 2019-9-16 18:00
    IAR不不完全擦除。而且就算你完全擦除了,如果你掉电再上,程序是一定从0开始执行的,这个时候,你的程序2 ...

    对,目前在IAR下情形如你所言:程序1是bootloader,程序2是应用程序。当前还是上电默认进入0(bootloader部分),然后跳转至程序2,实现正常运行。

    和目标还是存在差距,当前只是能用,但还存在优化的空间。
    原来设想是,IAR环境+程序配置好后,
    1.通过仿真器刷写程序1或程序2都可以任意正常运行(不受上下电影响,主要平时调试使用);
    2.可在程序1通过仿真器刷写完成后,通过bootloader通信将程序2生成的目标程序导入并正常运行(配合生产或批量产品升级使用);

    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-23 14:00 , Processed in 0.096418 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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