欢迎光临MCUWAY! 本站网名:单片机之路  永久域名:www.mcuway.com

设为首页

加入收藏

电子基础 初学MCU 单片机类型 MCU程序 MCU应用 设计软件 测控电路 技术论坛
 您现在的位置: 单片机之路 >> 单片机类型 >> ARM系列 >> 文章正文

移植嵌入式Linux到ARM处理器S3C2410:设备驱动1

  设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽硬件的细节,一般来说,Linux的设备驱动程序需要完成如下功能:

  ·设备初始化、释放;

  ·提供各类设备服务;

  ·负责内核和设备之间的数据交换;

  ·检测和处理设备工作过程中出现的错误。

  Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得Windows的设备操作犹如文件一般。在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,如open ()、close ()、read ()、write () 等。

  Linux主要将设备分为二类:字符设备和块设备。字符设备是指设备发送和接收数据以字符的形式进行;而块设备则以整个数据缓冲区的形式进行。在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了;而块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际的I/O操作。块设备主要针对磁盘等慢速设备。

  1.内存分配

  由于Linux驱动程序在内核中运行,因此在设备驱动程序需要申请/释放内存时,不能使用用户级的malloc/free函数,而需由内核级的函数kmalloc/kfree () 来实现,kmalloc()函数的原型为:

void kmalloc (size_t size ,int priority);

  参数size为申请分配内存的字节数,kmalloc最多只能开辟128k的内存;参数priority说明若kmalloc()不能马上分配内存时用户进程要采用的动作:GFP_KERNEL 表示等待,即等kmalloc()函数将一些内存安排到交换区来满足你的内存需要,GFP_ATOMIC 表示不等待,如不能立即分配到内存则返回0 值;函数的返回值指向已分配内存的起始地址,出错时,返回0。

  kmalloc ()分配的内存需用kfree()函数来释放,kfree ()被定义为:

# define kfree (n) kfree_s( (n) ,0)

  其中kfree_s () 函数原型为:

void kfree_s (void * ptr ,int size);

  参数ptr为kmalloc()返回的已分配内存的指针,size是要释放内存的字节数,若为0 时,由内核自动确定内存的大小。

[1] [2] [3] [4] 下一页

“单片机之路”的网址:www.mcuway.com

普通文章SST89C54/58系列单片机的IAP应用技术
普通文章AT89C51单片机的介绍——最常用的51芯
普通文章如何进行反汇编
普通文章将目标文件写入单片机
普通文章keil软件的使用
普通文章跟我来编一个最简单的单片机程序
普通文章单片机的管脚
普通文章指针类型和存储区的关系详解
普通文章单片机MCS-51系列指令快速记忆法
普通文章MCS51和8051是否相同?
普通文章什么是单片机
普通文章与电源管理有关的技术问答
普通文章关于复位源和其他C8051F单片机的技术
普通文章关于开发工具及调试的技术问答
普通文章JTAG与ISP的区别
普通文章单片机振荡器技术问答
普通文章有关IDE(集成开发环境)的技术问答
普通文章uPSD系列8 位单片机概述
普通文章电子工程师的心声
普通文章一个嵌入式工程师的忠告
普通文章单片机的发展之路
普通文章一位电子前辈的心得体会
普通文章单片机应“做中学”
普通文章给年轻IC解密和芯片解密工程师的十大
普通文章MC-S51单片机简介

  • 上一篇文章:
  • 下一篇文章:
  • 更多精彩内容>>>

    普通文章电容器的基础知识及检测方…
    普通文章可控硅的特性于检测
    普通文章电阻的使用
    普通文章芯片封装

    学习单片机的必经之路——单片机之路,永久域名:www.mcuway.com