linux kernel及driver
jiayinjia1983116
从基础做起,踏踏实实,争取早一天成为编程高手。
展开
-
gdbserver 调试ARM 上的程序出现“ waitpid:Function not implemented ”问题的解决
ARM上用gdb/gdbserver调试程序,提示: waitpid:Function not implemented 最后google 发现应该是ARM 上面没有相应的系统调用。以下是我调试的时候用的hello.c#include main (int argc, char **argv){ int i; for (i=0;i {原创 2008-12-15 19:36:00 · 2805 阅读 · 0 评论 -
中断上下文和进程上下文的区别
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间转载 2012-07-18 10:16:35 · 1801 阅读 · 0 评论 -
linux kernel oops
如何快速的定位oops一. addr2line 工具 Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。这种功能对于将跟踪地址转换成更有意义的内容来说简直是太棒了。有了 addr2line 工具,遇到oops时,我们就可以找到当前PC(EIP)所在地址,然后就可转换为相应的C文件里具转载 2008-10-13 23:29:00 · 2210 阅读 · 0 评论 -
无法识别apacer CF(compact flash)
最近测试CF卡,发现apacer牌子的CF卡无法识别,于是跟踪原因 ,现把分析过程写下,以备参考。kernel verison 2.6.25.8在文件linux-2.6.25.8/drivers/ide/legacy/ide-cs.c里面注册 pcmcia driver,static struct pcmcia_driver ide_cs_driver = { .原创 2012-03-25 21:11:08 · 2476 阅读 · 0 评论 -
linux 下ARM 与X86之间对外部设备IO映射的区别
最近在做CAN驱动的移植工作,具体就是将X86平台的驱动移植到ARM上面。芯片采用的是philips的sja1000芯片,ARM pxa27x。将CAN的驱动直接交叉编译比较容易通过,不过,编译完成后,运行的时候驱动始终无法发出第一帧。以下是发送原理 芯片及程序的工作原理是这样的,首先通过发送寄存器发出第一帧数据,然后会触发一个中断,中断处理程序会将驱动 buffer的数据c原创 2009-04-27 21:52:00 · 2557 阅读 · 1 评论 -
dm9000 linux driver 问题
最近移植kernel2.6.25,发现里面的dm9000的驱动(版本为1.30)有问题,所以就改用了一起版本的(1.2),直接替换就好了。调试1,30的时候,可以进入中断处理函数。当另外一台设备ping 开发设备时候,开发设备可以收到数据,但是就是不能发生应答帧,调试了半天,也不知道是什么原因,后来用老的版本替换就OK了。哈哈,看来这版估计对硬件支持的不是特别好,而且linux2.6.27就又原创 2009-06-29 21:18:00 · 719 阅读 · 0 评论 -
Linux加速启动,启动时间的极限优化
原文链接:http://hi.baidu.com/xnej/blog/item/82ecdc8b7ef07cd0fc1f106d.html在上次完成嵌入式应用的Linux裁减后,Linux的启动时间仍需要 7s 左右,虽然勉强可以接受,但仍然没有达到我个人所追求的目标——2s以内。况且,在实际的商用环境中,设备可靠性的要求可是“5个9”(99.999%,即OOS时间低于5分钟/年),这就意转载 2009-10-10 23:03:00 · 1906 阅读 · 0 评论 -
linux 编译遇到的问题
编译内核 出现 "out of memory"原创 2010-08-07 10:26:00 · 813 阅读 · 1 评论 -
不同版本gcc编译编译相同kernel source code 的问题
<br />前一段时间,针对公司的设备(使用486sx的cpu,不带浮点运算单元,编译kernel的时候需要模拟FPU)在Fedora11上进行编译了一个486的kernel 在设备上运行,基本测试都OK,不过最近客户反应有问题,问题是计算三角函数的结果和有FPU的设备相差很大,我自己安装好系统测试,结果确实是。很奇怪阿,难道是浮点运算模拟出错了? 公司另外一个部门也有一个使用相同CPU的板子,于是将它们的板子运行起来看看,看看他们的板子浮点运算是不是好的,奇怪,怎么他们的就是好的。当我相信询问他们是如何编原创 2010-08-20 15:29:00 · 1264 阅读 · 0 评论 -
system.map文件详解
有时system.map文件可以帮助我们理解内核编译,它记录了所有代码的运行地址。下面一起看看如何读懂它system.map内容格式为:线性地址 类型 符号具体内容如下: 00100000 A phys_startup_32c0100000 T startup_32c0100000 A _text 注:表示内核转载 2011-11-02 21:15:36 · 612 阅读 · 0 评论 -
编译"hello world"驱动后都生成了什么
虽然系统提供的makefile很智能地将hello.c最终编译成了hello.ko,但是我还是想知道系统的makefile到底干了些什么。 首先看编译驱动的目录,编译后多个四个文件:hello.ko, hello.mod.c, hello.mod.o, hello.o hello.mod.c是一个C程序的源文件,查看其内容,似乎仅仅只是定义了两个全局的结构体变量。转载 2011-11-03 09:20:05 · 1076 阅读 · 0 评论 -
crosstool-ng make cross-toolchain 4.2.2 problem
[ERROR] /tmp/crosstool-ng/targets/src/gcc-4.2.2/gcc/regrename.c:1646: error: 'IFCVT_ALLOW_MODIFY_TEST_IN_INSN' undeclared (first use in this function)[ERROR] /tmp/crosstool-ng/targets/src/gcc-原创 2011-11-24 11:32:10 · 1218 阅读 · 0 评论 -
pxa270 平台上面一些问题的解决办法总结
最近在pxa270 平台上面调试驱动,遇到了一些问题现总结如下,以备日后查看。问题1 字节对齐 描述:调试网卡驱动 型号为 ax887966(亚信电子产的)。需要将网卡支持添加到u-boot.1.1.6,由于里面已经有ne2000 的驱动,并且ax88796也是ne2000兼容。调试了几天始终无法初始化成功网卡,每次都是reset不成功。后将u-boot阶段每个网卡地址shift 有原创 2012-01-19 14:38:04 · 723 阅读 · 0 评论 -
Linux内存空间访问札记
原文地址:Linux内存空间访问札记 引:本来打算将这部分内容并入到《The Linux Kernel Module Programming Guide笔记》中去,但是想下内存空间管理访问相当基础重要而且内容量较大,所以就单独记录。注:在x86架构上,会分为内存空间和I/O空间,但是在大多数嵌入式控制器如ARM、PowerPC并不提供I/O空间。我面向的主要是嵌入式方面的驱动开发,所转载 2013-02-24 17:36:00 · 1988 阅读 · 0 评论