- 博客(30)
- 收藏
- 关注
原创 linux网络设备驱动(二)
三.网络设备驱动分析我们先看看dm9000.c驱动的模块加载函数static struct platform_driver dm9000_driver = { .driver = { .name = "dm9000", //驱动名 .owner = THIS_MODULE, .pm =
2016-01-10 10:53:42
658
原创 Linux网络设备驱动(一)
一.网络设备驱动基础1.以太网基础理论以太网是局域网的一种,它使用载波监听多路访问及冲突检测技术(CSMA/CD),并以10M/S的速率运行在多种类型的电缆上,常用的网卡芯片有DM9000、DM9161、CS8900芯片。以太网的拓扑结构有总线型和星型,以太网的工作模式有半双工和全双工。目前双绞线是以太网最普通的传输介质,它多用于从主机到集线器或交换机的连接,光纤主要用于交换机间的级联和交换机到路由
2016-01-10 10:50:55
808
原创 linux input子系统驱动(三)
linux input子系统分析--子系统核心.事件处理层.事件传递过程一. 输入子系统核心分析。 1.输入子系统核心对应与/drivers/input/input.c文件,这个也是作为一个模块注册到内核的。所以首先分析模块初始化函数。[cpp] view plaincopystatic int __init input_init(void) { int err;
2016-01-10 10:30:52
416
原创 linux input子系统驱动(二)
linux input子系统分析--主要函数 一. 各种注册函数 因为分析一所讲的每种数据结构都代表一类对象,所以每种数据结构都会对应一个注册函数,他们都定义在子系统核心的input.c文件中。主要有三个注册函数 input_register_device 向内核注册一个input设备 input_register_handle 向内核注册一个handle结构
2016-01-10 10:24:22
328
原创 linux input子系统驱动(一)
linux input子系统分析--概述与数据结构 Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。下面分析input输入子系统的结构,以及功能实现。一. Input子系统结构与功能实现 1. Input子
2016-01-10 10:13:56
325
原创 Linux内核学习笔记:内核同步
linux内核中运行的程序,时刻都要防止并发引起的竞态。这将会导致数据结构被破话,严重的时候会引起内核崩溃。所以内核同步技术对内核开发的驱动程序来说非常重要。不懂内核同步技术的人,是写不出安全健壮的内核驱动程序来的。在学习内核同步技术之前需要掌握一下几个概念。 1 并行,并发与竞态:在SMP运行的linux内核是真正的并行运行程序,多个CPU可以同时访问同一数据结构,而在单处理器
2016-01-06 15:23:12
331
原创 Linux下的RTC子系统设备驱动
实时时钟的作用主要是为操作系统提供一个可靠的时间,并在断电下,RTC时钟也可以通过电池供电一直运行下去。实时时钟驱动也有一个子系统,叫做RTC子系统,其源代码目录是/driver/rtc/,在这个目录下有一个rtc核心代码区,主要是Rtc-dev.c、Rtc-sysfs.c和Rtc-proc.c三个文件,其中Rtc-dev.c主要是增加一个字符设备的作用,例如用户层的ioctl命令就是通过访问该文件
2016-01-06 15:12:23
557
原创 U-BOOT 移植到板卡
U-BOOT 移植到友善之臂mini2440开发环境:ubuntu 10.10编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3一. 在denx官网下载源代码,我所用版本为u-boot-2010.03。 二. 主机编译环境为友善之臂提供的arm-linux-gcc.所参考板子为smdk2410。三. 启动第一阶段移植过程1.首先测试
2016-01-06 14:51:07
466
原创 U-BOOT 引导内核
U-BOOT 引导内核开发环境:mini2440 256M NandFlashu-boot版本: u-boot 2010.03一. u-boot引导的内核不是普通编译的内核,它引导的加了64k数据头得内核镜像,其中包括u-boot对内核的控制信息。这个镜像需要 mkimage这个工具(在u-boot代码的tools目录中)制作。新下载的源码是不能够用mkimage的,必须编译后才能够
2016-01-06 14:48:46
422
原创 U-BOOT start.S分析
U-BOOT start.S分析一.存储八个异常跳转表,以及七个异常地址,一个内存标志,deadbeef 表示以上内存禁止操作[plain] view plaincopyprint?.globl _start _start: b start_code ldr pc, _undefined_instruction ldr pc, _software_
2016-01-06 14:46:59
419
原创 U-BOOT LCD分析
U-BOOT LCD分析(1) 首先 board.c 中 执行 stdio_init() 这个函数。stdio_init()函数在 /common/stdio.c 中 (2) std_init() 中 有这样的定义 #ifdef CONFIG_LCD drv_lcd_init (); #endif 说明调用 drv_lcd_init () 这个函数,
2016-01-06 14:42:04
415
转载 Linux中的双向循环链表
转自 http://blog.csdn.net/yaozhenguo2006/article/details/7621551 链表是一种重要的数据结构,应用的非常广泛。链表分为单向链表与双向链表,一般的实现就是在结构体中内嵌指向下一个元素的指针。例如: [cpp] view plaincopyprint?struct name { int num;
2016-01-06 14:11:37
391
转载 Linux内核总述
转载自 http://my.csdn.net/weiqing1981127 Linux内核1.Linux内核主要由进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程通信(IPC)五个子系统组成。1.1进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中”微观串行,宏观并行”地执行。1.2内存管理的主要作用是控制多个进程安全地
2016-01-06 14:01:41
393
原创 Linux下的I2C总线驱动 .
一.系统理论1. I2C驱动体系概述 Linux I2C驱动体系结构主要由3部分组成,即I2C核心、I2C总线驱动和I2C设备驱动。I2C核心是I2C总线驱动和I2C设备驱动的中间枢纽,它以通用的、与平台无关的接口实现了I2C中设备与适配器的沟通。I2C总线驱动填充i2c_adapter和i2c_algorithm结构体。I2C设备驱动填充i2c_driver和i2c_client结构体。2.
2016-01-06 13:56:05
589
转载 Linux下的LED子系统驱动
转载自 http://my.csdn.net/weiqing1981127最简单的led驱动就是从端口输出0或1来关闭或点亮灯。而我们这里讲的led子系统,主要是对led事件进行了分装和优化,这里我们主要讲的是可以实现跨平台的led驱动。不管你是使用三星的平台,还是Atmel的平台,你只要知道如何在你的BSP中添加平台数据,并且知道如何在应用程序中使用这个驱动,那么你就不用因为新的平台而再次编写l
2016-01-06 13:51:50
2241
原创 IIC设备驱动实例
前面转载了很多关于i2c的文章,做完一个项目了,也该自己写点i2c心得了,我这个可是纯应用角度的,想看原理的,去看转载的文章,人家写的好多了! 对于一个i2c设备来说,其设备文件是最简单也是最复杂的,说它简单是因为很设备厂商会提供linux下的代码,这样就简单了;但是也有很多厂商它不提供或不完整提供linux下的代码,这样的话当然就复杂了。那么这个我现在这里就不说了,下面说说做了几个I2C设备
2016-01-06 13:46:34
711
转载 小牛电动车的亮点与槽点分析
转载自“来自智能硬件网” 作者:金楠本文地址:http://www.znyj365.com/6132.htm前途光明,现实还堵着,小牛电动车的亮点与槽点分析金楠 发表于 : 2015-06-03 评论 (6) 浏览 (2001)前天下午,牛电科技在北京798艺术区召开了“小牛电动发布会”,并且正式推出了名为“小牛N1”的智能电动踏
2016-01-05 23:56:36
3189
原创 将linux混杂驱动改为平台驱动案例
把/drivers/char/mini6410_buttons.c给移植成platform驱动,下面是整个的移植过程:1.首先在/opt/FriendlyARM/mini6410/linux/linux-2.6.38/drivers/char 目录下添加我们的按键device,文件名定为dev_buttons.c,其源码为:#include <linux/module.h> #include
2016-01-05 23:21:36
348
原创 基于ATmega16单片机 NRF24L01无线收发驱动程序源代码
//NRF2401发送驱动程序#include <avr/io.h>#define uint unsigned int#define uchar unsigned char//------------------------------------------------------------------------------//------------------------
2016-01-05 23:12:36
1526
1
原创 基于ATmega16单片机 SPI主从机通信程序源代码
/*SPI通信主机源代码*/#include <avr/io.h>#include<avr/signal.h>#include<avr/interrupt.h>void port_init(void){ PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output on
2016-01-05 23:01:47
1604
原创 基于ATmega16单片机 波形发生器 程序源代码
/*ATmega16波形发生器*///设计了三个按键用于设置输出方波的频率,在数码管显示,T/C1工作在输出比较模式#include<avr/io.h>#include<avr/interrupt.h>#include<avr/signal.h> #include<util/delay.h>#define uint unsigned int#define uchar unsigned
2016-01-05 22:47:49
1554
1
原创 基于ATmega16单片机 程控滤波器程序源代码
#include<avr/io.h>#include<avr/signal.h>#include<avr/interrupt.h>#include<util/delay.h>#define uint unsigned int#define uchar unsigned charstatic uchar interrupt ,count;static uchar b;uint a;S
2016-01-05 22:31:15
847
转载 Linux中断(interrupt)子系统之五:软件中断(softIRQ)
/*****************************************************************************************************/转载自http://blog.csdn.net/droidphone/**********************************************************
2016-01-05 21:38:24
344
转载 Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层
/*****************************************************************************************************/转载自http://blog.csdn.net/droidphone/**********************************************************
2016-01-05 21:35:24
448
转载 Linux中断(interrupt)子系统之三:中断流控处理层
/*****************************************************************************************************/转载自http://blog.csdn.net/droidphone/**********************************************************
2016-01-05 21:32:41
391
转载 Linux中断(interrupt)子系统之二:arch相关的硬件封装层
/*****************************************************************************************************/转载自http://blog.csdn.net/droidphone,感谢原作者/****************************************************
2016-01-05 16:19:42
413
转载 Linux中断(interrupt)子系统之一:中断系统基本原理
/****************转载自http://blog.csdn.net/droidphone,感谢原作者*****************************/这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到
2016-01-05 16:12:00
489
转载 电动车无刷电机控制器软件设计要点(整理)
转自http://blog.csdn.net/nike27/article/details/40929581、电子换相无刷电机要对转子永磁体位置进行精确检测,并用电子开关切换不同绕组通电以获得持续向前的动力,在目前的绝大多数电动车三相无刷电机中均使用三个开关式的霍尔传感器检测永磁体相对于定子线圈的位置,控制器跟据三个霍尔传感器输出的六种不同信号输出相应的控制信号驱动电子
2016-01-05 15:33:56
1919
转载 Linux下的platform总线驱动(二)
转自 http://my.csdn.net/weiqing1981127三.平台设备驱动测试这里我们采用Mini2440开发板,编写基于平台设备的按键驱动,要求按键驱动触发方式为单边沿触发,同时要求添加设备属性项。因为这个驱动比较简单,我就不去细致分析了,如果对硬件不理解可以参考mini2440开发板数据手册,如果对软件不理解,可以参考上文平台设备的讲解。在此,我提供platform设
2016-01-05 15:31:29
337
转载 Linux下的platform总线驱动(一)
转自 http://my.csdn.net/weiqing1981127一.Platform设备驱动概念主要讲解平台设备驱动的模型和基本概念,同时因为驱动加载的方式有动态加载和静态加载两种方式,这里我们分别对动态加载和静态加载两种情况下,如何使用平台设备和驱动加以叙述。最后使用mini2440开发板,运用Platform和device_attribute机制,编写按键驱动代码和测试
2016-01-05 15:29:48
471
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人