自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (15)
  • 收藏
  • 关注

原创 ECUcore-5484 update manual

MCP5484在国内接触到的应用少之又少,他的bootloader就更是稀有动物了,Linux内核更新到3.X之后,导致的大部分老的产品在使用新的driver development kits时会出现很多变量未定义的问题。解决办法只能更新内核,紧接着问题就出来了。Linux应用对国内用户问题不大,但是在MCP5484上更新内核相关的资料就真的是不好找到了, 下面总结了一下我们在MCP5484上更新

2012-07-20 12:19:43 805

转载 Linux内核Socket CAN中文文档

自己在年假中空闲之余翻译的内核中Socket CAN的文档,原文地址在:http://lxr.linux.no/linux+v2.6.34/Documentation/networking/can.txt但是这篇文档没有涉及广播管理协议套接字 (SOCK_DGRAM) 的内容。另外一篇比较好的Socket CAN的英文文档是(详细介绍了广播管理协议套接字):Low

2012-06-08 20:36:36 27583 7

原创 linux内核设计与实现--19章 可移植性

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->可移植的操作系统尽可能少的涉及与机器相关的代码,为了支持不同的体系结构,界面和功能在定义时尽最大可能的有普遍性和抽象性。一个一致性非常高而本身有比较简单的操作系统在支持新的体系结构时,可能只需修改很少量的代码,但是可能会存在与体系结构相关的功能无法使用的现象。

2012-05-12 11:31:51 1700

原创 Linux内核设计与实现笔记--chapter3 进程管理

