- 博客(12)
- 资源 (22)
- 收藏
- 关注
转载 ARM中断PC返回值分析
在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常时, ARM核拷贝CPSR寄存器的内
2012-07-18 13:01:45 3221
转载 关于__irq 的使用
关于__irq 的使用__irq为一个标识,用来表示一个函数是否为中断函数。对于不同的编译器,__irq在函数名中的位置不一样,例如:ADS编译器中: void __irq IRQ_Eint0(void);Keil编译器中: void IRQ_Eint0(void) __irq;但是其意义一样,它所完成的任务是标识该函数为中断函数,在编译器编译是调用此函数时,先保护函数入口现场,然后执行中断函数,
2012-07-18 11:59:49 4643
转载 ARM微处理器中的常量
ARM微处理器中的常量学习ARM微处理器中的常量时,一直很懵懂,网上查了一下,终于弄明白,记录下来先。书上的原话是:“常量是一个8位的常数经循环右移偶数位(0、2、4、8、…、26、28、30)得到。ARM指令时固定的32位指令编码,不可能直接用32位表示立即数,采用上述间接方式表示的立即数在指令编码中需要12位(其中8位表示常数,4位表示循环右移)。这样一来,不是每一个32位常数都是合法的立即数
2012-07-12 17:57:04 2021
原创 ARM SRS汇编指令的用法
SRSStore Return State onto a stack.SyntaxSRS{addr_mode}{cond} sp{!}, #modenumSRS{addr_mode}{cond} #modenum{!} ; This is a pre-UAL syntaxwhere:addr_modeis any one of the following:IAIncremen
2012-07-12 14:36:01 4653
转载 arm-linux-eabi 和arm-none-eabi的区别
编译器arm-linux-eabi 和arm-none-eabi arm-linux-eabi 用于编译 armlinux 代码arm-none-eabi 不指名操作系统,可以是linux, 也可以是vxworks等,arm-none-eabi 不包含 __linux__ 等特定宏,所以往往编译linux 内核的时候通不过。 编译器arm-linux-eabi 和arm-none-eabi arm
2012-07-11 11:07:57 7751
转载 如何查看进程打开了哪些文件
有许多情况下,我们需要查看一个进程当前打开了哪些文件,反过来我们也希望知道某一个文件正在被哪些进程所读写。在Linux下有许多有用的工具可以帮我们完成这两个工作,下面介绍这两个工具:lsof与fuser。 fuser find files or sockets' user 格式:fuser [选项] fname -k 如果找到打开文件的进程,则发送SIGKILL杀死此进程,通
2012-07-10 10:49:02 5960
原创 arm c中字节对齐
__align__align 关键字指示编译器在 n 字节边界上对齐变量。__align 是一个存储类修饰符。它不影响函数的类型。语法__align(n)其中:n是对齐边界。对于局部变量,n 值可为 1、2、4 或 8。对于全局变量,n 可以具有最大为 2 的 0x80000000 次幂的任何值。__align 关键字紧靠变量名称前面放置。用法如果声明的变量的常规对齐边界小于 n,__alig
2012-07-05 15:18:16 5023 1
转载 Linux C语言内联汇编使用
本文档的Copyleft归rosetta所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性。参考资料:《Linux内核完全剖析》,《新版汇编语言程序设计》,《Linux C编程一站式学习》 最近要改个C语言算法的关键部分用汇编语言实现,Linux里嵌入汇编基本使用AT&T汇编,比如Linux系统的启动部分用的就是AT&T汇编 。以前学过AT&T汇编,但学过一段时间就忘了,但对
2012-07-02 15:38:19 6847
原创 ARM中B指令和BL指令的区别
在ARM处理器里主要是通过3中情况在控制程序执行的:1.流水方式执行程序,PC的值是下一条指令的地址,即每执行一条指令PC都加一个字的偏移。2.通过跳转指令来控制程序执行。 B 跳转到指定的指令处执行。 BL 跳转执行,保存子程序地址并返回。 BX 跳转执行并切换到Thumb状态。 BLX 三种方式组合。
2012-07-02 15:10:41 14953
转载 ARM的异常中断机制 .
在我们平时使用计算机时我们敲击键盘,计算机会对我做出响应。这是什么原因呢?处理器又是如何响应外围请求的呢?其实这都是通过处理器的中断机制实现的。ARM又是怎样的中断机制?让我们一起探讨吧!在ARM处理器里主要是通过3中情况在控制程序执行的:1.流水方式执行程序,PC的值是下一条指令的地址,即每执行一条指令PC都加一个字的偏移。2.通过跳转指令来控制程序执行。 B 跳转到指定的指令处执行。
2012-07-02 14:37:36 2728
转载 ARM处理器的SWI异常中断响应过程
通过SWI异常中断指令,在用户模式下应用程序可以调用系统模式下的代码,在操作系统中表现为系统调用,那这个过程又是如何实现的呢?带着疑问让我们来学习吧! 在SWI指令中包括一个24位的立即数(中断调用号),该立即数指示了用户要请求的特定的调用功能,所以在SWI的异常中断中要读取这个中断调用号,然后根据中断号,来调用相应的处理程序。这个过程可以分两个步骤:1.SWI异常中断处理程序由于是在底层操
2012-07-02 14:30:55 2771
转载 浅析Arm Linux操作系统调用流程详细解析 .
系统调用是os操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的执行让用户程序陷入内核,该陷入动作由swi软中断完成.At91rm9200处理器对应的linux2.4.19内核系统调用对应的软中断定义如下:#if defined(__thumb__) //thumb模式#define __syscall(name)/ "push {r7}
2012-07-02 14:29:02 2582
嵌入式环境搭建之samba
2013-08-05
bonjour软件包,mDNSResponder
2011-07-03
getpid()编程getpid()编程getpid()编程getpid()编程
2010-11-14
fork3()编程fork3()编程fork3()编程fork3()编程fork3()编程
2010-11-14
fork1() 编程fork1() 编程fork1() 编程fork1() 编程
2010-11-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人