自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (6)
  • 收藏
  • 关注

原创 自己调试通过的一个通用makefile模板

这个是从本人的QQ空间转过来的模板文件夹的下载地址:http://download.csdn.net/detail/longyue0917/6725889  这个模板是之前公司的一个牛人写的,我这个连门都没入的菜鸟因为没有项目需求,所以一直没有花时间去研究。可惜好景不长,酱油没打几天,就需要我来单挑linux了,网上找了很多模板,都不尽如人意,没办法,只好硬着头

2013-12-25 08:38:14 7305

原创 Linux 2.6.24 内核注解 -- 第二季

http://www.kuaipan.cn/file/id_80979117285064082.htm 增加了mtd层的注解,顺带引出了block文件夹中的注解若代码和头文件中注解有不一致的,以头文件的注解为准,因为都是一边看一边加注的,经常会出现第一次理解不对的情况,而后的修改,再追溯到最初的位置,工作量不小,所有都统一更新在头文件处读代码建议用SI,方便关联 第三季

2013-08-08 13:47:49 1152

原创 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 1159 1

原创 MiniGUI3移植到Hi3515全过程

DOC文档下载地址:http://download.csdn.net/detail/longyue0917/4510567 经过3周奋战,终于在VGA上显示出了HelloWorld,其中过程,真是一把辛酸泪,现记录如下,也让后来人少走弯路。 一、     安装包的下载http://www.minigui.com/zhcn/download/各个库说明如下(个人整理,仅供

2012-08-19 11:52:55 9220 2

转载 linux中Framebuffer的原理及实现机制

http://blog.csdn.net/ce123/article/details/6705582*一、FrameBuffer的原理*         FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。         Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Lin

2012-07-24 12:23:19 1354

原创 arch\arm\mm\mmu.c

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);#define DEFINE_PER_CPU(type,

2012-04-08 16:32:29 2480 1

原创 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 4948

原创 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 4807

原创 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 3250

原创 Linux内存分析(1) -- 高端内存初试化

第一节 Start_kernel之前要分析内存,先从uboot开始,关于uboot的TAG属性传递,可以参考第九章第一节。随后进入内核启动的汇编代码部分(arch\arm\kernel\head.s),在检查完CPU型号和机器型号之后,便调用__create_page_tables函数进行一级页表的初始化设置。具体的代码分析见head.s中对应的代码。这里需要说明的是

2012-03-26 22:18:00 3898

原创 OFN鼠标驱动(十一) -- I2C驱动的总结

在分析完drivers\base\文件夹下的内容之后,我们对驱动的基本操作已经有了一个大概的印象,现在,我们再重新复习一遍IIC设备的注册过程,用一个实例来将这条线融会贯通,同样的,用我们熟悉的ds1337为例来说说明,这一章的内容就比较散了,将会跳转在几大文件之间,所以要看明白这一章的内容,那么前面的东西就得先消化消化了。 其实驱动的注册过程,在网上以probe函数的调用过程为关键字做搜

2011-12-22 22:49:22 871

原创 drivers\base文件分析笔记的WORD原始文件打包下载地址

资源地址:http://download.csdn.net/detail/longyue0917/3953384

2011-12-22 00:32:55 680

原创 drivers\base\init.c

前面分析的9个文件,都是为这个文件服务的,这个文件负责调用驱动的初试化代码 //驱动初始化void       __init     driver_init(void){       //这些初始化主要是几个子系统的注册       devices_init();               //设备初始化(core.c)       buses_init();

2011-12-22 00:25:45 754

原创 drivers\base\firmware.c

小结:1、  声明firmware_subsys子系统2、  这个文件也就三个函数,注册,反注册,初始化(直接调用注册函数)   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表:   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

2011-12-22 00:25:02 737

原创 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 1202

原创 drivers\base\platform.c

小结: 1、通过文件名可以看出,这个文件是和平台有关的函数2、声明了结构体struct       platform_object,作为platform_device平台设备的载体    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: @@@@@ 平台资源的操作模块struct resource

2011-12-22 00:23:31 2824

原创 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 990

原创 drivers\base\driver.c

