- 博客(37)
- 资源 (6)
- 收藏
- 关注
原创 自己调试通过的一个通用makefile模板
这个是从本人的QQ空间转过来的模板文件夹的下载地址:http://download.youkuaiyun.com/detail/longyue0917/6725889 这个模板是之前公司的一个牛人写的,我这个连门都没入的菜鸟因为没有项目需求,所以一直没有花时间去研究。可惜好景不长,酱油没打几天,就需要我来单挑linux了,网上找了很多模板,都不尽如人意,没办法,只好硬着头
2013-12-25 08:38:14
7398
原创 Linux 2.6.24 内核注解 -- 第二季
http://www.kuaipan.cn/file/id_80979117285064082.htm 增加了mtd层的注解,顺带引出了block文件夹中的注解若代码和头文件中注解有不一致的,以头文件的注解为准,因为都是一边看一边加注的,经常会出现第一次理解不对的情况,而后的修改,再追溯到最初的位置,工作量不小,所有都统一更新在头文件处读代码建议用SI,方便关联 第三季
2013-08-08 13:47:49
1210
原创 linux内核注解 -- 第一季
内核版本为2.6.24http://www.kuaipan.cn/file/id_80979117285062971.htm注解的部分有1、start_kernel之前的代码,2、start_kernel的代码及其所应用到的知识点3、drivers/base文件夹中的内容第二季预告: mtd
2013-03-27 23:39:22
1206
原创 MiniGUI3移植到Hi3515全过程
DOC文档下载地址:http://download.youkuaiyun.com/detail/longyue0917/4510567 经过3周奋战,终于在VGA上显示出了HelloWorld,其中过程,真是一把辛酸泪,现记录如下,也让后来人少走弯路。 一、 安装包的下载http://www.minigui.com/zhcn/download/各个库说明如下(个人整理,仅供
2012-08-19 11:52:55
9449
1
转载 linux中Framebuffer的原理及实现机制
http://blog.youkuaiyun.com/ce123/article/details/6705582*一、FrameBuffer的原理* FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Lin
2012-07-24 12:23:19
1424
原创 arch\arm\mm\mmu.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);#define DEFINE_PER_CPU(type,
2012-04-08 16:32:29
2586
原创 Linux内存分析(4) -- paging_init (setup_arch部分)
有了2和3的基础,我们来看一下setup_arch中的内存初始化函数:paging_init() void __init paging_init( struct meminfo *mi, //内存的描述信息 struct machine_desc *mdesc)
2012-04-08 16:11:01
5038
原创 Linux内存分析(3) -- create_mapping
在start_kernel对内存的初始化中,会调用arch_setup对平台进行初始化。在该函数中,为创建一级页表,有这样的调用顺序:bootmem_init() --> bootmem_init_node() ->map_memory_bank() --> create_mapping()。 create_mapping函数的开始是一系列的检查,有意义的代码是最后的这个循环:
2012-04-03 22:48:42
4910
原创 Linux内存分析(2) -- mm\bootmem.c
我们看下boot传入的命令为:"noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rootfstype=cramfs mem=64M" 进入setup_arch函数后,首先遇到的和内存管理有关的,是parse_cmdline函数。在arch\arm\kernel\setup.c中,mem命令参数被预执行。(关于其他
2012-04-02 00:05:38
3321
原创 Linux内存分析(1) -- 高端内存初试化
第一节 Start_kernel之前要分析内存,先从uboot开始,关于uboot的TAG属性传递,可以参考第九章第一节。随后进入内核启动的汇编代码部分(arch\arm\kernel\head.s),在检查完CPU型号和机器型号之后,便调用__create_page_tables函数进行一级页表的初始化设置。具体的代码分析见head.s中对应的代码。这里需要说明的是
2012-03-26 22:18:00
3959
原创 OFN鼠标驱动(十一) -- I2C驱动的总结
在分析完drivers\base\文件夹下的内容之后,我们对驱动的基本操作已经有了一个大概的印象,现在,我们再重新复习一遍IIC设备的注册过程,用一个实例来将这条线融会贯通,同样的,用我们熟悉的ds1337为例来说说明,这一章的内容就比较散了,将会跳转在几大文件之间,所以要看明白这一章的内容,那么前面的东西就得先消化消化了。 其实驱动的注册过程,在网上以probe函数的调用过程为关键字做搜
2011-12-22 22:49:22
910
原创 drivers\base文件分析笔记的WORD原始文件打包下载地址
资源地址:http://download.youkuaiyun.com/detail/longyue0917/3953384
2011-12-22 00:32:55
706
原创 drivers\base\init.c
前面分析的9个文件,都是为这个文件服务的,这个文件负责调用驱动的初试化代码 //驱动初始化void __init driver_init(void){ //这些初始化主要是几个子系统的注册 devices_init(); //设备初始化(core.c) buses_init();
2011-12-22 00:25:45
795
原创 drivers\base\firmware.c
小结:1、 声明firmware_subsys子系统2、 这个文件也就三个函数,注册,反注册,初始化(直接调用注册函数) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2011-12-22 00:25:02
773
原创 drivers\base\cpu.c
小结: 1、struct sys_device结构体是struct sysdev_class结构体的容器 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: int __devinit register_cpu(struct cpu *cpu, int num)CPU注册 struct
2011-12-22 00:24:10
1253
原创 drivers\base\platform.c
小结: 1、通过文件名可以看出,这个文件是和平台有关的函数2、声明了结构体struct platform_object,作为platform_device平台设备的载体 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: @@@@@ 平台资源的操作模块struct resource
2011-12-22 00:23:31
2883
原创 drivers\base\class.c
小结: 这个文件中,声明了类子系统class_subsys,作为所有类kobject的kset声明了class_obj_subsys子系统,作为所有类设备kobject的kset类设备class_device的父类是class,或则说,class是一个容器,里面包含了很多class_device @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2011-12-18 10:24:11
1020
原创 drivers\base\driver.c
小结: 本文件主要是负责驱动的操作 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: int driver_for_each_device(struct device_driver * drv, struct device * start, void * data,
2011-12-18 10:23:14
1095
原创 drivers\base\dd.c
小结: 文件的一开始就指出了这个文件的作用:The core device/driver interactions 在阅读代码之前,建议先看看http://bbs.chinaunix.net/thread-2010492-1-1.html首先要明确一个概念:一个设备只能对应一个驱动,一个驱动可以挂上很多设备,所以驱动有一个链表,上面挂着支持的设备: 这个文件的代
2011-12-18 10:22:36
1710
原创 drivers\base\bus.c
小结: 1、热插拔模块:这个模块的函数主要实现的是驱动和设备的绑定,解除,以及驱动的自动探测等功能 2、看本代码前最好先看一次/lib/klist.c,否则代码中关于klist和node的操作会把你绕晕 3、bus的模型:Ø 系统一启动就会自动执行buses_init来注册总线子系统(bus_subsys),这个子系统设置了总线的过滤,show,st
2011-12-18 10:16:44
1640
原创 drivers\base\sys.c
小结: 从sysdev_shutdown函数的实现,我们可以大概的分析一下驱动的层次模式如下:1、最顶层的是system_subsys,所有的cls都挂载在他的链表中2、每一个cls有一个驱动链表,这个驱动链表又可以按sysdev进行一个分组,但是分组只是为了管理方便,驱动还是挂载在cls下的。3、分组虽然只是管理,但是驱动的一些函数执行,比如shutdown,resume等,
2011-12-18 10:15:26
1944
原创 drivers\base\core.c
文件小结:读完这个文件的代码,其实这个文件实现的最关键的代码就是device_add函数,这个函数之前的所有函数都是为这个函数服务的。而这个函数之后的函数则很简单,基本和这个函数互相映衬了。而device_add函数在后面分析平台设备的时候,平台设备的添加platform_device_add函数则主要调用了该函数 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2011-12-18 10:14:23
1575
原创 \lib\klist.c
小结: 下面这个图应该能说明全部问题 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: void klist_init初始化klist,主要操作是挂空k->k_list,初始化k_lock锁,挂上get和put函数 void klist_add_head(struct klist_node
2011-12-11 15:25:30
1493
原创 顿悟:哈希链表
之前在分析lib里面的代码时,有接触过一次哈希链表,只是当时对他的描述有点摸不着头脑。今天在分析driver/base/core.c文件,看到在device_del函数中,dev将自己从父设备链表中删除,突然发现,这不正是一个哈希链表吗。 哈希链表,next指针是一个典型
2011-09-14 14:14:58
971
原创 kobject之kobject_uevent.c文件分析
struct kset_uevent_ops { int (*filter)(struct kset *kset, struct kobject *kobj); //过滤函数,kset中的kobj是否需要
2011-09-11 17:36:40
4833
原创 lib\kobject.c文件分析
本文件的函数列表: char *kobject_get_path(struct kobject *kobj, gfp_t gfp_mask)获取指定kobject的完整路径名 void kobject_init(struct kobject * kobj)
2011-09-10 20:22:34
1664
原创 OFN鼠标驱动(十) --input.c文件分析(上)
在分析完TS的代码之后,我尝试改了个TS驱动,结果发现驱动并没有调用probe函数,带着这个疑问,我们继续来分析input.c文件,这个文件和TS驱动的关联是INPUT设备的注册。 同样的,为了方便理解,我们打乱了程序的顺序。 @@@@@@@@@@@@@@@@@@
2011-09-07 18:18:13
1626
原创 OFN鼠标驱动(九) -- tsdev.c的分析
这个文件是将input.c分析了一小半后打断进入的,因为在分析input.c的时候,发现这个文件只不过是一个函数集,类似于i2c-core.c的作用一样,为了避免重蹈分析i2c-core.c的痛苦,所以这里先分析tsdev.c文件。 @@@@@@@@@@@@@@@@@@@
2011-09-01 23:30:42
1695
原创 OFN鼠标驱动(八) -- inputs3c2410_ts.c的分析
通讯的准备工作做完了,下面我们看看鼠标数据是怎么给系统的。和OFN最贴近的设备当然就是TS -- 触摸屏了。于是我们先来看看系统自带的TS的驱动代码:其实这个文件分析完之后,我们基本已经能够完成OFN驱动的移植动作了。 --------------------
2011-08-21 20:53:22
942
原创 OFN鼠标驱动(七) -- I2C部分最后的测试程序
在进入正题之前,我们先对前面的内容做个小结吧:系统启动的时候,会先调用s3c2410_i2c中的平台代码初始化I2C硬件设备,同时这个文件也实现了I2C通讯的物理操作,最关键的是,这个文件中注册了一个适配器。然后进入i2c-dev.c文件,注册I2C总线,也就是/dev/
2011-08-21 12:45:26
1501
原创 OFN鼠标驱动(六) -- drivers\i2c\busses\i2c-s3c2410.c的分析
之前我们分析的都是I2C的一些结构问题,现在我们来看看I2C的具体物理实现。drivers\i2c\busses里面有很多文件,每一个文件都对应着一个平台的I2C物理实现函数,因为我们的平台是S3C2440,所以我们只需要看i2c_s3c2410.c文件就可以了,其他的文件的
2011-08-20 12:34:24
1646
原创 OFN鼠标驱动(五) -- i2c-dev.c文件的分析
分析完i2c-core后,其实还遗留了不少问题,比如algo的挂载,I2C的ioctl命令的响应等,带着这些问题,我们继续分析i2c-dev.c的代码,看看能否找到一些答案 自旋锁和互斥锁:这两个锁很相似,只是自旋锁在等待的时候不会进入睡眠,而会一直占用CPU,这样会使得
2011-08-18 22:33:48
2036
原创 OFN鼠标驱动(四) -- i2c-core.c文件的分析
在IIC驱动(一)中,我们初步分析了需要移植部分的代码,当然还留下了不少未解之谜,为了把这些问题给弄清楚,所以本部分我们分析一下I2C-CORE.C的代码。 分析之前先看一下I2C驱动的结构图:一条I2C线上可以挂很多个I2C设备,每一条I2C线对应一个适配器(A
2011-08-17 23:11:06
1903
原创 STM32学习笔记
以前摸STM32时整理的一份学习笔记,因为图太多了,整理太费时间,所以就把整个笔记压成了PDF,有兴趣的可以到以下地址下载:http://download.youkuaiyun.com/source/3524363 第零章 STM32芯片功能概要... 2第一章 STM32库
2011-08-16 19:30:50
1137
原创 OFN鼠标驱动(三) -- I2C驱动的移植(2)
驱动改好之后,RZ到目标板上,insmod, lsmod, rmmod可以看装载的结果. 接下来,就是写一个测试程序看下是否能打开设备了,同样的,也是找了个EEPROM的代码来修改的. #include #include #include #inclu
2011-08-16 19:13:10
899
原创 OFN鼠标驱动(二) -- I2C驱动的移植(1)
在分析完DS1337的驱动之后,我们对I2C的驱动的移植有了个简单的认识,于是仿照DS1337的驱动,我们写了OFN的I2C部分: #include #include #include #include #include #include /* g
2011-08-16 18:49:46
1294
原创 OFN鼠标驱动(一) --- I2C驱动的分析(DS1337)
本文以Linux自带的驱动DS1337为例,对IIC驱动进行分析。DS1337所在的位置为Linux\drivers\i2c\chips\ds1337.c。 IIC通信协议,对于我们这些MCU出身的人来说,应该已经很熟悉了,这里就不再介绍。而DS1337为一个时钟IC
2011-08-16 18:41:15
2643
ffmpeg1.2 pcm编码mp3,h264+mp4合并分解配置
2015-07-01
STM32学习笔记(SD/FATFS/GUI/UCOS)
2011-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人