arm-linux

http://armboard.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 51 下一页

2011年9月21日

摘要: 到目前为止,我们已经具备编写较为复杂的ARM汇编程序的能力,但要编写较为复杂且实用的程序,我们就不得不掌握ARM汇编的伪指令(pseudo-instruction)。千万别把汇编伪操作(directive)与汇编伪指令(pseudo-instruction)弄混了,directive不会被编译器编译为机器指令,但pseudo-instruction会。而pseudo-instruction与指令(instruction)的区别在于,1条instruction与1条机器指令对应,而编译器会把1条pseudo-instruction编译为1条或多条机器指令。ARM汇编伪指令共4条:ldr、adr、 阅读全文
posted @ 2011-09-21 13:25 arm-linux 阅读(1759) 评论(0) 推荐(0) 编辑

摘要: SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)也就是通常所说的内存。内存的工作原理、控制时序、及相关控制器的配置方法一直是嵌入式系统学习、开发过程中的一个难点。我们从其硬件的角度来分析其原理,然后再引出SDRAM的驱动编写过程。内存是代码的执行空间,以PC机为例,程序是以文件的形式保存在硬盘里面的,程序在运行之前先由操作系统装载入内存中,由于内存是RAM(随机访问存储器),可以通过地址去定位一个字节的数据,CPU在执行程序时将PC的值设置为程序在内存中的开始地址, CPU会依次的从内存里取址,译码,执行,在内存没有被初始化之前 阅读全文
posted @ 2011-09-21 10:34 arm-linux 阅读(3601) 评论(1) 推荐(0) 编辑

2011年9月20日

摘要: 我们知道ARM CPU中有一条被广泛使用的指令LDR,它主要是用来从存储器(确切地说是地址空间)中装载数据到通用寄存器。但不论是ARMASM还是GNU ARM AS,都提供了一条与之同名的伪指令LDR,而在实际中使用该伪指令的情况也较多,那他们有什么不同呢?下面我谈谈我的理解。 由于我使用GNU工具链,所以以下的内容都以GNU AS的ARM语法为准。 LDR伪指令的语法形式如下: LDR <reg>, = <constant-expression> 这个常量表达式<constant-expression>中可以包含Label(在ARM汇编中Label会在连接 阅读全文
posted @ 2011-09-20 09:47 arm-linux 阅读(2008) 评论(0) 推荐(0) 编辑

摘要: ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集。ARM指令集效率高,但是代码密度高Thumb指令集具有较高的代码密度,却仍然保持着ARM的大多数性能上的优势,它是ARM的子集。所有的ARM置零都是可以条件执行的,而Thumb置零仅有一条指令具备条件执行的功能。ARM和Thumb程序可以相互调用,相互之间状态切换开销几乎为零。首先我们来看一下分类:一、数据处理指令操作数寻址方式 1、立即数寻址方式 2、寄存器寻址方式 3、寄存器移位寻址方式二、存储器访问指令操作数寻址方式 1、寄存器间接寻址 2、基址变址寻址 3、相对寻址 4、多寄存器寻址(块拷贝寻址) 5、堆栈寻址下面 阅读全文
posted @ 2011-09-20 09:46 arm-linux 阅读(2161) 评论(1) 推荐(0) 编辑

2011年9月18日

摘要: 一.size_t strlen ( const char * str );Get string lengthReturns the length of str.The length of a C string is determined by the terminating null-character: A C string is as long as the amount of characters between the beginning of the string and the terminating null character.This should not be confus 阅读全文
posted @ 2011-09-18 18:37 arm-linux 阅读(499) 评论(0) 推荐(0) 编辑

2011年9月16日

摘要: 为方便理解所看到的波形是从红外接收管出来的信号,跟协议所说的信号高低(0或1)刚好相反。NEC协议是众多红外遥控协议的其中一种,除NEC外,还有RC5、RC6等其它的。市面上买到的非学习型万能电视遥控器大多集成一种或多种编码是NEC型的,我买的二个遥控器中就有三种以上编码是NEC的。NEC编码的一帧(通常按一下遥控器按钮所发送的数据)由引导码、地址码及数据码组成,,如下图所示,把地址码及数据码取反的作用是加强数据的正确性。引导码及数据的定义如下图所示,当一直按住一个按钮的时候,会隔110ms左右发一次引导码(重复),并不带任何数据以下是用示波器采集到的一直按住某个按钮时的波形:按一下按钮的波形 阅读全文
posted @ 2011-09-16 16:08 arm-linux 阅读(788) 评论(0) 推荐(0) 编辑

2011年9月13日

摘要: 开发环境:Ubuntu10.04 + Qt4.6.2网上找的串口通信类。开发过程中调用flush函数不起作用,缓冲区还是不能被清空,导致接收很多以前的数据。修改如下:void Posix_QextserialPort::flush(){ LOCK_MUTEX(); if(isOpen()) { //Posix_File->flush(); //修改前 tcflush(Posix_File->handle(), TCIFLUSH);//修改后 } UNLOCK_MUTEX();}也不知道这样改对不对,反正可以清空缓冲区了。呵呵。 阅读全文
posted @ 2011-09-13 17:23 arm-linux 阅读(2224) 评论(0) 推荐(0) 编辑

2011年9月9日

摘要: from http://code.google.com/p/google-styleguide/版本:3.133原作者:Benjy WeinbergerCraig SilversteinGregory EitzmannMark MentovaiTashana Landray翻译:YuleFoxyospaly项目主页:Google Style GuideGoogle 开源项目风格指南 - 中文版PS: 可以对比 Linus的 《Linux内核代码风格》http://blog.csdn.net/shendl/article/details/6230836的C风格指南阅读,看... 阅读全文
posted @ 2011-09-09 09:51 arm-linux 阅读(1038) 评论(0) 推荐(0) 编辑

2011年8月19日

摘要: Android2.3的输入事件流程与以前版本有了较大的不同,这里做一下详细的分析,最后我把自己分析时用的演示代码放在了这里:http://code.google.com/p/flying-on-android/下面的分析都是基于这些源码的,大家可以下载下来一边看源码一边看文档。源码里只要关注FlyingEvent这个类就可以了。如果只想看一下演示结果,可以直接把包里的flying放到机器的/system/bin目录执行,打开logcat后就可以看到演示输出。运行程序时,机器屏幕会有异象产生,很正常,因为这个程序原本是用于显示SurfaceFlinger的,这次为了演示EventHub稍微改了一 阅读全文
posted @ 2011-08-19 10:42 arm-linux 阅读(1852) 评论(0) 推荐(0) 编辑

2011年7月27日

摘要: 本章和第5章的内容都与ARM处理器中CP15协处理器的寄存器有密切关系,所以我们这里先介绍一下CP15寄存器以及访问CP15寄存器的汇编指令。4.1.1 访问CP15寄存器的指令访问CP15寄存器指令的编码格式及语法说明如下:31 2827 2423 212019 1615 1211 87 543 0cond1 1 1 0opcode_1Lcr nrd1 1 1 1opcode_21crm说明::协处理器行为操作码,对于CP15来说,永远为0b000,否则结果未知。:不能是r15/pc,否则,结果未知。:作为目标寄存器的协处理器寄存器,编号为C0~C15。:附加的目标寄存器或源操作数寄存器,如 阅读全文
posted @ 2011-07-27 11:33 arm-linux 阅读(699) 评论(0) 推荐(1) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 51 下一页