单片机 ram 中执行代码的 如何链接

 我来答
老肖的经验
2018-08-27 · TA获得超过438个赞
知道小有建树答主
回答量:177
采纳率:100%
帮助的人:120万
展开全部

单片机的程序一般默认从Fash启动。要想在RAM执行程序,首先得单片机支持,一般只要Flash和RAM是统一编址的都可以在RAM运行程序。

程序的启动一般都是从一个固定地址(厂家规定)启动的,而这个地址一般都不在RAM地址范围内。因此常用的做法是在单片机厂家规定的启动的地址开始处预先烧录一段启动代码,这就是我们常说的BootLoader,然后再在BootLoader中按照单片机的运行规则跳转到RAM中代码(我们一般称为App程序)的起始地址。

链接的不同之处就是ROM模型,一般,按照单片机对应的开发工具,默认都是将ROM的起始地址设置到了厂家规定的启动地址处,要将程序编译到其他地址,只需要找到这个ROM的配置修改其起始地址和空间大小即可。例如Keil里面的Target页面或者sct文件,还有DSP中的link文件……

根据上述说明可知想要在非厂家规定的地址跑程序,需要有一个BootLoader引导程序(如果是使用在线仿真器仿真跑可以不要):

  1. App程序:链接到实际需要的地址(可能是Flash也可能是RAM),如果为RAM要注意掉电后程序丢失;

  2. BootLoader程序:链接到厂家规定的启动地址,在BootLoader中再通过软件跳转到App的地址。

偢悸液脃涼洳氺
2018-07-26
知道答主
回答量:26
采纳率:0%
帮助的人:5.9万
展开全部
描述有问题,建议把单片机运行机制再看一看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式