科创园

科创园地,分享技术知识,为科技助力发展,贡献一己之力。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年2月23日

摘要: struct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化为THIS_MODULES loff_t (*llseek) (struct file *, loff_t, int); // llseek用来修改文件当前的读写位置,返回新位置 // loff_t为一个"长偏移量"。当此函数指针为空,seek调用将会以不可预期的方式修改file结构中的位置计数器。 ssize_t (*read) (struct file *, char __user *, size_t, loff 阅读全文

posted @ 2012-02-23 15:28 科创园 阅读(1588) 评论(0) 推荐(0) 编辑

摘要: linux设备驱动分3类:字符设备驱动、块设备驱动、网络设备驱动。废话少说:直接贴图展示:1、字符设备结构体描述:cdev struct cdev{ struct kobject kobj;/*内嵌的kobject对象*/ strcut module *owner;/*所属模块*/ struct file_operations *ops;/*文件操作结构体*/ struct list_head list; dev_t dev;/*设备号,dev_t实质是一个32位整,12位为主设备号,20位为次设备号, 提取主次设备号的方法:MAJOR(d... 阅读全文

posted @ 2012-02-23 15:20 科创园 阅读(4361) 评论(2) 推荐(0) 编辑

摘要: 入门学习linux设备驱动开发,首先要熟悉linux操作系统的启动流程以及linux内核组成,以及在linux下编程的命令(这部分内容可以参考linux基础篇),嵌入式linux系统由三个部分:bootloader,bzImage,文件系统。 从操作系统的角度来看,bootloader的最终目标是引导加载内核镜像,分为stage1,stage2,stage1完成基本硬件初始化、为stage2准备内存空间、复制stage2到内存空间、设置堆栈指针、跳转到stage2;在stage2中完成初始化本阶段用到的硬件设备、检测系统的内存映射、加载内核映像和根文件系统、设置内核启动参数、调用内核。 ... 阅读全文

posted @ 2012-02-23 14:24 科创园 阅读(1254) 评论(0) 推荐(0) 编辑

摘要: 先对上面两小节内容回归一下,第一节中总结了windows的运行原理,事件驱动消息的机制,如何设计窗口应用程序,主要是为了后面学习WFC作基础,重要的是理解原理以及msdn手册的重要性。第二节主要介绍了C++的一些基本特性,比如面向对象的思想、结构体、类、构造函数、方法、虚方法、继承与覆盖、访问控制等知识,其中关于指针与引用的关系这里就不去介绍了。下面结合程序来分析C++运行的原理Animal.h头文件内容#ifndef Animal_C#define Animal_C Animal_C 通过宏定义解决类redefine的错误,这里宏定义是在编译预处理阶段执行class Animal{publi 阅读全文

posted @ 2012-02-23 10:50 科创园 阅读(2943) 评论(0) 推荐(0) 编辑