当前位置: 企业公开课 > 职业技能 > 电脑技能
高质高效嵌入式软件开发
课程安排: 北京

其它排期:

授课讲师:Clement

课程价格:5800

培训对象:

报名热线:400-801-3929

请填写您的报名信息

您的称呼

报名企业

您的电话

< 返回继续选课
 时间地点: 2016-7-30 至 2016-7-31  北京      授课讲师Clement
 1) 咨询客服,了解最近是否开课!
 2) 本期课程已过期,请联系客服留下联系方式,近期开课时我们会通知您!
 学习费用: 5800 元/位
 培训对象: 以C为编程语言的嵌入式和非嵌入式软件开发工程师。部分内容适合软件质量相关管理人员。
 课程信息:        
  演讲嘉宾:Clement 阿里巴巴集团浏览器电脑版技术团队主管兼软件架构师
讲师背景:曾在UTStarcom、Motorola、Nokia Siemens Networks三大跨国通信公司工作,并担任过软件架构师和系统工程师等职。善长嵌入式软件开发,于2011年出版《专业嵌入式软件开发——全面走向高质高效编程》一书。坚信和倡导软件设计是软件质量之根本,并对软件开发的复杂性本质有着深刻的认识。对如何高质高效实施软件开发有着自己独到的见解和方法。2012年年底离开工作近十年的通讯行业加入阿里巴巴淘宝浏览器团队,并跟随团队的变迁而成为了UC浏览器电脑版技术团队的主管兼软件架构师。

课程信息
为了让学员获得最好的学习体验,本课程以讲师自己设计的一个实现简洁、完整的“实时”操作系统 — ClearRTOS,为基础,通过渐进式的方式细致地讲解操作系统的概念和实现原理。至于处理器方面的知识,本课程没有针对某一具体处理器,而是就编程方面所需的通用知识进行了讲解。对这些通用知识的掌握,将使得处理器对于学员不再那么神秘。 与非嵌入式软件开发采用集成开发环境不同,嵌入式软件开发大多是基于命令行的。软件开发工程师除了进行编码工作,还得能驾驭自己的编译环境并运用其他的开发工具辅助开发工作。

培训特色
为了让学员获得最好的学习体验,本课程以讲师自己设计的一个实现简洁、完整的“实时”操作系统 — ClearRTOS,为基础,通过渐进式的方式细致地讲解操作系统的概念和实现原理。至于处理器方面的知识,本课程没有针对某一具体处理器,而是就编程方面所需的通用知识进行了讲解。对这些通用知识的掌握,将使得处理器对于学员不再那么神秘。 与非嵌入式软件开发采用集成开发环境不同,嵌入式软件开发大多是基于命令行的。软件开发工程师除了进行编码工作,还得能驾驭自己的编译环境并运用其他的开发工具辅助开发工作。

目标收益
掌握嵌入式软件开发所需的与处理器相关的通用知识。明白信号完整性对嵌入式软件开发的影响。掌握嵌入式软件开发所需掌握的GNU工具。包括make、gcc、binutils、ld和gdb。实现更加深入地理解C编程语言。了解引导加载器的大致工作原理和功能。掌握实时操作系统的设计和实现原理。包括多任务、任务同步通讯、内存管理、设备管理和定时器管理。理解设计是软件质量之本,并掌握一种有效的模块管理、错误管理和目录结构管理方法。理解什么是可开发性问题和了解一种解决方法。理解平台与框架开发是打造高质量软件之路。理解软件开发的困难和质量保证需要系统性的方法论。理解软件工程的

培训对象
以C为编程语言的嵌入式和非嵌入式软件开发工程师。部分内容适合软件质量相关管理人员。


课程大纲
学习导引(1小时)
1. 学什么?
2. 怎么学?
3. 工程师技术能力层次模型
4. 高质高效软件开发团队效能模型

【硬件篇】处理器的基本概念(40分钟)
1. 微处理器与微控制器
2. 寄存器
3. 处理器的启动
4. 输入与输出
5. 指令与数据
6. 中断
7. 字节序
8. 边界对齐
9. 断点
10. 内存管理单元
11. 缓存

