当前位置: 嵌入式研究室 > 课程介绍 > 短期强化嵌入式技术课程 >
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语言及数据结构。 |







