嵌入式软件开发

版本:v1.5.2

Crifan Li

摘要

此文主要介绍的嵌入式软件开发的背景知识,基本逻辑和流程,基本名词、概念和理念,嵌入式开发环境的基本组成,交叉编译和交叉编译器,烧录,工具,系统设计,嵌入式CPU,嵌入式资源,常见问题及解答。

[提示] 本文提供多种格式供:
在线阅读 HTML HTMLs PDF CHM TXT RTF WEBHELP
下载(7zip压缩包) HTML HTMLs PDF CHM TXT RTF WEBHELP

HTML版本的在线地址为:

http://www.crifan.com/files/doc/docbook/embedded_soft_dev/release/html/embedded_soft_dev.html

有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:

http://www.crifan.com/bbs/categories/embedded_soft_dev/

2015-05-25

修订历史
修订 1.5.2 2015-05-25 crl
  1. 增加嵌入式软件开发的背景知识
  2. 增加嵌入式基本的组成和流程的介绍
  3. 增加嵌入式行业从业人员概览
  4. 把portfolio移到软件通用知识中
  5. 添加解释Android和Linux是不同的
  6. 更新嵌入式开发工具,添加嵌入式CPU的应用领域

目录

正文之前
1. 此文目的
2. 联系方式
1. 嵌入式软件开发相关背景知识
1.1. 嵌入式行业和领域
1.2. 嵌入式产业链
1.3. 嵌入式行业概览
1.3.1. 2014年嵌入式行业从业人员:工作经验
1.3.2. 2014年嵌入式行业从业人员:学历要求
1.3.3. 2014年嵌入式行业从业人员:地域分布
1.3.4. 2014年嵌入式行业从业人员:嵌入式开发前的研发方向
1.3.5. 2014年嵌入式行业从业人员:薪资水平
1.3.6. 2014年嵌入式行业从业人员:软件开发语言的选择
1.3.7. 2014年嵌入式行业从业人员:所属行业分布情况
1.3.8. 2014年嵌入式行业从业人员:公司规模
1.3.9. 2014年嵌入式行业从业人员:软件开发平台的选择
1.3.10. 2014年嵌入式行业从业人员:软件开发调试工具的选择
1.3.11. 2014年嵌入式行业从业人员:硬件开发平台的选择
1.3.12. 2014年嵌入式行业从业人员:处理器芯片的选择
1.3.13. 2014年嵌入式行业从业人员:软硬件人员的安排
1.3.14. 2014年嵌入式行业从业人员:未来嵌入式操作系统首选
1.3.15. 2014年嵌入式行业从业人员:最想选择的嵌入式应用方向
1.3.16. 2014年嵌入式行业从业人员:获取专业知识的途径
1.3.17. 2014年嵌入式行业从业人员:首选搜索引擎
1.3.18. 2014年嵌入式行业从业人员:企业人才需求现状
1.3.19. 2014年嵌入式行业从业人员:对工作薪资的满意度
1.3.20. 2014年嵌入式行业从业人员:如何看待培训
1.4. 嵌入式软硬件厂商的合作关系
2. 嵌入式软件开发的基本逻辑
2.1. 嵌入式软件开发的基本逻辑
2.1.1. 按照是否有操作系统
2.1.2. 按照操作系统是否是私有的
2.2. 嵌入式软件开发内容分类
2.3. 嵌入式软件期间会涉及哪些内容
2.4. 嵌入式软件开发需要学习哪些知识
2.4.1. 嵌入式领域内相对通用的知识和技能
2.4.1.1. 嵌入式相对通用的知识:计算机编程语言
2.4.1.1.1. 嵌入式相对通用语言:C语言
2.4.1.1.2. 嵌入式相对通用语言:汇编语言
2.4.1.1.3. 嵌入式相对通用语言:C++语言
2.4.1.2. 嵌入式相对通用的知识:芯片架构
2.4.1.3. 嵌入式相对通用的知识:嵌入式操作系统
2.4.1.3.1. 嵌入式常用操作系统:嵌入式Linux
2.4.1.3.2. 嵌入式常用操作系统:μC/OS-II
2.4.1.3.3. 嵌入式常用操作系统:ThreadX
2.4.1.3.4. 嵌入式常用操作系统:VxWorks
2.4.1.3.5. 嵌入式常用操作系统:WinCE
2.4.1.3.6. Android不是传统意义上的嵌入式操作系统
2.4.1.3.6.1. Android和嵌入式Linux的区别
2.4.1.4. 嵌入式相对通用的知识:嵌入式开发环境搭建和使用
2.4.1.4.1. 嵌入式开发环境:交叉编译器
2.4.1.4.2. 嵌入式开发环境:固件的烧写
2.4.1.4.3. 嵌入式开发环境:调试
2.4.1.4.3.1. 嵌入式开发调试方法和调试工具
2.4.1.4.4. 嵌入式开发环境:嵌入式IDE
2.4.2. 嵌入式领域内某领域内相关特定知识
2.4.2.1. 嵌入式领域相关知识之消费类数码
2.4.2.2. 嵌入式领域相关知识之工业自动化控制
2.4.2.3. 嵌入式领域相关知识之汽车电子
2.4.2.4. 嵌入式领域相关知识之医疗器械
2.4.2.5. 嵌入式领域相关知识之航空航天
2.5. 嵌入式系统中从底层硬件到上层软件之间的逻辑层次和映射关系
3. 嵌入式软件开发的基本名词和概念
3.1. 开发套件==开发组件==develop suite==develop tookit=StartKit=DevBoard
3.2. Part Number==模块编号==产品编号
3.3. fabless==无厂半导体公司==无工厂的IC设计公司
3.4. foundry==晶圆厂==晶圆代工厂==代工厂
3.5. IP Core==IP核==软核
3.6. 量产
3.6.1. 批量生产芯片
3.6.2. 重新烧录U盘的固件
3.7. VFP 浮点处理器
3.8. 代码空间占用大小:footprint
4. 嵌入式开发环境的基本构成
4.1. 嵌入式Linux开发环境组成
4.2. WinCE开发环境组成
5. 嵌入式开发之交叉编译和交叉编译器
5.1. 什么是交叉编译
5.2. 如何获得交叉编译器
5.3. 如何使用交叉编译器
5.4. 嵌入式编译相关知识
6. 嵌入式开发之烧录
6.1. 什么是烧录
6.2. 如何进行烧录
6.2.1. 常见的烧录所用工具
6.2.2. 常见的烧录方式
7. 嵌入式开发之开发工具
7.1. 嵌入式开发的IDE
7.1.1. 嵌入式IDE:Keil
7.1.2. 嵌入式IDE:ARM相关的ADS,RVDS等
7.1.3. 嵌入式IDE:IAR
7.2. 协议分析工具
7.3. 交叉编译器/工具链
7.4. 嵌入式开发的调试工具
8. 嵌入式开发之系统设计
8.1. 嵌入式系统设计之硬件选型
8.2. 嵌入式系统设计流程
9. 嵌入式开发之嵌入式CPU
9.1. 什么是嵌入式CPU
9.2. 嵌入式CPU核心参数
9.3. 嵌入式CPU的应用领域
10. 嵌入式软件开发的外围设备
10.1. 嵌入式外设之LCD显示屏
10.2. 嵌入式外设之图像传感器
11. 嵌入式软件开发相关硬件知识
11.1. 芯片封装方式
12. 嵌入式软件开发相关的厂商
12.1. 嵌入式软件厂商
12.1.1. 嵌入式软件厂商:Keil
12.2. 嵌入式硬件厂商
12.2.1. 嵌入式硬件开发板厂商
13. 嵌入式软件开发相关接口和协议
13.1. 嵌入式总线之内部总线
13.1.1. 嵌入式内部总线之MIPI
13.1.2. 嵌入式内部总线之AMBA
13.2. 嵌入式总线之外部总线
14. 嵌入式软件开发常见问题与解答
常见问题
14.1. 学习嵌入式C语言要掌握到什么程度?
15. 嵌入式软件开发方面的值得借鉴的帖子
16. 嵌入式软件开发相关资源
16.1. 嵌入式软件开发书籍
16.1.1. Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers
17. 如何学习嵌入式软件开发
参考书目

