⑴ arm-linux平台,如何知道一个外设的物理地址
HD7279A上都没有地址线,数据线,应该没有所谓的物理地址。
⑵ gccarm 下如何为变量指定固定地址
先建立一个足够大的数组。然后从这个数组头地址开始找后5bit是0的地址。
建立结构体指针指向这个地址。
虽然这个方法很啰嗦。而且结构也不太好不过可以解决你的问题。
⑶ arm IO口 地址
#define SPI_CS 0x00000100 /* P0.8 */
0x00000100 你看ARM的指导手册。。。这个代表一个物理地址。都是ARM出厂时规定好的
0x00000100 就是P0.8这个口
define 是宏定义 把SPI_CS这个SPI片选引脚(这时是软件上的,没有实际用途 只是一个符号)和硬件地址联系起来 联系以后 可以用SPI_CS代表片选信号进行操作了。。。(你总不能每次对SPI片选操作都用0x00000100这么长地址表示吧,当然 你也可以直接诶用 0x00000100来操作。。这个不直观对吧)
麻烦详细解释下 0X00000100 等 与P0.8 等之间的关系 如何转换的 为什么?
这个没有转换!0X00000100就是p0.8口。。。物理地址出厂就这么定义的,真正要转换的 也只能说是用SPI_CS 代表 0x00000100
⑷ arm中,建立页表,通过虚拟地址访问物理地址跟直接访问物理地址有什么区别有什么好处麻烦大神讲详
没法详细,去看看计算机组成原理吧。最基础的,如果直接访问物理地址,那可寻址范围就太少了。比如,2^32才4G.
⑸ ARM怎么给数组指定地址
按下面格式定义就好了 INT8U TempBuf [1024] __attribute__((at(0X20002000))) = {0}; 不过地址 0X20002000这些要看你自己的片子了 呵呵 尽量大点 避免冲突
⑹ ARM 寄存器配置
是在整个地址空间里给这个寄存器单独分配的,这是一个固定的物理地址,就算是内存重映射了,芯片内部会处理好映射的地址转换,操作重映射后的内存地址空间不会影响寄存器。
⑺ 关于arm通用寄存器物理地址的问题
像这样存在CPU内部的寄存器我们是不知道他们的地址的,平常我们说的地址都是说内存地址,更有说法是这种寄存器是没有地址的!他们的访问不是通过地址去访问的,直接通过汇编指令中的寄存器名访问的!所以你datasheet肯定是找不到的!datasheet上面能找到的是memory address,比如32位地址线的会有一个4G的空间,这样的内存是通过地址线去访问,而在CPU内部的寄存器是不通过地址线去访问的!
⑻ 在ARM汇编编程中如何指定某段程序的存储地址
在要指定代码的存储空间不是一件特别简单的事情,尤其是你想为某个或某几个函数指定具体的地址。
1,编译器只有在最终的Link阶段才会为代码和数据分配内存地址,因此指定代码段的地址一般是通过写一个link脚本来进行的。Link阶段时,编译器的Linker会读取你写的Link脚本,并且按照脚本的规定给代码分配地址。
2,根据ARM开发工具的不同,link脚本的语法和形式也有所不同。ARM MDK,ARM ADS,Eclips+GCC,Linux GCC, ARM Realview等开发工具都支持Link脚本。
如果你英文还可以,建议你直接找到开发工具的Help手册去研究。如果你英语实在不行,也可以把开发工具名称和你代码的具体情况告诉我,我帮你看看。
⑼ arm dsp 物理地址
AT91_CHIPSELECT_2或者AT91_CHIPSELECT_3。
ARM启动时,32位地址总线能寻址4G地址,芯片启动时总是从0地址启动,所以总线上的0地址是作为映射用的,映射启动代码,并不是内存中的实际0地址,总线上的所有地址都是作为一个映射,都是由硬件设计去分配的。物理地址是从地址总线上传来的地址,经过MMU(MMU作为硬件可选择的一部分)由虚拟地址转化之后形成的地址。32位CPU一共可寻址4GB,这4GB并不是全部分配给内存,有一部分要分配给总线使用(总线上挂着很多外设),一般是低地址给内存,高地址给总线,外设使用的是总线地址,CPU使用的是物理地址(独立编制)。没有MMU或者有MMU但没有启用的芯片,CPU出来的地址直接送到总线然后被内存单元接收,这就叫物理地址。
⑽ ARM如何分配寄存器地址!
教你操作寄存器! 首先你要知道这个寄存器的地址.
比如说我知道某寄存器地址是4001140cH, 然后就
*(unsigned long*)0x4001140c=~0;//赋最大值(仅供参考)
arm芯片是统一编址的,对寄存器可间接寻址.
(即 可使用指针)
51单片机 不是, 它地址重叠,
正是用这两种不同的寻址方式来
区分操作的是内存还是寄存器..