[工具和软件] (转)浅析IAR环境下Flash loader工作原理

[复制链接]
2943|18
 楼主| 我思故我在12345 发表于 2015-4-21 17:34 | 显示全部楼层 |阅读模式

今天就说说IAR自带的Flash Loader下载工具,咳咳,发现自己博客里关于IAR的**有点多,看来自己不知不觉的喜欢上了这个IDE了。。。

    先说说Flash Loader这个小程序,IAR调试器C-SPY默认是通过它来完成数据传输、Flash 擦除和烧写等任务,当然前提是得选中Options->Debugger->Download选项下的“Use Flash Loader”,如下图:

下面我们说说Flashloader的工作原理,其实Flashloader是IAR为C-SPY调试器开发的一个可执行小程序(有点类似Bootloader),IAR在调用调试器的时候需要先将Flashloader可执行文件下载到目标芯片的RAM中

图1

然后再将要下载的文件也放到RAM缓存中

图2

之后C-SPY通过指令启动Flashloader程序,它读取编程数据再将其写入到目标芯片的Flash之中去,完成目标芯片Flash的擦写和编程

图3

最后清除释放RAM区Flashloader程序和编程数据,启动新的程序运行。

图4

    如上所示即为Flash loader的工作原理,其实仔细分析过来你会得到一个惊天秘密,即大多数在线下载工具在烧写目标芯片的flash时都是通过这种方式的,可能通过表象看到的是二进制文件是直接下载到flash中去了(无论是片上还是片外flash),但是真正的下载过程往往不是表面看上去那么简单。所以今天说说这个的一个原因除了发泄自己的兴奋之情外也是希望通过这么一个例子告诉大家深究某些东西原理的重要性。


我是MT 发表于 2015-4-21 17:34 | 显示全部楼层
今天本来是查找一些IAR timeline使用方法,找着找着就找到这儿了。看了你的那篇timeline的**,解了我的燃眉之急。博主真是有科研精神,而且技术**写的诙谐幽默易懂,看了还以为是工作多年的IT工程师,再往下看原来是山大研究生,而且还是智能车的老前辈,而我现在就在准备第八届的摄像头组的比赛,真是有缘啊。希望会多多学习!
看得出博主对IAR了解很深,我有一个调试问题请教。set.....for‘Breakpiont',第一次可以设为断点,把这个删除后,再设置其他断点,debugging的时候出现“One or more breakpionts could not be set and har been disabled”.我在project里clean后又Rebuild了,但还是会出现这样的提示。现在不知道该怎么解决了。
 楼主| 我思故我在12345 发表于 2015-4-21 17:35 | 显示全部楼层

你是怎么删除的?你在原断点处右键,选择如下图


我是MT 发表于 2015-4-21 17:35 | 显示全部楼层
我思故我在12345 发表于 2015-4-21 17:35
你是怎么删除的?你在原断点处右键,选择如下图

谢谢你的回复,真快。我实在Breakpoints窗口里直接断断点项目右键delete了
 楼主| 我思故我在12345 发表于 2015-4-21 17:36 | 显示全部楼层
我是MT 发表于 2015-4-21 17:35
谢谢你的回复,真快。我实在Breakpoints窗口里直接断断点项目右键delete了

那你按照我的那个方法试了吗,"Enable/Disable Breakpoint"
我是MT 发表于 2015-4-21 17:36 | 显示全部楼层
我思故我在12345 发表于 2015-4-21 17:36
那你按照我的那个方法试了吗,"Enable/Disable Breakpoint"

嗯,试了。就是我点"Enable/Disable Breakpoint"后,前面那个小框就去掉“√”了,但是下一次下载时就提示One or..........................;而且刚才断点前面那个小框就打不上“√”了;是不是我的操作顺序有错误?
 楼主| 我思故我在12345 发表于 2015-4-21 17:37 | 显示全部楼层
