jicheng0622

【嵌入式】【原创】浅析IAR环境下Flash loader工作原理

0
阅读(14034)

    昨天五一假期第一天去了趟本地同学家,远离闹市的喧嚣来到乡间的小路,远望绿油油的麦田和翠绿的小树林,吃着新鲜的香椿芽(绝对绿色无污染,呵呵),喝着同学家里自己熬的小米粥,啧啧,要多小资就有多小资,跟同学开玩笑说颇有种当年知青下乡的意境,哈哈。想想七年前,怀揣着对未来的憧憬从农村来到城市求学打拼,如今已习惯了城市里的喧嚣,但当再次体会到那种乡间的春意,不由得有种返璞归真的思乡情怀涌上心头。。。

image

    五一假期第二天,撇去那一丝感触,重新回到自己的老窝(实验室),还是熟悉的一切,经历过昨天乡间的洗礼,感觉干啥都劲头十足,哈哈,所以就不多说了,继续未完的事业吧,呵呵。今天就说说IAR自带的Flash Loader下载工具,咳咳,发现自己博客里关于IAR的文章有点多,看来自己不知不觉的喜欢上了这个IDE了。。。

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

image

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

image

图1

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

image 

图2

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

image

图3

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

图4

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

    今天写的有点急,一会儿有点事先撤了,改天抽个空再细聊聊目前几种下载工具的工作原理,对比分析一下,呵呵,不多说了,未完待续~