完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我对物理韵文的虚拟内存地址有点困惑。1。在编写汇编程序和自定义链接器文件时,您在链接器中写入的位置地址是物理地址还是虚拟地址?2。当在组装构造中执行跳转和引用内存位置时(假设您执行跳转或引用SFR),您是引用物理内存还是虚拟地址?
|
|
相关推荐
7个回答
|
|
嗨,PIC32中的CPU在访问内存时只理解虚拟地址。这意味着RAM、程序闪存、启动闪存、配置寄存器和SFR寄存器。链接器使用与CPU将要使用的地址相同的地址,所以这也是所有虚拟地址。物理地址只用于那些独立于CPU访问内存或SFR寄存器的外围设备,这意味着NVM闪存控制器、DMA控制器和类似设备。这是相同的,独立于汇编或C编程语言。
|
|
|
|
你好,谢谢你提供的信息。我想我的困惑是,假设你为CPU指定一个地址,让它跳转到程序部分的开始,我假设这是一个虚拟地址?但是,当您使用链接器时,您需要为这个程序部分写下虚拟地址区域以将其定位在这个虚拟地址吗?但是,当程序实际上保存在Flash中时,有什么东西将虚拟地址转换成物理地址?是程序员这样做的吗?这是我的困惑。在IMO的数据表中没有提供足够的细节。
|
|
|
|
不,地址是在运行时通过硬件翻译的。取决于你使用的是哪一个PIC32。对于MX,它是固定映射转换(FMT)单元,对于MZ,它是MMU。
|
|
|
|
我不是专家,所以在继续阅读时请记住这一点,但是从其他基于MIPS的产品的经验加上最近使用PIC32的实验的一些经验来看,我认为在您的程序中,一般来说您将处理虚拟地址。发给CPU的指令将使用虚拟地址引用内存,这意味着加载、存储、跳转/分支都将涉及虚拟地址。PHELAR需要知道所涉及的内存的物理位置。我想这是因为DMA系统没有通过CPU使用的转换机制,而是有另一个通道进入内存。此外,为CPU设置要使用的地址转换(实际上是执行“内存管理”)也涉及物理地址,因为否则将无法定义从虚拟地址到此类物理地址(数据实际驻留的位置)的转换。e可能想知道更多关于程序被写到物理内存中同时被编码为在虚拟地址处操作的方式。这是我学习链接器脚本的地方。对于大多数编写软件的人来说,链接器脚本从来没有被真正看到或注意到,但它们所做的工作是告诉开发工具把程序的不同部分放在哪里。因此,生成将其对象定位在虚拟地址处的程序(使用全局对象表),但是生成最终“有效负载”的工具被指示输出数据,然后将程序指令和数据与物理地址相关联。这样开始:然后得到这样的结果:当程序员读取要写入设备的程序信息时,它使用物理地址来存储程序的每个部分,但是指令和程序数据保持原样,准备在t.他最初指定的虚拟地址,至少这是我的心智模型,它是如何运作的。我使用的是一个相当通用的GNU作为plus binutils工具链,所以这可能不太容易应用到您正在使用的工具中,但是您可以通过使用objdump和nm之类的工具来查看程序的外观。对我来说,“有效载荷”是一个.hex文件,其中物理地址是用数据格式的适当标记定义的。很抱歉,继续这么久,也许不是以一种特别一致的方式!
|
|
|
|
嗨,当可执行程序在闪存中烧毁时,由闪存写入控制器(即NVM外围设备)完成。有一个单独的文档描述了:PIC32闪存编程规范,它描述了如何使ICSP程序员工作。无论如何,它是相同的NVM闪存。h控制器,在Flash内存中执行实际的写入,你是对的,它是在那里使用的物理地址。但是你为什么担心,你要重写链接器或程序员固件?在.hex文件中,似乎有物理地址,但.hex文件不是由链接器直接生成的,我认为.hex文件是由一些后处理实用程序从.elf文件中提取的。PDFIT与编译器程序一起安装在编译器文档目录中。迈西尔
|
|
|
|
知道这不只是有趣吗?-在我的MaX文件中,Objo实用程序执行这个任务:Toal.ELF是链接器的产品。(以及它实际上是MIPSEL Linux GNU Objo副本,但这是另一回事。)
|
|
|
|
谢谢,看看xc32汇编工具pdf,看起来链接器对所有东西都使用虚拟地址。bin2hex转换器(我想)然后将虚拟地址转换为用于对设备进行编程的物理地址。如果我错了,请纠正我(bin2hex文档非常此外,这也带来了调试问题:调试器使用物理地址还是虚拟地址?我假设是物理的,但是如果它确实使用了物理,一些奇怪的事情就会开始发生:执行跳转指令将导致PC移动到不同的地址,然后是反汇编中的地址。具体的价值观令人困惑。
|
|
|
|
只有小组成员才能发言,加入小组>>
5341 浏览 9 评论
2084 浏览 8 评论
1988 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3265 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2301 浏览 5 评论
846浏览 1评论
741浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
683浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
739浏览 0评论
630浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-12 09:16 , Processed in 1.295385 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191