
C
Yao_Qinwei
Android Developer
展开
-
链接脚本
1、什么是ld?它有什么作用? ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种。完成的功能自然也就是链接器的基本功能:把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析。Linking其实主要就是完成四个方面的工作:storage allocation、symbol management、libraries、relocation。转载 2013-04-27 08:52:58 · 744 阅读 · 0 评论 -
Linux系统内核源代码分析方法
Linux的最大的好处之一就是它的源码公开。同时,公开的核心源码也吸引着无数的电脑爱好者和程序员;他们把解读和分析Linux的核心源码作为自己的最大兴趣,把修改Linux源码和改造Linux系统作为自己对计算机技术追求的最大目标。 Linux内核源码是很具吸引力的,特别是当你弄懂了一个分析了好久都没搞懂的问题;或者是被你修改过了的内核,顺利通过编译,一切运行正常的时候。那种成就感真是油然而转载 2013-05-24 11:39:42 · 1023 阅读 · 0 评论 -
Linux内核源码分析方法
Linux内核源码分析方法 一、内核源码之我见Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径。我们都知道,想成为优秀的程序员,需要大量的实践和代码的编写。编程固然重要,但是往往只编程的人很容易把自己局限在自己的知识领域内。如果要扩展自己知识的广度,我们需要多接触转载 2013-05-24 11:41:16 · 1201 阅读 · 0 评论 -
C函数指针的作用
1. 便于分层设计:函数指针是引用,是间接层,或曰隔离层。它输出到上层,给上层用户用。函数实体是实现,在下层,给开发者用,实现者(软件工程师)关注。这就是简单的分层的概念了。上层用户想让一个函数所做的东西会变化时,我们只需要改变底层实现,并用函数指针指向新的实现就行了。再精炼一下分层:分层的核心是对接口进行设计和实现。函数指针的作用就是提供不同实现的统一接口。2. 利于系统抽象:只有存在多个类转载 2013-05-28 09:02:25 · 6264 阅读 · 3 评论 -
C语言面向对象编程
经常看到关于OO编程的讨论,C++, Java, C#...还有最近很流行的动态语言Python,Ruby等,但很少看到有C的份。在我看来,OO编程的核心是OO的思想,用什么语言倒是其次。但是,不可否认,那些专门为OO编程设计的语言可以比较方便和自然地表达OO思想,有些语言甚至强制使用OO特性。 C,作为最贴近底层的高级语言,拥有简洁的语法和直接内存操作能力(指针),大量运用于系统级编程,转载 2013-05-14 23:04:42 · 948 阅读 · 0 评论 -
C语言面向对象的实现---继承性
在嵌入式系统开发中,不同的MCU一般都支持C编译器,而可能没有C++的编译器或支持的不好,所以,在嵌入式系统的开发中,C语言是使用最多的语言。而为了使用面向对象(OO)的优点,一般在C编程中加入OO的特性。 面向对象编程(OOP)有三个特性:封装、继承和多态性。Smalltalk、C++、Java、C#等面向对象语言在语言层次上支持OOP,而OOP并不是为特殊语言而使用的,C转载 2013-05-14 23:08:15 · 937 阅读 · 0 评论 -
C语言面向对象的实现---多态性
在嵌入式系统开发中,不同的硬件一般都支持C编译器,而可能没有C++的编译器或支持的不好,所以,在嵌入式系统的开发中,C语言是使用最多的语言。而为了使用面向对象(OO)的优点,一般在C编程中加入OO的特性。 面向对象编程(OOP)有三个特性:封装、继承和多态性。Smalltalk、C++、Java、C#等面向对象语言在语言层次上支持OOP,而OOP并不是为特殊语言而使用的,用C转载 2013-05-14 23:10:18 · 1025 阅读 · 0 评论 -
嵌入式系统专业 要学的课程
方向:计算机科学与技术---嵌入式系统应用特点: 嵌入式系统方向是具有广阔的就业前景和充满挑战的行业,是软硬件结合的完美产物,所以要想学好嵌入式,就必须掌握好软、硬件两方面的内容,并了解嵌入式系统应用领域的相关内容。就业方向: 毕业生具有广阔的就业前景,主要从事消费类电子、医疗电子、智能家居、网络通信、工业控制、汽车电子等领域的嵌入式系统的设计、开发、测转载 2013-05-14 23:11:13 · 1642 阅读 · 0 评论 -
对x++和++x的理解
[笔试面试]对x++和++x的理解 首先看一段程序:int main(void){ int x = 3; printf("x=%d, x++=%d, x=%d\n",x, x++, x); printf("x=%d, ++x=%d, x=%d\n",x, ++x, x); printf("x=%d, x++=%d,原创 2013-05-29 10:56:47 · 1966 阅读 · 0 评论 -
一道超偏的c++面试题: (int&)a和(int)a的区别,考点:类型转换
[cpp] view plaincopy#include #include #include using namespace std; int main() { float a = 1.0f; cout int)a cout int&)a cout int)a == (int&)转载 2013-05-29 13:07:58 · 995 阅读 · 0 评论 -
[笔试面试] 对printf参数压栈和指针加减的理解
先看面试题:#include main(){ int arr[]={6,7,8,9,10}; int *ptr = arr; *(ptr++)+=123; printf("*(ptr-1) = %d\n", *(ptr-1)); printf("*ptr = %d\n", *ptr); pr原创 2013-05-29 12:38:27 · 1032 阅读 · 0 评论 -
[笔试面试] C类型转换
强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float) a 把a转换为实型(int)(x+y) 把x+y的结果转换为整型在使用强制转换时应注意以下问题:1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后转载 2013-05-29 13:43:56 · 1665 阅读 · 0 评论 -
Linux内核分析方法谈[转]
Linux的最大的好处之一就是它的源码公开。同时,公开的核心源码也吸引着无数的电脑爱好者和程序员;他们把解读和分析Linux的核心源码作为自己的最大兴趣,把修改Linux源码和改造Linux系统作为自己对计算机技术追求的最大目标。 Linux内核源码是很具吸引力的,特别是当你弄懂了一个分析了好久都没搞懂的问题;或者是被你修改过了的内核,顺利通过编译,一切运行正常的时候。那种成就感真是油然而转载 2013-05-24 11:35:33 · 886 阅读 · 0 评论 -
linux设备驱动归纳总结(三):7.异步通知fasync
linux设备驱动归纳总结(三):7.异步通知fasyncxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,signal函数就是让一个信转载 2013-05-08 16:13:00 · 998 阅读 · 0 评论 -
mini2440button驱动程序分析
mini2440button驱动程序分析By Jeefjiang JUL,5th,2009开发板:友善之臂mini2440开发环境:Fedora8+arm-linux-gcc+NFS内核版本:Linux2.6.29参考程序:LDD3的SCULL模块程序,友善之臂本身提供的button驱动知识准备以及参考资料:驱动程序方面:内核中断处理 LDD3 CHAP10转载 2013-05-08 16:08:40 · 776 阅读 · 0 评论 -
Linux下的lds链接脚本基础
今天在看uboot引导Linux部分,发现要对链接脚本深入了解,才能知道各个目标文件的内存分布映像,下面是我看到的一些资料 1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚本内的表达式12. 暗转载 2013-04-27 08:53:55 · 935 阅读 · 0 评论 -
make: execvp: /opt/EmbedSky/u-boot-1.1.6/mkconfig: 权限不够
执行 make mini2440_config当出现Configuring for mini2440 board.....表示配置以已经成功出现make: execvp: …………/mkconfig: 权限不够查看mkconfig的权限,发现没有可执行权限,用chmod 764 mkconfig加上权限然后再make,成功后可出现 Configuring for转载 2013-04-27 13:02:04 · 4439 阅读 · 0 评论 -
linux输入子系统, 按键输入驱动程序
/* 可参考gpio_kyes.c *//* * 所有通用的工作都由上层核心程序做了 */#include #include #include #include #include /* 由它把按钮中断的信息综合起来 */struct pin_desc{ int irq; /* 中断号,中断号唯一表示一个中断 */ char* name; /* 名称原创 2013-05-16 15:29:14 · 946 阅读 · 0 评论 -
第一个简单的驱动程序——LED开关驱动程序
平台:FriendARM —— mini2440内核:2.6.32.2交叉编译工具:arm-linux-gcc-4.4.3CPU芯片:S3C2440 A驱动程序代码如下:#include #include #include #include #include #include #include #include /* 2.6.3x.x内核较原创 2013-05-03 11:38:51 · 1320 阅读 · 0 评论 -
嵌入式Linux之我行——按键驱动在2440上的实例开发(带去抖动)
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn一、开发环境主 机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2.转载 2013-05-07 12:17:23 · 899 阅读 · 0 评论 -
ARM的字对齐问题总结
一、啥是字对齐?为啥要字对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问都可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就是对齐。字节对齐的原因大致是如下两条:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否转载 2013-05-06 16:22:49 · 1012 阅读 · 0 评论 -
S3C2440 FCLK, HCLK, PCLK的关系
1)FLCK、HCLK和PCLK的关系S3C2440有三个时钟FLCK、HCLK和PCLKs3c2440官方手册上说P7-8写到:FCLK is used by ARM920T,内核时钟,主频。HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the inte转载 2013-05-21 10:35:08 · 1044 阅读 · 0 评论 -
word/half-word/byte概念
/*****************************************************对字(Word)、半字(Half-Word)、字节(Byte)的概念说明如下:字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器转载 2013-05-21 09:53:18 · 1607 阅读 · 0 评论 -
Linux内核机制之等待队列
Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在中,等待队列在源代码树中,这是一个通过连接的典型双循环链表,如下图所示。 在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列项中都包含一个list_head类型的域作为"连接件转载 2013-05-07 18:41:14 · 1032 阅读 · 0 评论 -
linux设备驱动归纳总结(六):2.分享中断号
linux设备驱动归纳总结(六):2.分享中断号xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx上一节介绍的内容是,调用接口request_irq(),使中断号与中断处理函数对应。但是,有时候会有这样的情况,如果开发板上按键的中断已经被另外的驱动程转载 2013-05-22 11:47:35 · 1005 阅读 · 0 评论 -
按键驱动程序(同步互斥阻塞)
同样的,在按键驱动程序(中断方式)的基础之上添加互斥阻塞机制。当设备被一个程序打开时,存在被另一个程序打开的可能,如果两个或多个程序同时对设备文件进行写操作,或者读设备文件都会出现同步的问题。本程序是通过获取信号量“锁住”打开程序,直到释放了信号量,另外的程序才能打开程序。(另外的方法还有用原子操作维护设备被打开的计数等)。获得信号量有可以用int down_trylock(struct se转载 2013-05-08 16:48:19 · 929 阅读 · 0 评论 -
C语言面向对象的实现---封装性
在嵌入式系统开发中,不同的硬件一般都支持C编译器,而可能没有C++的编译器或支持的不好,所以,在嵌入式系统的开发中,C语言是使用最多的语言。而为了使用面向对象(OO)的优点,一般在C编程中加入OO的特性。 面向对象编程(OOP)有三个特性:封装、继承和多态性。Smalltalk、C++、Java、C#等面向对象语言在语言层次上支持OOP,而OOP并不是为特殊语言而使用的,用C转载 2013-05-14 23:07:52 · 1222 阅读 · 0 评论