搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
嵌入式软件设计基础:基于ARM Cortex-M3:with the ARM cortex-M3
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111441762
  • 作      者:
    (美)Daniel W. Lewis著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2014
收藏
内容介绍

  《计算机科学丛书·嵌入式软件设计基础:基于ARM Cortex-M3(原书第2版)》以实践中最常运用的方式讲解汇编语言——实现小型、快速或特殊目的的例程,这些例程由主程序(高级语言编写,如C)调用。通过运用嵌入式软件环境,本书介绍多线程程序设计、抢占式系统与非抢占式系统、共享资源和调度。
  《计算机科学丛书·嵌入式软件设计基础:基于ARM Cortex-M3(原书第2版)》适用于高等院校工科各专业嵌入式计算机系统程序设计、C语言程序设计及汇编语言程序设计类本科课程,也可供相关技术人员学习参考。

展开
精彩书摘
  第2章  数的表示
  数据有各种不同的类型:数值、文本、图像、音频等。不管是什么类型,如果要使用计算机来处理数据,那么数据首先要转换为计算机能够理解的格式。计算机由电子设备构造而来,使用电压来表示值。为了简化电路,设备可以是“打开”或“关闭”状态,这样仅需要两种电压水平。因此,计算机使用的存储模式只包括两种符号(“0”或者“0”)自然也在情理之中了。
  在十进制(以10为基数)系统中,我们使用数字符号的序列来表示大于9的数。同样的方法也适合在二进制(以2为基数)系统中用来表示大于1的数。原则上,你所知道的关于多位十进制数的知识与二进制数是一样的(例如计数、加法、减法)。
  2.1  固定精度二进制数
  1.计算机采用不同方式存储整数和实数
  可能大家都知道计算机根据数字是否具有小数部分来区分不同的数。没有小数部分的数称为整数(integer),而具有小数部分的数则称为实数(real)。大多数实数使用浮点(floating.point)表示法存储在计算机中。由于实现整数的算术运算所需的硬件要远比实现浮点数运算的简单快速,因此整数和实数使用不同的表示法。不仅是因为我们需要使用这两种类型,也由于为嵌入式系统编写软件的可靠性需求,所以我们需要完全理解这些类型的数字与我们日常使用的数学的不同之处,并理解由于差异的后果所带来的限制。
  2.计算机更多地使用二进制数位来保存数而不是其等值的十进制数位
  显然,我们必须学习如何在十进制和二进制之间进行转换。我们会发现对于任何一个值,二进制表示比十进制表示需要更多的数位。例如,值1234在以10为基数的系统中仅需要4位,但是如果转换为基于2的表示,结果(1011010010)需要多得多的位数。通常基数越小,表示同样值所需的位数越多。因此较大的二进制数很乏味且容易出现传送错误。然而通过一个很小的练习,会很快发现以2为基数和以16为基数(十六进制,hexadeci:mal)表示的数之间的转换用观察法几乎就可以立即完成。与其等效二进制数相比,“十六进制”(IJex)数需要很少的位数,因此讨论计算机中存储的二进制数时,使用十六进制数作为方便的速记符号。
  3.计算机使用限制了数的范围的固定位数来存储数字
  使用纸笔进行算术运算对数字所具有的位数的多少没有任何限制。然而,由计算机处理的数使用了用于处理有限数量的二进制位数(“位”)的硬件。与汽车的里程计只能显示0到99999英里相似,计算机使用固定数量的位来存储数从而限制了能够表示的值的范围。通常有几种固定精度(fixedprecision)可供选择:8位的“字节”,16位的“半字”,32位的“字”或者64位的“双字”。使用更少的位(比如字节)存储的数显然需要更少的存储器,但是其只能提供非常有限范围内的值。
  ……
展开
目录