【硬件篇】开发活动中的硬件问题(20分钟)
1. 两个软件异常案例
2. 异常的背后 — 信号完整性
3. 应对信号完整性问题的方法

【工具篇】gcc,C语言编译器(1小时)
1. 交叉编译用其环境
2. gcc幕后工作原理
3. 实用的gcc选项

【工具篇】bintuils工具集,软件开发利器(1小时)
1. addr2line,指令地址翻译器
2. ar,静态库生成器
3. nm,符号显示器
4. objdump,信息查看器
5. objcopy,段剪辑器
6. size,段大小观察器
7. strings,字符串窥视器
8. strip,程序文件瘦身器

【工具篇】ld,链接器(0.5小时)
1. 重定位的概念
2. 链接脚本

【编程语言篇】掌握必要的汇编知识(0.25小时)
1. AT&T和Intel语法格式
2. as的语法
3. 嵌入汇编的语法

【编程语言篇】深入理解程序的结构(0.25小时)
1. 段
2. 栈
3. 堆

【编程语言篇】ABI/EABI规范,缔造程序兼容合约(0.5小时)
1. 定义基本数据结构
2. 规范字节对齐处理
3. 分配寄存器的功能
4. 规定栈帧结构

【编程语言篇】混淆指针与数组所导致的问题(0.5小时)
1. 问题示例
2. 问题分析
3. 问题成因
4. 预防措施

【编程语言篇】volatile,让我保持原样(0.25小时)
1. 从例子理解volatile

【设计篇】设计,软件质量之本(1小时)
1. 软件设计是什么
2. 软件质量的概念
3. 阻碍改善设计的常见观念
4. 如何提高设计能力
5. 设计模式、设计原则和设计思想
6. 放之四海皆适用的设计原则
7. 软件技术发展的驱动力

【设计篇】模块管理,保障系统有序运行(0.5小时)
1. 模块管理参照系
2. 设计思路
3. 程序实现
4. 模块管理的一些思考

【设计篇】错误管理,不可获缺的用户需求(0.75小时)
1. 现状与出路
2. 表达错误的通用方法
3. 优化错误日志

【设计篇】目录结构管理,使项目进展更顺利(0.25小时)
1. 规划目录结构的意义
2. 出色目录结构的特点
3. 一个示例

【设计篇】平台与框架开发,高质量软件打造之路(0.5小时)
1. 系统库、平台和框架
2. 本质和优点
3. 架构模型
4. 困境与生命周期理论

【设计篇】可开发性设计,一种高效且经济的开发模式(0.5小时)
1. 可开发性问题一瞥
2. 可开发性设计的内涵
3. 设备抽象层
4. 更复杂的设备抽象层
5. 图形界面的可开发性设计
6. 其他可开发性设计

【操作系统篇】引导加载器,系统启航者(0.5小时)
1. 功能
2. 文件存储布局
3. 程序加载原理
4. 优点

【质量保证篇】质量保证导言(0.75小时)
1. 软件开发的特点
2. 保证质量的关键要素
3. 质量保证需要系统性的方法论
4. 走出质量困境的指导性思想

【质量保证篇】编程好习惯,质量保证的基本条件(0.75小时)
1. 一些终生受用的编程好习惯

【质量保证篇】单元测试,被忽视的质量保证方法(0.75小时)
1. 警惕单元测试无用论
2. 一个简单但不完善的单元测试例子
3. 构建单元测试框架
4. 无缝整合单元测试
5. 几个实施问题
6. 桩函数和打桩
7. 错误注入,一种可测试性设计
8. 平台开发与单元测试
9. 被测行为的确定性
10. 被测用例的有效性

【质量保证篇】代码覆盖,单元测试效果的衡量指标(0.25小时)
1. 了解代码覆盖工具
2. 无缝整合代码覆盖
3. 三个代码覆盖度量指标

【质量保证篇】静态分析,防止将失误带给用户(0.25小时)
1. 认识静态分析工具
2. 无缝整合静态分析工具

【质量保证篇】动态分析,使程序更健壮(0.5小时)
1. 结识动态分析工具
2. 无缝整合动态分析工具

【质量保证篇] 性能分析,让优化程序有的放矢(0.25小时)
1. 初探性能分析工具
2. 无缝整合性能分析工具