Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

嵌入式学习之IRQ和FIQ之间的区别

嵌入式学习之IRQ和FIQ之间的区别

IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于 FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被 FIQ 所中断,但 IRQ 不能中断 FIQ。为了使 FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用 SWI(软件中断)。FIQ 还必须禁用中断。如果一个 FIQ 例程必须重新启用中断,则它太慢了,并应该是 IRQ 而不是 FIQ。对FIQ你必须进快处理中断请求,并离开这个模式。IRQ可...
嵌入式软件技术的缺陷查找方法

嵌入式软件技术的缺陷查找方法

结构测试或白盒测试能有效地发现代码中的逻辑、控制流、计算和数据错误。这项测试要求对软件的内部工作能够一览无遗(因此称为"白盒"或"玻璃盒"),以便了解软件结构的详细情况。它检查每个条件表达式、数学操作、输入和输出。由于需要测试的细节众多,结构测试每次检查一个软件单元,通常为一个函数或类。 代码审查也使用与实现缺陷和潜在问题查找同样复杂的技术。与白盒测试一样,审查通常针对软件的各个单元进行,因为一个有效的审查过程要求的是集中而详尽的检查。 与审查和白...
嵌入式学习之Nand Flash控制器读写编程

嵌入式学习之Nand Flash控制器读写编程

S3C2440 NandFlash控制器介绍:NAND Flash控制器提供几个寄存器来简化对NAND Flash的操作。比如要发出读命令,只需往NFCMD寄存器写入0即可,NAND FLash控制器会自动发出各种控制信号。1、操作方法概述访问NAND Flash时需要先发出命令,然后发出地址序列,最后读/写数据;需要使用各种使能信号来分辨是命令、地址还是数据。S3C2410的NAND Flash控制器提供了NFCONF、NFCMD、NFADDR、NFDA...
嵌入式学习之GPIO

嵌入式学习之GPIO

一、 什么是GPIO:GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程IO...
嵌入式学习之Nand Flash

嵌入式学习之Nand Flash

Nand Flash是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand Flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。NAND型闪存以块为单位进行擦除操作。闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此擦除操作是闪存的基本操作。S3C2410...
Linux下统计某个目录下所有源代码行数的Shell脚本

Linux下统计某个目录下所有源代码行数的Shell脚本

由于要统计某个源代码下的所有代码的行数,所以这里自己写了个脚本来完成这个功能。我在编写这个脚本的时候,遇到了一些问题,我先把代码贴在这里;使用方法,将此脚本文件存为linesNumber.sh,使用时,在后面跟上指定目录即可,例如:# ./linesNumber.sh mplayer 就是统计mplayer目录下的所有.cpp,.c,.h文件的源代码行数; 对于你还需要增加其他的行数,你只需更改教本中的REG变量即可,更改方法参考REG变量内容,对应修改即...
Linux驱动开发-----内存存取

Linux驱动开发-----内存存取

1.在用户空间动态申请内存的函数为malloc(),释放函数为free()对Linux内核而言,C库的malloc()函数通过brk()和mmap()两个系统调用来实现2.内核空间内存动态申请---以页为单位(1).kmalloc()和__get_free_pages()申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在较简单的转换关系。(2).vmalloc()在虚拟内存空间给出一块连续的内存区,实质...
Android仿QQ空间底部菜单

Android仿QQ空间底部菜单

之前曾经在网上看到Android仿QQ空间底部菜单的Demo,发现这个Demo有很多Bug,布局用了很多神秘数字。于是研究了一下QQ空间底部菜单的实现,自己写了一个,供大家参考。效果如下图所示:点击中间的按钮后->1、实现原理很简单,底部菜单是一个水平分布的LinearLayout,里面又是五个LinearLayout,它们的layout_weight都为1,意味着底部菜单的子控件将屏幕宽度平均分为5部分。五个LinearLayout除了中间那个,其...
详解C语言的类型转换

详解C语言的类型转换

1.自动类型转换•字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。•如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。•图中横向箭头表示...
C++string类型字符串的存储方式

C++string类型字符串的存储方式

不知道你们有没有看过string类型变量的成员数据,在string变量中好像真正存储字符串的是一个叫_Ptr的指针,它指向string所存储的字符串首地址。当string变量被定义时,如果未初始化,_Ptr就是一个指向NULL的指针,而且_Ptr看起来像一个const char*类型的指针,如果它是一个空串,你无法使用str[0]="w"这样的赋值语句(假设str为string类型)。问题如下:1)当我们向string变量赋值时,它是通过动态分配内存给_P...
Objective-C适用C数学函数 <math.h>

Objective-C适用C数学函数 &lt;math.h&gt;

在实际工作中有些程序不可避免的需要使用数学函数进行计算,比如地图程序的地理坐标到地图坐标的变换。Objective-C做为ANSI C的扩展,使用C标准库头文件<math.h>中定义的数学常量宏及数学函数来实现基本的数学计算操作,所以不必费神再在Cocoa Foundation中寻找相应的函数和类了。这里列出一些常用宏和数学函数,更详细的信息还是需要去查阅<math.h>头文件。数学常量:#define M_E 2.718281...
Ubuntu 10.04成功移植gdbserver及gdbserver使用介绍

Ubuntu 10.04成功移植gdbserver及gdbserver使用介绍

在Ubuntu 10.04成功移植gdbserver及gdbserver使用介绍(用于CCSV5.2远程调试ARM CORTEX-A8程序) 。最近需要使用CCSV5使用gdbserver远程调试ARM cortex-a8的程序,移植成功gdbserve,使用的版本包是gdb-7.1,主机环境为ubuntu10.04,开发板挂载的nfs文件系统。CCSV5已经自带zylincdt,所以只需构建开发板端gdbserver就可以了。下面是详细过程。1、gdb下...
Linux内核驱动开发之KGDB单步调试内核

Linux内核驱动开发之KGDB单步调试内核

如何单步调试Linux内核一直困扰着linux驱动开发人员,内核有其代码量大、逻辑复杂、与硬件交互的特性。因此,有着不同于应用程序的调试方法,据统计Linux内核开发者使用最普遍的调试方法是printk方法,而其他的方法大多是在特殊情况下才会使用。本文介绍的Kgdb调试方法是一种源码级的Linux内核调试器。使用Kgdb调试内核时,需要结合gdb一起使用,使用他们可以对内核进行单步调试,设置断点,观察变量、寄存器的值等与应用调试相关的功能。然而也有其限制条...
<< 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 >>