设备device.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设备device

嵌入式linux开发 uc (POSIX)(应用级别开发) QT MINIGUI sqlite(嵌入式数据库) 系统移植 (uboot 内核(kernel) 文件系统(rootfs)) 驱动开发 a)搭建开发环境 b)编译内核 c)内核知识 d)字符设备驱动(顺序读写,不带缓冲区) 按键驱动 input子系统 platform架构 i2c设备驱动 LCD framebuffer e)块设备驱动(读写顺序不固定,带有读写缓冲区) 虚拟块设备 f)网卡设备驱动 dm9000 系统移植 2、搭建嵌入式开发环境 烧写开发板 tftp 加载内核 uboot bootcmd nfs 加载根文件系统 uboot bootargs 3、编译内核模块 3.1 .c文件置于内核源码目录, 配置选项设置为M make modules - 内核中相应设置为M,都会编译生成.ko 3.2 .c文件置于内核源码之外的目录,在该目录下编写Makefile obj-m +=xxx.o make -C /opt/kernel/ M=$(pwd) modules 3.3 .c文件置于内核源码之外的目录,完善Makefile(跟我一起写makefile) Make 4、内存管理 逻辑地址 | 段式管理 虚拟地址(线性地址) | 页式管理 物理地址 linux编程时使用的都是虚拟地址。 linux对内存的管理以页为单位,一页为4K kmalloc/kfree vmalloc/vfree __get_free_pages/free_pages 参数flags: GFP_KERNEL,申请内存过程中,可能发生睡眠 GFP_ATOMIC,不会导致睡眠 内核链表 (include/linux/list.h) 1list_for_each结束条件pos!=head 内核定时器 时钟中断 HZ:常数,决定了时钟中断发生的频率(1S中发生中断的次数) tick:发生时钟中断的时间间隔 tick = 1/HZ jiffies:核心变数 系统调用 ANSI C fopen (c的库函数) UNIX C open (系统调用) 用户态的程序一般情况下是不能访问内核态的资源, 只有通过中断或者系统调用才能从用户态进入内核态 -- open read write 2.6.35内核ARM版本中支持的系统调用个数为366 按照硬件特性分类:linux设备驱动分为三类: 字符设备驱动(顺序读写,不带缓冲区) 块设备驱动(读写顺序不固定,带有读写缓冲区) 网络设备驱动() 5、字符设备驱动的框架 struct cdev { dev_t dev;//设备号 struct file_operations *f_ops;//设备的操作函数集合 } 手工/自动创建设备节点文件 mknod /dev/xxx c major minor class_create device_create 以上两个函数影响的sysfs(/sys) struct file_opeartions { open release ioctl read write } 在用户空间执行open(/dev/xxx, O_RDWR) sys_open -do_sys_open -do_filp_open -do_last -nameidata_to_filp -__dentry_open -chrdev_open (/dev/xxx 248 cdev f_ops) -ret=filp-f_op-open(inode,filp); s

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档