社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 1440|回复: 2

[资源分享] 想学嵌入式软件,但是没有很好的方法和思路?--看看这个本书吧!

[复制链接]

6082

TA的帖子

4957

TA的资源

至上芯片

Rank: 13Rank: 13Rank: 13Rank: 13

资源大师勋章

发表于 2014-5-24 14:48:48 | 显示全部楼层 |阅读模式
想学嵌入式软件,但是没有很好的方法和思路?--看看这个本书吧!
嵌入式软件设计之思想与方法


硬件技术的飞速发展,使硬件的性能显著提高,并且成本极速降低。微处理器已经深入到人们生活和生产的各个领域,各种产品和设备都逐渐增加了复杂的智能化功能,使得消费类电子产品、个人媒体产品、个人数字助理以及工业控制等领域得以快速发展。随着这些产品的高度智能化和复杂化,嵌入式软件的需求得到迅猛发展。从单片机的控制软件,到功能强大的多任务实时操作系统平台,产品的智能化程度越来越高,易用性越来越好,嵌入式软件及其应用领域越来越广泛,从而对嵌入式软件的要求也变得越来越复杂。本书旨在为嵌入式软件开发爱好者提供一个入门的引导。面对复杂的嵌入式系统软件,作为一位初学者,如何清楚把握嵌入式软件的设计对象与目标,如何寻找一个很好的切入点,尽快参与到嵌入式软件的设计当中,对于这些问题,希望通过本书的讲解,能够为读者提供一些有益的启示。笔者多年来一直在嵌入式软件领域从事实际项目的开发工作,出于对软件设计的执著与偏爱,笔者把这些年从事嵌入式软件设计的经验点滴整理出来,与更多的嵌入式软件设计爱好者分享。目前,尽管介绍嵌入式软件设计方面的书籍较多,但全面、系统地讨论如何从头开始设计嵌入式系统软件的书籍却很少。很多嵌入式软件设计方面的书籍都是一些诸如百科全书的参考手册,由于体系过于庞大,或讨论过于专业,初学者很难在短时间内把握其中有用的部分,因而更难将庞大体系里各书籍中的精华串到一起,而本书正是这些书籍精华的一种提炼。本书以讲述的方式,深入剖析嵌入式系统软件设计的各个层面,以及设计实践中的各个关键之事,以帮助读者轻松地领会嵌入式软件设计的方法,掌握嵌入式软件的核心架构。书中通过对嵌入式系统的分解,重点讲述嵌入式系统软件的层次结构。通过对目前多个主流系统(vxworks,Linux,WinCE)内核进行深入浅出的剖析与对比,帮助读者建立起正确的驱动设计模型;通过对不同硬件平台(mips,ARM)所开发的板级支持包(BSP)的深入讨论,帮助读者掌握硬件适配层(OAL)设计的核心概念,使读者清楚理解系统环境的上下文,前因后果,从而更好地把握各个软件模块设计的分界与接口,把握设计的对象与目标,在设计中做到心中有数,目标明确,从而更好、更快地解决问题。要想成为一名成功的嵌入式软件程序员,程序的设计能力是首要的技能。如何打好程序设计基础,如何编写工程化的程序,如何在设计中与团队协作开发、在后续开发中有效地升级与维护,如何编写规范的文档等,这些都是工程化软件设计中非常关键的环节,本书花费大量篇幅进行介绍,以帮助读者提高程序设计能力。书中从各种复杂的软件系统中抽象出驱动模型和板级支持包的设计模型;对于硬件基础,也通过模型化的方法讲述了总线的一般概念与作用,抽象出输入/输出设备的模型。通过这些模型化的讲解,便于读者掌握嵌入式软件设计的目标与内容,从而提高软件设计能力。1. 读者对象本书的读者对象为嵌入式程序设计的初学者,本书也可作为大中专学生学习嵌入式软件设计的入门参考。对于那些已从事嵌入式软件设计一段时间,但是在设计实践中感觉力不从心,需要全面掌握嵌入式软件设计内容与目标,掌握一些新的技巧与方法的读者,相信本书将会起到良师益友的作用。本书也可以作为嵌入式软件培训的教材。2. 题材与组织本书共分为四篇,其中第一篇着重讨论作为一名优秀的嵌入式软件设计人员所必备的知识和技能。需要说明的是:限于时间和精力,本书没能全面囊括嵌入式软件设计的所有知识点和技术面,但希望本书能让读者掌握基本的框架,使读者在今后的学习和工作实践中,更好地结合优秀读物和参考资料,不断学习和实践,从而提高自身的软件设计能力和水平。


http://download.eeworld.com.cn/detail/tiankai001/8486


回复

使用道具 举报

6082

TA的帖子

4957

TA的资源

至上芯片

Rank: 13Rank: 13Rank: 13Rank: 13

资源大师勋章

 楼主| 发表于 2014-5-24 14:49:08 | 显示全部楼层
第一篇 基础方法篇
第1章 程序基础
1.1 设计高性能程序的必要性3
1.1.1 设计高性能程序的必要性3
1.1.2 嵌入式软件的设计范畴3
1.1.3 嵌入式软件的分层结构6
1.2 嵌入式软件的程序设计要求8
1.2.1 代码结果的要求9
1.2.2 代码形式的要求10
1.3 嵌入式软件开发的基本思路和原则10
1.3.1 系统分析,定义接口11
1.3.2 函数实现,优化算法12
1.3.3 清理代码,补充注释14
1.3.4 测试修订,完善文档 14
1.4 程序实例剖析14
1.4.1 正确理解栈14
1.4.2 内存泄漏18
1.4.3 消除编译依赖18
1.4.4 消除潜在隐患20
1.4.5 规范实现范例21
1.4.6 性能优化23
1.5 程序设计其他注意点30
1.5.1 谨慎使用“宏”30
1.5.2 正确理解预定义宏34
1.5.3 避免歧义37

