亚嵌《嵌入式linux系统工程师强化培训班课程大纲》

共 十部分,216学时

上课方式:

    方式一, 脱产
    方式二, 周末全天
    方式三, 周末理论课 + 周一至五晚相应阶段课程的实验课

第一部分    (C语言强化内容)

课程安排 课程内容
共18学时 3学时 函数
函数为程序员提供了最基本的代码复用能力,函数在调用返回时究竟发生了什么?局部变量如何分配空间?可变参数列表的机制如何?我们将在这个环节深入底层,去揭开函数调用的面纱。
 
函数的类型和返回值
函数的参数传递
函数调用过程中的栈帧结构
可变参数列表
递归函数调用
3学时 指针
指针,它让C语言与众不同。如何判断指针的类型?指针的速度真的快么?指针运算和整数运算有何不同?指针和数组一样么,不一样么?我们将在这个环节用简单明了的技巧解决一系列含混的指针问题。
 
判断指针的类型
指针的运算
数组和指针的同异
指向函数的指针
指针与抽象
3学时 预编译
如果说指针是C语言的灵魂,那么预编译就是C语言的生命。预编译使得C语言可以变化出多样的外观。预编译如何提高编码的效率?宏定义中有哪些陷阱?文件包含的时候发生了什么?我们将在这个环节用精确的语言来阐述完整的预编译的技巧。
 
对象宏和函数宏
宏定义技巧和常见错误
#和##运算符
条件编译
文件包含
3学时 字符串
字符串处理,这大概是C语言最不擅长的事情。C语言的字符串处理有许多被遗忘的角落。在这一阶段,我们带领你重拾C语言的字符串处理函数,以充实你的C语言武器库。
 
C风格字符串
标准C字符串库函数一览
重点函数实现解析
C字符串处理范例
3学时 链接
链接使得程序员可以复用二进制的编译结果。不同种类的变量被放到了哪里?如何控制代码在内存中的位置?PC程序员也许不是很关心的这些问题,但这却是嵌入式程序员的必经之路。我们将在这个环节补上知识链条中缺失的一环。
 
链接和elf文件格式概述
程序的存储映像
链接脚本和嵌入式程序的存储
3学时 文件IO
一切都是文件。在我们的整个课程体系中,我们将从不同的角度来审视这一句话。在这个阶段,我们用C语言来审视UNIX世界中的这个基本价值观。
 
流和IO重定向
文本文件与二进制文件
用标准C库进行文件操作
标准C和系统调用
 

第二部分     (ARM开发部分)

课程安排 课程内容
理论部分 3学时 嵌入式系统概述与ARM简介
 1 ARM处理器与其他体系结构处理器异同比较
 2 ARM芯片选型
 3 ARM外围硬件设计
 4 ARM程序和算法
 5 ARM操作系统(uC/OS-II/ARM Linux/uCLinux/WinCE)
ARM知识体系
 1 ARM的特点(体系结构/流水线/异常处理/寄存器组织)
 2 ARM内核概述(内核命名/应用内核/嵌入式内核/安全内核)
 3 ARM内核系列
3学时 ARM结构与编程
 1 ARM的工作模式
 2 ARM存储器格式
 3 ARM运行模式
 4 ARM寄存器组织
 5 ARM的异常
 6 流水线
 7 AHBA总线
ARM指令系统与汇编语言编程
 1 ARM指令概述与特点
 2 ARM寻址方式
 3 ARM指令集
 4 Thumb指令集
 5 ARM汇编语言编程
3学时 使用ARM ADS 开发工具的方法、流程和技巧
 1 编译器参数(armcc/armcpp/armasm)
 2 链接器使用(armlink/scatter-file)
 3 调试器及调试工具(axd/jtag)
 4 辅助开发工具(fromelf/armprof/nmake/Makefile)
 5 内存地址重映射(memory remap)
 6 堆栈初始化(stack&heap)
 7 RO/RW/ZI 段地址分配
 8 系统呼叫机制(SoftWare Interrupt)
3学时 ARM启动代码工作原理
 1 启动代码基本概念和执行流程
 2 全局变量和局部变量的存储结构
 3 程序的存储和加载过程
 4 RO、RW以及ZI 段的存储特性
 5 启动代码的搬移过程
 6 启动代码的初始化流程
