自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

coding__madman的博客

不积跬步无以至千里---厚积薄发!

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 网卡驱动设计---架构分析加回环网卡驱动设计(网卡驱动上)

网卡驱动架构分析:1. Linux网络子系统2. 重要数据结构总结一下三个重要的数据结构:    2.1. net_device    2.2. net_device_ops    2.3. sk_buff3. 网卡驱动架构分析CS8900.c //早期2410使用的网卡芯片 3.1. 网卡初始化首先找到驱动程

2016-05-29 21:24:55 4431 2

原创 应用程序运行***buffer overflow detected*** terminated Aborted异常退出问题

今天运行程序,改了一段代码!然后每次一运行程序就异常退出,打印如下信息:*** buffer overflow detected ***: ./shm_costomer terminatedAborted根据单词的意思是缓存越界的问题!自己反复检查了自己修改的那部分代码,发现不存在这种情况!然后直接把自己这段代码屏蔽掉重新编译再运行,发现程序还是挂掉了!但是这个程序之前几个月都运行

2016-05-26 15:03:07 32499 1

原创 串口驱动程序设计详解---串口打开、发送、接收(下)

上一篇博客分析了串口驱动初始化部分,下面逐步分析串口驱动中的打开串口,数据发送和接收!初始化主要工作流程:先来分析串口打开操作流程,还是先上图:这里分析还是离不开上篇博客中的两张重要的图:串口操作重要的数据结构:由上一篇串口驱动分析可知在samsung.c中模块初始化中有一项工作是注册一个串口驱动,跳到这个函数中uar

2016-05-25 23:10:48 22382 4

转载 select、poll、epoll之间的区别总结(转)

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用

2016-05-24 10:16:53 830

原创 串口驱动程序设计详解---串口初始化(上)

TTY驱动程序架构:1. TTY概念解析    1.1 /dev/ttySCA0    1.2 /dev/tty1-n    1.3 /dev/console      在linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备。      . 串口终端(/dev/ttyS*)      串口终端是使用计算机串口连接的终端设备。Li

2016-05-19 23:51:13 26192 3

原创 总线设备驱动模型

总线驱动设备模型:1. 总线设备驱动模型概述        随着技术的不断进步,系统的拓扑结构也越来越复杂,对热插拔,跨平台移植性的要求也越来越高,2.4内核已经难以满足这些需求,为适应这宗形势的需求,从linux2.6内核开始提供了全新的设备模型2. 总线    2.1 描述结构    2.2 注册    2.3 注销void  bus_unr

2016-05-17 21:52:45 5448 1

原创 Linux按键驱动程序设计详解---从简单到不简单

混杂设备驱动模型:1. 混杂设备描述        在Linux系统中,存在一类字符设备,它们拥有相同的主设备号(10),单次设备号不同,我们称这类设备为混            杂设备(miscdevice).所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查到相应的混杂设备。         混杂设备也是字符设备!     linux中使用struct miscdevi

2016-05-15 21:01:05 15600 10

原创 OK6410字符设备驱动点亮LED

字符设备驱动模型分为三步:第一步:驱动设备初始化 (分配cdev、初始化cdev、注册cdev、硬件初始化)第二步:实现设备操作(读写以及控制设备)第三步: 驱动注销虽然这是一个最简单的驱动,而且之前也曾经写过两遍,时隔大半年,今天回过头来重新整还是一波三折!感谢那些热心无私的同学的帮助!先贴下原理图和相关芯片手册上的一些要用到的东西!

2016-05-11 23:23:13 1828

原创 ioctl---字符设备的控制技术

字符设备的控制1. 字符设备控制理论    1.1 作用          大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力。比如:改变波特率    1.2 应用程序接口          在用户空间,使用ioctl系统调用来控制设备,原型如下:          int  ioctl(int fd, unsigned long cmd, ...) 

2016-05-09 22:59:14 3696

原创 字符设备驱动模型

