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

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

通过Android trace文件分析死锁ANR

通过Android trace文件分析死锁ANR

对于从事Android开发的人来说,遇到ANR(Application Not Responding)是比较常见的问题。一般情况下,如果有ANR发生,系统都会在/data/anr/目录下生成trace文件,通过分析trace文件,可以定位产生ANR的原因。产生ANR的原因有很多,比如CPU使用过高、事件没有得到及时的响应、死锁等,下面将通过一次因为死锁导致的ANR问题,来说明如何通过trace文件分析ANR问题。对应的部分trace文件内容如下:"Powe...
嵌入式学习之ARM中断编程

嵌入式学习之ARM中断编程

一、中断控制寄存器ARM微处理器支持7种工作模式,分别为:1. 用户模式(Usr) 用于正常执行程序2. 快速中断模式(FIQ) 用于高速数据传输3. 外部中断模式(IRQ)用于通常的中断处理4. 管理模式(SVC) 操作系统使用的保护模式(高权限),复位和软件中断进入5. 数据访问终止模式(abt)当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护6. 系统模式(sys) 运行均有特权的操作系统任务7. 未定义指令终...
嵌入式学习之ARM中断

嵌入式学习之ARM中断

ARM处理器异常中断处理概述当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场。从异常中断处理程序退出时,要恢复被中断的程序的执行现场。ARM体系中通常在存储地址的低端固化了一个32字节的硬件中断向量表,用来指定各异常中断及其处理程序的对应关系。当一个异常出现以后,ARM微处理器会执行以下几步操作:1)...
嵌入式学习之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...
<< 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 >>