3学时 ARM异常和中断处理
 1 异常向量表(exception vector table)
 2 异常响应
 3 产生异常后的处理过程
 4 未定义指令异常的特殊用途
 5 SWI 软中断指令与系统调用
 6 异常返回处理流程
实验部分 3学时 ARM 开发工具实验 (实验1-8)
 实验1:安装开发工具实验 (ADS+AXD)
 实验2:ADS 编程实验 (helloworld)
 实验3:AXD 调试实验 (debug)
 实验4:ARM 工具链实验 (armcc+armasm+armlink)
 实验5:fromelf 实用工具实验 (fromelf)
 实验6:uuencode 编码工具实验 (uuencode)
 实验7:使用 Jtag 调试开发板实验
 实验8:使用 Bootloader 下载执行实验
3学时 ARM 体系结构与汇编语言实验(实验9-16)
 实验9: ARM 数据处理指令操作数寻址方式实验
 实验10:ARM 内存访问指令寻址实验
 实验11:ARM 堆栈指针寄存器实验 (r13)
 实验12:ARM 返回连接寄存器实验 (r14)
 实验13:ARM 程序计数器实验(r15)
 实验14:ARM 程序状态寄存器实验(cpsr+spsr)
 实验15:ARM 工作模式切换实验(svc+irq)
 实验16:ARM 汇编与C语言混合编程实验
3学时 ARM 开发板外设接口实验(实验17-24 )
 实验17:ARM 开发板-启动代码烧写实验
 实验18:ARM 开发板-LED显示灯实验
 实验19:ARM 开发板-七段数码管实验
 实验20:ARM 开发板-四位拨段开关实验
 实验21:ARM 开发板-蜂鸣器实验
 实验22:ARM 开发板-中断按钮实验
 实验23:ARM 开发板-定时器实验
 实验24:ARM 开发板-串口通讯实验
3学时 ARM Bootloader 编写实验(实验25-32)
 实验25:ARM Bootloader-ledblink实验
 实验26:ARM Bootloader-uart driver实验
 实验27:ARM Bootloader-printf实验
 实验28:ARM Bootloader-stdio实验
 实验29:ARM Bootloader-shell实验
 实验30:ARM Bootloader-command实验
 实验31:ARM Bootloader-flashwrite实验
 实验32:ARM Bootloader-autoboot实验
3学时 ARM 异常和中断处理实验(实验33-40)
 实验33:ARM异常向量表实验
 实验34:ARM软中断 SWI 异常发生和响应实验
 实验35:ARM GPIO中断源使能触发实验
 实验36:ARM GPIO中断处理和响应实验
 实验37:ARM Timer定时器中断源使能触发实验
 实验38:ARM Timer定时器中断处理和响应实验
 实验39:ARM中断流程代码分层实验
 实验40:ARM中断驱动框架实验


第三部分     (嵌入式linux应用开发部分)

课程安排 课程内容
理论部分
12学时
3学时 交叉编译工具介绍与Bootloader启动代码分析
 1 嵌入式Linux综述
 2 嵌入式Linux开发基本概念
 3 嵌入式Linux开发工具介绍
 4 分析各种典型的bootloader(uboot、armboot、redboot)
3学时 嵌入式Linux移植与根文件系统
 1 Linux 与 uClinux 的目录结构
 2 内核编译和配置
 3 构建根文件系统
3学时 嵌入式图形系统的构建与开发
 1. 嵌入式Linux图形用户界面
 2. Qt的特点
 3. Qt编程举例
 4. Qt designer
 5.为嵌入式应用定制Qtopia
 6. 交叉编译
3学时 嵌入式数据库系统的构建与开发
 1 关系数据库与Sql语言
 2 使用Sqlite
 3 嵌入式数据库的编程
嵌入式Linux开发与调试方法
 1 gdb的调试命令介绍
 2 应用程序开发的技巧
实验部分
12学时
3学时 实验一:嵌入式linux开发环境建立
 实验目的:掌握交叉编译环境的建立;
           掌握内核的交叉编译;
           掌握redboot的操作
 实验要求:要求完成内核编译,上载,运行,直到hello world程序在
           目标板上运行成功
 实验内容:在S3C2410开发板上运行Linux。
