当前位置: 嵌入式研究室 > 课程介绍 > 短期强化嵌入式技术课程 >

Linux内核/驱动核心高级开发


UEA-LKD Linux内核驱动核心高级开发 课程描述:

       Linux目前是主流的嵌入式智能操作系统,Google更是在Linux平台上进行改进,直接促成了Android操作系统以及Chrome操作系统的诞生。目前不论 Nokia、HTC还是Moto 索爱都采用ARM处理器作为智能设备的首选平台,Linux及Android、Chrome成为ARM平台智能设备最常用的操作系统,本课程在ARM体系上进行Linux内核及驱动编程,让学员从零开始手写至少5种驱动程序,完全Linux平台编程,能否自己手写驱动程序是真正嵌入式内核驱动开发的标准。

教学目标:

        强调从零开始写至少5种Linux驱动,让学员真正掌握ARM平台的Linux内核驱动的核心编程能力,让学员可以熟练掌握ARM汇编、ARM体系结构、ARM平台的直接控制程序(裸驱动)。同时学员将会在ARM开发板上直接自己动手书写硬件控制程序以及Bootloader等,一定不是简单的移植,而是真正理解并且亲自书写。

面向行业及岗位:

       消费类电子(手机、PDA、游戏机)、数字多媒体(网络点播、机顶盒)、汽车电子(导航仪)、医疗电子、工业控制等行业的研发工程师,软件工程师,嵌入式软件工程师。

培养对象:

       希望掌握ARM平台底层编程技术的学员;以及希望从事移动终端开发的爱好者、工程师、程序员、已及相关行业的工程技术人员;有志于从事嵌入式核心研发的软件开发技术人员和正在学习计算机、软件、通信专业的学生,以下是主要应用方向:
          ◆ 手机内核驱动软件开发;
          ◆ 智能设备的驱动软件开发;
          ◆ 芯片公司的操作系统级开发;
          ◆ 智能操作系统平台驱动研发;

课程特色:

    ◆本课程设计者为8年嵌入式技术项目经理经验的李老师,他对MIPS PPC等技术都有涉及。
    ◆从零开始手写Linux驱动和控制程序,直接用自己的代码控制处理器。
    ◆从零开始手写至少5款驱动程序 触摸屏、LCD、音频、NandFlash、网卡驱动等。
    ◆高强度授课,全部项目型教学,每个环节都有案例。
    ◆三星2440开发板+触摸屏,让学员的程序立刻可见。
    ◆全部Linux平台开发环境,真正真实工作环境开发。
 
课程大纲:(共160学时,每天上课8学时,共20天(1个月)授课)

        案例实践: 我们将从以下驱动中让大家手写几款重要的
       (根据各地的环境以及老师的不同可能实际案例有一定变化,案例为以下其中几个)。
             a. ARM-Linux GPIO驱动
             b. ARM-Linux WatchDog驱动
             c. ARM-Linux Udev移植
             d. ARM-Linux 触摸屏输入设备驱动
             e. ARM-Linux LCD显示设备驱动
             f. ARM-Linux 音频设备驱动
             g. ARM-Linux Nand Flash块设备驱动
             h. ARM-Linux 网络设备驱动
        Linux内核设计部分
           1、Linux内核配置与内核模块
               . 内核配置编译
               . 补丁的制作
               . 内核补丁
               . 内核Makefile
               . Kconfig的编写
               . 模块的编译与加载
               . 导出符号
               . 引用计数
               . 内核空间与用户空间的区别
               . printk
           2、设备驱动初步
               . Linux的VFS简介
               . 设备文件与设备号
               . 字符设备
               . cdev结构
               . 用户空间的操作与设备操作关系
               . open、release、read、write、lseek、ioctl等
            3、进程调度
               . 定时器中断
               . task_struct的作用
               . thread_info
               . 抢占与非抢占
               . 进程睡眠
               . 等待队列
               . 阻塞I/O与非阻塞I/O
               . select/poll
            4、并发控制
               . 原子操作
               . 自旋锁
               . 禁用抢占
               . 中断屏蔽
               . 信号量
               . completion
            5、异步通知
              . Linux信号
               . fasync的实现
            6、内存管理与内核内存管理模块的使用
              . 虚拟地址空间与MMU
              . 内核页管理机制
              . 内核内存分配
              . 高端内存
              . vmalloc
              . 统一编址与独立编址
              . I/O端口与I/O内存
              . I/O静态映射
               . mmap
            7、内核时间与内核体系的时间控制
              . 内核计时jiffies
              . timer
              . tasklet
              . work_struct
           8、中断系统与Linux中断系统的使用
               . 中断机制
               . 异常向表相关代码分析
               . 中断号的确定
                上半部与下半部
               . 中断共享
            9、内核Debug
               . proc文件系统
               . 模块参数
               . 模块的相关Debug
       Linux驱动部分(在Bootloader部分已经在尝试裸驱动的编写,这部分是驱动的第二部分)
           9、设备模型
              . kobject、kset、class、subsystem与sysfs的原理和关系
               . udev的原理与移植;
              . 总线设备驱动简介
              . bus_type 总线相关体系结构
              . device与device_driver原理 设备驱动体系结构;
              . platform_device的应用
           10、LCD驱动
               . ARM-Linux Frame Buffer驱动详解
               . Linux中图形控制体系;
               . LCD控制程序
               .LCD驱动程序编写
           11、触摸屏驱动
              . ARM-Linux Input设备详解
               . 触摸屏控制
               . 实际开发板上的触摸屏驱动编写
            12、音频设备驱动
               . OSS驱动详解
               . I2S控制
            13、块设备驱动体系结构
              . 块设备的注册
              . 内核模块与块设备驱动
              . I/O请求
              .LCD驱动程序编写
              . 操作集合
           14、网卡驱动编写
               . 设备注册
               . 驱动层数据收发
              . 地址解析
       ◆ 项目实践部分:Linux项目实践 (内容贯穿在整个授课过程中 不另行安排时间)
            基于ARM9 S3C 2440芯片的智能手持设备(PDA)的设计本设备可以直接作为MP4/MPM使用,也可以转为网络智能播放器,智能手机,GPS。S3C2440芯片是目前几乎市面上所有正在销售GPS等设备的ARM芯片,有大量的实际智能设备基于这款芯片,我们使用S3C2440作为主要的ARM9平台智能PDA设备有非常重要的意义。可以让学员的就业非常广阔。尚观作为对嵌入式有5年经验的最早嵌入式职业培训机构,该项目经过专门的设计。
            我们的项目在ARM9 S3C2440上实现,全程Linux平台开发设计,全程开发板实验,整个项目涉及到核心为Linux内核驱动、ARM体系结构、ARM汇编,网络数据传输、QT图形界面、mplayer移植、触摸屏驱动、LCD驱动、音频驱动、网卡驱动、Watch Dog(看门狗)驱动及相应的DMA驱动。除了mplayer解码器部分外,其它所有应用程序和驱动程序全部由我们从零编写,而不是简单的“移植驱动程序”, 并且几乎含盖了嵌入式软件中的各个方面。可以从根本上学习整个嵌入式产品从硬件选型、电路设计、Bootloader开发、操作系统移植、驱动开发、应用开发、网络传输的各个细节,并能锻炼项目领导和团队合作能力。
       项目优势:
             监控设备公司 监控设备方面的公司一般应用嵌入式对多个监控区域进行实时监测、录像。而一般的公司基于成本考虑,都要自行设计硬件,主流用ARM.所以上面就会涉及到触摸屏驱动、LCD驱动、音频驱动、网卡驱动、Watch Dog(看门狗)驱动及相应的DMA驱动的编写, 另外还会涉及到应用部分图象的显示等。也就是说,在上述项目稍作变更就成为一个GPS设备、智能手机、MPM播放器。

