IAR中链接.bin文件

    应用场景:芯片中没有boot功能,只有应用程序。该应用程序需要在运行过程中检测flash中代码的正确性。

----正文如下----

    检测代码正确性,就必须先将代码进行计算,生成一个CRC校验文件,文件格式为.bin。由于IAR没有找到直接下载.bin格式文件的功能,所以就想如何才能将该bin文件加入到代码中而不影响源代码,否则校验文件失效。

    后来发现IAR可以将bin文件链接到代码中,按照上面的要求,只要将bin文件链接到一个与源代码不相关的、且我们知道的地址即可。

    实现过程:

    1、编译源代码使其生成bin格式文件,取名为“S.bin”

    2、将S.bin文件按1k字节大小进行CRC计算,生成一个CRC校验文件,取名C.bin,生成过程忽略

    3、设置IAR工程,将C.bin链接到flash末端

        (a).ICF文件中flasn区域一分为二,第一个区域放置源代码,第二个区域放置C.bin


图1 flash地址空间重新划分
图2 定义空间名称
图3 放置对应段到flash空间

            (b) option->linker->input 定义符号FLASHCRC


        (c)option->linker->extra option 输入命令

--image_input=$PROJ_DIR$\Debug\Exe\C.bin,FLASHCRC,FLASHCRC_region,4

意思为将该文件定义为FLASHCRC这个符号,并指定为FLASHCRC_region段,按4字节对齐


    4、编译链接后结果,校验文件链接到与源代码不相关的区域,最后通过IAR下载S.out文件


----正文结束----

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容