服务热线

400-600-2138

高质高效嵌入式软件开发

收藏课程
课程编号:80789 时间:2013年08月22日-24日 讲师:李云 地点:北京
学习费用:5000 元/位
用手机看:
课程编号 开课日期 地点 培训天数 选择报名

培训对象:

以C为编程语言的嵌入式和非嵌入式软件开发工程师。

课程收益:

课程大纲:

时间地点: 2013年8月22-24日北京

课程费用: 5000元/人

培训对象: 以C为编程语言的嵌入式和非嵌入式软件开发工程师。

学员基础: 部分内容适合软件质量相关管理人员。

课程背景:

从事嵌入式软件开发,最困难的莫过于学习操作系统原理和处理器方面的知识。讲解操作系统原理如果以Linux、Windows CE、VxWorks等成熟的操作系统为素材并不好,因为它们太大,很容易让人“只见森林不见树木”,也容易让人望而生畏而失去学习的兴趣和信心。从软件开发的角度来看,操作系统的概念和实现原理一旦掌握,不论基于哪一个操作系统做开发都只是调用不同的函数而已。为了让学员获得最好的学习体验,本课程以讲师自己设计的一个实现简洁、完整的“实时”操作系统 — ClearRTOS,为基础,通过渐进式的方式细致地讲解操作系统的概念和实现原理。至于处理器方面的知识,本课程没有针对某一具体处理器,而是就编程方面所需的通用知识进行了讲解。对这些通用知识的掌握,将使得处理器对于学员不再那么神秘。

与非嵌入式软件开发采用集成开发环境不同,嵌入式软件开发大多是基于命令行的。软件开发工程师除了进行编码工作,还得能驾驭自己的编译环境并运用其他的开发工具辅助开发工作。本课程以来自GNU的工具为例帮助学员战胜这一挑战。值得强调的是,其中花了较大的篇幅帮助学员成为Makefile方面的专家。

要实现高质高效地从事软件开发工作,工程师还必须理解软件设计的重要性,并借助一定的质量保证方法论来提高工作质量和效率。软件设计和质量保证方法论是业内比较抽象和高级的话题,为此本课程通过带领实践的方式逐步展开讲解,以帮助学员获得一些实用的设计原则、最佳实践和一套有效的质量保证方法论。

总而言之,本课程从知识、工具、方法和思想这四大方面全面讲解如何专业地从事嵌入式软件开发,致力于帮助学员全面走向高质高效编程。

培训目标:

掌握嵌入式软件开发所需的与处理器相关的通用知识。

明白信号完整性对嵌入式软件开发的影响。

掌握嵌入式软件开发所需掌握的GNU工具。包括make、gcc、binutils、ld和gdb。

实现更加深入地理解C编程语言。

了解引导加载器的大致工作原理和功能。

掌握实时操作系统的设计和实现原理。包括多任务、任务同步通讯、内存管理、设备管理和定时器管理。

理解设计是软件质量之本,并掌握一种有效的模块管理、错误管理和目录结构管理方法。

理解什么是可开发性问题和了解一种解决方法。

理解平台与框架开发是打造高质量软件之路。

理解软件开发的困难和质量保证需要系统性的方法论。

理解软件工程的工作习惯对软件质量的影响。掌握一些终身受用的编程好习惯。

理解单元测试的重要性,并掌握一种简单有效的部署方法。

理解代码覆盖、静态分析和动态分析对构建高质软件的重要性。

授课方式: 定制课程 + 案例讲解 + 小组讨论,60%案例讲解,40%实践演练

培训内容: 3天

课程大纲:

学习导引

学什么?

怎么学?

工程师技术能力层次模型

高质高效软件开发组织能力模型

[硬件篇] 处理器的基本概念

微处理器与微控制器

寄存器

处理器的启动

输入与输出

指令与数据

中断

字节序

边界对齐

断点

内存管理单元

1缓存

[硬件篇] 开发活动中的硬件问题

两个软件异常案例

异常的背后 — 信号完整性

应对信号完整性问题的方法

[工具篇] make,开发环境全能管家

从最简单的Makefile中了解规则

创建基本的编译环境

提高编程环境的实用性

打造更专业的编译环境

理解make的解析行为

Makefile的调试

make的常用选项

活用make

[工具篇] gcc,C语言编译器

交叉编译用其环境

gcc幕后工作原理

实用的gcc选项

[工具篇] bintuils工具集,软件开发利器

addr2line,指令地址翻译器

ar,静态库生成器

nm,符号显示器

objdump,信息查看器

objcopy,段剪辑器

size,段大小观察器

strings,字符串窥视器

strip,程序文件瘦身器

[工具篇] ld,链接器

重定位的概念

链接脚本

[编程语言篇] 掌握必要的汇编知识