字符驱动编程模型:1. 设备描述结构cdev    1.1  结构定义    1.2  设备号    1.3  设备操作集在Linux系统中,设备的类型非常繁多,如:字符设备,块设备,网络接口设备,USB设备,PCI设备,平台设备,混杂设备……,而设备类型不同,也意味着其对应的驱动程序模型不同,这样就导致了我们需要去掌握众多的驱动程序模型。那么能不能从这些众多的驱动模型中提炼出

2016-05-08 21:48:23 5207

原创 Linux应用程序访问字符设备驱动详细过程解析

在linux下对上面的文件进行静态编译(考虑到前面开发板上移植的某些库还没有添加进去)生成read-mem目标文件,然后进行反汇编并将反汇编生成的文件导入到当前目录下的dump上去。这里红箭头指向的两行是比较重要的两行,将3传给r7,然后使用了SVC系统调用指令,这时PC指针会从用户空间进入到内核空间(通过一个固定的入口),第二步会取r7寄存器里面的值3, 然后根据这个值查一个表确定要调用那个系统调用(即对于3的系统调用内核代码)。系统就是通过固定入口进入内核空间,然后取出系统调用编号,在利用编号查找上

2016-05-08 18:52:52 10135 2

原创 printk函数日志级别的设置

下面执行cat /proc/sys/kernel/printk 打印出的四个数字分别代表:控制台日志级别、默认的消息日志级别、最低的控制台日志级别和默认的控制台日志级别只有当printk的日志级别小于console_loglevel时,消息才能显示出来。以下为查看和设置printk函数的日志级别

2016-05-08 13:54:07 1036

原创 Linux内核链表深度分析

链表简介:链表是哟中常用的数据结构,它通过指针将一系列数据节点连接成一条数据链。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或者删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。1. 链表对比传统链表和内核链表传统链表:一般指的是单向链表struct List{struct li

2016-05-07 16:15:04 12953 2

原创 linux内核模块开发基础

1. 什么是内核模块    内核模块具有以下两个特点:1. 模块本身并不被编译进内核文件(zImage或bzImage),可以根据需求,在内核运行期间动态的安装或卸载。2. 为什么需要内核模块 原因:Linux内核的整体结构非常庞大,其包含的组件也非常多,如何使用这些组件呢,方法1:把所有的组件都编译键内核,即:zImage或bzImage,但这样会导致一个问题:占用内存过多。然后

2016-05-06 20:35:50 3440

原创 linux进程管理子系统简要分析

Linux进程管理:进程与程序:程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。进程:是一个执行中的程序,它是动态的实体进程四要素:1. 有一段程序供其执行,这段程序不一定是某个进程所专有,可以与其他进程共用2. 有进程专用的内核空间堆栈3. 在内核中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结构,进程才能

2016-05-05 19:21:39 2053

原创 Linux内核内存管子系统分析

还是那张熟悉的老图:linux内核子系统简介(由七个部分组成)Linux内存管理模型:1. 内存管子系统职能:    1>  管理虚拟地址与物理地址的映射    2>  管理物理内存的分配2. 地址映射管理    1> 虚拟地址空间分布:      linux采用的是一种虚拟地址的管理方式,对于一个32位的处理器对于的内存空间为4G,其中0到3G

2016-05-05 18:03:13 715

原创 嵌入式Linux根文件系统制作和挂载

嵌入式Linux系统由三部分组成: uboot、kernel、根文件系统, 还是这张老图这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统那么什么是根呢?哈哈 其实根表示的就是第一个的意思下面贴张图看看整个根文件系统制作的步骤:第一步创建目录,这里是在我自己的一个目录下建立一个名为rootfs的目录:第二步 :创建设备文件(比如操作串口,其

2016-05-02 20:33:53 20514 2

原创 嵌入式linux内核制作

1. Linux体系结构从整体上来分,linux可以分为User Space和Kernel Space构成,即用户空间和内核空间用户空间:应用程序 C库 系统配置文件等内核空间:在内存中,用户一般不能直接接触到(系统调用接口,体系结构相关的一些代码等等)这样划分的的好处:其实内核空间与用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户空间到

2016-05-01 23:58:06 6487 1

can总线资料

can总线相关文档以及可以提供参考的can开源源码

2016-06-22

空空如也

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

TA关注的人

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