第三章 进程管理借用结尾的一段话,这一章讨论了进程的重要性以及进程与线程之间的关系;然后讨论了Linux如何存放和表示进程、如何创建进程、如何把新的执行影响放到地址空间、如何表示进程的层次关系、父进程是如何收集到后代信息、以及进程最终使如何消亡的。看似短短的十几页居然包含了如此多的内容,尽个人所能对上述内容进行总结吧。3.1 进程进程是处于执行期的代码以及相关资源(包括打开

2012-05-04 20:31:09 1001

原创 linux内核结构图

为了能更好的学习驱动开发,最近开始学习linux内核结构的内容,找了很久看到一个感觉很有意思的结构框图,收下!

2012-04-30 21:07:40 1996

转载 Linux主机驱动与外设驱动分离思想

1主机、外设驱动分离的意义在Linux设备驱动框架的设计中,除了有分层设计实现以外,还有分隔的思想。举一个简单的例子,假设我们要通过SPI总线访问某外设,在这个访问过程中,要通过操作CPU XXX上的SPI控制器的寄存器来达到访问SPI外设YYY的目的,最简单的方法是:return_type xxx_write_spi_yyy(...){xxx_write_spi_host_ctr

2012-04-27 20:17:01 612

转载 Linux设备驱动的分层设计思想

1.1 设备驱动核心层和例化在面向对象的程序设计中,可以为某一类相似的事物定义一个基类,而具体的事物可以继承这个基类中的函数。如果对于继承的这个事物而言,其某函数的实现与基类一致,那它就可以直接继承基类的函数;相反,它可以重载之。这种面向对象的设计思想极大地提高了代码的可重用能力,是对现实世界事物间关系的一种良好呈现。Linux内核完全由C语言和汇编语言写成,但是却频繁用到了面向对象的设计

2012-04-27 20:15:48 478

转载 platform设备驱动全透析

1.1 platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的设备而言,这自然不是问题,但

2012-04-27 20:14:32 492

转载 (LDD) 第五章、并发和竞态

1. 对并发的管理是操作系统编程的核心的问题之一。2. 早期并发的惟一原因是对硬件的中断服务,没有抢占和SMP。Scull的缺陷1. 竞态会导致对共享数据的非控制访问。2. 竞态是一种极端可能性的事件,因此程序员往往忽视竞态。但在计算机的世界里,百万分之一的事件可能在几秒内发生,而且结果是灾难性的。并发及其管理1. SMP系统甚至可以在不同的处理器上同时执行我们的代码、

2012-04-26 20:03:22 853

原创 RTC编程应用

本文的部分内容取自内核文档。 Linux有两个用户空间的RTC API,他们是*   /dev/rtc... 兼容PC系统的RTC,对非x86结构支持不完整。 *   /dev/rtc0,/dev/rtc1 ... 系统框架的一部分,支持多种RTC 老的兼容PC/AT驱动:/dev/rtc所有的pc系统都内建实时时钟。这个时钟在系统关机之后可以保存时间和日期。特别之

2012-04-26 13:50:19 5614

转载 linux spi子系统

虽然这段看着有点混乱,可是自己实在没有力气整理了,还是转了吧。。。spi_master/spi_device和spi_driver的关系。 重要的数据结构:~~~~~~~~~~spi控制器的主题是spi_master,虽然一般不需要自己编写spi控制器驱动,了解这个结构体还是必要的。[c-sharp] view plaincopyprint?

2012-04-25 19:50:43 894

转载 linux下bus,device,driver三者关系

bus:  总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的,可内存使用的总线不是外设总线,因此和内存使用相同类型的总线的设备,谈及BUS比较含糊。  一块网卡在嵌入式开发中,直接通过内存总线接入到CPU。我们在写网卡驱动时,要给该B

2012-04-25 19:47:19 776

原创 spi设备的注册与用户空间的程序设计

spi设备创建在tiny6410开发板上外接了spi1的引脚SPICLK、MOSI、SPICS、MISO,所以以spi1为例创建spi设备。首先介绍2个相关到的结构1.用于片选的信息 struct s3c64xx_spi_csinfo {       u8fb_delay;

2012-04-25 16:23:18 3961

翻译 spi总线概述3(spi-summary)

我怎样写“SPI主控制器驱动程序”?-------------------------------------------------一个SPI控制器可能会被注册上platform_bus;写驱动程序绑定到设备,两者涉及总线。 这种类型的驱动程序的主要任务是提供“spi_master”。使用spi_alloc_master()分配主机,和spi_master_get_devdata

2012-04-24 19:41:16 1429

翻译 spi总线概述2(spi-summary)

特定板初始化代码如何声明SPI器件?------------------------------------------------------Linux需要多种信息才能正确配置SPI器件。这些信息通常是电路板的特定代码,甚至有些芯片支持自动发现/枚举。 声明控制器 第一类信息是存在的SPI控制器的清单。由于片上系统(SOC)在主板上,这些通常是平台设备,控制器可能需要一些

2012-04-24 19:40:11 1385

翻译 spi总线概述1(spi-summary)

什么是SPI?------------“串行外设接口”(SPI)是一个同步的四线串行链接用于微控制器连接传感器,内存和外设的。这是一个简单的“时点”的标准,获取一个标准化结构也不复杂。 SPI使用主/从配置。 三个信号线外加一个时钟(SCK,往往在10 MHz),并行数据线“主机输出,从机输入”(MOSI)或“主机输入,从机输出”(MISO)。数据交换有四种时钟模式:模式0和模式3

2012-04-24 19:37:56 4437

转载 amba_device使用分析

什么是AMBA? ---AMBA是一个片内总线规范。ARM官网的介绍:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0224b/index.htmlAMBA 协议是用于连接和管理片上系统 (SoC) 中功能块的开放标准和芯片上互连规范。使用它,可以帮助开发带有大量控制器和外设的多处理器设计。AMBA 通

2012-04-21 15:02:35 2999

原创 Linux设备驱动程序笔记3—编写一个实际的USB驱动

13.4.1. 驱动支持哪些设备?struct usb_device_id 结构提供了这个驱动支持的一个不同类型 USB 设备的列表,定义如下: struct usb_device_id {       /*which fields to match against? */       __u16            match_flags;        /*Use

2012-04-19 20:56:32 866

原创 Linux设备驱动程序笔记2—Urbs

13.3. USB Urbslinux 内核中的 USB 代码和所有的 USB 设备通讯使用称为 urb 的东西( USB request block).这个请求块用 struct urb 结构描述并且可在 include/linux/usb.h 中找到.一个 urb 用来发送或接受数据到或者从一个特定 USB 设备上的特定的 USB 端点, 以一种异步的方式. 根据驱动的需要,一个 US

2012-04-19 20:53:02 931

原创 Linux设备驱动程序笔记1—USB设备基础

在总结完USB设备操作的具体实现时候,再对《Linux设备驱动程序》的第十三章—USB驱动程序,的内容进行简单总结。这个章节详细描述了Linux的USB设备驱动程序以及USB核心之间的接口信息。USB设备包括了设备、配置、接口、端点四部分,文章也是按照这个顺序进行讲述的,下面直接进入主题。13.1.1端点Usb最近本的通讯形式就是端点,USB 端点只能在一个方向承载数据, 或者从主机到

2012-04-19 20:52:08 762

原创 input子系统

本文简单介绍一下linux的inputsystem,并通过一个实际的案例介绍一下在具体的项目中如何实现自己的inputsystem。 1.  系统结构那首先就从linux的inputsystem的结构开始说起,如下图所示:Input system 有三大块组成:·   Drivers:相当于输入设备的驱动程序,负责接收来自硬件的输入中断,并把输入中断转换成相应的输出给I

2012-04-18 18:17:44 571

原创 framebuffer显示功能在 3.1.6内核中的实现

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->分析framebuffer设备的时候没有按照以往的顺序先从Documentation开始看起。这次直接从板文件开始分析虽然使用的是tiny6410,但是由于配套资料不完整,所以程序分析还是那内核代码中的mach-mini6410和mach-smdk6410比较

2012-04-17 18:23:15 990 2

原创 USB学习总结3—USB gadget设备驱动实现(usb串口功能)

USB串口(CDC ACM)1 内核配置Device driver                    ->[*] usb support                                    ->USB gadget support(gadgetAPI)

2012-04-16 20:22:47 2210

原创 USB学习总结2—USB host设备驱动实现(U盘、鼠标)

一、U盘1 打开热插拔Genernal setting –> [*]configure standard kernel feature(for small)-> [*]support for hot-pluggable device2 U盘属于scsi设备,因此还需要加入scsi驱动device driver->[*] scsi devicesupport->[

2012-04-16 20:09:34 4448

原创 USB学习总结1—s3c6410的USB驱动修改

整理USB的内容的内容已经几天了,写点东西作为总结。全部内容分三部分,第一部分主要内容是USB驱动在Linux系统中的具体实现方法;第二部分参考《Linux设备驱动程序(第三版)》中的内容总结USB驱动的结构;最后,总结一下USB协议。 一、             首先是对USB设备的得支持。1、viarch/arm/mach-s3c64xx/mach-mini6410.c在

2012-04-16 20:01:32 3062 1

原创 Linux程序设计笔记-进程间通信

二、进程间通信1.管道:管道用于相关的进程(特别是父子进程的)间的通讯。使用read和write进行读写操作。#includeintpipe(int file_descriptor[2]);       //创建管道file_desciptor[0]为读取端,file_desciptor[1]为写入端。  例程:#include#include#include

2012-04-16 19:10:16 533

原创 Linux程序设计笔记-进程复制

最近在写一个驱动测试程序的时候想用一下进程间通信的功能,可是就是想不起来应该怎么写,所以重新拿起《linux程序设计》再学一遍,然后用半天的时间,写一个简单的笔迹,以备后用。一、进程使进程同时执行多个函数的方法有:一、使用多线程;二、原程序中创建一个分离进程本文主要关注的是进程间的通信,所以下面的内容介绍的是分离进程的做法。1.复制进程映像#include#include

2012-04-16 19:08:14 667

翻译 I2C设备初始化方式4--从用户空间初始化I2C设备

(本文的部分内容翻译自Documentation/i2c/instantiating-devices)方式4:从用户空间初始化I2C设备在一般情况下,内核应该知道哪些I2C设备被连接以及他们的地址是什么。然而,在某些情况下,它没有,所以sysfs接口用作让用户提供信息。这接口是由2属性组成,在每一个I2C总线上创建的文件目录:new_device和delete_device。这

2012-04-11 18:48:37 2220

原创 I2C设备初始化方法3--侦测一个指定的I2C设备

(本文的部分内容翻译自Documentation/i2c/instantiating-devices)方式3:侦测一个指定的I2C设备有时候,你对一个I2C设备没有足够的相关信息,甚至不能调用i2c_new_probed_device()。典型的例子是电脑主板上的硬件监控芯片。有几十个型号,可以存放在25个不同的地址。鉴于有大量的主板,它几乎是不可能建立一个详尽的监测芯片硬件列表。

2012-04-11 18:47:54 2237

翻译 I2C设备初始化方法2--初始化确定设备

(本文的部分内容翻译自Documentation/i2c/instantiating-devices)方法2:初始化确定设备这种方式使用于当一个大的设备使用I2C bus作为内部通讯使用。TV adapter是一种典型的情况,其中包括了调谐器、视频编码、音频编码等,一般通过一个类似I2C总线连接到主芯片上。你不知道I2C设备会预先连接的数量,所以方式1不能使用在这种情况下。所以另外的方法是

2012-04-11 18:47:03 1424

原创 I2c设备初始化方法1--通过总线编号初始化i2c设备

(本文的部分内容来源自Documentation/i2c/instantiating-devices)I2c不像PCI或是USB设备,它不能在硬件层被枚举,软件部分必须明确了解哪些i2c设备连接到总线上了,以及哪些地址可用。因此,内核代码必须明确初始化i2c设备。I2c初始化方式有4种:a)       通过总线编号初始化i2c设备;b)       直接初始化设备;c)

2012-04-11 18:45:58 3521

原创 I2C设备声明以及应用实现

(本文内容涉及的代码全部取自linux-2.6.36内核中,本文中的部分内容参考了Documentation/i2c/说明文档) 在自己使用8位单片机的时代,i2c就是一种最简单而且常用的总线,它可以提供一个实现多设备连接的低价低速率的通讯方式。在开始进行i2c应用编成前先重新了解一下i2c的数据格式。 Simplesend transaction=============

2012-04-10 18:56:22 1162

原创 leds子系统-下

(本文内容涉及的代码全部取自linux-2.6.36内核中)书接上文,洋洋洒洒的代码贴了那么多,不过好像并没有看到led子系统针对驱动开发用户的实际操作,下面就对gpio-led功能继续剖析: 1.  Gpio-led初始化drivers/leds/leds-gpio.c(line317-line348) static int __init gpio_led_init(vo

2012-04-09 18:08:44 1925

原创 leds子系统-上

(本文内容涉及的代码全部取自linux-2.6.36内核中) Leds子系统介绍leds子系统之前,先从几个相关的重要结构开始介绍:led_classdev是比较重要的一个struct,它实现的是led实例,源程序中的注释比较全面,所有没有再另外添加,免得画蛇添足。 include/linux/leds.h(line30-line68) struct led_cla

2012-04-09 18:08:10 2717

原创 leds application

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->首先定义响应LED的IO接口与功能描述:static struct gpio_led mini6410_leds[]={ [0] = { .name = "LED1", .gpio = S3C64XX_GPK(4), },

2012-04-08 18:57:08 590

原创 linux程序设计笔记--pthread--attributes

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->线程的属性。 #include int pthread_attr_init(pthread_attr_t*attr); 线程属性初始化。  设置线程为脱离线程。 intpthread_attr_setdetachstate(pthread_

2012-04-08 18:49:43 1605

原创 linux程序设计笔记--pthread--mutex

<!--@page {margin:0.79in}p {margin-bottom:0.08in}--> 互斥量: #include int pthread_mutex_init(pthread_mutex_t*mutex,const pthread_mutexattr_t *mutex_attr); intpthread_mutex_lock(pt

2012-04-08 18:44:54 634

原创 linux程序设计笔记--pthread--semaphore

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->多线程的同步机制 实现线程同步机制:信号量和互斥量。 信号量: #include intsem_init(sem_t *sem,int pshared,unsigned int value);//信号量的初始化。 sem_t*sem:信号量

2012-04-08 18:40:51 1103

转载 linux程序设计笔记---pthread

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->/*在编译多线程程序的时候,要加上-lpthread选项,指定pthread库。在程序代码中包含线程头文件pthread.h。*/1,创建一个线程。 intpthread_create(pthread_t *pthread_id,const p

2012-04-08 18:37:24 608

转载 Linux程序设计笔记--IPC操作--message queue

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->3,消息队列进程间传递数据,如果数据量比较小的话,使用消息队列。消息结构有两个限制:消息大小不能操作系统规定最大值。必须以一个long整数开始。消息队列相关函数。int msgget(key_tkey,int msgflg);key_t

2012-04-08 18:25:05 1719

make官方文档

从GNU上找到的make的官方文档,以前都是东学一点西看一点,这个讲的比较系统

2012-04-18

FSH(Filesystem hierarchy standard)2.3

Filesystem hierarchy standard的官方文档,很久不看,想了好久才想起叫什么名字,比较权威的资料

2012-04-18

精通linux设备驱动开发

Essential Linux-DeviceDrivers精通linux设备驱动开发,一本关于linux设备驱动的很详细的材料,常用的设备驱动几乎全都设计到了,而且讲述的很详细,不过是英文版的。

2012-04-09

s3c6410_routing_guide

samsung's s3c6410 routing guide

2012-04-08

Installation_Manual_for_u-boot

三星s3c6410关于uboot的一个说明文档,我接触uboot时看得第一份资料

2012-04-08

Microchip ECAN

基于PIC18的一个CANOpen简单源码,包括了主站和从站功能,NMT、SDO都挺全的,对于刚刚开始了解协议很有帮助

2012-04-08

CANOpen CiA-301

CANOpen的301协议,真的不好找,以前申请过的几个子协议都找不到了,现在才开始整理,老后悔了

2012-04-08

TI放大器设计实例

不知到哪位哥们翻译的TI放大器的设计实例

2012-04-08

TI放大器原理与应用

又是一个关于硬件的文档,TI的放大器原理与应用,从不同的角度介绍了放大器的知识,与我们再学校学到的模电角度有些不同,开眼界了

2012-04-08

信号完整性--中兴

一个硬件相关的文档贴在这里不太合适,不过无意中找到的一个东西,挺有用的,可是不太完整,一些很关注的章节都变成待续了,但是也是很全的一个文档了。

2012-04-08

u-boot启动过程分析

u-boot启动过程分析,自己看过以后总结的东西方便自己学习用的,拿出来交流

2012-04-08

tiny6410-linux

tiny6410配套的实验手册,虽然有很多东西都是友善已经做好的,用起来很不方便,但是还是挺有用的。

2012-04-08

ldd6410-manual-doc

linux设备驱动开发详解的配套实验手册,有两个版本,这是其中之一doc版本的

2012-04-08

ldd6410-manual

linux驱动开发详解的配套手册,有两个版本,这是其中之一,pdf版本的

2012-04-08

beginning linux programming

linux程序设计,这本书不用介绍,大家都了解的

2012-04-07

空空如也

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

TA关注的人

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