第1部分:Linux平台搭建及环境熟悉
了解Linux系统; 区分不同版本的 Linux 系统,以扩大 Linux 视野。
1.Linux简介;
2、Linux系统的主要特点;
3.Linux的组成;
4.主要Linux版本;
5、嵌入式Linux介绍与发展
第二部分:虚拟机安装和Linux系统安装
1、虚拟机安装;
2.Linux系统安装;
3、Linux系统常用软件的安装;
4.Linux快速入门
5、熟悉Linux环境下常用命令的运行及系统设置,如常用的Shell; 掌握基本的 Shell 应用程序
第三部分:嵌入式Linux环境搭建
1.建立嵌入式Linux开发环境
2.熟悉嵌入式开发平台
3.嵌入式Linux开发工具
四、Linux下的调试方法
5. MAKE项目经理
6、硬件环境建设; arm-linux-gcc 和 gcc 的安装和配置
第 4 部分:学习 U-Boot
包括了解U-Boot的功能和工作流程; 了解Bootloader的代码结构和编译过程; 移植U-Boot; 掌握常用的U-Boot命令。
1. Bootloader介绍
2. u-boot项目介绍
3.编译使用u-boot
4.u-boot源码分析
5.u-boot资源分配
6.配置编译u-boot
7.u-boot移植过程
8.U-boot常用命令操作
9、增加u-boot新命令
10.设置u-boot环境变量
11、添加u-boot驱动如网卡:DM9000
第五部分:LINUX 内核移植
包括熟悉内核的反码结构和kbuildMakefile的句型; 掌握编译内核和驱动模块的相关原理和技术。
一、Linux内核简介
2.Linux内核特点
3.Linux内核源码结构
4、Linux内核选项分析
5.Linux内核编译链接
6.如何编译和使用内核模块
第六部分:Linux根文件系统
1.移植编译busybox包
2.Linux与文件系统制作过程
3. 根文件系统介绍
4.nfs文件服务器系统搭建
第七部分:Linux 驱动程序开发
驱动开发是嵌入式Linux开发中最难的部分,也是嵌入式行业最紧缺的人才之一。 本课程介绍嵌入式Linux驱动开发的相关概念和开发过程,了解驱动开发的技术要点,重点介绍嵌入式Linux下常用socket驱动的编译方法,包括:
1、字符LED驱动开发(GPIO口驱动)
2.按键驱动开发(中断驱动,驱动中中断程序的编写,消息队列的应用
3.ADC驱动开发
4.网卡驱动开发
5.串口驱动开发
6.液晶屏(TFT彩屏驱动开发
7.触摸屏驱动+tslib(中间插件移植设置),
8.USB驱动开发+USB无线网卡移植
9、IIS驱动开发+maplay移植与应用(mp3播放)+mplayer移植与应用(视频播放mp4/广告播放器等)
10.SD驱动开发
11.RTC驱动开发
12.电源管理模式
第八部分:Linux应用学习
嵌入式Linux应用开发和系统开发是嵌入式Linux最重要的部分,也是企业对人才需求最广的部分。 主要目标是熟练掌握嵌入式Linux下的编程,掌握嵌入式Linux的开发环境、系统编程和网络编程,熟悉C++、QT编程并深入体验整个嵌入式Linux项目开发过程,加强学生的理解Linux应用开发能力。
1、Linux系统中进程的概念,应用程序中线程和兄弟进程的创建和应用
2.线程与进程的通信
3.进程间通信的基本概念
4.管道(PIPE)
5.信号(SIGNAL)
6.内存映射(MAPPED MEMORY)
7.消息队列(MESSAGEQUEUE)
8.信号量(SEMAPHORE)
9.共享显存(SHAREMEMORY)@
10. tcPip合约在应用程序中的编程开发(SOCKET套接字编程开发)
10.1. ISO/OSI七层契约模型和IP网络四层模型
10.2. TCP/IP 合约集群
10.3. 基于嵌入式Linux的TCP/IP网络结构
10.4. 基于嵌入式Linux的SOCKET编程
10..5。 UDP和TCP的区别
10.6. UDPSERVER-CLIENT关系程序
11.文件读写与存储
第九部分:QT移植开发
了解嵌入式Linux下几种常见的GUI及其特点,重点掌握QT的相关内容,具备设计QT程序的能力。 了解嵌入式数据库的配置和开发:
一、嵌入式Linux GUI简介
2.嵌入式QT开发包移植
三、QT及其信号插孔机制介绍
4.QT图形界面编程技术
五、QT应用程序与Linux驱动的连接
6.QT在实际项目中的具体应用
第 10 部分:无线通信应用
一、无线wifi模块的应用
2. 3G模块应用
第十一部分:嵌入式系统应用,驱动程序调试
1. Linux基本工具的调试与使用。 GDB、洞察调试等
2. Linux应用程序的编程
3、嵌入式产品程序打包发布
Part 12:嵌入式项目综合调试,产品发布
了解真实项目的开发过程,掌握如何将所学知识应用到项目开发中。 将模拟真实项目的管理过程,培养学生的项目团队协同开发能力、项目文件编写能力和新知识学习能力,为下一步就业做好充分的智力和心理准备。
嵌入式Linux开发第一学习阶段:主要是打好基础,学好C编程和Linux系统编程。
1. C语言程序设计基础
2、嵌入式开发基础:Linux概览安装、shell命令、vim编辑器、GCC、GDB、Makefile、交叉开发环境搭建
3、嵌入式Linux系统编程:shell编程、文件编程、并口编程、进程编程、线程编程、网络编程
4、嵌入式项目开发:数据采集控制系统、串口服务器
嵌入式Linux开发第二学习阶段:掌握ARM汇编程序设计、驱动程序设计。
1. ARM架构:ARM系统、ARM指令、Thumb指令、汇编程序、逻辑程序开发
2. Linux内核移植:bootloader、内核配置、文件系统
3、驱动开发:驱动架构模型、字符设备驱动、块设备驱动、网络驱动
4、嵌入式项目开发:智能家居装饰系统、视频监控系统
嵌入式LININX开发第三学习阶段:掌握C++面向对象编程,Qt编程。
1. C++语言程序设计基础
2、QT编程开发:QT开发基础、QT布局与控件、QT绘图、QT风暴、QT网络通信、QT数据库、QT移植
3、嵌入式项目开发:车辆监控管理系统、工业能源管理系统
第十三部分:嵌入式设计的基本技能
1.Linux基础
安装Linux操作系统、Linux文件系统、Linux常用命令,解读Linux启动过程,熟悉Linux服务,才能独立安装Linux操作系统。 自定义Linux service shell编程基础使用vi编辑文件使用Emacs编辑文件使用其他编辑器
2. Shell编程基础
Shell入门 了解后台程序Bash编程 熟悉Linux系统下的编辑环境 熟悉Linux下的各种shell 熟悉shell编程 熟悉vi的基本操作 熟悉Emacs的基本操作 比较不同shell的区别 一个shell脚本检查进程是否存在 用循环语句写一个 shell 脚本
3. Linux下C编程基础
linuxc语言环境概览 gcc使用 gdb调试技术 AutoconfAutomakeMakefile代码优化 熟悉Linux系统下的开发环境
4. 嵌入式系统开发基础
嵌入式系统概述 交叉编译 配置TFTP服务 配置NFS服务 下载Bootloader和内核 嵌入式Linux应用软件开发流程 熟悉嵌入式系统概念和开发流程 搭建嵌入式系统开发环境 制作cross_gcc工具链 编译下载U-boot 编译下载Linux内核编译和下载 Linux 应用程序
5、嵌入式系统移植
Linux内核代码平台相关代码分析 ARM平台介绍 平台移植关键技术 Linux内核到ARM平台 了解移植的概念 可以移植Linux内核 移植Linux2.6内核到ARM9开发板
6.嵌入式Linux下的并行通信
串行I/O基本概念 嵌入式Linux应用软件开发流程 Linux系统文件和设备及文件相关的系统调用 配置超级终端和MiniCOM 熟悉并口通信 熟悉文件I/O 编译并口通信程序 编译多路并行端口通信程序
7. 嵌入式系统中的多进程编程
Linux系统进程概述 嵌入式系统进程特性 进程运行daemon进程相关系统调用 了解Linux系统中进程的概念 会编译多进程程序 编译多进程程序 编译守护程序 sleep 系统调用 任务管理、同步与通信Linux Task概述 任务调度 流水线信号 共享显存 任务管理API 了解Linux系统任务管理机制 熟悉进程间通信的几种方式 熟悉嵌入式Linux中任务间的同步和通信 编写一个简单的流水线程序,实现文件传输 编译一个程序,使用共享显存程序
8.嵌入式系统中的多线程编程
线程基础知识 多线程编程 线程应用中的同步问题 了解线程的概念 你能写一个简单的多线程程序吗
9.嵌入式Linux网络编程
网络基础知识 TCP/IP 网络结构 socket 编程 嵌入式Linux 常用API 函数分析 Ping 命令的实现 下面socket 编程熟悉UDP 契约和PPP 契约。 熟悉GPRS 使用socket 编写代理服务器 使用socket 编写路由器 编写许可证服务器 强调TCP 和UDP 的异同 编写web 服务器 编写运行在ARM 平台上的网络播放器
10. GUI程序开发
GUI基础 嵌入式系统 GUI类型 编译QT进行QT开发 熟悉嵌入式系统常用的GUI可以进行QT编程 使用QT编写“Hello, World”程序 调试添加信号/槽的实例 通过重载QWidget类处理风暴
11.Linux字符设备驱动
设备驱动基础知识模块 Linux系统中字符设备驱动分析 fs_operation结构加载驱动 理解设备驱动概念 编译字符设备驱动 编译Skull驱动 编译鼠标驱动 编译I/O驱动分析 看门狗驱动比较不同的字符设备驱动Linux 2.6内核和2.4内核Linux块设备驱动 块设备驱动工作原理 典型块设备驱动 分析块设备的读写请求队列 了解Linux块设备驱动 程序结构可以编译一个简单的块设备驱动嵌入式系统软件教程,比较字符设备和块设备的优缺点,编写一个MMC卡驱动,分析一个文件系统,比较Linux2.6内核和2.4内核块设备驱动的区别。
12.文件系统
虚拟文件系统构建 文件系统 ramfs 显存文件系统 proc文件系统 devfs文件系统 MTD技术介绍 MTD块设备初始化 MTD块设备读写操作 了解Linux系统的文件系统 了解嵌入式Linux的文件系统 了解MTD技术到compose easily 为ARM9开发板添加MTD支持,移植JFFS2文件系统 通过proc文件系统更改操作系统参数 分析romfs文件系统源码 创建cramfs文件系统
最后简单总结一下硬件开发的基本流程:
1、明确总体硬件要求,如CPU处理能力、存储容量和速度、I/O端口分配、接口要求、电平要求、特殊电路要求等。
2、根据需求分析制定整体硬件方案,寻求关键元器件及相关技术资料、技术途径和技术支持,充分考虑技术可行性、可靠性和成本控制,对开发调试工具提出明确要求。 关键部件可以尝试索取样品。
3、总体方案确定后,进行硬件和软件的详细设计,包括绘制硬件原理图、软件功能框图、PCB设计草图,同时完成开发元器件清单。
4、PCB板完成后,对原理设计中的各个功能单元进行点焊调试,必要时修改原理图并做好记录。
5、软硬件系统联调。 通常调试后嵌入式系统软件教程,调整原理和PCB设计,需要二板。
6、可靠性试验,稳定性试验,通过初检,项目完成!
硬件工程师应具备的基本技能:
1、具备从需求分析到总体规划、详细设计的策划创造能力;
2、熟练使用设计工具,能够设计原理图和PCB板;
3、熟练使用单片机、DSP、PLD、FPGA等进行软硬件开发调试;
4、熟练使用仿真工具、示波器、信号发生器、逻辑分析仪等调试硬件;
5、掌握常用标准电路的设计能力,如复位电路、常用混频电路、功放电路、高速信号传输线匹配电路等;
6、具有故障定位和解决问题的能力;
7、具有组织、编写设计文件的能力。