出版者的话
译者序
献辞
前言
第1章  导论
1.1  什么是嵌入式系统
1.2  嵌入式软件设计的目标有什么独特性
1.3  什么是实时系统
1.4  什么是多线程
1.5  嵌入式处理器到底有多强大
1.6  如何使用编程语言
1.7  构建嵌入式应用有什么不同之处
1.8  典型的嵌入式程序有多大
习题
第2章  数的表示
2.1  固定精度二进制数
2.2  按位计数制
2.2.1  二进制到十进制的转换
2.2.2  十进制到二进制的转换
2.2.3  十六进制:二进制的简写
2.2.4  固定精度、反转与溢出
2.3  整数的二进制表示
2.3.1  带符号整数
2.3.2  同一数量级的正数和负数表示
2.3.3  解释2的补码的值
2.3.4  改变具有整数和小数部分的数的符号
2.3.5  二进制加减法
2.3.6  表示范围与溢出
2.4  实数的二进制表示
2.4.1  浮点表示的实数
2.4.2  定点表示的实数
2.5  文本的ASCII码表示
2.6  二进制编码的十进制
习题
第3章 实现算术运算
3.1  2的补码与硬件复杂度
3.2  乘法与除法
3.2.1  有符号与无符号乘法
3.2.2  通过对2的移位来实现乘或者除
3.2.3  乘以任意常量
3.2.4  除以任意常量
3.3  定点实数的算术运算
3.3.1  使用标准16.16格式的定点数
3.3.2  使用标准32.32格式的定点数
3.3.3  32.32定点实数乘法
3.3.4  实例:4.4定点实数乘法
习题
第4章 C的整数类型及其使用
4.1  整数数据类型
4.2  布尔数据类型
4.3  混合数据类型
4.4  内存中的位操作
4.4.1  测试位
4.4.2  设置、清除与反转位
4.4.3  提取位
4.4.4  插入位
4.5  I/O端口的位操作
4.5.1  只写I/O设备
4.5.2  基于读和写的I/O设备
4.5.3  基于串行访问的I/O设备
4.5.4  基于写入数据位的I/O设备
4.6  访问内存映射的I/O设备
4.6.1  使用指针访问数据
4.6.2  数组、指针和取地址操作符
4.7  结构体
4.7.1  封装的结构体
4.7.2  位域
4.8  变量访问
4.8.1  获取对象的地址
4.8.2  使用联合体
习题
第5章 汇编程序设计Ⅰ:计算机组成
5.1  内存
5.2  中央处理单元
5.2.1  其他寄存器
5.2.2  取指-执行周期
5.3  输入/输出
5.4  ARM Cortex-M3 v7M体系结构概述
5.4.1  内部组成
5.4.2  指令流水线
5.4.3  存储模型
5.4.4  位带
5.5  ARM汇编语言
5.5.1  指令格式与操作数
5.5.2  将汇编翻译为二进制
习题
第6章 汇编程序设计Ⅱ:数据操作
6.1  将常量装入寄存器
6.2  将内存数据装入寄存器
6.3  数据从寄存器存入内存
6.4  将简单的C赋值语句转换为ARM汇编代码
6.5  内存地址计算
6.6  内存寻址实例
6.6.1  将C指针表达式翻译为汇编代码
6.6.2  将C下标表达式翻译为汇编代码
6.6.3  将结构体引用翻译为汇编代码
6.7  栈指令
6.8  数据处理指令
6.8.1  在APSR中更新标识
6.8.2  算术运算指令
6.8.3  位操作指令
6.8.4  移位指令
6.8.5  位域操作指令
6.8.6  混合位、字节和半字指令
习题
第7章 汇编程序设计Ⅲ:控制结构
7.1  指令序列
7.2  实现判定
7.2.1  条件分支指令
7.2.2  if-then和if-then-else语句
7.2.3  复合条件码
7.2.4  if-then指令
7.3  实现循环
7.4  函数的实现
7.4.1  函数调用和返回
7.4.2  寄存器使用
7.4.3  参数传递
7.4.4  返回值
7.4.5  临时变量
7.4.6  保存寄存器值
习题
第8章 汇编程序设计Ⅳ:I/O编程
8.1  Cortex-M3 I/O硬件
8.1.1  中断和异常
8.1.2  线程和异常处理模式
8.1.3  进入异常处理程序
8.1.4  从异常处理程序返回
8.1.5  减少延迟
8.1.6  优先级与嵌套异常
8.2  同步、传输率与延迟
8.3  缓冲区与队列
8.4  评价I/O的执行能力
8.4.1  轮询等待循环
8.4.2  中断驱动的I/O
8.4.3  直接内存访问
8.4.4  不同方法的比较
习题
第9章 并发软件
9.1  前台/后台系统
9.1.1  线程状态与串行化
9.1.2  延迟管理
9.1.3  中断溢出
9.1.4  将工作转移到后台
9.2  多线程编程
9.2.1  独立线程的并发执行
9.2.2  上下文切换
9.2.3  非抢占(合作)多线程
9.2.4  抢占式多线程
9.3  共享资源与临界区
9.3.1  禁止中断
9.3.2  禁止任务切换
9.3.3  自旋锁
9.3.4  互斥对象
9.3.5  信号量
习题
第10章 调度
10.1  线程状态
10.2  等待中的线程
10.3  上下文切换
10.4  轮转调度
10.5  基于优先级的调度
10.5.1  资源饥饿
10.5.2  优先级反转
10.5.3  优先级上限协议
10.5.4  优先级继承协议
10.6  分配优先级
10.6.1  最后期限驱动的调度
10.6.2  速率单调的调度
10.7  死锁
10.8  看门狗定时器
习题
第11章 存储管理
11.1  C语言中的对象
11.2  作用域
11.2.1  改进局部作用域
11.2.2  改进全局作用域
11.3  生命周期
11.4  自动分配
11.5  静态分配
11.6  三个程序:区分静态分配和自动分配
11.6.1  对象创建
11.6.2  对象初始化
11.6.3  对象销毁
11.7  动态分配
11.7.1  内存碎片
11.7.2  内存分配池
11.8  具有变量大小的动态分配
11.9  递归函数和内存分配
习题
第12章 共享内存
12.1  确定共享对象
12.1.1  共享全局数据
12.1.2  共享私有数据
12.1.3  共享函数
12.2  可重入函数
12.3  只读数据
12.4  编程实践需要避免的事项
12.4.1  将内部状态保持在本地静态对象的函数
12.4.2  返回本地静态对象地址的函数
12.5  访问共享内存
12.5.1  处理器体系结构的影响
12.5.2  只读和只写访问
12.5.3  类型限定符volatile
习题
第13章 系统初始化
13.1  内存层次
13.2  CPU和向量表
13.3  C运行时环境
13.3.1  将初始值从非易失性存储器复制到数据区
13.3.2  将未初始化的静态变量归零
13.3.3  设置堆
13.4  系统定时器
13.5  其他外围设备
部分习题答案
索引

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证