3学时 实验二:根文件系统的建立
 实验目的:掌握根文件系统的建立;
           掌握静态编译,动态编译应用程序
 实验要求:要求独立完成根文件系统的建立,编写一个hello world程
           序在S3C2410上运行,并比较动态编译与静态编译的不同。
 实验内容:在S3C2410上运行hello world程序。
3学时 实验三:基于S3C2410的QT实验
 实验目的:掌握Qt应用程序的编译和运行,理解Qt在开发板上的移植
 实验要求:要求独立编译QT库、资源和应用程序,并通过根文件系统的
           方式在目标板上成功运行hello world程序或其他实例程序
 实验内容:Qt命令行
           Qt库函数
3学时 实验四:基于S3C2410的sqlite实验
 实验目的:掌握Sqlite应用程序的编译和运行,在开发板上的运行
 实验要求:要求交叉编译Sqlite,并通过测试程序静态连接Sqlite库,
           并通过根文件系统的方式在目标板上成功运行hello world
           程序
 实验内容:在ARM9 S3C2410开发板上运行Sqlite应用程序
 
实验五:Sqlite与Qt集成实验


第四部分  (嵌入式linux高级编程部分)

课程安排 课程内容
理论部分
共18学时
9学时 第一部分IO接口高级编程
 1 系统功能调用接口
 2 标准I/O库接口
 3 高级I/O
第二部分 进程高级编程
 1 进程控制
 2 进程间的关系
 3 信号(signal)
第三部分 线程高级编程
 1 进程与线程
 2 Posix线程
 3 线程的创建与结束
 4 竞争和临界区概念
 5 线程同步
第四部分 IPC高级编程
 1 线程间通信与进程间通信
 2 posix IPC 和 system V IPC
 3 消息传递
 4 同步
 5 共享内存
9学时 第五部分 网络基础知识
 1 网络基本概念
 2 路由概念
 3 TCP/IP各个层次的主要协议和功能
 4 如何抓包并分析内容
第六部分 客户端/服务器编程
 1 客户端与服务器概念
 2 字节顺序
 3 网络编程常用函数
 4 socket概念及使用
第七部分socket网络高级编程
 1 最简单的TCP C/S
 2 添加错误处理
 3 处理SIGPIPE信号
 4 使用fork进行并发处理
 5 使用select
第八部分Web服务器编程
 1 socket处理
 2 http请求处理
 3 文件请求处理
实验部分
共12学时
3学时 第一部分I/O实验
 1 open/close/read/write综合实验
 2 fcntl/ioctl综合实验
 3 select练习
第二部分 进程实验
 1 fork/wait/exec综合练习
 2 mysh:简化实现的shell
 3 mysh增强:支持重定向和管道
3学时 第三部分 线程实验
 1 圆周率的近似计算
 2 Producer_consumer问题
 3 管程的C++实现
第四部分 IPC实验
 1 最简单的TCP C/S
 2 添加错误处理
 3 处理SIGPIPE信号
 4 使用fork进行并发处理
 5 使用select
3学时 第五部分 网络编程实验---C/S
3学时 第六部分 网络编程实验---Web


第五部分  (嵌入式linux移植部分)

课程安排 课程内容
理论部分
共9学时
3学时 嵌入式系统移植
 1. 嵌入式系统移植基本概念
 2. Bootloader移植
 3. 操作系统移植
 4. 应用程序移植
Bootloader移植
 1. U-boot简介和架构分析
 2. U-boot代码要点分析
 3. 实现自己的bootloader
3学时 Arm Linux核心移植架构分析
 1. Linux的中断结构
 2. Linux的定时器
 3. Linux的设备地址映射
 4. Linux基本I/O(serial或显示)
 5. Linux的初试化
Linux核心的初试化代码分析(ARM平台)
 1. 汇编中初始化,核心初始化pgd,虚拟空间的切换
 2. 内存和硬件的初始化
 3. 中断和定时器的初始化
 4. 设备驱动的初始化
 5. 根文件系统的挂载
 6. init进程的启动
3学时 Linux核心的编译和链接结构分析
 1. Linux核心的makefile和Kconfig结构分析
 2. Linux核心的链接脚本分析