实验环境:

 
处理器:ARM9 S3C2440A。
  内存:SDRAM 64M。
  存储器:NorFlash+NandFlash。
  外围设备:RS-232、Ethernet、USB、IIC、IIS、CF Card、SD Card。


适用对象:

     熟练使用Linux平台开发工具。
     熟练使用C语言及数据结构。

 

 


  • NO1 : 所有嵌入式授课都由尚观直营中心授课,尚观没有授权加盟中心讲授嵌入式高端技术,因为加盟中心无法保证授课质量,尚观对所有的学员必须全权负责。
  • NO2 : 签订全国唯一的双保就业协议(绝非模糊不清的就业协议),保就业,保底薪,不就业100%退还所有学费。尚观通过3个开发就业方向来保证就业:Linux内核驱动开发、UNIX环境高级编程、嵌入式应用编程。
  • NO3 : 评估嵌入式培训深度的指标就是学生有多少能写出真正的驱动来,尚观的嵌入式内核驱动开发课程让学员从零开始手写至少五种驱动程序。绝不是移植和改写,一定是从零开始独立完成。
  • NO4 : 必须通过考试才能培训,不通过考试不能入学。授课过程中,每个阶段都有考试,学不会免费重听。尚观每天强制学习到晚上8:30,配有专门的辅导人员,并且在实际老师讲课后还有免费的视频培训。人手一机,每天面授6小时,另外4小时有专人辅导。
  • NO5 : 尚观学员就业信息每月更新,张贴在各个培训中心接受所有新老学员监督,尚观是全国唯一每月实时更新就业信息的培训机构,尚观绝对不会使用以往学员就业信息循环滚动播放,网上查看学员就业信息的网址是:
  • NO6 : 尚观是嵌入式培训中最富有进取心的,在2007年全国最先推出 ARM11(iPhone的平台)课程,这个是最难的ARM体系课程。2007年12月,全国首家移植成功Android(Google手机操作系统)。2008年全国首家推出保8万年薪的核心层内核驱动课程。
  • NO7 : 尚观就业课程一定是全职讲师授课,因为兼职讲师没有责任心,无法对教学负责。尚观讲师介绍中的讲师明确写出是全职还是兼职。
  • NO8 : 全程实践案例授课,我们为每个就业课程设计的大型的案例,而且是企业实际使用的案例,有了这些案例,可以直接对找工作有支持和促进作用。
  • NO9 : 尚观嵌入式研究室从2005年就在开设嵌入式长期就业课程(不是周末的短期兼职业余老师班级),是国内最早开展嵌入式专业长期课程的培训机构。至今已经有近4年多的长期班职业嵌入式培训经验,毕业学员上千人。合作企业多达数百家,最重要的是这些企业对尚观的学员充分肯定。