随笔分类 - ARM
摘要:哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处文档整理自ARM System Developer's Guide一.虚存的工作原理为了使任务有各自的虚拟存储映射,MMU硬件采用地址重定位(address relocation),即在地址访问主存之前,转换由处理器核输出的存储器地址。可认为在介于内核和主存间的MMU中有一个重定位寄存器,这样就能很容易理解这个转换过程。当处理器核产生一个虚拟地址时,MMU取 出这个虚拟地址的高位,并用重定位寄存器中的值来替换它,从而形成一个物理地址。虚拟地址的低位是一个偏移量,它转换成物理存储器的一个特定地址。一个重 定位寄存器只能转换一
阅读全文
摘要:ARM 进入异常模式后,访问的都是各自模式的寄存器,相互模式的访问(不包括用户模式),都是用修改 CPSR 进入另一个模式后,才访问,而相互之间的CPY SET ,都是通过 unbanked regs (R0 - R7)来做的。那么特权模式怎么访问用户态的寄存器?其实答案是很简单的,只要修改CPSR 寄存器,设置模式位即可达到进入相应模式的目的。MSRMRS两个特殊指令能做到。
阅读全文
摘要:如果你用过 bochs ,然后现在转而开发arm ,那么你一定会急需一个能像 bochs 那样的模拟软件来模拟一个 arm运行环境,那么这篇文章很适合你1.安装 skyeye下载地址 : http://sourceforge.net/projects/skyeye$ tar -vxzf skyeye xxxx.tar.gz -C DIR $ cd DIR $ make lib $ make $ sudo make install$ sudo make install_lib2.修改路径:$ vim /etc/profileexport PATH=$PATH:/opt/skyeye/binwq$
阅读全文
摘要:The ARM Architecture defines a User mode that has 15 generalpurpose registers, a pc, and a CPSR. In addition to this mode thereare five privileged processor modes, each of which have an SPSRand a number of registers that replace some of the 15 User mode generalpurpose registers. Note This section o.
阅读全文
摘要:You will get a error as follows when you're trying to use "mov r2,sp_svc" in your asm file (GNU ARM-LINUX-GCC)error: immediate expression requires a # prefix -- `mov r2,sp_svc' "why ?: it doesn't understand sp_svc, so it thinks you're trying to do an immediate mov, whi
阅读全文
摘要:对IA32(X86)而言,当发现异常时,CPU硬件做了很多事情,比如切换 SP,CR3,CS等等(读取TSS),而对于ARM来说,处理的流程如下CPU 硬件: : 将发生异常的下一条指令保存至 LR_xxx :备份当前 CPSR 到该模式的 SPSR_xxx :重置修改 CPSR,强制进入 相应的模式,强制进入ARM模式,关闭 FIQ/IRQ 响应 : 修改PC = (reset = 0/0xFFFF0000,undef = 4/0xFFFF0004...... )OS(软件) :切换 sp :保存上下文 {r0-r12,sp} : 执行处理函数 : 执行函数返回 : 恢复上下文{r0-r12
阅读全文
摘要:ARM920T 内核,提供了16个 DOMAIN 来说明 不同规格的权限访问模式,很多人会问,为什么弄16个之多,才几个嘛,一个1M,一个1K,一个 4K页,一个64K页,开始我也是这么问的,但是后来看到了手册,再联想一下芯片设计的向后扩展,我能理解,有两个原因,1.这是因为为了做扩展,很有可能后面做出2K的页,或者8K的页,这不是不可能的,到时候保证兼容前面的系列那就是大问题了2.一个规格可能有几种访问方式,可以修改相应的寄存器,就能switchA collection of sections, large pages and small pages of memory, which can
阅读全文
摘要:使用uboot 写nand flash 是不需要FS支持的,但是我查看 uboot 源代码的时候,发现这行 "nand write.jffs2 xxxxx.." jffs 是一个文件系统,这是为什么呢?nand write:向Nand Flash写入数据,如果NandFlash相应的区域有坏块,则直接报错。nand write.jffs2:向Nand Flash写入数据,如果NandFlash相应的区域有坏块,可以跳过坏块。nand read:读取Nand Flash相应区域的数据,如果NandFlash相应的区域有坏块,则直接报错。nand read.jffs2s:读取N
阅读全文
摘要:moon_cat 转 如何编写linux下nand flash驱动-1 【编写驱动之前要了解的知识】1. 硬件特性:【Flash的硬件实现机制】Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论...
阅读全文
摘要:今天将以前在windows ADS上写好的一些裸机程序用linux + arm-linux tools 移植到 TQ2440上,刚弄第一个 LED,就卡住了,main.c 不加任何修改 #define rGPBCON (*(volatile unsigned *)0x56000010) //Port B control #define rGPBDAT (*(volatile unsigned *)0x56000014) //Port B data #define rGPBUP (*(volatile unsigned *)0x56000018) //Pull-up control B stat
阅读全文
摘要:macro SETVAL a,b cmp %a,0x23 ja err mov %a,%berr: retendm当 使用SETVAL a,b 和 SETVAL b,c 时,宏只负责替换,所以有本地symbol两个 err,编译器当然抱怨 ^_^ 解决办法 err 加 local 修饰 或者 .err (GNU AS)
阅读全文

浙公网安备 33010602011771号