linux驱动 华清远见 - CSDN
  • 华清远见linux驱动程序开发华清远见linux驱动程序开发华清远见linux驱动程序开发华清远见linux驱动程序开发华清远见linux驱动程序开发
  • 《嵌入式Linux驱动程序》华清远见的培训内容;与别人不一样;想把华清远见的东西发全
  • 课程背景

            开放的 Linux 受到广泛的欢迎,得到越来越多公司的支持,但是阻碍 Linux 在各个领域广泛应用的主要因素就是内核/驱动高端人才极度缺乏,Linux源代码中85%是设备驱动,嵌入式系统中驱动程序更为重要,几乎每一个嵌入式系统都是从驱动程序员手中调试出来的。然而面对巨大的市场需求,国内很难找到一家专门系统培训Linux驱动工程师的培训机构,因为培训难度大,对老师的经验和知识面要求高,大部分培训机构的课程仅仅对Linux 浅尝即止,难以达到培养 Linux 高水平人才的目的。
           嵌入式linux驱动培训是华清远见的金牌课程,本课程融合了讲师多年的项目开发经验,这些经验无疑是学员短期内提升驱动开发水平最有效的捷径。

       课程目标

            驱动程序开发是嵌入式Linux项目中工作量最大的一部分内容,开发出高质量的驱动程序是项目成功的关键。随着产品上市周期的缩短,市场对于驱动程序开发 人员的要求也在日益增加。 本课程旨在培养具备开发Linux下驱动程序的人才,采用理论教学与实验相结合的方式,系统地介绍Linux下设备驱动程序开发过程。通过本课程的 学习,学员可以掌握Linux下字符设备、块设备、网络设备、framebuffer设备、sd卡等驱动程序、usb驱动的开发,同时掌握嵌入式Linux的系统开发和分析方法。

       培养对象

            Linux系统驱动开发工程师、Linux中高级软件工程师以及内核开发人员。

       入学要求

            学员学习本课程应具备下列基础知识:
            ◆ 熟练使用Linux操作系统,如学员具有一定的Linux内核阅读经验,效果会更好;
            ◆ 熟悉C语言,熟悉指针、结构体等概念;
            ◆ 了解接口电路和数字电路的知识,最好具有电路设计经验。

       师资团队
        【宋宝华】
    ● 华清远见金牌讲师,多年嵌入式系统从业经验,熟悉嵌入式系统软硬件设计的全过程,有丰富的嵌入式系统硬件设计经验,精通嵌入式Linux、Vxworks操作系统,尤其擅长Linux设备驱动开发,原创性地完成多种设备的驱动程序的开发。曾指导完成多个大型嵌入式项目的软硬件设计,涉及通信、网络、控制等领域。对嵌入式系统移植有很强的经验,曾在X86/ARM//PowerPC等体系结构平台上移植Linux内核、VxWorks系统。著有《Linux设备驱动开发详解》一书。 华清远见讲师照片
    ■     点击此处在线试听宋老师最新授课视频>>>
        【易松华】
    ● 华清远见高级讲师,具有多年嵌入式开发实战经验,多年嵌入式培训经验,熟悉ARM/PPC/MIPS平台,对嵌入式Linux、uc/OS、uClinux 有深入的研究。目前专攻手机设计和培训。曾为数个大型企业进行手机开发、Linux开发方面的培训。在参与的项目中,曾使用了EP7312、 S3C2410、PXA255、OMAP1510等多款处理器,完成了平台移植、Bootloader移植等工作。 华清远见讲师照片
    ■     点击此处在线试听易老师最新授课视频>>>
        【刘洪涛】
    ● 华清远见高级讲师,6年嵌入式开发经验,ARM公司授权ATC讲师,精通ARM体系结构,在多款ARM硬件平台上完成过原理图设计、pcb布线、bootloader移植、linux系统移植、文件系统构建、驱动程序开发、GUI图形编程等工作。具有丰富的ARM-LINUX系统软、硬件产品开发经验。 华清远见讲师照片
    ■     点击此处在线试听刘老师最新授课视频>>>    刘老师博客>>>

    更多师资力量请参见华清远见师资团队

       教材

            ◆ 《华清远见-嵌入式Linux驱动开发培训讲义》
            ◆ 《Linux设备驱动开发详解》(2008.01出版) 华清远见 编著

       班级规模及环境

            为了保证培训效果,增加互动环节,我们坚持小班授课,每期报名人数限15人,多余**到下一期进行。人手一套开发板和开发用的PC主机。          >>单击查看实验设备

       时间地点

            北京总部(滚动开班):
            上课地点:北京清华大学,查看校内地图>>
            周末班(周六日上课):2010年03月20日,2010年04月10日
            连续班(连续上课):2010年03月20日,2010年04月10日


            上海分中心(滚动开班):
            上课地点:上海徐汇区银海大厦A座801,查看地图>> 
            周末班(周六日上课):2010年03月06日,2010年04月24日
            连续班(连续上课):2010年03月06日,2010年04月24日
            深圳分中心(滚动开班):
            上课地点:深圳市罗湖区宝安南路3038号蔡屋围金塘大厦3楼,查看地图>>
            周末班(周六日上课):2010年03月27日,2010年04月24日
            连续班(连续上课):2010年03月27日,2010年04月24日
            成都分中心(滚动开班):
            周末班(周六日上课):2010年03月27日,2010年05月15日
            连续班(连续上课):2010年03月27日,2010年05月15日

    本课程每期班限额15名,报满即停止报名,请提前在线或电话预约
    华清远见保留开课时间调整的权利,欢迎来电洽询

       学时费用

            ◆课时: 共6天,每天6学时,总计36学时
            ◆培训费用(含教材费和午餐费):3900元,个人自费(3200元),学生自费(2500元,凭有效证件)
            ◆认证费(可选):培训合格学员可获工业和信息化部《国家信息技术应用技能嵌入式Linux驱动开发工程师认证证书》(认证费500元,>>单击查看证书样本),Atmel公司全球统一《Atmel嵌入式工程师认证证书》(认证费500元)
            ◆外地学员:代理安排食宿(需提前预定)


    单击查看退费规定说明>>>

       最新优惠

            ◆团体报名优惠措施:两人95折优惠,三人或三人以上9折优惠

            ◆套餐课程同时报名优惠措施(以下套餐优惠只能任选一种):       

    1、同时报选《ARM开发培训班》,即享受500元优惠,同时可获ARM公司认证证书

    2、同时报选《嵌入式Linux系统开发班》,即享受500元优惠!

    3、现在同时报选《ARM班》《Linux应用班》《Linux系统班》《Linux驱动班》中的任意3门课程,即赠送三星2410开发板

    报选此课程可获200元折价劵!

       质量保障

            1、培训过程中,如有部分内容理解不透或消化不好,可免费在下期培训班中重听;
            2、培训结束后免费提供一个月的技术支持,充分保证培训后出效果;
            3、培训合格学员可享受免费推荐就业机会。

       课程进度安排(最新更新日期:2008.12.10
    时间 课程大纲

    第一天

    学习目标

        通过本课学习,学员可以从用户设备I/O编程角度深入了解设备驱动的原理;通过了解字符设备驱动框架和具体硬件设备I/O操作,能够进行字符设备驱动开发;了解linux2.6内核的设备模型及掌握udev的使用。

    9:00
    |
    12:00

    1. LINUX字符设备驱动程序开发
        1.1 LINUX字符设备驱动基础
        1.2 字符设备驱动程序实现框架与典型驱动分析
        1.3 用户空间与内核空间的数据传输
        1.4 同步、互斥、阻塞、睡眠机制
        1.5 Linux-2.6设备模型与sysfs文件系统
        1.6 udev与devfs文件系统

    13:00
    |
    16:00

    【实验】
        1、驱动开发编程环境与内核配置、编译
        2、编写模块化字符设备驱动程序与测试
        3、如何为内核程序传递参数
        4、在驱动代码中加入创建proc结点方法
        5、蜂鸣器驱动程序编写与测试
        6、编写驱动实现包含等待队列、信号量、fifo等功能
        7、学会利用udev和sysfs文件系统动态创建设备结点

    第二天

    学习目标

        通过本课学习,学员可以掌握在基本字符设备驱动的基础上增加复杂的内核机制;了解1inux内核中断子系统的实现原理,掌握linux中断处理程序编写方法;掌握内核延时机制及内存管理机制。

    9:00
    |
    12:00
    2. 设备驱动中常用的内核机制
        2.1 Poll和select操作
        2.2 异步通知机制
        2.3 1inux内核中断子系统
        2.4 中断处理程序编写
        2.5 驱动程序上/下半部处理与延缓执行机制
        2.6 内核定时器与延迟机制
        2.7 内核内存管理机制
    13:00
    |
    16:00

    【实验】
        1、编写驱动实现包含等待队列、信号量、fifo等功能
        2、编写驱动实现包含poll功能
        3、编写驱动实现包含异步通知功能
        4、编写秒表字符设备,掌握定时器用法
        5、编写驱动实现tasklet功能
        6、编写驱动实现工作队列功能
        7、按键中断实验
        8、A/D转换实验

    第三天

    学习目标

        通过本课学习,学员可以明白Linux中块设备驱动的特点及框架,独立分析Linux中大部分块设备的驱动方法,并熟悉MTD设备驱动的特点与框架,具备MTD Nand Flash驱动程序开发的能力。通过实验,学员还可以掌握IDE、Ramdisk驱动移植方法。

    9:00
    |
    12:00

    3. LINUX块设备驱动程序开发
        3.1 块设备及其驱动的特点
        3.2 块设备驱动程序中两个关键结构体GEN_DISK与REQUEST
        3.3 块设备驱动程序的注册与请求处理
        3.4 MTD设备的特点以及与块设备的关系
        3.5 MTD设备驱动的框架及关键结构体分析
        3.6 S3C2410(S3C2440)中的NAND FLASH控制器分析
        3.7 S3C2410(S3C2440) NAND FLASH MTD驱动分析

    13:00
    |
    16:00

    【实验】
        1、编写简单的块设备驱动程序
        2、实现RAMDISK驱动
        3、IDE硬盘的驱动移植
        4、移植S3C2410 闪存控制器驱动
        5、配置MTD内核选项
        6、移植嵌入式文件系统

    第四天

    学习目标

        网络设备是嵌入式产品开发,特别是基于网络的产品开发中最重要的内容之一。通过本课学习,学员可以深入理解Linux网络驱动程序中有关套接字(socket)、套接字缓冲区(sk_buff)等概念,了解网络驱动程序的数据交换过程。通过实际的动手操作,学员将掌握如何移植或编写具体网卡的驱动程序,并在此基础上实现更为高级的网络功能。了解MMC/SD卡的物理及电气特性,熟悉相关的工作协议,并在此基础上能够移植或编写Linux下的MMC/SD控制器的驱动程序。

    9:00
    |
    12:00

    4. LINUX网络设备驱动程序开发
        4.1 OSI网络参考模型
        4.2 套接字(SOCKET)简介
        4.3 套接字缓冲区(SK_BUFF)
        4.4 NET_DEVICE结构分析
        4.5 数据包传送与接收
        4.6 网络驱动的中断处理
        4.7 网络设备驱动程序的基本实现
    5. LINUX下MMC/SD卡驱动开发
        5.1 嵌入式系统中几种常见存储介质的比较(NOR/NAND FLASH、CF、MMC/SD)
        5.2 MMC/SD卡物理及电气规范简介
        5.3 MMC/SD卡工作中的关键命令及关键结构信息
        5.4 S3C2410(S3C2440)中MMC/SDHOST控制器分析
        5.5 LINUX中MMC/SD存储卡驱动程序结构分析
        5.6 S3C2410(S3C2440)中MMC/SD HOST控制器的驱动实现

    13:00
    |
    16:00

    【实验】
        1、编写简单的虚拟以太网卡驱动程序
        2、移植并编写CS8900A网卡驱动程序
        3、移植并编写DM9000网卡驱动程序
        4、配置网络参数,测试网卡驱动程序行为
        5、MMC/SD协议分析
        6、在LINUX源码中加入针对ARM平台的MMC/SD主控制器驱动的支持

    第五天

    学习目标

        通过本课学习,学员可掌握嵌入式Linux显示驱动程序的开发方法,理解嵌入式Linux图形驱动程序实现机制,能够移植或编写嵌入式显示控制器驱动程序,并完成针对各种LCD硬件的定制。

    9:00
    |
    12:00

    6. LINUX帧缓冲驱动程序开发
        6.1 帧缓冲显示技术
        6.2 帧缓冲驱动程序显示原理
        6.3 帧缓冲驱动程序的数据结构
        6.4 帧缓冲驱动程序的API
        6.5 帧缓冲驱动程序的基本实现
        6.6 使用高级图形库
    7. 触摸屏驱动开发
        7.1 触摸屏工作原理
        7.2 S3C2410触摸屏控制器工作原理
        7.3 触摸屏驱动程序编写

    13:00
    |
    16:00

    【实验】
        1、熟悉FRAMEBUFFER驱动的结构
        2、熟悉FRAMEBUFFER中的重要数据结构
        3、编写S3C2410彩色LCD控制器驱动程序
        4、编写测试程序控制屏幕显示
        5、编译高级图形库例子,显示图形
        6、熟悉触屏驱动程序
        7、写触屏测试代码

    第六天

    学习目标

        掌握USB通讯规范及拓扑结构中的主机控制器、HUB、USB设备的工作流程;掌握S3C2410 USB device控制器的工作原理;最后在S3C2410开发板上编写usbtransfer固件程序,结合PC机上windows环境下的DNW软件,实现基于usb的文件下载功能。通过Linux下USB驱动开发内容的学习,学员将深入理解Linux内核USB子系统,掌握USB驱动程序编写技术。经过学习后的学员能够移植或编写USB主机OHCI和设备驱动程序,最后通过对usbtransfer设备的驱动编程,实现在linux环境下的文件下载功能(替换DNW的下载功能)。

    9:00
    |
    12:00

    8. LINUX下USB驱动开发基础
        8.1 USB规范介绍
        8.2 USB主机控制器
        8.3 USB HUB
        8.4 USB设备状态
        8.5 USB描述符
        8.6 USB请求
        8.7 USB通讯数据格式
        8.8 S3C2410 USB device控制器
        8.9 编写usbtransfer固件程序
    9. LINUX下USB驱动高级开发
        9.1 Linux USB驱动层次
        9.2 Linux USB主机控制器驱动介绍
        9.3 Linux USB HUB驱动介绍
        9.4 Linux USB 设备驱动程序
        9.5 编写usbtransfer设备驱动程序
        9.6 编写usbtransfer设备应用程序

    13:00
    |
    16:00

    【实验】
        1、在开发板上烧写并测试USB固件程序
        2、usbtransfer固件程序分析与编写
        3、使用usbview工具观察USB设备
        4、使用sysfs分析USB层次结构
        5、LINUX下编写usbtransfer设备驱动实现USB下载


       本课程培训过的客户

            摩托罗拉 | 浪潮电子 | 清华同方 | 大唐数码 | 北大方正 | 北京北广电子集团 | 上海贝尔阿尔卡特 | 北京用友软件 | 天津津亚电子 | 日电电子(NEC) | 索尼(中国)| 北阳电子 | 中科院 | 保定天河电子 | 北广电子集团 | 北京61416部队仪表室 | 北京波谱世纪 | 北京传视数码 | 北京交大微联 | 北京凯普林光电 | 北京康拓 | 北京利达安信数码 | 北京敏视达雷达 | 北京铭泰 | 北京日立华胜 | 北京赛尔网络 | 北京时代飞龙 | 北京怡德亨 | 北京中科网威 | 北京中新创 | 91669部队 | 比联公司 | 大连三曦 |东莞冠宏电子 | 二炮研究院 | 公安部第一研究所 | 广州景腾通讯科技 | 杭州恩康数码 | 航天信息 | 河北霸州市供电局 | 华北计算技术研究所 | 华宇通讯 | 济南泰信 | 佳律通信设备 | 金宝电子 | 联合信源 | 南京电子部第十四研究所 | 南京远拓 | 人民银行印研所 | 赛尔网络 | 山东省计算中心 | 陕西省信息网络与软件创新工程中心 | 上海华虹计通智能卡系统有限公司 | 上海儒竞电子 | 上海申通轨道交通研究咨询有限公司 | 上海天能电子 | 上海铁路通信 | 上海怡力工程设备有限公司 | 上海自动化仪表股份有限公司 | 数字太和 | 瞬联软件 | 唐人数码 | 天津8357研究所 | 铁道科学研究院 | 统宝光电显示系统(上海) | 无锡贝尔森影像司 | 新乡大立科技 | 兴唐通信司 | 意科通信 | 浙江华立科技 | 中电广通 | 中国兵器工业研究所 | 中国电子科技集团 | 中国电子南京第十四研究所 | 中国电子系统工程总公司 | 中国航空工业研究所 | 航天自动控制研究所 | 安氏领信 | 博世安保(珠海)有限公司RDInstrusion | 软件所 | 上海索尼 | 841研究所 | 上海基谱电波科学技术研究所 | 上海基谱电波科学技术研究所 | 上海英华达 | 森洋软件技术开发有限公司 | 上海百强生化 等等......

    展开全文
  • 主要内容: 第1章、Linux快速入门 第2章、Linux基础命令 第3章、Linux下C编程基础 第4章、嵌入式系统基础 第5章、嵌入式Linux开发环境的搭建 ...第11章、嵌入式Linux设备驱动开发 第12章、Qt图形编程基础
  • 华清远见的全部培训资料: linux基础; c基础; linux系统编程; linux网络编程; linux设备驱动; qt编程;
  • 《嵌入式Linux应用程序开发标准教程》 pdf 华清远见10年特献版
  • 决定是学习嵌入式Linux的好资料,也是学PCLinux的好资料
  • 1、 linux设备驱动是以内核模块的方式而存在的,在具体的驱动开发中将驱动编译为模块具有很到的工程意义。因为如果将正在开发中的驱动编译如内核,而开发过程中会不断修改驱动代码,则需要不断的编译和重启Linux,...

    1、  linux设备驱动是以内核模块的方式而存在的,在具体的驱动开发中将驱动编译为模块具有很到的工程意义。因为如果将正在开发中的驱动编译如内核,而开发过程中会不断修改驱动代码,则需要不断的编译和重启Linux,但是如果直接编译为模块则只需要rmmod与insmod即可,开发效率大大提高。

    2、  linux系统的用户空间编程有两种方法,即通过linux API和通过C库函数访问文件。用户空间看不到设备驱动,能看到的只有设备对应的文件,因此文件编程即是用户空间的设备编程。
    Linux按照功能对文件系统的目录进行了良好的规划。/dev是设备文件存放的目录,devfs和udev分别是linux2.4和linux2.6设备生成的设备文件节点方法,前者运行于内核空间后者运行于用户空间。
    linux2.6设备通过一些列的数据结构定义了设备模型,设备模型与sysfs文件系统中的目录和文件存在一种对应关系,udev可以利用sysfs中记录的信息定义规则并提取主次设备号动态创建/dev文件设备。

    3、  字符设备是三大设备(字符设备、块设备、网络设备)中较简单的一类设备,器驱动程序中完成的主要功能是初始化、添加和删除dev结构体,申请和释放设备号,以及填充file_operations结构体中的操作函数,实现file_operations结构体中的read()、write()和ioctl()等函数是驱动设计的主体工作。

    4、  并发态和竞态广泛存在,中断屏蔽、原子操作、自旋锁和信号量都是解决并发问题的机制。中断屏蔽很少被单独使用,院子操作只针对整型进行,因此自旋锁和信号量应用最为广泛。
    自旋锁会导致死循环,锁定期间不允许阻塞,因此要求锁定的临界区小。信号量允许临界区阻塞,可以适用于临界区大的情况。
    读写自旋锁和读写信号量分别是放宽了条件的自旋锁和信号量,它允许多个执行单元对共享资源并读开发。

    5、  阻塞与非阻塞访问时I/O操作的两种不同的模式,前者在I/O操作不可进行时会让进程睡眠。
    在设备驱动中阻塞I/O一般基于等待队列来实现,等待队列可用于同步驱动中事件发生的先后顺序。使用非阻塞I/O也可以借助轮询函数来查询设备是否立即被访问,用户空间调用select()函数和poll()接口,设备驱动提供poll()函数。设备驱动的poll()函数本身不会阻塞,但是poll()和select()系统调用则会阻塞的等待文件描述符至少一个可访问或超时。

    6、  使用信号量可以实现设备驱动与用户程序之间的异步通知,总体而言,设备驱动和用户空间要分别完成以下工作:用户空间设置文件的拥有者、FASYNC标志及捕获信号,内核空间响应对文件对文件的拥有者、FASYNC标志的设置,并在资源可获得是释放信号。
    linux2.6内核包含对AIO的支持为用户空间提供统一的异步I/O接口。在AIO中,信号和回调函数是实现内核空间对用户空间应用程序通知的两种机制。

    7、  硬中断是是外部设备对CPU的中断、软中断通常是硬中断服务程序对内核的中断,而信号则是有内核(或其他进程)对某个进程的中断。
    linux内核中断处理分为两个半部,顶半部处理紧急硬件操作,底半部处理不紧急的耗时操作。Tasklet和工作队列都是调度底半部的良好机制,tasklet基于软中断实现。内核定时器也依靠软中断实现。
    内核中的延时是忙等待或者睡眠等待,为了充分利用CPU资源,使系统有更好的吞吐性能,在对延时时间的要求并不是很精确的情况下,睡眠等待通常是值得推荐的。

    8、  Malloc()的内存一定要被free(),否则会造成内存泄露。理想情况下,malloc()与free()应该成对出现,即谁申请就由谁释放。
    外设可处于CPU的内存空间或者I/O空间,除X86外嵌入式处理器一般只存在内存空间。在Linux系统中,为I/O内存和I/O端口的访问提供了一套统一的方法,访问流程一般为“申请资源—>映射—>访问—>去映射—>释放资源”。
    对于有MMU的处理器而言,linux系统的内部布局比较复杂,可直接映射的物理内存称为常规内存,超出部分为高端内存。Kmalloc()和__get_free_pages()申请的内存在物理上连续,而vmalloc()申请的内存在物理上不连续。
    DMA操作可能导致Cache的不一致问题,因此,对于DMA缓冲,应该用dma_alloc_coherent()等方法申请。在DMA操作中涉及总线地址、物理地址和虚拟地址等概念,区分这3类地址非常重要。Linux内核中对DMA通道的申请和释放采用了和中断类似的方法。

    9、  TTY设备驱动的主体工作围绕tty_driver这个结构体的成员函数展开,主要实现其中的数据发送和接收流程以及tty设备线路设置函数。
    针对串口,内核实现了内核核心层,这个层实现了串口设备通用的tty_driver。因此,串口设备驱动的主体工作从tty_driver移动到uart_driver。

    10、块设备的I/O操作方式与字符设备存在较大不同,因而引入了request_queue、request、bio等一系列数据结构。在整个块设备的I/O操作中,贯穿于始终的是“请求”,字符设备的I/O操作则是直接进行不绕弯,块设备的I/O操作会排队和整合。
    驱动的任务是处理请求,对请求的排队和整合由I/O调度算法解决,因此,块设备驱动的核心是请求处理函数或“制造请求”函数。
    尽管块设备驱动中仍然存在block_device_operations结构体及其成员函数,但其不在包含读写一类的成员函数,而只是包含打开、释放及I/O控制等与具体读写无关的函数。
    块设备驱动的结构相当复杂,但幸运的是,块设备不像字符设备那样包罗万象,它通常就是存储设备,而且驱动的主体已经由Linux内核提供,针对一个特定的硬件系统,驱动工程师所涉及的工作往往只是编写少量的与硬件直接交互的代码。

    11、linux I2C驱动体系结构相当复杂,它主要分为3个部分组成,即I2C核心、I2C总线驱动和I2C设备驱动。I2C核心是2C总线驱动和I2C设备驱动的中间枢纽,它以通用的、与平台无关的接口实现了I2C设备与适配器的沟通。I2C总线驱动填充i2c_adapter和i2c_algorithm结构体,I2C设备驱动填充i2c_driver和i2c_client结构体。
    另外,系统中的i2c-dev.c文件定义的主设备号为89的设备可以方便的给用程序提供读写I2C设备寄存器的能力,使得工程师大多时候不需要为具体的I2C设备驱动定义文件操作接口。

    工程师在计I2C设备驱动程序的时候,并不一定要遵守linux I2C驱动体系结构,完全可以把它当做一个普通的字符设备来处理。

    12、在音频设备驱动中,几乎必须使用DMA,而DMA缓冲区会被分成一个一个的段,每次DMA操作进行期中的一段。

    13、帧缓冲设备是一种典型的字符设备,它统一了显存,将显示缓冲区直接映射到用户空间。帧缓冲设备驱动file_operations中VFS接口函数由fbmem.c文件统一实现。这样,驱动工程师的工作重点将是实现针对特定设备fb_info中的fb_ops的成员函数,另外,理解并灵活的修改fb_info中的var和fix参数非常关键。fb_info中的var参数直接和LCD控制器的硬件设置以及LCD屏幕对应。

    转载于:https://www.cnblogs.com/wanghuaijun/p/8972050.html

    展开全文
  • 华清远见嵌入式文档资料,嵌入式linux驱动程序详解,详细,清晰,初学和入门者值得拥有的资料
  • 华清远见嵌入式linux应用程序开发技术详解(内部资料) 第1章 Linux快速入门   1.1 嵌入式Linux基础   1.2 Linux安装   1.3 Linux文件及文件系统   1.4 实验内容——安装Linux操作系统   本章小结 ...
  •    课程目标

            参加嵌入式linux系统开发培训班可以使学员快速掌握嵌入式系统开发的流程,系统移植的方法,Bootloader的原理,可以编写自己的Bootloader。学习本课程的学员能够从事嵌入式系统相关的项目开发。

       培养对象

            嵌入式系统开发工程师、系统移植工程师。

       入学要求

            学员学习本课程应具备下列基础知识:
            ◆ 熟练使用Linux操作系统;
            ◆ 熟悉C语言编程和汇编语言编程;
            ◆ 对ARM处理器有一定的了解。

       师资团队
        【刘洪涛】
    ● 华清远见金牌讲师、学术总监,工学硕士。6年以上嵌入式开发经验,资深开发工程师、技术总监,企业员工导师, ARM公司授权ATC讲师,精通ARM体系结构,在多款ARM硬件平台上完成过原理图设计、pcb布线、bootloader移植、linux系统移植、文件系统构建、驱动程序开发、GUI图形编程等工作。具有丰富的ARM-LINUX系统软、硬件产品开发经验,对嵌入式专业人才的培养体系及培训方法有深入研究。 华清远见讲师照片
    ■     点击此处在线试听刘老师最新授课视频>>>    刘老师博客>>>
        【黄昕】
    ● 华清远见高级讲师,多年嵌入式开发经验,3年嵌入式培训经验。精通ARM/PPC体系结构开发。精通实时操作系统开发设计,精通Linux内核开发技术,包括Montavista Linux内核特性和实时Linux等。具有工业控制,智能手机,网络产品,通讯信息终端等行业开发经验。曾在多所高校讲授“嵌入式系统软件开发”相关课程。目前从事操作系统设计、网络化控制技术等研究工作。 华清远见讲师照片
    ■     点击此处在线试听黄老师最新授课视频>>>
        【易松华】
    ● 华清远见高级讲师,具有多年嵌入式开发实战经验,多年嵌入式培训经验,熟悉ARM/PPC/MIPS平台,对嵌入式Linux、uc/OS、uClinux 有深入的研究。目前专攻手机设计和培训。曾为数个大型企业进行手机开发、Linux开发方面的培训。在参与的项目中,曾使用了EP7312、 S3C2410、PXA255、OMAP1510等多款处理器,完成了平台移植、Bootloader移植等工作。 华清远见讲师照片
    ■     点击此处在线试听易老师最新授课视频>>> 
        【李智敏】
    ● 九年的项目开发经验,长期从事嵌入式系统开发工作,对于操作系统底层有深入了解,对于GUI系统实现方式有自己的理解。长期从事嵌入式仪器仪表的开发,对于要求高实时性的控制系统实现有丰富经验。 华清远见讲师照片

    更多师资力量请参见华清远见师资团队

       教材资料

            ◆ 《华清远见-嵌入式Linux系统开发培训讲义》
            ◆ 《嵌入式Linux系统开发标准教程》(第2版)    华清远见教材编写组 编著

       班级规模及环境

            为了保证培训效果,增加互动环节,我们坚持小班授课,每期报名人数限15人,多余**到下一期进行。人手一套开发板和开发用的PC主机。          >>单击查看实验设备

       时间地点
            北京总部(滚动开班):
            上课地点:北京清华大学,查看校内地图>>
            周末班(周六日上课):2010年03月27日,2010年05月01日
            连续班(连续上课):2010年03月27日,2010年05月01日
            上海分中心(滚动开班):
            上课地点:上海徐汇区银海大厦A座801,查看地图>> 
            周末班(周六日上课):2010年03月20日,2010年04月24日
            连续班(连续上课):2010年03月20日,2010年04月24日
            深圳分中心(滚动开班):
            上课地点:深圳市罗湖区宝安南路3038号蔡屋围金塘大厦3楼,查看地图>>
            周末班(周六日上课):2010年03月06日,2010年04月24日
            连续班(连续上课):2010年03月06日,2010年04月24日
            成都分中心(滚动开班):
            周末班(周六日上课):2010年03月20日,2010年05月08日
            连续班(连续上课):2010年03月20日,2010年05月08日

    本课程每期班限额15名,报满即停止报名,请提前在线或电话预约
    华清远见保留开课时间调整的权利,欢迎来电洽询

       学时费用

            ◆课时: 共6天,每天6学时,总计36学时
            ◆培训费用(含教材费和午餐费):公司员工(3200元),个人自费(2500元),学生自费(1900元,凭有效证件)
            ◆认证费(可选):培训合格学员可获工业和信息化部《国家信息技术应用技能嵌入式Linux系统开发工程师认证证书》(认证费500元,>>单击查看证书样本),Atmel公司全球统一《Atmel嵌入式工程师认证证书》(认证费500元)
            ◆外地学员:代理安排食宿(需提前预定)


    单击查看退费规定说明>>>

       最新优惠

            ◆团体报名优惠措施:两人95折优惠,三人或三人以上9折优惠

            ◆套餐课程同时报名优惠措施(以下套餐优惠只能任选一种):

    1、同时报选《ARM开发培训班》,即享受500元优惠,同时可获ARM公司证书

    2、同时报选《嵌入式Linux驱动开发班》,即享受500元优惠!

    3、现在同时报选《ARM班》《Linux应用班》《Linux系统班》《Linux驱动班》中的任意3门课程,即赠送三星2410开发板

    报选此课程可获200元折价劵!

       质量保障

            1、培训过程中,如有部分内容理解不透或消化不好,可免费在下期培训班中重听;
            2、培训结束后免费提供一个月的技术支持,充分保证培训后出效果;
            3、培训合格学员可享受免费推荐就业机会。

       课程进度安排(最新更新日期:2008.12.10
    时间 课程大纲

    第一天

    9:00
    |
    12:00

    1 嵌入式Linux开发环境构建
    目标:通过今天课程的学习,学员能掌握嵌入式Linux交叉开发环境的搭建、交叉编译工具链的使用、交叉编译工具链制作的原理、及学会通过crosstool制作自己的交叉工具链。
          1.1 交叉开发环境介绍
          1.2 编译交叉开发工具链
          1.3 配置主机开发环境
          1.4 建立交叉开发环境
          1.5 编译器和二进制工具详解
          1.6 交叉调试应用程序

    13:30
    |
    16:30

    【实验】
          (1) 安装开发工具和文件
          (2) 配置超级终端/minicom
          (3) 配置TFTP网络服务
          (4) 配置NFS网络服务
          (5) 引导目标板启动Linux内核
          (6) 制作crosstool交叉工具链
          (7) 交叉调试应用程序

    第二天

    9:00
    |
    12:00
    2 开发系统引导程序
    目标:理解嵌入式linux引导程序的原理,掌握如何在FS2410硬件平台上移植u-boot。
          2.1 Bootloader介绍
          2.2 u-boot工程介绍
          2.3 u-boot的编译使用
          2.4 u-boot源码分析
          2.5 u-boot资源分配
          2.6 u-boot移植过程
    13:30
    |
    16:30

    【实验】
          (1) u-boot常用命令
          (2) 添加u-boot新命令
          (3) 设置u-boot环境变量
          (4) 配置编译u-boot
          (5) 移植FS2410的u-boot-1.3.4
                ● 支持网卡、串口功能
                ● 支持从nor、nandflash启动
                ● 支持nor、nandflash烧写
                ● 支持yaffs2、jffs2文件系统烧写
                ● 支持u盘文件读取

    第三天

    9:00
    |
    12:00

    3 配置编译Linux内核
    目标:熟悉内核的原码结构和kbuild Makefile语法;掌握和内核、驱动模块编译相关的原理及方法。
          3.1 Linux内核介绍
          3.2 Linux内核特点
          3.3 Linux内核源代码结构
          3.4 Linux内核选项解析
          3.5 Linux内核编译链接
          3.6 内核模块编译、使用方法

    13:30
    |
    16:30

    【实验】
          (1) 配置交叉开发环境
          (2) 熟悉菜单配置文件的组织结构
          (3) 熟悉内核配置过程选项
          (4) 加入Kconfig新选项
          (5) 编译交叉开发环境所需要的内核
          (6) 在内核中加入自己的字符设备程序

    第四天

    9:00
    |
    12:00

    4 移植Linux内核源码
    目标:通过今天课程的学习,学员能够熟悉内核启动流程、掌握内核移植的一般方法、分析平台相关代码结构,并能够自己动手移植高版本内核支持FS2410开发板。
          4.1 Linux内核移植介绍
          4.2 Linux内核移植平台相关代码分析
          4.3 动手修改Linux内核源代码
          4.4 分析编译过程错误和宏定义的关系
          4.5 Linux启动过程源代码分析
          4.6 2.6内核平台设备结构介绍

    13:30
    |
    16:30

    【实验】
          (1) 配置编译高版本的Linux内核
          (2) 移植高版本(linux-2.6.26)内核支持FS2410板
                ● 网卡驱动移植
                ● mtd支持及flash分区方法
                ● yaffs2文件系统移植
                ● sd卡驱动
                ● 液晶支持
                ● u盘功能
          (3) 分析解决编译过程中的错误

    第五天
    9:00
    |
    12:00
    5 集成部署Linux系统
    目标:理解嵌入式linux引导程序的原理,掌握如何在FS2410硬件平台上移植u-boot。
          5.1 Linux文件系统制作
          5.2 Linux系统集成测试
          5.3 文件系统和存储设备的选择
          5.4 部署Ramdisk文件系统的过程
          5.5 部署JFFS2文件系统的过程
          5.6 部署Yaffs2文件系统的过程
    13:30
    |
    16:30

    【实验】
          (1) 制作最小的文件系统
          (2) 添加udev支持
          (3) 部署ramdisk文件系统
          (4) 部署cramfs文件系统
          (5) 部署jffs2文件系统
          (6) 部署yaffs2文件系统
          (7) 配置u-boot使系统独立运行

    第六天
    9:00
    |
    12:00

    6 调试Linux内核及优化linux内核
    目标:掌握内核调试的常用方法、内核优化的方法策略。
          6.1 Linux内核调试概述
          6.2 Linux内核的打印函数
          6.3 Linux内核启动过程错误分析
          6.4 解析oops信息
          6.5 常用调试方法和工具
          6.6 基本的驱动程序分析
          6.7 系统启动时间优化
          6.8 电源管理方法
                ● 动态、静态功耗介绍
                ● 嵌入式处理器对电源管理的支持
                ● 嵌入式linux电源管理结构
                ● 用户层电源管理策略
                ● 设备驱动层电源管理策略

    13:30
    |
    16:30
    【实验】
          (1) 通过基本调试手段解决内核启动过程错误
          (2) 分析、处理oops错误
          (3) 优化系统,加快系统启动速度
          (4) 优化系统,降低系统功耗

       本课程培训过的客户

            Motorola | 北京清华同方微电子 | 北京用友软件 | 大唐微电子 | 飞利浦 | 冠捷半导体 | 华为 | 浪潮电子 | 清华同方 | 日电电子中国有限公司(NEC) | 上海贝尔阿尔卡特 | 曙光集团 | 保定天河电子 | 天津津亚电子 | 通用电气 | 西门子数控 | 上海戴尔 | 上海索尼 | 北京拜尼尔电子技术 | 301医院医学工程保障中心 | 91669部队 | TPO(上海) | 保定天河电子 | 北京61416部队仪表室 | 北京奥锐利特科技 | 北京百容捷 | 北京波谱世纪 | 北京博奥 | 北京传视数码 | 北京东方凯奇 | 北京杜朗自动化 | 北京高阳元通电子 | 北京公联信达 | 北京航天数据公司 | 北京航天一院十二所 | 北京红樱枫软件 | 北京科林电视设备 | 北京联合生产力 | 北京明兆科技 | 北京赛尔网络 | 北京时代飞龙 | 北京市煤炭矿用机电设备 | 北京市煤炭矿用机电设备 | 北京数位红 | 北京思元软件 | 北京威尔铁科技 | 北京威速科技 | 北京握奇数据系统 | 北京希电信息大学) | 北京新北光仪器 | 北京新拓尼克 | 北京新中新 | 北京信诺瑞得 | 北京怡德亨科技 | 北京怡德科技 | 北京意科 | 北京用友软件 | 北京优迪艾科技 | 北京优迪艾科技 | 北京兆科恒业电子 | 北京兆科恒业电子 | 北京中电华大电子 | 北京中科网威 | 北控软件 | 北阳电子 | 北邮通信网络 | 比联 | 长春华普泰科软件 | 大连三曦智能 | 丹东思凯电子 | 德美科电脑 | 德美科电脑 | 第二炮兵研究院 | 东方光大喷泉 | 二0二0部队 | 二炮研究院 | 福建星海通信 | 公安部第一研究所 | 公安部第一研究所 | 广州市奕星研科数码 | 航天信息 | 航天医学工程研究所 | 华北计算技术研究所 | 华环电子 | 上海704研究所 | 上海电器科学研究所 | 上海飞来飞去多媒体 | 上海华虹计通智能卡系统 | 上海计算机研究所 | 上海儒竞电子 | 上海申通轨道交通研究咨询 | 上海铁路通信 | 上海怡力工程设备 | 上海自动化仪表 | 深圳新诺亚舟科技 | 沈阳岚山嵌入系统 | 苏州互亿科技 | 新乡大立 | 中钞信用卡 | 中国科学院计算技术研究所 | 中科院沈阳自动化研究所 | 中软金卡 | 中石油东方地球物理勘探 | 珠州电力机车研究所 | 上海英业达 | 珠海博世安保 等等......

    展开全文
  • 作者:李智敏,华清远见嵌入式学院上海中心讲师。 从Linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver 。Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_...

     作者:李智敏,华清远见嵌入式学院上海中心讲师。

    从Linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver 。Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device 表示;驱动用 platform_driver 进行注册。

    Linux platform driver 机制和传统的device driver机制(即:通过 driver_register 函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中用使用这些资源时,通过platform device提供的标准接口进行申请并使用。

    platform 是一个虚拟的地址总线,相比 PCI、USB,它主要用于描述SOC上的片上资源。platform 所描述的资源有一个共同点:在CPU 的总线上直接取址。平台设备会分到一个名称(用在驱动绑定中)以及一系列诸如地址和中断请求号(IRQ)之类的资源。

    platform 总线下驱动的开发步骤是:

    1、 设备

    需要实现的结构体是:platform_device 。

    1)初始化 resource 结构变量
             2)初始化 platform_device 结构变量
             3)向系统注册设备:platform_device_register。

    以上三步,必须在设备驱动加载前完成,即执行platform_driver_register()之前,原因是驱动注册时需要匹配内核中所有已注册的设备名。platform_driver_register()中添加device到内核最终还是调用的device_add函数。Platform_device_add和device_add最主要的区别是多了一步insert_resource(p, r),即将platform资源(resource)添加进内核,由内核统一管理。

    2、驱动

    驱动注册中,需要实现的结构体是:platform_driver 。

    在驱动程序的初始化函数中,调用了platform_driver_register()注册 platform_driver 。需要注意的是:platform_driver 和 platform_device 中的 name 变量的值必须是相同的 。这样在 platform_driver_register() 注册时,会将当前注册的 platform_driver 中的 name 变量的值和已注册的所有 platform_device 中的 name 变量的值进行比较,只有找到具有相同名称的 platform_device 才能注册成功。当注册成功时,会调用 platform_driver 结构元素 probe 函数指针。

    platform_driver_register()的注册过程:

    1.platform_driver_register(&s3c2410fb_driver)
             2.driver_register(&drv->driver)
             3.bus_add_driver(drv)
             4.driver_attach(drv)
             5.bus_for_each_dev(drv->bus, NULL, drv, __driver_attach)
             6.__driver_attach(struct device * dev, void * data)
             7.driver_probe_device(drv, dev)
             8.really_probe(dev, drv)

    在really_probe()中:为设备指派管理该设备的驱动:dev->driver = drv, 调用probe()函数初始化设备:drv->probe(dev)。

    来源:http://tieba.baidu.com/p/1008102666

    展开全文
  • 【视频】嵌入式Linux/Android驱动开发揭秘(1)触摸屏驱动开发 【视频】嵌入式Linux/Android驱动开发揭秘(2)液晶屏驱动开发 【视频】嵌入式Linux/Android驱动开发揭秘(3)摄像头驱动开发 【视频】嵌入式Linux...
  • 《嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux基础、基本操作命令讲起,为Linux初学者能快速入门提供了保证。...
  • 基于V4L2的视频驱动开发(2)  华清远见 刘洪涛 三、 V4L2 API及数据结构 V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包
  • 华清远见(很棒)--嵌入式Linux应用程序开发详解 第1章 Linux快速入门 1 1.1 嵌入式Linux基础 1 1.1.1 Linux发展概述 1 1.1.2 Linux作为嵌入式操作系统的优势 2 1.1.3 Linux发行版本 3 1.1.4 如何学习...
  • 华清远见Linux MMC SD驱动详解(本人培训内部资料)关于MMC SD讲的很详细。
1 2 3 4 5 ... 20
收藏数 1,313
精华内容 525
热门标签
关键字:

linux驱动 华清远见