SRAM,SDRAM,网卡有地址总线。由cpu统一编址。

NAND flash没有地址总线。 因 此有这两者寻址方式不同。





字符设备驱动程序的框架。

驱动程序 1.有led.read,led.write,led.open 这些函数,2.定义了—个结构体fileoperation,这个结构体包括指向led.read的.read 函数。包括指向led.write的.write函数,包括指向led.open 的.open函数。3.入口函数(把fileoperation结构体告诉内核的函数),通过register_chedev(main,name,fileoperation)。

编译驱动程序要依赖内核。

ioremap把物理地址映射为虚拟地址。





本来主设备号能够手动分配。但驱动程序也能够自己主动分配主设备号。

应用程序打开一个设备open("/dev/xxx"),这个设备哪里来的。

1.手工建立, 

mknod   /dev/xxx   c  主  次  

此时须要知道主设备号

2.自己主动创建,mdev(mdev是udev的—个简化版本号)依据系统信息创建设备节点。所以驱动程序要提前提供上面所需的系统信息,这样才干自己主动创建。

写一个驱动程序。

(用查询方式点亮led灯)

1.写出框架。

a.写出fileoperation结构体。里面有.open,.read,.write 等成员。

b.该结构体通过入口函数注冊到内核。同一时候须要出口函数。修饰入口函数。修饰出口函数。

c.给内核提供系统信息。这样udev机制能够自己主动创建设备节点。祥细步骤。在入口函数创建class,并创建clasd device 。

同一时候要在出口函数将这些东西卸载掉。

d.最后加上一个lisence。

2.硬件操作,

a.看原理图,确定是哪些引脚接到按键上。

b.看2440手冊,确定怎么操作这些引脚。以及操作什么寄存器。

c.编程。

上面三步在单片机里面基本同样。不同之处是单片机直接操作物理地址,而此时驱动程序採用虚拟地址。

VA=ioremap(PA,size)。

……………………………………………

写一个驱动程序(用中断方式点亮led灯)

1.在open函数将引脚配置为中断引脚,即request_irq()。

2.右fileoperation结构体里添加成员.release()函数 ( 用来释放中断引脚)。

即. .release()=second_drv_close();

3.实现函数second_drv_close()

4.实现request_irq()函数中的—个參数buttons_irq()。

5.添加头文件irq.h等。

在open函数配置引脚,在read函数读引脚状态(通过copy_to_user()函数将引脚状态传给用户)。

在入口函数进行地址映射。

在出口函数解除映关系。





top命令相当于任务管理器。

共享中断,中断来源有非常多种,共享同一个引脚。

中断是异常的—种。单片机下的中断处理过程:

1.分辨中断源。

2.调用对应的处理程序,

3.清中断。

在linux内核中,这三项由asm_do_IRQ()函数实现。

SRAM,SDRAM,网卡的更多相关文章

  1. 名词解释:DRAM, SRAM, SDRAM等

    SRAM:静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大. DRAM:动态RAM,需要刷新,容量大. SD ...

  2. FPGA系统中DRAM,SRAM,SDRAM,FLASH 区别(转)

    原文:http://hi.baidu.com/abners/item/a9042ef35d3f005bc8f337f5 一般来说这几种存储器是一个nios系统都具有的,sram的好处是接口简单,速度快 ...

  3. 【转】RAM 大全-DRAM, SRAM, SDRAM的关系与区别

    http://blog.csdn.net/huleide/article/details/5506698 ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是R ...

  4. RAM 大全-DRAM, SRAM, SDRAM的关系与区别

    ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是 ...

  5. SRAM与SDRAM的区别

    http://www.cnblogs.com/spartan/archive/2011/05/06/2038747.html SDRAM SDRAM(Synchronous Dynamic Rando ...

  6. SRAM与SDRAM的比较(转)

    原文:http://blog.csdn.net/fg8181/article/details/2278100 内存在电脑中起着举足轻重的作用,一般采用半导体存储单元,包括随机存储器(RAM),只读存储 ...

  7. 二、存储管理器--SDRAM

    2.1 硬件结构 2.1.1 硬件框图 CPU 通过存储管理器来读取 SDRAM 网卡 等外部设备,CPU不管外部设备是怎么样的,只是读存储管理器中的地址 CPU从0x30000000地址读取数据. ...

  8. FMC—扩展外部 SDRAM

    本章参考资料:< STM32F4xx 参考手册 2>.< STM32F4xx 规格书>.库帮助文档< stm32f4xx_dsp_stdperiph_lib_um.chm ...

  9. 第26章 FMC—扩展外部SDRAM

    本章参考资料:<STM32F76xxx参考手册2>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>. 关于SDR ...

随机推荐

  1. poj 1080

    http://poj.org/problem?id=1080 知识点 :最长公共子序列 要点: 转移方程  f[i][j]  = max{ f[i-i][j]+score[s1[i-1]]['-'], ...

  2. 高质量程序设计指南C/C++语言——C++/C编译预处理

    C++/C的编译预处理器对预编译伪指令进行处理后生成中间文件作为编译器的输入,因此所有的预编译伪指令都不会进入编译阶段.预编译伪指令一般都以#打头,且其前面只能出现空白字符.预编译伪指令不是C++/C ...

  3. VC程序快速删除自己(可能做升级程序的时候有用)

    项目一般都会带有卸载程序,如果这个程序是自己来做的话,在调用完卸载程序后需要删除自己的所有文件,在Google了好久终于找到一些相关信息,一般只能删除一个文件,经过自己的处理,可以删除文件夹下面所有内 ...

  4. 投票系统前台 C#,数据库SQL

    ------------vote.aspx.cs--------------------  private void Page_Load(object sender, System.EventArgs ...

  5. IT第四天 - 运算符、随机数、Math类

    IT第四天 上午 运算符 1.%运算符的应用 2.运算符优先级:小括号 ! 算数运算符 关系运算符 && ||   赋值运算符 3.三元运算符:?表示条件为true的结果,:表示条件为 ...

  6. BZOJ 1677: [Usaco2005 Jan]Sumsets 求和

    题目 1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 617  Solved: 344[Su ...

  7. wchar_t*和char*之间的互相转换的那些事

    最近在看一写PE文件格式的东西,想做一个读取PE文件信息的小工具,中间遇到将LPVOID格式无法转换到LPTSTR格式,强制转换屡试屡败,多显示乱码.我们知道LPVOID格式可以直接转换到char * ...

  8. mmc一维下料例子

    数据来自维基, 长度 = 5600; l切割长度= {1380, 1520, 1560, 1710, 1820, 1880, 1930, 2000, 2050, 2100, 2140,     215 ...

  9. 给EditText中的图片加监听

    package com.example.helloword; import android.app.Activity; import android.content.Context; import a ...

  10. 十:Java之泛型

    [定义] 一.泛型的定义主要有下面两种: 在程序编码中一些包括类型參数的类型,也就是说泛型的參数仅仅能够代表类.不能代表个别对象.(这是当今较常见的定义) 在程序编码中一些包括參数的类.其參数能够代表 ...