试图搞懂MDK程序下载到flash(三)--MDK配置选项Linker、Target

2019-08-31 10:36

试图搞懂MDK程序下载到flash(三)--MDK配置选项Linker、Target、Debug的理解分析

在写这一节时,我还是想再重复一下自己写这文章的目的,我的目的就是为了实现将MDK编写的裸机程序可不可以脱机运行,也就是不用调试的方法,因为调试的话程序默认是在SRAM中运行的,掉电丢失。而要脱机运行,就得将程序编译后的文件下载到flash中,最好能是nand flash。如果要下载到nand flash,那么就要编译生成一个bin文件,而不是用axf文件。那么剩下的问题就是,怎么生成一个完整、正确的bin文件?所以我现在就需要看能否通过编写一个分散加载文件,解决bin文件的地址问题。生成了bin文件,那么我就可以利用韦东山的方法,利用supervivi的v选项,配合DNW将程序下载到nand flash中并运行!

现在咱们就分析一下MDK配置选项,首先解释一下MDK中三种linker之间的区别: 1、采用Target对话框中的RAM和ROM地址。

采用此方式,需在Linker选项卡中勾选Use Memory Layout from Target Dialog选项(选中这一项实际上是默认在Target中对Flash和RAM的地址配置,编译链接时会产生一个默认的脚本文件),并且在Target中设置好RAM、ROM地址,图2所示。MDK会根据Target选项中设定的RAM和ROM地址自动加载生成一个加载文件。最后链接器会根据此文件中的信息对目标文件进行链接,生成axf镜像文件。

至于ROM和RAM是片内还是片外、容量(Size)多大,就需要根据芯片和开发板来决定了。

2、直接通过Linker选项卡中的R/O Base和R/W Base来设定链接信息。

链接器最后可根据此处指定的地址信息进行链接,链接的文件应该是顺序存放了,最多RO和RW分开。此时需要注意的是应将Use Memory Layout from Target Diaglog前的勾去掉,且保证Scatter File一栏中未包含分散加载文件,并且要在Misc controls中设定镜像文件的入口点,如: --first 2440init.o(Init) 对于这个括号内的填写依据,我暂时还不懂。

图3中的R/W Base空着没填,意思就是说紧跟着R/O Base地址。

3、最后一种为直接采用分散加载文件。

在设置Linker的时候可以注意下Linker control string的信息,看看Linker的输入信息是否符合自己的要求。

此处应该是只要选择使用scatter file文件,那么其他链接方式的设置自动失效。可以从Linker control string的信息可以看出来。 现在试图着对mini2440开发板进行设置

直接通过Linker选项卡中的R/O Base和R/W Base来设定链接信息

①由于mini2440开发板采用的是片外的ram和片外的flash,所以我这里直接采用前面说到的第2种方法,就是通过手动设置RO的地址,其中0x30000000就是片外ram的地址,也就是咱们的SDRAM。RW未指定,则说明RW数据顺序存放到RO段之后。如下图。


试图搞懂MDK程序下载到flash(三)--MDK配置选项Linker、Target.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011工程热力学习题集(全)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: