当前位置: 技术问答>linux和unix
linux驱动中嵌入ARM汇编访问内存的问题
来源: 互联网 发布时间:2016-06-24
本文导语: 本帖最后由 hanhannina 于 2009-08-03 18:17:39 编辑 我在linux驱动中嵌入了这样一个简单的汇编程序 __asm____volatile__( "ldr r0, =0x28000000nt" "ldmia r0, {r2-r5}" )...
__asm____volatile__(
"ldr r0, =0x28000000nt"
"ldmia r0, {r2-r5}"
);
然后编译通过,但运行的时候会报错,大概是说不能访问虚拟地址0x28000000的错误,这是为什么呢?
还有那里有这方面的资料啊,在网上找了找好像大多都是针对X86体系的,刚刚学汇编,实在不知道如何下手啊!谢谢大家啦!
|
__va()偏向于物理内存,它在系统起来的时候就映射好了, 具体的实地址与虚地址之间有个固定的偏移:PAGE_OFFSET(arm平台上它为0xc0000000)。同时这段内存是缓存的。
ioremap偏向于IO空间,它是运行时动态建立页表映射的,同时这段空间不会被缓冲的。它的实地址与虚地址之间没有固定的数学关系。
ioremap偏向于IO空间,它是运行时动态建立页表映射的,同时这段空间不会被缓冲的。它的实地址与虚地址之间没有固定的数学关系。