切换城市
扫一扫马上分享店铺
主讲老师: 李老师
培训时长:18H
课程价格:¥5,000.00
【课程价值点】
1、掌握嵌入式软件开发所需的与处理器相关的通用知识。 2、明白信号完整性对嵌入式软件开发的影响。 3、掌握嵌入式软件开发所需掌握的GNU工具。包括make、gcc、binutils、ld和gdb。 4、更加深入地理解C编程语言。 5、了解引导加载器的大致工作原理和功能。 6、掌握实时操作系统的设计和实现原理。包括多任务、任务同步通讯、内存管理、设备管理和定时器管理。 7、理解设计是软件质量之本,并掌握一种有效的模块管理、错误管理和目录结构管理方法。 8、理解什么是可开发性问题和了解一种解决方法。 9、理解平台与框架开发是打造高质量软件之路。 10、理解软件开发的困难和质量保证需要系统性的方法论。 11、理解软件工程的工作习惯对软件质量的影响,掌握一些终身受用的编程好习惯。 12、理解单元测试的重要性,并掌握一种简单有效的部署方法。 13、理解代码覆盖、静态分析和动态分析对构建高质软件的重要性。
【课程背景】
从事嵌入式软件开发,最困难的莫过于学习操作系统原理和处理器方面的知识。讲解操作系统原理如果以Linux、Windows CE、VxWorks等成熟的操作系统为素材并不好,因为它们太大,很容易让人“只见森林不见树木”,也容易让人望而生畏而失去学习的兴趣和信心。从软件开发的角度来看,操作系统的概念和实现原理一旦掌握,不论基于哪一个操作系统做开发都只是调用不同的函数而已。为了让学员获得最好的学习体验,本课程以讲师自己设计的一个实现简洁、完整的“实时”操作系统 — ClearRTOS为基础,通过渐进式的方式细致讲解操作系统的概念和实现原理。至于处理器方面的知识,本课程没有针对某一具体处理器,而是就编程方面所需的通用知识进行了讲解。对这些通用知识的掌握,将使得处理器对于学员不再那么神秘。 与非嵌入式软件开发采用集成开发环境不同,嵌入式软件开发大多是基于命令行的。软件开发工程师除了进行编码工作,还得能驾驭自己的编译环境并运用其他的开发工具辅助开发工作。本课程以来自GNU的工具为例帮助学员战胜这一挑战。值得强调的是,其中花了较大的篇幅帮助学员成为Makefile方面的专家。 要实现高质高效地从事软件开发工作,项目人员还必须理解软件设计的重要性,并借助一定的质量保证方法论来提高工作质量和效率。软件设计和质量保证方法论是业内比较抽象和高级的话题,为此本课程通过带领实践的方式逐步展开讲解,以帮助学员获得一些实用的设计原则、最佳实践和一套有效的质量保证方法论。 总而言之,本课程从知识、工具、方法和思想这四大方面全面讲解如何专业地从事嵌入式软件开发,致力于帮助学员全面走向高质高效编程。
【课程对象】
以C为编程语言的嵌入式和非嵌入式软件开发工程师、项目管理师、架构师等。
【课程大纲】
第1天学习导引1.学什么?怎么学? 2.工程师技术能力层次模型 3.高质高效软件开发团队效能模型 [硬件篇] 处理器的基本概念1.微处理器与微控制器 2.寄存器 3.处理器的启动 4.输入与输出 5.指令与数据 6.中断 7.字节序 8.边界对齐 9.断点 10.内存管理单元 11.缓存 [硬件篇] 开发活动中的硬件问题1.两个软件异常案例 2.异常的背后 — 信号完整性 3.应对信号完整性问题的方法 [工具篇] make,开发环境全能管家1.从最简单的Makefile中了解规则 2.创建基本的编译环境 3.提高编程环境的实用性 4.打造更专业的编译环境 5.理解make的解析行为 6.Makefile的调试 7.make的常用选项 8.活用make [工具篇] gcc,C语言编译器1.交叉编译用其环境 2.gcc幕后工作原理 3.实用的gcc选项 [工具篇] bintuils工具集,软件开发利器1.addr2line,指令地址翻译器 2.ar,静态库生成器 3.nm,符号显示器 4.objdump,信息查看器 5.objcopy,段剪辑器 6.size,段大小观察器 7.strings,字符串窥视器 8.strip,程序文件瘦身器 [工具篇] ld,链接器1.重定位的概念 2.链接脚本 [编程语言篇] 掌握必要的汇编知识1.AT&T和Intel语法格式 2.as的语法 3.嵌入汇编的语法 [编程语言篇] 深入理解程序的结构段、栈、堆 [编程语言篇] ABI/EABI规范,缔造程序兼容合约1.定义基本数据结构 2.规范字节对齐处理 3.分配寄存器的功能 4.规定栈帧结构 第2天[编程语言篇] 混淆指针与数组所导致的问题1.问题示例 2.问题分析 3.问题成因 4.预防措施 [编程语言篇] volatile,让我保持原样1.从例子理解volatile [设计篇] 设计,软件质量之本1.软件设计是什么 2.软件质量的概念 3.阻碍改善设计的常见观念 4.如何提高设计能力 5.设计模式、设计原则和设计思想 6.放之四海皆适用的设计原则 [设计篇] 模块管理,保障系统有序运行1.模块管理参照系 2.设计思路 3.程序实现 4.模块管理的一些思考 [设计篇] 错误管理,不可获缺的用户需求1.现状与出路 2.表达错误的通用方法 3.优化错误日志 [设计篇] 目录结构管理,使项目进展更顺利1.规划目录结构的意义 2.出色目录结构的特点 3.一个示例 [设计篇] 平台与框架开发,高质量软件打造之路1.系统库、平台和框架 2.本质和优点 3.架构模型 4.困境与生命周期理论 [设计篇] 可开发性设计,一种高效且经济的开发模式1.可开发性问题一瞥 2.可开发性设计的内涵 3.设备抽象层 4.更复杂的设备抽象层 5.图形界面的可开发性设计 6.其他可开发性设计 [操作系统篇] 引导加载器,系统启航者1.功能 2.文件存储布局 3.程序加载原理 4.优点 第2天[操作系统篇] 任务,软件基本调度单元1.任务情景 2.任务调度 3.任务的生命周期 4.任务控制 5.竞争问题与中断控制 6.任务与中断状态 7.任务栈溢出检测 8.滴答与空闲任务 9.多任务环境控制 10.任务模块管理 11.task1示例程序 12.任务钩子函数 13.任务变量 14.其它概念与思考 [操作系统篇] 任务同步与通信,实现协同工作1.信号量 2.互斥锁 3.事件 4.消息队列 5.死锁及预防 [操作系统篇] 内存管理,协调动态内存的使用1.堆管理(含内存溢出和泄漏检测) 2.内存池管理 第3天[操作系统篇] 设备管理,方便与外设交互1.字符设备管理 2.中断管理 3.设备管理的主要程序实现 4.设备驱动程序实现 5.驱动安装与设备注册 [操作系统篇] 定时器,程序闹钟1.软件定时器分类 2.设计思路 3.中断回调定时器 4.定时误差 5.提高遍历效率 6.改善实时性 7.任务回调定时器 [质量保证篇] 质量保证导言1.软件开发的特点 2.保证质量的关键要素 3.质量保证需要系统性的方法论 4.走出质量困境的指导性思想 [质量保证篇] 编程好习惯,质量保证的基本条件1.一些终生受用的编程好习惯 [质量保证篇] 单元测试,被忽视的质量保证方法1.警惕单元测试无用论 2.一个简单但不完善的单元测试例子 3.构建单元测试框架 4.无缝整合单元测试 5.几个实施问题 6.桩函数和打桩 7.错误注入,一种可测试性设计 8.平台开发与单元测试 9.被测行为的确定性 10.被测用例的有效性 [质量保证篇] 代码覆盖,单元测试效果的衡量指标1.了解代码覆盖工具 2.无缝整合代码覆盖 3.三个代码覆盖度量指标 [质量保证篇] 静态分析,防止将失误带给用户1.认识静态分析工具 2.无缝整合静态分析工具 [质量保证篇] 动态分析,使程序更健壮1.结识动态分析工具 2.无缝整合动态分析工具 [质量保证篇] 性能分析,让优化程序有的放矢1. 初探性能分析工具 2. 无缝整合性能分析工具 [质量保证篇] qBench,一个开发高质软件的工作台
客户评分
首家按效果付费的培训众包平台
0755-83802522
周一至周五 09:00-18:00
成为发包方
发包指南
成为接包方
接包指南
招商中心
效果付费
认证机构
认证讲师
侵犯投诉
报名步骤
协议流程
支付方式
评价G分
常见问题
讲师查询
内训众包
名师汇
公开课
内训课
微课直播
关于搜根
重大事件
搜根文化
联系我们
媒体报道
使用合作网站账号一键登录