小结: 本文件主要是负责驱动的操作  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@函数列表: int   driver_for_each_device(struct device_driver * drv, struct device * start,                        void * data,

2011-12-18 10:23:14 1042

原创 drivers\base\dd.c

小结: 文件的一开始就指出了这个文件的作用:The core device/driver interactions 在阅读代码之前,建议先看看http://bbs.chinaunix.net/thread-2010492-1-1.html首先要明确一个概念:一个设备只能对应一个驱动,一个驱动可以挂上很多设备,所以驱动有一个链表,上面挂着支持的设备: 这个文件的代

2011-12-18 10:22:36 1628

原创 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 1585

原创 drivers\base\sys.c

小结: 从sysdev_shutdown函数的实现,我们可以大概的分析一下驱动的层次模式如下:1、最顶层的是system_subsys,所有的cls都挂载在他的链表中2、每一个cls有一个驱动链表,这个驱动链表又可以按sysdev进行一个分组,但是分组只是为了管理方便,驱动还是挂载在cls下的。3、分组虽然只是管理,但是驱动的一些函数执行,比如shutdown,resume等,

2011-12-18 10:15:26 1909

原创 drivers\base\core.c

文件小结:读完这个文件的代码,其实这个文件实现的最关键的代码就是device_add函数,这个函数之前的所有函数都是为这个函数服务的。而这个函数之后的函数则很简单,基本和这个函数互相映衬了。而device_add函数在后面分析平台设备的时候,平台设备的添加platform_device_add函数则主要调用了该函数 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

2011-12-18 10:14:23 1509

原创 \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 1433

原创 顿悟:哈希链表

之前在分析lib里面的代码时,有接触过一次哈希链表,只是当时对他的描述有点摸不着头脑。今天在分析driver/base/core.c文件,看到在device_del函数中,dev将自己从父设备链表中删除,突然发现,这不正是一个哈希链表吗。 哈希链表,next指针是一个典型

2011-09-14 14:14:58 950

原创 kobject之kobject_uevent.c文件分析

struct      kset_uevent_ops {       int                 (*filter)(struct kset *kset, struct kobject *kobj);          //过滤函数,kset中的kobj是否需要

2011-09-11 17:36:40 4727

原创 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 1621

原创 OFN鼠标驱动(十) --input.c文件分析(上)

在分析完TS的代码之后,我尝试改了个TS驱动,结果发现驱动并没有调用probe函数,带着这个疑问,我们继续来分析input.c文件,这个文件和TS驱动的关联是INPUT设备的注册。 同样的,为了方便理解,我们打乱了程序的顺序。 @@@@@@@@@@@@@@@@@@

2011-09-07 18:18:13 1583

原创 OFN鼠标驱动(九) -- tsdev.c的分析

这个文件是将input.c分析了一小半后打断进入的,因为在分析input.c的时候,发现这个文件只不过是一个函数集,类似于i2c-core.c的作用一样,为了避免重蹈分析i2c-core.c的痛苦,所以这里先分析tsdev.c文件。 @@@@@@@@@@@@@@@@@@@

2011-09-01 23:30:42 1649

原创 OFN鼠标驱动(八) -- inputs3c2410_ts.c的分析

通讯的准备工作做完了,下面我们看看鼠标数据是怎么给系统的。和OFN最贴近的设备当然就是TS -- 触摸屏了。于是我们先来看看系统自带的TS的驱动代码:其实这个文件分析完之后,我们基本已经能够完成OFN驱动的移植动作了。 --------------------

2011-08-21 20:53:22 910

原创 OFN鼠标驱动(七) -- I2C部分最后的测试程序

在进入正题之前,我们先对前面的内容做个小结吧:系统启动的时候,会先调用s3c2410_i2c中的平台代码初始化I2C硬件设备,同时这个文件也实现了I2C通讯的物理操作,最关键的是,这个文件中注册了一个适配器。然后进入i2c-dev.c文件,注册I2C总线,也就是/dev/

2011-08-21 12:45:26 1456

原创 OFN鼠标驱动(六) -- drivers\i2c\busses\i2c-s3c2410.c的分析

之前我们分析的都是I2C的一些结构问题,现在我们来看看I2C的具体物理实现。drivers\i2c\busses里面有很多文件,每一个文件都对应着一个平台的I2C物理实现函数,因为我们的平台是S3C2440,所以我们只需要看i2c_s3c2410.c文件就可以了,其他的文件的

2011-08-20 12:34:24 1597

原创 OFN鼠标驱动(五) -- i2c-dev.c文件的分析

分析完i2c-core后,其实还遗留了不少问题,比如algo的挂载,I2C的ioctl命令的响应等,带着这些问题,我们继续分析i2c-dev.c的代码,看看能否找到一些答案 自旋锁和互斥锁:这两个锁很相似,只是自旋锁在等待的时候不会进入睡眠,而会一直占用CPU,这样会使得

2011-08-18 22:33:48 1980

原创 OFN鼠标驱动(四) -- i2c-core.c文件的分析

在IIC驱动(一)中,我们初步分析了需要移植部分的代码,当然还留下了不少未解之谜,为了把这些问题给弄清楚,所以本部分我们分析一下I2C-CORE.C的代码。 分析之前先看一下I2C驱动的结构图:一条I2C线上可以挂很多个I2C设备,每一条I2C线对应一个适配器(A

2011-08-17 23:11:06 1842

原创 STM32学习笔记

以前摸STM32时整理的一份学习笔记,因为图太多了,整理太费时间,所以就把整个笔记压成了PDF,有兴趣的可以到以下地址下载:http://download.csdn.net/source/3524363 第零章 STM32芯片功能概要... 2第一章 STM32库

2011-08-16 19:30:50 1102

原创 OFN鼠标驱动(三) -- I2C驱动的移植(2)

驱动改好之后,RZ到目标板上,insmod, lsmod, rmmod可以看装载的结果. 接下来,就是写一个测试程序看下是否能打开设备了,同样的,也是找了个EEPROM的代码来修改的. #include #include #include #inclu

2011-08-16 19:13:10 869

原创 OFN鼠标驱动(二) -- I2C驱动的移植(1)

在分析完DS1337的驱动之后,我们对I2C的驱动的移植有了个简单的认识,于是仿照DS1337的驱动,我们写了OFN的I2C部分: #include #include #include #include #include #include   /* g

2011-08-16 18:49:46 1259

原创 OFN鼠标驱动(一) --- I2C驱动的分析(DS1337)

本文以Linux自带的驱动DS1337为例,对IIC驱动进行分析。DS1337所在的位置为Linux\drivers\i2c\chips\ds1337.c。 IIC通信协议,对于我们这些MCU出身的人来说,应该已经很熟悉了,这里就不再介绍。而DS1337为一个时钟IC

2011-08-16 18:41:15 2541

双三次插值 和 双线性插值缩放代码

图像缩放的代码,正文是双三次插值,用宏屏蔽掉的部分是双线性插值, 代码均来源于网络,我只是做了一些整理工作

2017-12-07

ffmpeg1.2 pcm编码mp3,h264+mp4合并分解配置

一个ffmpeg1.2的cfg配置,将无用的功能删除,只保留需要的功能,裁剪后的体积2.2M 保留的功能: 1、PCM压缩MP3 2、MP3 + H264合并为MP4 3、MP4分解为MP3和H264 4、MP3解码为PCM

2015-07-01

多目录makefile

详细的文字说明在我的QQ空间中: http://user.qzone.qq.com/4409752/blog/1387209065

2013-12-16

MiniGUI3移植到Hi3515全过程

minigui3移植到hi3515的全过程,个人原创

2012-08-19

linux 2.6.24 drivers\base文件夹代码分析

linux版本为2.6.24 对drivers\base文件夹下的部分代码所做的阅读及分析笔记

2011-12-22

STM32学习笔记(SD/FATFS/GUI/UCOS)

第零章 STM32芯片功能概要 2 第一章 STM32库文件 7 第二章 STM32片内设备具体功能 7 第三章 FLASH的操作(SST25VF080B) 9 第四章 TFT驱动 18 第五章 SD卡驱动 19 第六章 FAT文件系统 30 第七章 FATFS的分析 41 第八章 GUI 83 第九章 UCOS_II 114 第十章 Cortex-M3权威指南读书笔记 232 第一节 Cortex-M3概览 232 第二节 Cortex-M3基础 234 第三节 指令集 238 第四节 存储器系统 243 第五节 CM3的整体描述 246 第六节 异常 249 第七节 CM3的低层编程 251 第八节 MPU 252 第十一章 项目笔记 255 第十二章 后记 255

2011-08-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除