ARM裸机驱动
专注嵌入式
喜欢LINUX、嵌入式、driver、kernel,寻找志同道合的朋友
展开
-
整个arm裸机开发软硬件环境的搭建
1.首先装好ADS 配置一下ADS, 步骤:Edit->DebugRel settingsa.Post-linker 选“ARM fromELF”b.lauguage setting 所有选项都选“arm920t”c.linker->ARM linker ->原创 2011-09-08 14:05:39 · 1205 阅读 · 0 评论 -
ARM处理器模式切换(含MRS,MSR指令)
除了用户模式和系统模式,其余模式下都有一个私有SPSR保存状态寄存器,用来保存切换到该模式之前的执行状态,之所以用户模式和系统模式没有SPSR是因为,通常CPU大部分时间执行在用户模式下,当产生异常或系统调用时会分别切换进入另外几种模式,保存用户模式下的状态,当切换回原先模式时,直接回复SPSR的值到CPSR就可以了,因此,用户模式和系统模式下不需要SPSR,其详细操作查看下节异常处理。转载 2013-08-09 20:22:41 · 1340 阅读 · 0 评论 -
ARM指令集
ARM指令集www.hxhack.com 阅读: ------------------------------------------------------------------ 特点:Load / Store结构(存储器操作仅包括load和store,所有其他操作在寄存器中完成)32位固定指令宽度3地址指令格式(即两个源操作数和结果寄存器都独立指定转载 2013-08-09 19:33:24 · 1005 阅读 · 0 评论 -
uboot详细解读
大多数bootloader都分为stage1和stage2两部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。1、Stage1 start.S代码结构 u-boot的stage1代码通常放在start.S文件中,他用汇编语言写成,其转载 2013-08-09 15:44:47 · 1339 阅读 · 0 评论 -
ldr指令详解
ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。(1)LDR r0,=name,像这种带等号的是伪指令,而不是ARM指令,LDR 伪指令用于加载立即数或一个地址值到指定寄存器.*如果name是立即数的话:LDR R0,=0X123;//将0X123存入R0 *如果name是个标识符:LDR R0,=NAME;//将NAME的地址存入R0转载 2013-08-08 10:11:21 · 1960 阅读 · 0 评论 -
arm mvn 指令
mvn:与mov指令用法差不多,唯一的区别是:它赋值的时候,先按位取反 eg1: mvn r0,0xa0000007 执行结果:r0=0x5ffffff8 eg2: mvn r0,#4执行结果:r0=-5 过程分析:先对4转换成2进制(00000100),取反(11111011),求其补码,因为是负数,所以先对其正数(01111011)求转载 2013-08-05 13:44:39 · 11949 阅读 · 4 评论 -
uboot lowlevel_init.S解析
/*下面不厌其烦地解析一下lowlevel_init.S这个原文件*/ #define BWSCON 0x48000000……#define Tchr 0x2 /* 3clk */#define REFCNT 0x0459/*****************************转载 2013-08-05 10:34:35 · 1697 阅读 · 0 评论 -
ARM LR寄存器
MOV PC,LR看下面这个ARM汇编吧BL NEXT ;跳转到子程序......... ;NEXT处执行NEXT..........MOV PC,LR ;从子程序返回这里的BL是跳转的意思,LR(R14)保存了返回地址PC(R15)是当前地址,把LR给PC就是从子程序返回这里有一下总结首先1.SP(R13) LR(R14)PC(R15)2.lr转载 2013-08-05 09:52:35 · 988 阅读 · 0 评论 -
ARM的协处理器操作--mrc和mcr
MRC和MCR指令MCR指令的格式为:MCR{条件}协处理器编码,协处理器操作码1,源寄存器,目的寄存器1,目的寄存器2,协处理器操作码2。MCR指令用于将ARM处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1和协处转载 2013-08-02 11:12:54 · 1239 阅读 · 0 评论 -
2440 ADS的配置使用及调试
关于 ADS1.2 的使用有很多的文档,同时一般也会涉及到 AXD 调试的一些问题,我前几天因为这些问题而苦恼了好久而且网上搜不到较好的,就是完整的解决办法。我只是讲一些过程,至于原理的东西我也不是很懂所以现在就不多说。我的 PC 机时 xp 系统, ARM 板 mini2440转载 2011-09-13 14:08:29 · 1369 阅读 · 0 评论 -
ARM指令集与Thumb指令集的区别
一、现在先区分下ARM指令集与Thumb指令集 Thumb 指令可以看作是 ARM 指令压缩形式的子集,是针对代码密度的问题而提出的,它具有 16 位的代码密度但是它不如ARM指令的效率高 .Thumb 不是一个完整的体系结构,不能指望处理只执行Thumb 指令而不支持 ARM 指令集.因此,Thumb 指令只需要支持通用功能,必要时可以借助于完善的 ARM 指令集,比如,所有异常转载 2013-08-11 15:47:20 · 2586 阅读 · 0 评论