Linux内核学习
longkg
这个作者很懒,什么都没留下…
展开
-
cross、u-boot、kernel、ramdisk
原文地址:cross、u-boot、kernel、ramdisk作者:lbing一、构建自己的交叉编译环境二、u-boot移植三、编译内核四、构建文件系统过程:一、构建自己的交叉编译环境嵌入式设备由于不具备一定的处理器能力和存储空间,程序开发一般用PC来完成,然后将可执行文件下载到嵌入式系统中运行。这是目前嵌入式程序开发的不二选择——Host/target模转载 2013-01-08 15:50:14 · 548 阅读 · 0 评论 -
嵌入式Linux内核移植相关代码分析
本文通过整理之前研发的一个项目(ARM7TDMI +uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误及讲解的不够清楚之处,请各位网友指正,这里提前谢过。本文分以下部分进行介绍:1. Bootloader及内核解压2. 内核启动方式介绍3. 内核启动地址的确定4. arch/armnom转载 2013-03-13 11:19:12 · 487 阅读 · 0 评论 -
Linux输入子系统(Input Subsystem)
Linux输入子系统(Input Subsystem)1.1.input子系统概述输入设备(如按键,键盘,触摸屏,鼠标等)是典型的字符设备,其一般的工作机制是低层在按键,触摸等动作发生时产生一个中断(或驱动通过timer定时查询),然后cpu通过SPI,I2C或者外部存储器总线读取键值,坐标等数据,放一个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读转载 2013-04-01 16:34:44 · 556 阅读 · 0 评论 -
i2c 驱动编程接口 i2c_master_send 和 i2c_master_recv i2c_transfer
1、通信接口i2c发送或者接收一次数据都以数据包 struct i2c_msg 封装[cpp] struct i2c_msg { __u16 addr; // 从机地址 __u16 flags; // 标志 #define I2C_M_TEN 0x0010 // 十位地址标志 #define I2C_M_RD 0x0001 /转载 2013-04-08 16:25:33 · 800 阅读 · 0 评论 -
在用户空间加载和卸载驱动
通过以下命令加载上面编译生成的模块:引用linux-beyes:/home/beyes/C/kernel # insmod ./hello.ko 注意的是,如果使用在图形系统下的虚拟终端,那不会看到输出信息,但是这些信息一般被保存在 /var/log/messages 文件里:引用linux-beyes:/home/beyes/C/kernel # cat /var/log/messages转载 2013-03-27 23:13:13 · 427 阅读 · 0 评论 -
patch用法
看到一篇写得不错的关于diff和patch的文章,转过来。因为在u-boot移植过程中,有几处通用文件要修改,如果每次都要手动修改就太麻烦了。制作补丁可以解决这个问题。学习资料的收集比较简单,方法一类似于这种初级问题网上资料非常丰富,google或者baidu搜索一下,然后选择有价值的资料,方法二是阅读man在线文档。完成收集工作,当然最终要在自己的Linux上作实验,比较总结,消化吸转载 2013-09-17 15:50:18 · 488 阅读 · 0 评论 -
android 关机 流程分析
转自:http://blog.chinaunix.net/uid-24227137-id-3248111.html嵌入式系统一般都有一个关机按键,长按这个按键系统会弹出关机对话框,提示关机确认,关机动作从按键触发中断,linux kernel层给android framework层返回按键事件进入 framework层,再从 framework层到kernel层执行kernel层转载 2013-10-29 10:20:48 · 509 阅读 · 0 评论 -
自己动手编写嵌入式Bootloader---基本功能流程
【IT168 技术文档】CPU上电后会从IO空间的某地址取第一条指令。但此时:PLL没有启动,CPU工作频率为外部输入晶振频率,非常低;CPU工作模式、中断设置等不确定;存储空间的各个BANK(包括内存)都没有驱动,内存不能使用。在这种情况下必须在第一条指令处做一些初始化工作,这段初始化程序与操作系统独立分开,称之为bootloader。 实际上,很少有必要自己写一个Bootloader转载 2013-10-29 16:44:06 · 459 阅读 · 0 评论 -
Debug Android and Linux suspend and resume (中文)
攒了一些关于调试Android和Linux下面的suspend 和 resume的经验, 在这里和大家分享一下。希望可以有些帮助, (下面没有写Android专用的, 就是Linux通用的)。1. no_console_suspend 在kernel启动参数里面加上no_console_suspend, 这个是最基本的, 因为kernel在把console suspend掉转载 2013-11-25 10:17:00 · 444 阅读 · 0 评论 -
Linux kernel启动参数
ARM体系结构:1.最常用的方式,就是在make config里修改“General Setup”子菜单中的“Default kernel command string” 选项,通过修改这个选项来修改include/linux/autoconf.h文件中的CONFIG_CMDLINE宏2.有的时候为了省去make menuconfig的时间,并且内核命令也是固定的,就可以写死内核a转载 2013-12-04 17:20:39 · 569 阅读 · 0 评论 -
一个panic bug的分析过程(一)
转自:http://blog.chinaunix.net/uid-25171069-id-3208949.html一个工作中遇到的bug的问题,分析一下流程,顺便把panic这种类似的bug流程做一些分析:环境: linux 3.0, arm 芯片平台首先看出问题时的backtrace 如下:[ 10.298767] regulator_init_complete: disabli转载 2013-12-12 14:05:32 · 1306 阅读 · 0 评论 -
工作队列(workqueue) create_workqueue/schedule_work/queue_work
项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling while atomic”,网上搜了一下:"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't - like within a spinlo转载 2013-12-05 19:13:29 · 661 阅读 · 0 评论 -
Android自带的toolbox分析及扩展
转自:http://blog.csdn.net/a345017062/article/details/6250619折腾了几天,被Android那点儿少得可怜的shell命令折磨的死去活来,终于下定了革命的决心。看一下怎么把渺小的toolbox替换成伟大的busybox吧。先大致描述一下Android系统中的shell程序部分。shell实现分为两部分:一、sh转载 2013-03-01 13:49:37 · 703 阅读 · 0 评论 -
从MACHINE_START开始
玩过或者移植过arm-linux的都应该知道在/arch/arm目录下有许多与具体处理器相关的目录,当然对于6410的话所对应的目录就是mach-s3c64xx,在里面找到与具体板子相关的文件mach-mini6410.c,没错,就是它。无论是出于想移植到新的内核还是出于想深入学习某一款arm等,对这个文件的学习是必不可少的。这个文件大部分内容是对平台设备(例如串口,LCD,Nand fals转载 2013-03-13 15:50:01 · 435 阅读 · 0 评论 -
Android中延时函数
Android中延时函数分为用户空间和内核空间两部分:内核空间#include udelay(int n); mdelay(int n)); ndelay(int n)); 这几个函数会让cpu死循环,导致cpu忙等待.usleep(int n);msleep(int n));nsleep(int n));第一组和第二组延时函数的区别转载 2013-01-25 18:34:31 · 2685 阅读 · 0 评论 -
diff/patch的用法和目录关系
diff/patch的用法和目录关系本文转自:http://blog.csdn.net/changing1113/article/details/5489257patch用于根据原文件和补丁文件生成目标文件。还是拿上个例子来说patch A C 就能得到B, 这一步叫做对A打上了B的名字为C的补丁。之一步之后,你的文件A就变成了文件B。如果你打完补丁之后想恢复到A怎转载 2013-01-17 11:06:18 · 1098 阅读 · 0 评论 -
Linux内核学习之四库全书 .
关于内核学习我建议不要上来就读内核而是先了解内核的构成和特性,然后通过思考发现疑问这时再去读内核源码。即先了解概貌在读局部细节。而且内核分成好多部分,不要只是按照顺序去读,应该针对某一部分比如内存管理或进程管理横向读几本书,这样可以理解很全面。Linux Kernel 四库全书1. Linux内核设计与实现 Edition 2 2. Linux设备驱动 Edition 3转载 2013-02-21 09:11:51 · 341 阅读 · 0 评论 -
Ubuntu 8.04 Linux系统下面编译更新内核版本
这是我从网上看到的关于linux内核升级的文章,虽然是转载过来的,但是我把别人的东西变成自己的东西,这一点是最重要的。我自己也把ubuntu8.04的内核升级成功,从2.6.24版本的内核升级到2.6.27-8版本的。升级成功后,感到异常兴奋。提示大家,在linux内核的配置安装大概需要2小时以上的时间,但是如果是虚拟机,你大可让它自己在那里编译(就是这一步的时间长一点,需要2小时左右),然后转到转载 2013-02-21 10:13:29 · 579 阅读 · 0 评论 -
zImage内核镜像解压过程详解
在华清远见教学过程中,发现很多学员对内核镜像解压过程比较感兴趣,但网上相关的文章往往不能把关键问题讲清楚,所以写了这篇文章。 内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是如何解压的过程,就不是那么好理解了。本文将结合部分关键代码,讲解z转载 2013-02-21 11:19:30 · 439 阅读 · 0 评论 -
RK2918编译步骤 .
原帖作者: * E-mail:conowen@hotmail.com * http://blog.csdn.net/conowen转载 2013-02-23 11:31:19 · 928 阅读 · 0 评论 -
RKAndroidTool工具的各项image详解(RK2918版本) .
原帖作者: * E-mail:conowen@hotmail.com转载 2013-02-23 11:18:53 · 1095 阅读 · 0 评论 -
Android研究-linux内核启动到android系统 .
很多人阅读代码,总喜欢从头开始,这样觉得很安全,有依靠,无论如何总是能知道“头”,有头就能找到任何需要的部分。Android生在linux内核基础上,linux内核启动的最后一步,一定是启动的android的进程,下面看收集到的文章。1. linux内核启动过程引用地址:http://blog.csdn.net/ayangke/article/details/6888699转载 2013-02-25 11:46:17 · 510 阅读 · 0 评论 -
关于__init、__initdata和__exit、__exitdata的学习笔记
关于__init、__initdata和__exit、__exitdata的学习笔记 原文地址:http://blog.chinaunix.net/uid/20543672.html 作者:tekkamanninja由于4年前对于C语言和Linux的知识贫乏,所以当时对于模块中的函数定义没有细看。这次在温习《LDD3》的时候,重新看了一下关于__init、_转载 2013-02-28 10:55:10 · 327 阅读 · 0 评论 -
Linux内核参数
原文地址:http://blog.chinaunix.net/uid-20321537-id-1966919.htmlLinux内核参数是在Linux内核中由宏__setup定义的一系列参数。内核参数包括启动参数和内核模块参数,完整的内核参数列表可以参见Documents/kernel-parameters.txt。一 关于__setup宏和参数的定义__setup转载 2013-02-28 11:20:22 · 670 阅读 · 0 评论 -
container_of
问题:如何通过结构中的某个变量获取结构本身的指针???关于container_of见kernel.h中:/*** container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: the t转载 2013-12-05 21:01:03 · 397 阅读 · 0 评论