Linux核心的平台相关层代码分析
 1. ARM平台相关层代码结构(arm)
 2. S3C2410的平台相关层代码结构(plat-S3C24xx)
 3. S3C2410板级相关层代码结构(mach-S3C2410)
Linux核心移植
 1. 和板级移植相关的代码和数据结构
 2. 和平台级移植相关的代码和数据结构
实验部分
共9学时
3学时 第一部分实验
 实验一:构建、编译和装载自己的bootloader
 实验二:x-modem功能的实现
 实验三:启动Linux代码的实现
3学时 第二部分实验
 实验一:编译和配置Linux核心(S3C2410平台)
 实验二:修改Linux的启动logo
 实验三:在Bootloader实验的基础上修改核心启动参数
 实验四:实现ramdisk的挂载
 实验五:实现一个简单的init进程
3学时 第三部分实验
 实验一:S3C2410板级移植实验
 实验二:S3C2410平台级移植实验


 

第六部分   (嵌入式linux驱动开发部分)

 

课程安排 课程内容
理论课 1. Linux操作系统核心基础
    ◆ 调度,互斥量和锁等的实现原理
    ◆ 中断的上下部,定时器,内核线程
    ◆ 等待队列和工作队列,tasklet等
    ◆ Linux核心的内存管理(页面分配,slab,kmalloc,DMA内存)
    ◆ Linux设备管理模型和sysfs文件系统
理论课 2. 驱动程序与模块概念
    ◆ Linux设备驱动的概念
    ◆ Platform device模型介绍
    ◆ 模块的概念
    ◆ 模块的构建、编译和加载
理论课 3. 字符设备驱动程序
    ◆ 字符设备驱动程序概念
    ◆ 主设备号和次设备号
    ◆ fs_operation结构分析
    ◆ 驱动程序调试技术简单介绍
实验课 第一部分 驱动基础实验
    实验一:模块的构建、编译和装载,hello world模块的实现
    实验二:Platform device模型实验
    实验三:GPIO按键实验——使用中断机制访问
理论课 4. Linux块设备驱动程序开发
    ◆ Linux块设备驱动程序概要
    ◆ 块设备驱动程序的特点和工作原理
    ◆ 块设备驱动的设备文件接口概念
    ◆ 块设备驱动的文件系统接口概念
5. Linux块设备驱动程序实现要素分析
    ◆ 块设备驱动的注册接口(register_blkdev等)
    ◆ 块设备驱动操作接口(open,release,ioctl等)
    ◆ 块设备驱动的request队列和request操作
6. 块设备代码分析(vdisk.c)
    ◆ vdisk.c的注册接口
    ◆ vdisk.c的open,release,ioctl
    ◆ vdisk.c的request队列和request操作
实验课 第二部分 块设备驱动实验
    实验一: 修改vdisk.c支持多个设备
    实验二: 在实验一基础上为vdisk.c添加字符设备接口实现
    (实现open,close,ioctl,read,write,lseek方法)
理论课 7. 网络设备驱动程序开发
    网卡设备介绍
    ◆ 常见网卡
    ◆ 网卡芯片所实现的协议层功能
    ◆ cs8900网卡芯片手册导读
    ◆ cs8900网卡硬件电路分析
8. Linux网络驱动结构
    ◆ Linux TCPIP网络结构概述
    ◆ Linux网络设备结构
实验课 第三部分 字符设备驱动实验
    实验一:ifconfig等命令实验
    实验二:字符设备的网卡驱动实现(上)
    实验三:字符设备的网卡驱动实现(下)
    实验四:驱动的测试程序编写
 

 


第七部分 (嵌入式linux驱动高级研修部分)

 

课程安排 课程内容
理论课 1. Linux的input驱动
    * 嵌入式系统中的键盘和触摸笔硬件结构原理
    * Input子系统介绍
    * Input的事件和设备驱动框架结构
    * button代码分析
实验课 第一部分 实验
    * 实验1:编写开发板下的button驱动
    * 实验2:利用开发板的蜂鸣器实现按键音
理论课 2. Linux下的MTD驱动
    * Nor和NAND Flash硬件结构
    * Linux的MTD子系统
    * Yaffs文件系统和MTD子系统的结合
    * Nandsim驱动代码分析
