
汇编语言
RubyBoss
这个作者很懒,什么都没留下…
展开
-
arm B和BL指令浅析
B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。而B指令则无法实现子程序的返回,只能实现单纯的跳转。用户在编程的时候,可根据具体应用选用合适的子程序调用语句。AREA Init,COD转载 2013-05-06 22:03:03 · 832 阅读 · 0 评论 -
GNU ARM汇编--(十二)arm汇编指令的B真的那么简单吗?
说句题外话,在输入“指令”二字的时候,就想起了google搜索时,提示“令”不能搜索,要我换词汇.如果不能说脏话,我真就无语了. 在前面对具体芯片的各个基本模块做完了学习后,在上一篇小结中自以为已经具备了自己写个bootloader的条件,但其实错了,我还有很多基本的知识不了解.比如编译链接\gnu的linker script等等.也有很多地方只懂表面,没有做深入的理解.转载 2013-05-11 21:33:35 · 873 阅读 · 0 评论 -
GNU ARM汇编--(六)s3c2440的时钟控制
前面几篇利用GNU ARM汇编控制LED以及ARM的中断处理的设计,对ARM汇编以及体系结构有了一定的认识.后面的汇编学习会结合具体的芯片进行,一个为了更灵活熟练的使用汇编,二也是为了通过学习一款具体芯片来提炼出一些有价值的经验.此次选择的芯片是三星的s3c2440,arm920t的核,整个板子是TQ2440的板子,这个板子放了两年多了,零散的玩过一些,但是为了建立更有体系的知识结构,还是值得把它转载 2013-05-11 21:20:11 · 814 阅读 · 0 评论 -
GNU ARM汇编--(七)s3c2440的串口控制
在配置完s3c2440的系统时钟后,我们来控制串口.之所以将串口放在这么靠前,是因为串口会给我们带来更多的信息.在没有串口的时候,uboot启动阶段只能靠led来显示一些信息.那么有了串口,debug就方便很多了.在工作中,一般情况下,很少有机会用jtag口加上昂贵的codeviser工具进行debug,也很少用gdb进行远程debug的,用的最多的还是打开debug的define来分析确定问题.转载 2013-05-11 21:21:04 · 1004 阅读 · 0 评论 -
GNU ARM汇编--(十一)小结一下
对s3c2440的一部分做了学习,更深的了解了汇编以及arm体系,还有中断,调试底层汇编过程的最大感触就是仔细阅读datasheet,因为那是英文文档. 前面写的都是嵌入式底层比较基础的东西,后面要做的内容: 1.先裸机搞定iic,iic包括用控制器实现的和用GPIO模拟的,这样可以加深时序的理解. 2.spi也想看一下,虽然2440有spi,转载 2013-05-11 21:24:49 · 698 阅读 · 0 评论 -
I2C之知(一)--I2C的简介和特性
I2C我是想全面深入的从嵌入式软件工程师的角度做个理解,刚刚还申请了一个专栏,这个好好写. 学习技术从外文文档看起~~ 要全面了解I2C,可以从《I2C-bus specification and user manual》看起.I2C最初是由Philips提出的,那么这文档就是由NXP维护的. I2C总线被全球超过50个公司的1000+个I转载 2013-05-11 21:27:35 · 909 阅读 · 0 评论 -
linux下valgrind的使用概述
Valgrind简介: Valgrind是动态分析工具的框架。有很多Valgrind工具可以自动的检测许多内存管理和多进程/线程的bugs,在细节上剖析你的程序。你也可以利用Valgrind框架来实现自己的工具。 Valgrind通常包括6个工具:一个内存错误侦测工具,两个线程错误侦测工具,cache和分支预测的分析工具,堆的分析工具。 Val转载 2013-05-11 21:32:54 · 622 阅读 · 0 评论 -
GNU ARM 汇编指令
第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。一. Linux汇编行结构任何汇编行都是如下结构:[:] [}转载 2013-05-13 17:06:29 · 738 阅读 · 0 评论 -
GNU ARM汇编快速入门 .
前言:以前用ARM的IDE工具,使用的是ARM标准的汇编语言。现在要使用GNU的工具,当然要了解一点GNU ARM汇编的不同之处。其实非常的简单,浏览一下文档然后再看看程序就完全可以搞定了,或者你硬着头皮看GNU ARM的汇编程序,用不了多少时间你就就可以无师自通了。个人比较健忘,还是把文档翻译了一下,算是给自己一个避免遗忘的理由吧。ARM汇编语言源程序语句,一般由指令转载 2013-05-13 17:12:56 · 759 阅读 · 0 评论 -
objcopy命令介绍 .
objcopy把一种目标文件中的内容复制到另一种类型的目标文件中. (1)将图像编译到可执行文件内 Q: 如何将一个二进制文件,比如图片,词典一类的东西做为.o文件,直接链接到可执行文件内部呢? A: $ objcopy -I binary -O elf32-i386 -B i386 14_95_13.jpg image.o $ gcc image.o tt.o -o tt转载 2013-05-13 17:15:06 · 799 阅读 · 0 评论 -
I2C之知(三)--I2C总线的字节格式、时钟同步和仲裁
字节格式 发送到SDA线上的每个字节必须是8位.每次传输的字节数量是不受限制的.每个字节后必须跟着一个ACK应答位.数据从最高有效位(MSB)开始传输.如果从机要执行一些功能后才能接收或者发送新的完整数据,比如说服务一个内部中断,那么它可以将时钟线SCL拉低来强制使主机进入wait状态.当从机准备好新的字节数据传输时,释放时钟线SCL,数据传输便继续进行.转载 2013-05-11 21:29:03 · 1154 阅读 · 0 评论 -
I2C之知(二)--I2C总线SDA\SCL以及开始终止条件
I2C只用两条线(SDA和SCL)在连接到总线上的设备之间传送数据.每一个设备都由唯一的地址来识别(不管是微处理器、LCD驱动器、存储器或者键盘接口),并且可以依照设备的功能作为发送器或者接收器使用.LCD驱动器可能只是个接收器,而存储器可以发送和接受数据.除了发送器和接收器,当传送数据时设备还可以作为主机或者从机.主机就是初始化数据传输和产生时钟信号的设备,在那个时刻,任何被寻址的设备都是从机.转载 2013-05-11 21:28:29 · 1950 阅读 · 1 评论 -
GNU ARM汇编--(一)开篇
在大学的时候,汇编就是学的很烂.一是对汇编这门语言没概念,二是那些指令集很难记清楚,用的机会也少,自然学的不好.但是现在觉得相当有必要重头学习一下汇编.部分原因我在上一篇写完设备模型的总结时提到了而.最近在看一本书《ARM:Assembly Language Programming》,作者是Peter Knaggs & Stephen Welsh.作者在开头也提出学习汇编的必要性和重要性,借他们的转载 2013-05-11 21:13:43 · 1098 阅读 · 0 评论 -
GNU ARM汇编--(三)ARM处理器的基本原则
这一篇的知识来源全部来自《ARM System Developer's Guide》 从编程人员的视角来看,arm核是由数据总线连接的功能单元组成,如下图所示: 数据通过数据总线流向处理器核心,这里的数据可以是将要执行的指令,也可以是数据项.上面的图是Von Neumann体系的arm核,数据项和指令共用同一总线.而h哈佛结构体系的arm核就转载 2013-05-11 21:17:09 · 792 阅读 · 0 评论 -
GNU ARM汇编--(五)中断汇编之嵌套中断处理
http://blog.csdn.net/dndxhej/article/details/7640265 在上篇《GNU ARM汇编--(四)中断汇编之非嵌套中断处理》中分析了最简单的中断处理的写法,再看TQ2440启动代码中的中断向量表的写法就一目了然了.今天抽时间对嵌套中断处理的学习做下整理. 嵌套中断处理的核心代码如下:[cpp] view pl转载 2013-05-11 21:19:18 · 970 阅读 · 0 评论 -
GNU ARM汇编--(十)s3c2440的RTC
RTC概述 在系统电源关掉时RTC可以在备份电池的支持下来工作.RTC可以使用STRB/LDRB指令传输8bit的BCD值到CPU.数据包括秒,分,时,日期,天,月和年.RTC工作在外部32.768KHz的晶振下,而且有报警功能.属性 BCD:秒,分,时,日期,天,月和年 闰年产生器 报警功能:报警中断 从power-off模式唤醒转载 2013-05-11 21:24:05 · 829 阅读 · 0 评论 -
I2C之知(四)--I2C总线的7bit从机地址
时钟拉伸(Clock stretching)clock stretching通过将SCL线拉低来暂停一个传输.直到释放SCL线为高电平,传输才继续进行.clock stretching是可选的,实际上大多数从设备不包括SCL驱动,所以它们不能stretch时钟.从字节级来看,一个设备可能在快速模式下接受数据,但是需要更多的时间来存储接收到的字节或者准备将要传输的另一个字节.从机可以以一种握转载 2013-05-11 21:30:08 · 1275 阅读 · 0 评论 -
I2C之知(五)--I2C总线的10bit地址以及通用广播地址
其实,10bit地址我没用过,通用广播地址更没用过.通用广播地址应该是在多个mcu之间用i2c进行通信时使用的.虽说没用到,但还是做了翻译,说不定以后有机会用到:10bit地址10bit的寻址扩展可能寻址的数目.有7bit地址和10bit地址的设备可以连接到相同的I2C总线上,而且7bit寻址和10bit寻址都可以用在所有的总线速度模式下.不过,10bit寻址用的不多.10bit的从机转载 2013-05-11 21:30:47 · 1897 阅读 · 0 评论 -
ARM 链接配置.lds文件学习
对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align)(NOLOAD) : AT ( ldadr ) { cont转载 2013-05-11 20:51:52 · 1417 阅读 · 1 评论 -
GNU ARM汇编--(二)汇编编译链接与运行
GNU的汇编器是GNU Tools的一部分,可以用来ARM的汇编语言源代码编译为二进制文件.关于GNU汇编器的介绍可以搜索《GNU Assembler Manual》.这里我们只是做一个简短的介绍,对GNU汇编器有一个大概的认识,同时通过两个例子了解一下GNU ARM汇编. 给出一个模板文件:[cpp] view plaincopyprint? .转载 2013-05-11 21:14:19 · 816 阅读 · 0 评论 -
GNU ARM汇编--(九)s3c2440的PWM
依旧从datasheet开始看起,锻炼下阅读英文技术手册的能力PWM TIMER概述 s3c2440有5个16bit的定时器.Timer0,1,2和3有PWM功能.Timer4是没有输出管脚的内部定时器.Timer0有一个dead-zone产生器,用于大电流设备. Timer0和1共用一个8bit的预分频器,而timer2,3,4共用另外一个8bit的预分频器.每一个定转载 2013-05-11 21:23:05 · 905 阅读 · 0 评论 -
I2C之知(六)--s3c2440用I2C接口访问EEPROM
在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下. 本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来,最后还是放弃了.甚至参考了linux下i2c-algo-bit.c和i2c-gpio.c,依然没调出来.如果有示波器,可能很快就能找到原因,现在完全不知道问题出在哪里.其实想用GPI转载 2013-05-11 21:31:25 · 730 阅读 · 0 评论 -
图像处理与计算机视觉:基础,经典以及最近发展(1)序
1. 为什么要写这篇文章 从2002年到现在,接触图像快十年了。虽然没有做出什么很出色的工作,不过在这个领域摸爬滚打了十年之后,发现自己对图像处理和计算机视觉的感情越来越深厚。下班之后看看相关的书籍和文献是一件很惬意的事情。平常的一大业余爱好就是收集一些相关的文章,尤其是经典的文章,到现在我的电脑里面已经有了几十G的文章。写这个文档的想法源于我前一段时间整理文献时的一个突发奇想,转载 2014-04-16 16:30:50 · 880 阅读 · 0 评论