AT&T和Intel语法格式

as的语法

嵌入汇编的语法

[编程语言篇] 深入理解程序的结构

[编程语言篇] ABI/EABI规范,缔造程序兼容合约

定义基本数据结构

规范字节对齐处理

分配寄存器的功能

规定栈帧结构

[编程语言篇] 混淆指针与数组所导致的问题

问题示例

问题分析

问题成因

预防措施

[编程语言篇] volatile,让我保持原样

从例子理解volatile

设计篇] 设计,软件质量之本 软件设计是什么

软件质量的概念

阻碍改善设计的常见观念

如何提高设计能力

设计模式、设计原则和设计思想

放之四海皆适用的设计原则

[设计篇] 模块管理,保障系统有序运行

模块管理参照系

设计思路

程序实现

模块管理的一些思考

[设计篇] 错误管理,不可获缺的用户需求

现状与出路

表达错误的通用方法

优化错误日志

[设计篇] 目录结构管理,使项目进展更顺利

规划目录结构的意义

出色目录结构的特点

一个示例

[设计篇] 平台与框架开发,高质量软件打造之路

系统库、平台和框架

本质和优点

架构模型

困境与生命周期理论

[设计篇] 可开发性设计,一种高效且经济的开发模式

可开发性问题一瞥

可开发性设计的内涵

设备抽象层

更复杂的设备抽象层

图形界面的可开发性设计

其他可开发性设计

[操作系统篇] 引导加载器,系统启航者

功能

文件存储布局

程序加载原理

优点

[操作系统篇] 任务,软件基本调度单元

任务情景

任务调度

任务的生命周期

任务控制

竞争问题与中断控制

任务与中断状态

任务栈溢出检测

滴答与空闲任务

多任务环境控制

任务模块管理

1task1示例程序

1任务钩子函数

1任务变量

1其它概念与思考

[操作系统篇] 任务同步与通信,实现协同工作

信号量

互斥锁

事件

消息队列

死锁及预防

[操作系统篇] 内存管理,协调动态内存的使用

堆管理(含内存溢出和泄漏检测)

内存池管理

[操作系统篇] 设备管理,方便与外设交互

字符设备管理

中断管理

设备管理的主要程序实现

设备驱动程序实现

驱动安装与设备注册

[操作系统篇] 定时器,程序闹钟

软件定时器分类

设计思路

中断回调定时器

定时误差

提高遍历效率

改善实时性

任务回调定时器

[质量保证篇] 质量保证导言

软件开发的特点

保证质量的关键要素

质量保证需要系统性的方法论

走出质量困境的指导性思想

[质量保证篇] 编程好习惯,质量保证的基本条件

一些终生受用的编程好习惯

[质量保证篇] 单元测试,被忽视的质量保证方法

警惕单元测试无用论

一个简单但不完善的单元测试例子

构建单元测试框架

无缝整合单元测试

几个实施问题

桩函数和打桩

错误注入,一种可测试性设计

平台开发与单元测试

被测行为的确定性

被测用例的有效性

[质量保证篇] 代码覆盖,单元测试效果的衡量指标

了解代码覆盖工具

无缝整合代码覆盖

三个代码覆盖度量指标

[质量保证篇] 静态分析,防止将失误带给用户

认识静态分析工具

无缝整合静态分析工具

[质量保证篇] 动态分析,使程序更健壮

结识动态分析工具

无缝整合动态分析工具

[质量保证篇] 性能分析,让优化程序有的放矢

初探性能分析工具

无缝整合性能分析工具

[质量保证篇] qBench,一个开发高质软件的工作台

如果课程内容不符合您的期望,可以定制内训

课程特点:

1、理论与实践相结合,解决你的实际问题。

2、真实案例的剖析,深入浅出的讲解,使你能学以致用。

讲师介绍:李云

2年电气和电子开发工作经验,自1999年至今从事软件开发工作。专注于嵌入式系统开发、软件平台与框架设计。曾在浙江大立科技有限公司、UT斯达康杭州研发中心、摩托罗拉杭州研发中担任软件工程师、项目负责人和软件架构师等职。早在2000年开始从事嵌入式软件开发工作,内容主要包括:操作系统内核、文件系统和IP协议栈的移植,IDE硬盘、以太网芯片和PCI总线等外设的驱动开发。熟悉x86、PowerPC、XScale处理器,以及TI DSP。源码级熟悉uC/OS、RTEMS和VxWorks实时操作系统的实现,并在这些操作系统和嵌入式Linux操作系统上有着丰富的软件开发经验。

讲师介绍:

在线报名:

客户报名咨询:020-39971893     400 600 2138

近期相关公开课:

报名服务流程:

中培网优势:

热门课程

会员登录

勾选即代表确认同意《用户协议》

没有账号?立即注册

忘记密码?