运行地址与执行地址

问:
程序下载到NOR中,在ADS中加载地址却是0x30000000,是SDRAM的地址,难道是调试器自动搬运的?

答:
一个地址是加载 地址一个是运行地址不一样的
你下载到Nor里,是加载地址,ADS里ROBase设置的是运行地址

问:

加载地址是从0开始的吧

答:
Yes

问:
是谁将其复制到RAM中的啊?
ARM核吗?

答:
你所谓的复制是什么意思?
你的代码不复制,没有人会帮忙的

问:
NOR里的代码可以直接运行的啊

答:
是啊
ARM上电就从0开始执行
所以直接运行啊

问:
那那个0x30000000起什么作用?
我要是写成0.。。

答:
那是运行地址,意思是说,代码将来要运行在以这个地址为基地的空间里
所以,运行地址和加载地址可以不一样
所以,运行地址和加载地址不一样的地方,只能用相对跳转

问:
我可不可以这样理解,不超过NOR的容量的代码,那个运行地址意义不大.

答:
你对运行地址和加载地址的概念理解的不深刻

问:
是的

答:
我们的C和汇编要编译成二进制对吧
编译器会把C代码和汇编在链接的时候要给定每一条指令,变量,函数的地址

问:
是的

答:
那这个地址是固定的
这个地址的基址就是运行地址
也就是说,代码在运行的时候,都是在运行地址空间里运行的
但是,通常在嵌入式设备里
内存是需要先初始化的,没有初始化不能使用,代码也就不能运行在里面,而我们编译的二进制文件又是烧写到了Nor之类的ROM里
这样,所以我们要将代码从NOR里搬运到SDRAM里
保证正常运行
所以我们只能将代码的运行地址设置为SDRAM里的一个地址
而烧写的时候的地址,是加载地址

问:
运行地址是作为参数给编译器是这样吧?

答:
只要你保证在NOR里,没有绝对地址跳转就可能运行
但是并不是所有的代码都使用相对跳转的
所以,这也必须要求你的代码搬运到SDRAM里
上面 你说的很对

问:
嗯,谢谢

答:
因为编译器要知道地址后,在你的运行地址基础上编址
你可以将运行地址设置为0x30000000
然后将其在ADS里右键反汇编,看看其指令的地址就知道了

问:
好的

答:
然后你再将运行地址设置为0x0
再反汇编,对比一下,你就理解了
这个理解了,你也就理解了,什么是PIC代码了
你自己去调查一下吧
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Keil是一种集成开发环境(IDE),通常用于嵌入式系统的软件开发。在Keil中,可以通过修改执行地址来改变程序的运行位置。 要修改程序的执行地址,首先需要打开Keil IDE。然后,打开要修改的项目或源文件。接下来,选择菜单栏中的“选项-目标”(Options - Target)选项,弹出目标选项对话框。 在目标选项对话框中,可以找到一个叫做“加载”。在这个选项下,可以看到一个输入框,名为“起始地址”(Start of RAM/ROM),该输入框显示了程序当前的执行地址。 要修改程序的执行地址,只需简单地在“起始地址”输入框中输入新的地址即可。注意,输入的地址必须是有效的内存地址,并且符合目标设备的要求。例如,如果目标设备的RAM地址范围是0x2000至0x4000,那么在“起始地址”输入框中指定一个位于这个范围内的新地址。 最后,点击“确定”按钮保存修改并关闭目标选项对话框。此时,程序的执行地址已经成功修改。 需要注意的是,修改程序的执行地址可能会对程序的运行产生影响。因此,在修改执行地址之前,需要确保对程序的整体结构和功能进行适当的分析和调整。 总结来说,通过Keil的目标选项对话框,可以轻松地修改程序的执行地址,从而改变程序的运行位置。这样的功能在嵌入式系统开发中非常有用,可以灵活地定位和优化代码的运行效率。 ### 回答2: Keil是一款广泛应用于嵌入式软件开发的开发工具,可以用来编译、调试和烧录嵌入式系统的程序。在使用Keil进行嵌入式软件开发时,有时需要修改程序的执行地址。下面是关于如何修改程序的执行地址的回答: 要修改程序的执行地址,首先需要了解程序的内存布局和执行地址的设置。一般来说,嵌入式系统的程序会被编译成可执行文件,其中包括了代码段、数据段、堆栈等。执行地址则是指程序开始执行的内存地址。 在Keil中修改程序的执行地址可以通过以下步骤进行: 1. 打开Keil软件,并加载需要修改执行地址的项目。 2. 在Keil的菜单栏中选择 Options -> Target。 3. 在弹出的对话框中,选择 Output -> General。 4. 在 General 中的 Address: 栏目中,可以输入新的执行地址。 5. 修改完执行地址后,点击 OK 保存设置。 6. 重新编译程序,生成新的可执行文件。 需要注意的是,修改程序的执行地址可能会影响到程序的运行和访问内存的方式。因此,在修改程序的执行地址时,需要确保新的地址在系统的内存布局范围内,并且不会导致程序访问越界或内存冲突等问题。 总之,Keil提供了修改程序执行地址的功能,可以根据实际需求进行设置。通过对程序的执行地址进行合理的修改,可以更好地满足嵌入式软件的需求。 ### 回答3: Keil是一种常用的嵌入式开发工具,用于编写和调试嵌入式系统的程序。在使用Keil进行开发时,有时会需要修改程序的执行地址。 在Keil中,修改执行地址可以通过以下步骤进行: 1. 打开Keil软件,加载目标项目的工程文件。 2. 在菜单栏的“Options for Target"中选择“Target"选项卡,进入目标选项的设置界面。 3. 在目标选项的设置界面中,找到“Code"选项,并点击“Use memory layout from Target dialog"复选框,启用目标对话框的内存布局。 4. 点击“Configure"按钮,打开目标对话框,可以看到当前程序的内存布局情况。 5. 在目标对话框中,可以修改程序的内存布局。对于修改执行地址来说,主要是通过修改“Load"和“Execute"字段的数值来实现。 6. 在“Load"字段中填入需要修改的执行地址。可以直接输入十六进制数值,并在末尾添加“H"字符表示该数值是十六进制数。 7. 在“Execute"字段中,填入与“Load"字段相同的数值。 8. 确认修改并关闭目标对话框。 9. 保存设置并重新编译项目。 通过上述步骤,我们可以在Keil中成功修改程序的执行地址。在实际应用中,需要根据具体情况和需求来修改执行地址。修改执行地址可以使程序加载到指定的内存区域,便于实现特定的功能或满足特定的系统要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值