插图清单

1.1. 嵌入式应用之便携式导航
1.2. 嵌入式应用之智能家居
1.3. 嵌入式应用之安全防护
1.4. 嵌入式应用之电力系统
1.5. 2014年嵌入式行业从业人员:工作经验
1.6. 2014年嵌入式行业从业人员:学历要求
1.7. 2014年嵌入式行业从业人员:地域分布
1.8. 2014年嵌入式行业从业人员:嵌入式开发前的研发方向
1.9. 2014年嵌入式行业从业人员:薪资水平
1.10. 2014年嵌入式行业从业人员:软件开发语言的选择
1.11. 2014年嵌入式行业从业人员:所属行业分布情况
1.12. 2014年嵌入式行业从业人员:公司规模
1.13. 2014年嵌入式行业从业人员:软件开发平台的选择
1.14. 2014年嵌入式行业从业人员:软件开发调试工具的选择
1.15. 2014年嵌入式行业从业人员:硬件开发平台的选择
1.16. 2014年嵌入式行业从业人员:处理器芯片的选择
1.17. 2014年嵌入式行业从业人员:软硬件人员的安排
1.18. 2014年嵌入式行业从业人员:未来嵌入式操作系统首选
1.19. 2014年嵌入式行业从业人员:最想选择的嵌入式应用方向
1.20. 2014年嵌入式行业从业人员:获取专业知识的途径
1.21. 2014年嵌入式行业从业人员:首选搜索引擎
1.22. 2014年嵌入式行业从业人员:企业人才需求现状
1.23. 2014年嵌入式行业从业人员:对工作薪资的满意度
1.24. 2014年嵌入式行业从业人员:如何看待培训
2.1. ARM的Cortex-M3架构概述
2.2. 传统Linux和Android的不同的开发所处层次关系对比图
3.1. PIC32入门套件
3.2. PIC32开发工具
7.1. SD原始时序图
7.2. 结果解码后的SD时序效果图
8.1. PIC32系列产品中有各种不同资源
8.2. 嵌入式开发流程图
13.1. 用于取代其他内部总线的MIPI总线

表格清单

2.1. 嵌入式Linux驱动开发期间相关的内容