《嵌入式软件》电子书
基本信息
打开支付宝首页搜“673273051”领红包,领到大红包的小伙伴赶紧使用哦!
相关书籍
- 《Hadoop权威指南.大数据的存储与分析.第4版中文版》[]
- 《系统架构设计师-免费下载-pdf 》[]
- 《软件设计师教程(第三版)-pdf-免费下载 》[]
- 《精益开发实战-用看板管理大型项目》[]
- 《大话设计模式-pdf-免费下载》[]
- 《面向对象设计与分析-pdf-免费下载》[]
- 《重构——改善既有代码的设计》[]
- 《设计模式之禅作者_ 秦小波.azw3 》[]
- 《程序员必读之软件架构(图灵程序设计丛书)》[]
- 《面向对象开发方法》[]
内容介绍
目录:
第1ç« åµŒå…¥å¼ç¼–程的基本概念
1.1 æ•°å—系统
1.2 符å·äºŒè¿›åˆ¶æ•°
1.2.1 定点二进制数
1.2.2 浮点二进制数
1.2.3 交互数å—系统
1.2.4 二-å进制编ç
1.2.5 ASCII
1.2.6 错误检测
1.3 æ•°æ®ç»“æž„
1.3.1 ç®€å•æ•°æ®ç±»åž‹
1.3.2 夿‚æ•°æ®ç±»åž‹
1.4 通信åè®®
1.4.1 ç®€å•æ•°æ®å¹¿æ’
1.4.2 事件驱动简å•ä¼ è¾“
1.4.3 äº‹ä»¶é©±åŠ¨å¤šå…ƒä¼ è¾“
1.5 æ•°å¦
1.5.1 äºŒè¿›åˆ¶åŠ æ³•å’Œå‡æ³•
1.5.2 二进制乘法
1.5.3 二进制除法
1.6 数值比较
1.6.1 æ¡ä»¶è¯å¥
1.6.2 循环
1.6.3 å…¶ä»–æµæŽ§åˆ¶è¯å¥
1.7 çŠ¶æ€æœº
1.7.1 æ•°æ®ç´¢å¼•çŠ¶æ€æœº
1.7.2 æ‰§è¡Œç´¢å¼•çŠ¶æ€æœº
1.7.3 æ··åˆçŠ¶æ€æœº
1.8 多任务
第2ç« è®¾å¤‡é©±åŠ¨
2.1 æœ¬ç« æ¢—æ¦‚
2.2 实例1ï¼šä¸æ–处ç†çš„设备驱动程åº
2.2.1 䏿–优先级
2.2.2 上下文切æ¢
2.2.3 䏿–设备驱动程åºçš„伪代ç 实例
2.2.4 䏿–处ç†å’Œæ€§èƒ½
2.3 实例2:å˜å‚¨å™¨è®¾å¤‡é©±åŠ¨ç¨‹åº
2.4 实例3:æ¿çº§æ€»çº¿è®¾å¤‡é©±åŠ¨ç¨‹åº
2.5 æ¿çº§I/O驱动程åºå®žä¾‹
2.5.1 实例4:åˆå§‹åŒ–一个以太网驱动程åº
2.5.2 实例5:åˆå§‹åŒ–一个RS?驱动程åº
2.6 æœ¬ç« å°ç»“
第3ç« åµŒå…¥å¼æ“作系统
3.1 æœ¬ç« æ¢—æ¦‚
3.2 什么是进程
3.3 多任务和进程管ç†
3.3.1 进程执行
3.3.2 进程调度
3.3.3 ä»»åŠ¡é—´é€šä¿¡å’ŒåŒæ¥
3.4 内å˜ç®¡ç†
3.4.1 用户内å˜ç©ºé—´
3.4.2 å†…æ ¸å†…å˜ç©ºé—´
3.5 I/O和文件系统管ç†
3.6 æ“ä½œç³»ç»Ÿæ ‡å‡†å®žä¾‹ï¼šPOSIX(å¯ç§»æ¤æ“作系统接å£)
3.7 æ“作系统性能指å—
3.8 æ“作系统和æ¿çº§æ”¯æŒåŒ…(BSP)
3.9 æœ¬ç« å°ç»“
第4ç« ç»„ç½‘
4.1 RCM3200 Rabbit Core的介ç»
4.2 Dynamic Cå¼€å‘环境介ç»
4.2.1 å¼€å‘
4.2.2 调试
4.3 Dynamic C库简介
4.4 Dynamic C的内å˜ç©ºé—´
4.4.1 Rabbit的内å˜åˆ†æ®µ
4.4.2 Dynamic C䏿— 独立的指令和数æ®ç©ºé—´æ—¶çš„内å˜ä½¿ç”¨
4.4.3 把函数放入XMEM
4.4.4 独立的指令和数æ®å†…å˜
4.4.5 ç»¼åˆæ‰€æœ‰å†…容
4.5 ä»£ç æ˜¯å¦‚何编译和è¿è¡Œçš„
4.5.1 åœ¨ä¼ ç»Ÿå¼€å‘çŽ¯å¢ƒä¸‹ä»£ç æ˜¯å¦‚何被构建的
4.5.2 ä»£ç æ˜¯å¦‚何在Dynamic C下构建的
4.6 将一å°ç”µè„‘设置为RCMå¼€å‘系统
4.7 开始编写代ç
4.7.1 项目:第一个Rabbit程åº
4.7.2 Dynamic C的调试特性
4.7.3 Dynamic C帮助
4.7.4 啿¥è°ƒè¯•
4.7.5 å¢žåŠ æ–点
4.7.6 监视表达å¼
4.7.7 Dynamic C䏿˜¯ANSI C
4.7.8 Dynamic Cå˜å‚¨ç©ºé—´
4.8 嵌入å¼ç½‘络
4.9 Dynamic C对于网络å议的支æŒ
4.9.1 通用网络åè®®
4.9.2 Dynamic C库的å¯é€‰æ¨¡å—
4.10 典型的网络设置
4.10.1 典型的ä¼ä¸šç½‘络
4.10.2 典型的家åºç½‘络
4.11 å»ºç«‹æ ¸å¿ƒæ¨¡å—的网络设置
4.11.1 设置IP地å€
4.11.2 链路层的选择
4.11.3 在编译时定义TCP/IP
4.11.4 程åºè¿è¡Œæ—¶çš„TCP/IP定义
4.11.5 调试网络å®å‘½ä»¤
4.12 项目1:建立用于网络的Rabbitæ ¸å¿ƒæ¨¡å—
4.12.1 陿€åœ°å€çš„é…ç½®
4.12.2 é…置动æ€åœ°å€
4.12.3 动æ€åœ°å€åˆ†é…的特殊情况
4.13 客户端/æœåŠ¡å™¨èŒƒä¾‹
4.14 Berkeley Sockets接å£
4.15 嵌入å¼åº”用程åºä¸TCPå’ŒUDP的比较
4.16 Socket编程ä¸é‡è¦çš„Dynamic C库函数
4.16.1 用于通信åˆå§‹åŒ–或通信终æ¢çš„函数
4.16.2 用于确定Socket状æ€çš„函数
4.16.3 用于å‘é€å’ŒæŽ¥æ”¶æ•°æ®çš„函数
4.16.4 阻塞函数和éžé˜»å¡žå‡½æ•°
4.17 项目2:实现Rabbit TCP/IPæœåС噍
4.17.1 æœåŠ¡å™¨çš„TCP/IPçŠ¶æ€æœº
4.17.2 和通用TCP工具一起工作
4.17.3 和Java TCP/IP客户端一起工作
4.17.4 和C++ TCP/IP客户端一起工作
4.18 项目3:实现一个Rabbit TCP/IP客户端
4.18.1 å…³é—Windows XP防ç«å¢™
4.18.2 检查客户端代ç
4.18.3 与Java TCP/IPæœåŠ¡å™¨ä¸€èµ·å·¥ä½œ
4.18.4 与使用C#实现的TCP/IPæœåŠ¡å™¨ä¸€èµ·å·¥ä½œ
4.19 项目4:实现一个Rabbit UDPæœåС噍
4.19.1 与Java UDP客户端一起工作
4.19.2 与C++ UDP客户端一起工作
4.20 一些有用(å¹¶å…è´¹)的网络工具
4.20.1 Ping
4.20.2 Traceroute
4.20.3 Ethereal
4.20.4 Netcat
4.20.5 在线工具
4.21 最åŽçš„æ€è€ƒ
第5ç« é”™è¯¯å¤„ç†å’Œè°ƒè¯•
5.1 嵌入å¼ç³»ç»Ÿå¼€å‘和故障排除之é“
5.1.1 å¼€å‘者
5.1.2 回归测试——早测试ã€å¸¸æµ‹è¯•
5.1.3 案例分æžâ€”—一次性集æˆå’Œæ— 回归测试套件
5.1.4 å‘现者
5.1.5 ä¿®å¤è€…
5.2 é¿å…集ä¸è°ƒè¯•——çµå·§åœ°ç¼–ç
5.2.1 准则#1:使用å°å‡½æ•°
5.2.2 准则#2ï¼šä½¿ç”¨æŒ‡é’ˆæ ¼å¤–å°å¿ƒ
5.2.3 准则#3:良好的注释代ç
5.2.4 准则#4:é¿å…“幻数â€
5.3 主动调试
5.4 æ ˆå’Œå †
5.5 æ¤å…¥å†…å˜
5.6 逃逸代ç
5.7 专用解ç 器
5.8 MMU
5.9 å°ç»“
5.10 用闪å˜å®žçްå¯ä¸‹è½½å›ºä»¶
5.11 微程åºå™¨
5.12 微程åºå™¨çš„优点
5.13 微程åºå™¨çš„ä¸è¶³
5.14 接收一个微程åºå™¨
5.15 基本的微程åºå™¨
5.16 常è§é—®é¢˜åŠå…¶è§£å†³æ–¹æ¡ˆ
5.16.1 调试者ä¸å–œæ¬¢å¯å†™çš„代ç 空间
5.16.2 调试者ä¸å–œæ¬¢è‡ªæˆ‘é‡å®šä½çš„代ç
5.16.3 æ— æ³•ç”Ÿæˆä½ç½®ç‹¬ç«‹çš„代ç
5.16.4 å¯åŠ¨æ—¶æ— å›ºä»¶
5.16.5 æ— é™çš„看门狗超时
5.16.6 æ„外æ–电
5.17 硬件上的选择
5.17.1 隔离代ç 和数æ®
5.17.2 çµæ´»å®‰å…¨
5.18 内å˜è¯Šæ–
5.19 ROM测试
5.20 RAM测试
5.21 éžæ˜“失性å˜å‚¨å™¨
5.22 监ç£ç”µè·¯
5.23 多å—节写
5.24 测试
5.25 å°ç»“
5.26 构建一个强大的看门狗
5.27 内部WDT
5.28 外部WDT
5.29 强大WDT的特å¾
5.30 使用内部WDT
5.31 使用外部WDT
5.32 用于多任务的WDT
5.33 总结和其他æ€è·¯
第6ç« è½¯/硬件ååŒéªŒè¯
6.1 嵌入å¼ç³»ç»Ÿè®¾è®¡è¿‡ç¨‹
6.1.1 需求
6.1.2 系统架构
6.1.3 选择微处ç†å™¨
6.1.4 硬件设计
6.1.5 软件设计
6.1.6 软/硬件的整åˆ
6.2 验è¯å’Œç¡®è®¤
6.2.1 验è¯
6.2.2 确认
6.3 人际交互
6.4 ååŒéªŒè¯
6.4.1 软/硬件ååŒéªŒè¯çš„历å²
6.4.2 ååŒéªŒè¯çš„定义
6.4.3 ååŒéªŒè¯æ–¹æ³•
6.4.4 ååŒéªŒè¯æ³•æ ·ä¾‹
6.4.5 ååŒéªŒè¯æŒ‡æ ‡(ååŒéªŒè¯å‚æ•°)
第7ç« åµŒå…¥å¼åª’ä½“å¤„ç†æŠ€æœ¯
7.1 媒体处ç†ç³»ç»Ÿç®€ä»‹
7.1.1 æ ¸å¿ƒå¤„ç†è¿‡ç¨‹
7.1.2 输入/输出å系统——外设接å£
7.1.3 å˜å‚¨å系统
7.2 系统资æºçš„划分和代ç 优化
7.3 事件产生和处ç†
7.4 编程方法
7.5 高效编程的结构特点
7.5.1 å•å‘¨æœŸå¤šé‡æ“作
7.5.2 硬件循环结构
7.5.3 ä¸“ç”¨å¯»å€æ¨¡å¼
7.5.4 è”锿Œ‡ä»¤æµæ°´çº¿
7.6 ä¸ºè¾¾åˆ°æœ‰æ•ˆç¼–ç¨‹ï¼Œç¼–è¯‘å™¨çš„è€ƒè™‘å› ç´
7.7 ç³»ç»Ÿå’Œå†…æ ¸åŒæ¥
7.7.1 å˜å–åŒæ¥
7.7.2 排åº
7.7.3 åŽŸåæ“ä½œ
7.8 å˜å‚¨ç»“æž„â€”â€”ç®¡ç†æ‰€éœ€
7.8.1 å˜å‚¨å™¨è®¿é—®æƒè¡¡
7.8.2 指令å˜å‚¨ç®¡ç†â€”â€”é«˜é€Ÿç¼“å˜æˆ–DMA
7.8.3 æ•°æ®å˜å‚¨ç®¡ç†
7.8.4 选择DMA和cache的系统方针
7.8.5 内å˜ç®¡ç†å•å…ƒ(MMU)
7.9 ç‰©ç†æ•°æ®ä¼ 输
7.9.1 分组转æ¢åˆ°æœ€å°åŒ–å†…å˜æ€»çº¿ç¿»è½¬
7.9.2 äº†è§£å†…æ ¸å’ŒDMA SDRMçš„å˜å–
7.9.3 ä¿æŒSDRAM行开放,实现数æ®çš„多通路
7.9.4 优化系统时钟设置,确ä¿åˆ·æ–°çŽ‡ï¼Œè°ƒæ•´SDRAMè¿è¡Œæ—¶çš„速率
7.9.5 利用系统资æºä¹‹é—´çš„优先æƒå’Œä»²è£ç–ç•¥
7.10 åª’ä½“å¤„ç†æ¡†æž¶
7.11 定义框架
7.12 éžå¯¹ç§°å’Œå¯¹ç§°çš„åŒæ ¸å¤„ç†å™¨
7.13 编程模型
7.13.1 éžå¯¹ç§°ç¼–程模型
7.13.2 å‡åŒ€çš„编程模型
7.14 构建框架的ç–ç•¥
7.14.1 å®žæ—¶å¤„ç†æ•°æ®
7.14.2 编程轻便型胜过性能
7.14.3 基于性能的框架
7.14.4 框架æç¤º
7.15 关于媒体框架的其他问题
7.15.1 音频ã€è§†é¢‘åŒæ¥
7.15.2 管ç†ç³»ç»Ÿæµ
7.15.3 æ¡†æž¶å’Œç®—æ³•çš„å¤æ‚性
第8ç« åµŒå…¥å¼ç³»ç»Ÿä¸çš„DSP
8.1 嵌入å¼ç³»ç»ŸåŠå®žæ—¶ç³»ç»Ÿæ¦‚è¿°
8.2 实时系统
8.3 硬件实时系统和软件实时系统
8.3.1 简介
8.3.2 实时系统和分时系统的区别
8.3.3 DSP系统是硬实时系统
8.3.4 实时事件的特点——实时事件的分类
8.4 有效执行和执行环境
8.4.1 效率概述
8.4.2 资æºç®¡ç†
8.5 实时系统设计挑战
8.5.1 å“应时间
8.5.2 ä»Žæ•…éšœä¸æ¢å¤
8.5.3 分布å¼å’Œå¤šå¤„ç†å™¨çš„体系结构
8.5.4 嵌入å¼ç³»ç»Ÿ
8.6 总结
8.7 è¿ç”¨DSP的嵌入å¼ç³»ç»Ÿç ”å‘周期概述
8.8 使用DSP的嵌入å¼ç³»ç»Ÿç ”å‘周期
8.8.1 æ¥éª¤1ï¼šç ”ç©¶ç³»ç»Ÿæ‰€æœ‰çš„åŠŸèƒ½éœ€è¦
8.8.2 æ¥éª¤2:选择系统需è¦çš„硬件组件
8.8.3 硬件门
8.8.4 软件å¯ç¼–程化
8.8.5 通用处ç†å™¨
8.8.6 微控制器
8.8.7 FPGA解决方案
8.8.8 æ•°å—ä¿¡å·å¤„ç†å™¨
8.8.9 通用信å·å¤„ç†è§£å†³æ–¹æ¡ˆ
8.8.10 DSPåŠ é€Ÿä¸Šçš„é€‰æ‹©
8.8.11 æ¥éª¤3:了解DSP的基础和体系结构
8.8.12 DSPå¤„ç†æ¨¡å¼
8.8.13 输入/输出选择
8.8.14 计算DSP性能
8.8.15 DSP软件
8.8.16 DSP构架
8.9 优化数å—ä¿¡å·å¤„ç†(DSP)软件
8.10 什么是优化
8.11 处ç†è¿‡ç¨‹
8.12 åŠ å¿«ç»å¸¸æ€§äº‹ä»¶çš„速度
8.13 åŠ å¿«ç»å¸¸æ€§äº‹ä»¶çš„速度——DSP体系架构
8.14 åŠ å¿«ç»å¸¸æ€§äº‹ä»¶çš„速度——DSP算法
8.15 åŠ å¿«ç»å¸¸æ€§äº‹ä»¶çš„速度——DSP编译器
8.16 DSP优化的深入讨论
8.17 直接å˜å‚¨å™¨è®¿é—®
8.18 使用DMA
8.18.1 将数æ®åˆ†æ®µ
8.18.2 挂起和轮询
8.18.3 管ç†å†…部å˜å‚¨å™¨
8.19 循环展开
8.19.1 填充执行å•å…ƒ
8.19.2 å‡å°‘循环开销
8.19.3 让循环适åˆå¯„å˜å™¨çš„空间
8.19.4 折ä¸
8.20 è½¯ä»¶æµæ°´çº¿åŒ–
8.20.1 一个例å
8.20.2 ä½¿è½¯ä»¶æµæ°´çº¿åŒ–
8.20.3 䏿–å’Œæµæ°´çº¿ä»£ç
8.21 更多的关于DSP的编译器和优化
技术
8.21.1 编译器架构和æµ
8.21.2 编译器优化
8.21.3 编译进行时的选项
8.22 程åºå‘˜å助编译器
8.22.1 附注
8.22.2 内è”函数
8.22.3 关键å—
8.22.4 函数内嵌
8.22.5 å‡å°‘å †æ ˆå˜å–æ—¶é—´
8.22.6 程åºå‘˜å助编译器
8.22.7 ç¼–ç 建议总结
8.23 基于剖é¢çš„编译
8.23.1 优点
8.23.2 调试优化代ç 的问题
8.23.3 代ç 优化过程总结
8.23.4 总结
第9ç« å®žç”¨åµŒå…¥å¼ç¼–ç æŠ€æœ¯
9.1 é‡å…¥
9.2 原åå˜é‡
9.3 å¦ä¸¤ä¸ªè§„则
9.4 ä¿æŒä»£ç 为é‡å…¥
9.5 递归
9.6 异æ¥ç¡¬ä»¶/固件
9.7 竞争æ¡ä»¶
9.8 选项
9.9 å…¶ä»–RTOS
9.10 亚稳æ€
9.11 固件,éžç¡¬ä»¶
9.12 䏿–延迟
9.13 å–æ•°æ®
9.14 ç†è§£C编译器:如何最å°åŒ–代ç 大å°
9.15 现代的C编译器
9.15.1 编译器的结构
9.15.2 程åºçš„å«ä¹‰
9.15.3 基本转æ¢
9.15.4 寄å˜å™¨åˆ†é…
9.15.5 函数调用
9.15.6 函数内è”
9.15.7 低级代ç 压缩
9.15.8 链接器
9.15.9 编译器优化控制
9.15.10 å†…å˜æ¨¡åž‹
9.16 编程建议
9.16.1 使用æ£ç¡®çš„æ•°æ®å°ºå¯¸
9.16.2 使用最好的指针类型
9.16.3 结构和填充
9.16.4 使用函数原型
9.16.5 ä½¿ç”¨å‚æ•°
9.16.6 ä¸è¦å–地å€
9.16.7 ä¸è¦ä½¿ç”¨å†…è”æ±‡ç¼–è¯è¨€
9.16.8 ä¸è¦å†™èªæ˜Žçš„代ç
9.16.9 为跳转表使用switch
9.16.10 在使用ä½åŸŸå‰å…ˆæ£€æŸ¥
9.16.11 当心库函数
9.16.12 使用é¢å¤–çš„æç¤º
9.17 最åŽè¯´æ˜Ž
9.18 致谢
第10ç« å¼€å‘æŠ€æœ¯åŠè¶‹åŠ¿
10.1 如何为片上系统设计选择CPU
10.1.1 è®¾è®¡å¤æ‚度
10.1.2 设计é‡ç”¨
10.1.3 å†…å˜æž¶æž„å’Œä¿æŠ¤
10.1.4 CPU性能
10.1.5 功耗
10.1.6 æˆæœ¬
10.1.7 è½¯ä»¶å› ç´
10.1.8 å¤šæ ¸SoC
10.1.9 å°ç»“
10.2 嵌入å¼ç³»ç»Ÿè½¯ä»¶å¼€å‘的新兴技术
10.2.1 微处ç†å™¨è®¾å¤‡æŠ€æœ¯
10.2.2 系统架构
10.2.3 设计构æˆ
10.2.4 软件内容
10.2.5 编程è¯è¨€
10.2.6 软件团队规模和分布
10.2.7 UML和建模
10.2.8 关键技术
10.2.9 å°ç»“
10.3 选择开å‘工具
10.3.1 å¼€å‘工具链
10.3.2 编译特性
10.3.3 嵌入å¼ç³»ç»Ÿçš„æ‰©å±•
10.3.4 优化
10.3.5 构建工具:关键点é‡è¿°
10.3.6 调试
10.3.7 调试工具:关键点é‡è¿°
10.3.8 æ ‡å‡†å’Œå¼€å‘工具的集æˆ
10.3.9 选择建议
10.3.10 å°ç»“
10.4 Eclipse——将嵌入å¼å·¥å…·é›†ä¸
10.4.1 Eclipseå¹³å°çš„ç†å¿µ
10.4.2 å¹³å°
10.4.3 Eclipseå¦‚ä½•å˜æˆåµŒå…¥å¼çš„
10.4.4 å°ç»“
10.5 嵌入å¼è½¯ä»¶å’ŒUML
10.5.1 为什么使用UML建模
10.5.2 将应用程åºå’Œä½“系结构分离
10.5.3 xtUML代ç 生æˆ
10.5.4 å°ç»“
10.6 用xtUML进行基于模型的系统开å‘
10.6.1 为什么构建嵌入å¼ç³»ç»Ÿå¦‚æ¤å›°éš¾
10.6.2 更好的解决方案
10.6.3 ç»éªŒåˆ°æ¤ä¸ºæ¢
10.7 展望未æ¥