实验课 第二部分 实验
    * 实验1:配置和调试Nandsim驱动代码
    * 实验2:mtdutils工具的学习和使用
    * 实验3:Yaffs文件系统的烧写和配置
理论课 3. LCD Framebuffer设备驱动程序开发
    * Framebuffer驱动程序原理,结构分析、及数据结构
    * Framebuffer驱动程序设计
实验课 第三部分 实验
    *实验1:LCD Framebuffer——通过mmap操作fb设备
    *实验2:LCD Framebufferr——通过mmap显示图片
理论课 4. Linux下的USB驱动
    * USB工作原理介绍
    * Linux的Host端驱动代码结构
    * Linux的device端驱动代码结构
    * usb 地址端点的使用
    * usb 四种传输类型及其作用
    * usb 协议实现及其详解
    * usb 设备即插即用过程
    * 驱动代码分析
实验课 第四部分 实验
    * 实验1:学习使用Linux下的usb分析工具
    * 实验2:配置和实现Linux的cdc-acm驱动,
             实现PC和开发板间的USB通信
    * 实验3:配置和实现Linux的mass_storage驱动,
             实现将开发板配置为一个U盘
 

 


 

第八部分 (嵌入式linux项目实战部分)
          项目实训大纲

课程安排 课程内容
24学时 嵌入式Linux项目实战(一)
设计并实现一个真实和完整的嵌入式项目的开发流程,涉及到数据采集、网络通讯、图形用户界面显示以及嵌入式数据库存储系统等多种嵌入式Linux编程技术。要求学员建立起团队开发和协同工作的企业项目开发模式的概念和流程,强化学员对编写项目概要设计文档和详细设计文档的理解,为就业前的职业技能和素质训练做好充分准备。
 
* ARM Linux的内核编译与裁剪
* 根文件系统的搭建与裁剪
* A/D转换设备驱动程序
* socket网络通信程序
* sqlite和CGI应用程序
* 用户界面设计
* 概要设计文档、详细设计文档、用户使用说明书


第九部分 (嵌入式系统硬件部分)

课程安排 课程内容
理论部分 6学时 片间数字通信接口
数字电路测试仪表简介
proteus嵌入式系统仿真平台
数字电路波形图的阅读
I2C总线通信实例
6学时 嵌入式系统模拟电路接口
模拟信号测试手段简介
传感器和模拟信号
用运算放大器进行模拟信号处理
信号调理电路和AD转换原理
 

 

第十部分 (数字系统设计 -- 基于FPGA)

课程安排 课程内容
理论课(3) 组合逻辑电路
 组合逻辑基本单元
 逻辑表达式的运算规律
 逻辑表达式的化简
 基本组合逻辑电路
 竞争和冒险
理论课(3) 时序逻辑电路
 时序逻辑基本单元
 沿触发与电平触发
 有限状态机抽象
 数字逻辑电路实现有限状态机
 多时钟域和亚稳态
理论课(3) 硬件描述语言
 Verilog语言的RTL级建模
 Verilog语言的行为级建模
 用Verilog实现组合逻辑电路
 用Verilog实现有限状态机
实验课(3) 可编程逻辑器件
 FPGA/CPLD概述
 Verilog仿真器的使用
 FGPA综合工具的使用
 优化FPGA设计的面积和延迟
上一页          

[查看全部新闻]

北京亚嵌
          
Android培训 | 嵌入式在线 | 嵌入式世界 | 嵌入式技术网 | OK Linux | 单片机与嵌入式系统应用 | Linux宝库 | 嵌入式培训 | 开源人 | Linux联盟 | 与非网 | 新风IT教育网 | 更多>>
  • 北京
  • 武汉
  • 成都
 亚嵌教育             全国免费咨询电话:400-650-3060 800-810-9624            地址:北京市海淀区中关村北二条乙五号(赛特瑞科技楼二层)
韩老师 电话:010-62640798 010-62631735-8008 手机:15910982845 QQ在线咨询   MSN:akaedu@hotmail.com
张老师 电话:010-62631735-8850   QQ在线咨询   MSN:zt8001@hotmail.com

 

版权所有:北京亚嵌(AKAE)科技有限责任公司-嵌入式Linux培训领航者     《中华人民共和国电信与信息服务业务经营许可证》京ICP备05059877号