第2章 多任务操作系统
2.1 板级支持包40
2.2 嵌入式操作系统与实时性40
2.2.1 嵌入式操作系统41
2.2.2 实时操作系统42
2.3 多任务概述42
2.3.1 进程、线程与任务43
2.3.2 何时需要多任务44
2.3.3 任务状态的转换50
2.3.4 进程调度与调试算法51
2.3.5 任务相关的API51
2.4 进程间共享代码与可重入性53
2.4.1 共享代码53
2.4.2 共享代码可重入性问题53
2.4.3 使用私有数据55
2.4.4 使用临界区数据57
2.5 线程间通信57
2.5.1 共享数据结构57
2.5.2 互斥59
2.5.3 信号量60
2.5.4 临界区与信号量的实现实例63

第3章 硬件基础
3.1 ARM74
3.1.1 ARM编程模式75
3.1.2 ARM指令概述78
3.1.3 ARM异常及处理80
3.2 MIPS86
3.2.1 MIPS编程模式87
3.2.2 MIPS指令概述90
3.2.3 MIPS中断与异常95
3.3 接口基础98
3.3.1 总线概述99
3.3.2 I2C总线105
3.3.3 PCI总线108
3.3.4 设备模型115
3.3.5 一个IDE控制器设备实例117

第二篇 驱动模型篇
第4章 驱动的通用模型
4.1 设备驱动的作用121
4.2 驱动类型123
4.2.1 Linux中的驱动类型123
4.2.2 WinCE中的驱动类型125
4.2.3 VxWorks中的驱动类型125
4.3 设备驱动的通用模型126
4.3.1 模块部分的驱动126
4.3.2 设备的驱动例程127

第5章 VxWorks的驱动模型
5.1 VxWorks的I/O系统131
5.1.1 I/O系统概述131
5.1.2 文件名与设备133
5.1.3 基本I/O134
5.1.4 缓冲I/O136
5.1.5 格式化I/O136
5.2 VxWorks的驱动及其内部结构137
5.2.1 驱动的安装、驱动表138
5.2.2 设备的创建、设备链表140
5.2.3 文件的打开、文件描述符表142
5.2.4 文件的读、写、控制和关闭操作143

第6章 Linux的驱动模型
6.1 Linux的驱动加载方式145
6.1.1 内核驱动模块与模块化驱动145
6.1.2 模块化驱动的加载与卸载146
6.2 Linux的驱动架构147
6.2.1 一个最简单的内核驱动148
6.2.2 一个最简单的模块驱动151
6.2.3 Linux驱动中注册驱动153
6.2.4 Linux系统中的设备文件154
6.3 Linux字符型设备驱动155
6.3.1 驱动的加载与清理155
6.3.2 中断的申请与释放156

第7章 WinCE的驱动模型
7.1 WinCE驱动类型158
7.2 设备管理器及其驱动模型159

第三篇 BSP/OAL篇
第8章 BSP的基本概念
8.1 BSP与驱动161
8.2 BSP开发的目标任务162

第9章 BSP的设计要素
9.1 中断处理163
9.1.1 物理中断号与逻辑中断号163
9.1.2 CPU中断与中断控制器扩展164
9.1.3 中断源的查找165
9.1.4 中断处理线程166
9.2 CPU异常166
9.2.1 异常向量表167
9.2.2 向量表的安装173
9.2.3 异常处理代码实例177
9.3 硬件I/O的访问188
9.3.1 避免使用绝对物理地址188
9.3.2 内存一致性问题192
9.3.3 I/O访问的刷新198

第10章 Linux的启动过程
10.1 Linux的启动流程199
10.2 Linux的启动过程简介201
10.2.1 _stext函数201
10.2.2 start_kernel函数203
10.2.3 setup_arch函数204
10.2.4 trap_init函数204
10.2.5 init_IRQ函数205
10.2.6 sched_init函数205
10.2.7 do_initcalls函数205
10.2.8 init函数206
10.2.9 init程序207

第11章 WinCE的设计
11.1 WinCE OS平台开发简介209
11.1.1 WinCE平台的开发流程209
11.1.2 WinCE内核结构211
11.1.3 WinCE设计中的一些名词术语212
11.2 WinCE BSP开发213
11.2.1 启动装载器213
11.2.2 OAL开发215
11.2.3 WinCE配置文件219
11.3 WinCE设备驱动的开发流程221
11.3.1 设备驱动源代码221
11.3.2 修改配置文件222
11.3.3 向OS平台注入驱动223

第四篇 扩展篇
第12章 理解程序的内部结构
12.1 x86汇编及其程序结构226
12.1.1 x86程序段定义227
12.1.2 关联段寄存器、确定段的种类230
12.1.3 段组伪指令230
12.2 嵌入式系统中的程序结构231
12.2.1 嵌入式系统中执行程序的映像231
12.2.2 链接器与命令脚本236
12.3 ELF文件格式241
12.3.1 ELF文件格式概述241
12.3.2 ELF文件格式分析器248

第13章 嵌入式系统的设计思想
13.1 直截了当的思想262
13.2 层次化的思想267
13.3 循序渐进的思想269
13.4 实践是最好的老师269
13.5 团队协作意识270
13.6 大胆尝试与积极创新270
结 束 语272
参考文献273


回复

使用道具 举报

1136

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2014-5-24 15:20:51 | 显示全部楼层
感谢分享~~~~


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-11-20 15:23 , Processed in 0.250304 second(s), 18 queries , Redis On.

快速回复 返回顶部 返回列表