我是MT 发表于 2015-4-21 17:36
嗯,试了。就是我点"Enable/Disable Breakpoint"后,前面那个小框就去掉“√”了,但是下一次下载时就提 ...

我按你的模拟了一下,我这边操作的都OK,没发现问题,sorry,呵呵~
我是MT 发表于 2015-4-21 17:37 | 显示全部楼层
我思故我在12345 发表于 2015-4-21 17:37
我按你的模拟了一下,我这边操作的都OK,没发现问题,sorry,呵呵~

好快的回复!你用的哪个版本那?
 楼主| 我思故我在12345 发表于 2015-4-21 17:38 | 显示全部楼层
我是MT 发表于 2015-4-21 17:37
好快的回复!你用的哪个版本那?

我用的6.4,实在不行你就重新建工程吧,呵呵
我是MT 发表于 2015-4-21 17:39 | 显示全部楼层
我思故我在12345 发表于 2015-4-21 17:38
我用的6.4,实在不行你就重新建工程吧,呵呵

嗯,我用的6.0,估计软件出bug了。谢谢你啦!
 楼主| 我思故我在12345 发表于 2015-4-21 17:39 | 显示全部楼层
我是MT 发表于 2015-4-21 17:39
嗯,我用的6.0,估计软件出bug了。谢谢你啦!

不客气,你的IAR版本是够老的了~
后会无期1 发表于 2015-4-21 17:40 | 显示全部楼层
请教一个问题,codewarrior10.1的文件怎么导入到IAR里,感觉codewarrior太容易出问题了,很不好用,还是IAR用起来方便
 楼主| 我思故我在12345 发表于 2015-4-21 17:41 | 显示全部楼层
后会无期1 发表于 2015-4-21 17:40
请教一个问题,codewarrior10.1的文件怎么导入到IAR里,感觉codewarrior太容易出问题了,很不好用,还是IAR ...

直接导入是不可以的,你可以根据官方例程修改成自己的,也可以用现成的模板,下面链接最后的资料里有我的模板,你可以借鉴一下~
http://blog.chinaaet.com/detail/32151.html
后会无期1 发表于 2015-4-21 17:41 | 显示全部楼层
我思故我在12345 发表于 2015-4-21 17:41
直接导入是不可以的,你可以根据官方例程修改成自己的,也可以用现成的模板,下面链接最后的资料里有我的 ...

谢了,还想请教一个问题,我们用的摄像头只有数字接口,可以直接接K10,但是不知道调试用哪种方式比较好,感觉无从下手,感觉买的时候被坑了,说是可以用的是串口蓝牙传输图像,但是速度超级慢,几十秒传一副,摄像头传的图像还是花的。不知道能不能推荐下这种摄像头的调试方式呢?
 楼主| 我思故我在12345 发表于 2015-4-21 17:42 | 显示全部楼层
后会无期1 发表于 2015-4-21 17:41
谢了,还想请教一个问题,我们用的摄像头只有数字接口,可以直接接K10,但是不知道调试用哪种方式比较好 ...

串口实在挺慢的,建议搭建起来SD卡调试平台,写图像很快,基本可以保证实时,不过搭建起来较难,需要同时搞定SD卡和上位机,现在网上貌似有相关资料和代码吧,你可以找找
后会无期1 发表于 2015-4-21 17:42 | 显示全部楼层
我思故我在12345 发表于 2015-4-21 17:42
串口实在挺慢的,建议搭建起来SD卡调试平台,写图像很快,基本可以保证实时,不过搭建起来较难,需要同时 ...

谢谢,最终还是换了摄像头。
 楼主| 我思故我在12345 发表于 2015-4-21 17:43 | 显示全部楼层
后会无期1 发表于 2015-4-21 17:42
谢谢,最终还是换了摄像头。

不客气,有问题可以再交流
lanjackg2003 发表于 2015-4-22 17:49 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-4-27 13:31 | 显示全部楼层
非常感谢你关于Kinetis的经验分享 !
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

318

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部