嵌入式多核DSP高性能软件开发
1星价
¥96.0
(7.5折)
2星价¥96.0
定价¥128.0
图文详情
- ISBN:9787302589365
- 装帧:70g胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:539
- 出版时间:2022-01-01
- 条形码:9787302589365 ; 978-7-302-58936-5
本书特色
本书由浅入深、概念齐全、实践性强、指导性强,结合了多年嵌入式多核软件开发的实际经验,对多核设计中常见的问题进行了详细描述。
从基本概念出发,层层推进,介绍了多核并行、数据传输与处理并行和多层次并行设计的经验,是嵌入式多核DSP并行软件开发者**的参考书。
内容简介
本书系统介绍了C66x多核软件开发的知识,并基于C6678的设计实例介绍了相关设计经验。系统介绍了C66x DSP器件的基础概念和多核软件设计的基础知识,引领读者循序渐进地掌握多核软件设计技术。对于传统DSP开发人员比较陌生的一些概念,如Cache、预取、数据一致性、数据依赖、死锁等,进行了重点描述。系统介绍了C66x多核器件的存储器、DMA传输、中断等内容,并结合工作实际,介绍了多核软件优化、多核并行设计及任务级优化经验。很后,以多普勒成像的设计实例描述了如何实现并行设计。
全书共13章,内容包括C66x DSP的基本组成,如存储器组织、DMA传输、中断和异常、Cache缓存和数据一致性等,并包含CCS软件开发环境、SYS/BIOS实时操作系统、多核并行设计、软件设计优化等相关知识。
本书的特点是由浅入深、概念齐全、实践性强、指导性强。本书结合了多年多核软件开发的实际经验,对多核设计中常见的问题进行了详细的描述; 从基本概念出发,层层推进,介绍了多核并行、数据传输与处理并行和多层次并行设计的经验。
对于从事C66x多核软件开发的设计师,本书具有很强的指导意义,本书还适合作为高校计算机、数据处理、信号处理、通信等相关专业的本科生和研究生教材。
目录
目录
第1章TI多核C66x DSP介绍
1.1C6678处理器
1.1.1C6678概览
1.1.2外围设备
1.266AK处理器
1.366AK2H14/12/06和C6678各项功能对比
1.4C66x处理器内核
1.5电源休眠控制器
1.5.1C66x内核电源休眠管理介绍
1.5.2电源休眠管理特征
1.6锁相环及其设置
1.6.1主PLL和PLL控制器
1.6.2DDR3 PLL
1.6.3PASS PLL
1.7C6678处理器接口通信相关外围设备
1.7.1I2C外围设备
1.7.2SPI外围设备
1.7.3HyperLink 外围设备
1.7.4UART外围设备
1.7.5PCIe外围设备
1.7.6TSIP 外围设备
1.7.7EMIF16外围设备
1.7.8网络协处理器和以太网驱动程序
1.7.9串行RapidIO(SRIO)端口
1.7.10通用目的输入/输出(GPIO)
1.8定时器
1.9信号量
1.10多核导航器
1.10.1PDSP固件
1.10.2Packet DMA
1.10.3队列管理器
1.10.4描述符
1.10.5包发送过程概述
1.10.6包接收过程概述
1.10.7映射信息
1.11设计建议
1.11.1初始化
1.11.2接口驱动程序
1.11.3时间戳的获取
1.11.4EVM板的使用
1.11.5示例程序
第2章C66x多核引导方法
2.1多核引导概述
2.2复位
2.3RBL引导
2.3.1RBL简介
2.3.2RBL引导过程
2.3.3引导模式分类
2.3.4引导模式设置
2.3.5引导配置格式
2.4EVM板上SPI NOR Flash引导设计
2.4.1RBL执行过程
2.4.2需要引导的应用程序
2.4.3应用程序中的引导代码
2.4.4烧写引导镜像的生成
2.4.5程序烧写
2.4.6SPI NOR Flash二次引导的设计
2.5多核引导和改进
2.6I2C二级引导(IBL和MAD)
2.6.1MAD基础组件
2.6.2MAD使用模式
2.6.3多核应用程序部署工具包
2.6.4在目标上调试应用程序
2.6.5Image Processing示例程序使用MAD工具实现多核加载
2.7设计建议和注意事项
第3章SRIO
3.1SRIO介绍
3.1.1物理层1×/4×LP系列规范
3.1.2SRIO外围数据流
3.1.3SRIO包
3.2SerDes宏及其配置
3.3DeviceID配置
3.4支持Rx组播和多个DestID
3.4.1离散组播ID支持
3.4.2混杂ID和DestID 支持
3.4.3接收模式设置
3.5回环
3.5.1内部数字回环
3.5.2SERDES回环
3.5.3外部线路回环
3.6菊花链操作和包转发
3.6.1包转发介绍
3.6.2包转发设置
3.7DirectIO操作
3.7.1LSU模块介绍
3.7.2定义LSU寄存器组合及中断状态方式
3.7.3设置LSU寄存器
3.7.4详细数据路径描述
3.7.5Tx操作
3.7.6Rx操作
3.7.7DirectIO操作特殊情况
3.7.8调度
3.7.9错误处理
3.7.10DirectIO编程注意事项
3.8消息传递
3.8.1Rx操作
3.8.2Tx操作
3.8.3消息Packet DMA设置
3.8.4消息传送编程示例
3.9维护
3.10门铃操作
3.11原子操作
3.12拥塞控制
3.13字节存储顺序
3.13.1内存映射寄存器空间的转换
3.13.2有效负载数据的转换
3.14中断操作
3.14.1DirectIO(门铃)服务中断
3.14.2消息传递服务中断
3.14.3中断寄存器
3.14.4中断处理
3.14.5中断调步
3.15中断设置
3.16其他SRIO编程注意事项
3.16.1匹配ACKID
3.16.2软件复位
3.16.3优化和技巧提示
3.17SRIO_LoopbackDioIsrexampleproject介绍
第4章C66x存储器组织
4.1C66x存储控制器
4.1.1L1P存储控制器
4.1.2L1D存储控制器
4.1.3L2存储控制器
4.1.4外部存储控制器
4.1.5扩展存储控制器
4.2多核共享存储控制器
4.2.1概览
4.2.2C66x内核从接口
4.2.3系统从接口
4.2.4系统主接口
4.2.5外部存储器主接口
4.2.6MSMC存储器
4.3扩展存储控制器XMC
4.3.1存储器映射寄存器概要
4.3.2XMC存储器保护和地址扩展
4.3.3存储器保护和地址扩展过程
4.3.4地址扩展
4.3.5XMC存储器保护结构支持
4.3.6预取缓冲
4.4存储器保护架构
4.4.1存储器保护的目的
4.4.2特权级别
4.4.3存储器保护架构
4.5带宽管理
4.5.1介绍
4.5.2带宽管理架构
4.5.3带宽管理寄存器
4.6设计建议
4.6.1合理规划使用存储器
4.6.2存储器设置成不被Cache缓存和预取
第5章Cache缓存和数据一致性
5.1为什么使用Cache
5.2C64x和C66x DSP之间的Cache区别
5.3Cache存储器结构概览
5.4Cache基础知识
5.4.1直接映射Cache——L1P Cache
5.4.2Cache缺失的类型
5.4.3组相联Cache
5.4.4二级Cache
5.5L1P Cache
5.5.1L1P存储器和Cache
5.5.2L1P Cache结构
5.5.3L1P冻结模式
5.5.4程序启动的一致性操作
5.6L1D Cache
5.6.1L1D存储器和Cache
5.6.2L1D Cache结构
5.6.3L1D冻结模式
5.6.4程序发起的Cache一致性操作
5.7L2 Cache
5.7.1L2存储器和Cache
5.7.2L2 Cache结构
5.7.3L2冻结模式
5.7.4程序发起的Cache一致性操作
5.7.5Cache能力控制
5.8使用Cache
5.8.1配置L1 Cache
5.8.2配置L2 Cache
5.9数据一致性
5.9.1Snoop一致性协议
5.9.2在外部存储器和Cache之间维持一致性
5.9.3对L2 Cache一致性操作使用指导
5.9.4对L1 Cache一致性操作使用指导
5.10片上Debug支持
5.11在运行中改变Cache配置
5.11.1禁用外部存储器Cache功能
5.11.2在运行中改变Cache尺寸
5.12优化Cache性能
5.12.1Cache性能特征
5.12.2阻塞情况
5.12.3优化技术概览
5.12.4应用级优化
5.12.5过程级优化
5.12.6C66x DSP Cache一致性操作小结
5.13设计建议
5.13.1消除虚假地址
5.13.2数据一致性问题
第6章DMA传输
6.1IDMA
6.1.1IDMA结构
6.1.2IDMA通道0
6.1.3IDMA通道1
6.2EDMA3控制器
6.2.1EDMA3控制器介绍
6.2.2EDMA3器件特定的信息
6.2.3EDMA3通道控制器配置
6.2.4EDMA3传输控制器配置
6.2.5EDMA3通道同步事件
6.2.6EDMA3通道控制器
6.2.7EDMA3传输控制器
6.3EDMA3传输类型
6.3.1A同步传输
6.3.2AB同步传输
6.4参数RAM
6.4.1PaRAM参数集
6.4.2Dummy与Null传输比较
6.4.3参数集更新
6.4.4连接传输
6.4.5常数地址模式传输/对齐问题
6.4.6单元大小
6.5发起一个DMA传输
6.5.1DMA通道
6.5.2QDMA通道
6.5.3完成一个DMA传输
6.5.4EDMA3中断
6.6提升DMA性能的几点建议
6.6.1尽量用较大的ACNT
6.6.2线性传输
6.6.3地址对齐
6.6.4恰当使用多个CC和TC传输
第7章中断和异常
7.1C6678处理器中断简介
7.2芯片中断控制器
7.3C66x内核中断控制器概述
7.3.1特征
7.3.2功能块图
7.4中断控制器结构
7.4.1事件寄存器
7.4.2事件合并器
7.4.3中断选择器
7.4.4异常合并器
7.5C66x内核事件
7.6中断控制器与DSP交互
7.6.1DSP中断控制器接口
7.6.2DSP服务中断事件
7.7C6678中断的设计
7.7.1不经过CIC的中断事件
7.7.2经过CIC的中断
7.7.3中断挂接
7.7.4多个事件映射同一中断的挂接
7.8中断设计建议
7.8.1不要过多使用中断或中断嵌套
7.8.2中断服务程序中代码不宜过长
7.8.3中断服务程序改变的全局变量要加上volatile标志
第8章如何使用CCS
8.1常用界面
8.1.1Project Explorer
8.1.2程序窗口
8.1.3目标配置窗口
8.1.4Debug窗口
8.1.5Memory窗口
8.1.6Expressions窗口
8.1.7Breakpoints窗口
8.1.8Problems窗口
8.1.9Console窗口
8.2新建工程
8.3新建一个目标配置文件
8.3.1新建ccxml文件
8.3.2设置仿真器
8.3.3添加器件
8.4常用操作
8.4.1Launch
8.4.2Group
8.4.3Connect
8.4.4加载程序
8.4.5设置断点调试程序
8.4.6复位
8.5常见问题
8.5.1头文件找不到
8.5.2EVM板未初始化,调试找不到DDR3
8.5.3选中不了仿真器
8.5.4加断点调试错误
8.5.5域选择不正确
8.5.6仿真器连接中断电
8.6设置字体和代码风格
8.6.1修改字体
8.6.2代码风格设置
8.7MCSDK
8.7.1MCSDK架构
8.7.2MCSDK特点
8.8TI函数库调用
8.8.1格式选择
8.8.2库的调用
8.8.3库的使用
8.9理解CMD文件
8.9.1CMD文件简介
8.9.2MEMORY命令
8.9.3SECTIONS命令
第9章SYS/BIOS实时操作系统
9.1什么是SYS/BIOS
9.1.1SYS/BIOS的优势
9.1.2SYS/BIOS和XDC TOOL的关系
9.2SYS/BIOS包
9.3SYS/BIOS中使用C++
9.3.1存储器管理
9.3.2Name Mangling
9.3.3从配置调用对象方法
9.3.4类构造器和析构器
9.4SYS/BIOS配置和编译
9.4.1在工程中添加SYS/BIOS支持
9.4.2创建一个独立的配置工程
9.4.3配置SYS/BIOS应用
9.4.4用XGCONF打开一个配置文件
9.4.5用XGCONF执行任务
9.4.6保存配置
9.4.7关于XCONFG视图
9.4.8使用可用产品视图
9.4.9使用概要视图
9.4.10使用属性视图
9.4.11使用问题视图
9.4.12找到并修正错误
9.5编译一个SYS/BIOS应用
9.5.1了解编译流程
9.5.2编译和连接优化
9.6线程模块
9.6.1SYS/BIOS启动顺序
9.6.2线程模块的概览
9.6.3线程类型
9.6.4线程优先级
9.6.5让步和抢占
9.6.6钩子
9.7硬件中断
9.7.1创建中断
9.7.2硬件中断嵌套和系统堆栈大小
9.7.3硬件钩子
9.8软件中断
9.8.1创建软件中断对象
9.8.2设置软件中断优先级
9.8.3软件中断优先级和系统堆栈大小
9.8.4软件中断执行
9.8.5优点和折中
9.8.6软件中断函数同步
9.8.7软件钩子
9.9任务
9.9.1创建任务
9.9.2任务执行状态和调度
9.9.3任务堆栈
9.9.4测试堆栈溢出
9.9.5任务钩子
9.9.6空闲循环
9.10SYS/BIOS同步模块
9.10.1信号量
9.10.2事件模块
9.10.3门模块
9.10.4邮箱
9.10.5队列
9.11定时服务
9.12Memory
9.12.1新建一个Platform
9.12.2栈
9.12.3Cache配置
9.12.4Cache Runtime API
9.12.5动态存储器分配
9.12.6Heap的实施
9.13硬件抽象层
9.14典型设计实例和建议
9.14.1典型设计
9.14.2设计建议
9.14.3RTA分析
9.14.4SYS/BIOS Semaphore与Semaphore2
第10章多核并行设计
10.1并行粒度和并行级别
10.2并行方式
10.3任务类型
10.3.1相同任务的多个副本
10.3.2多个独立任务
10.3.3单个任务拆分成多个子任务
10.3.4多个松散耦合任务
10.3.5耦合度高的任务
10.4依赖关系
10.4.1数据依赖
10.4.2存储器依赖
10.5死锁和活锁
10.5.1死锁
10.5.2活锁
10.6同步
10.6.1SYS/BIOS同步模块
10.6.2采用控制信号实现多核对等同步
10.7forkjoin
10.8OpenMP并行设计
10.9任务级优化设计
10.9.1一种典型的任务处理流程
10.9.2优化设计实例
第11章软件优化设计
11.1for循环优化
11.1.1移出能在循环外完成的计算
11.1.2循环体内的大运算换成小运算
11.1.3多重循环
11.1.4for循环中有判断
11.2多核for循环并行任务优化
11.2.1资源占用小的for循环
11.2.2资源占用大的for循环
11.3if声明优化
11.3.1if转换
11.3.2消除if声明
11.3.3相同代码合并减少if声明
11.3.4减少嵌套的if
11.3.5优化条件表达式
11.3.6优化稀疏矩阵
11.4软件流水
11.5正确使用编译指示和关键字
11.5.1restrict关键字
11.5.2_nassert关键字
11.5.3interrupt中断关键字
11.5.4near和far关键字
11.5.5const关键字
11.5.6UNROLL编译指示
11.5.7MUST_ITERATE编译指示
11.5.8CODE_SECTION编译指示
11.5.9DATA_SECTION编译指示
11.5.10SET_CODE_SECTION和SET_DATA_SECTION编译指示
11.5.11DATA_ALIGN编译指示
11.5.12STRUCT_ALIGN
11.6采用内建函数
11.6.1数据移动和打包函数
11.6.2使用除法指令
11.6.3使用C66x定点指令实现复数矩阵操作和向量操作
11.6.4浮点和矢量运算
11.7选定正确的优化级别
11.8软件优化小结
第12章距离多普勒成像设计实例
12.1背景介绍
12.2距离多普勒成像算法
12.3数据组织形式
12.4算法的并行化设计
12.5forkjoin的设计
12.6脉冲压缩的设计
12.6.1IFFT转为FFT
12.6.2无缓存的大点数FFT、IFFT设计
12.6.3有数据缓冲多核大点数FFT、IFFT设计
12.6.4资源使用情况
12.6.5复数相乘
12.6.6脉冲压缩的伪码实现
12.7其他阶段任务分解
12.8实验结果分析
第13章展望
13.1异构多核SoC处理器
13.1.1异构多核DSP
13.1.2异构多核FPGA
13.2嵌入式软件设计思考
13.2.1掌握系统架构
13.2.2做好软件模块化设计
13.2.3片上系统架构设计的挑战
13.2.4自动化并行设计
附录A
附录B
附录C
附录D
附录E
参考文献
展开全部
作者简介
夏际金,男,1979年,江西上饶人,研究员级高级工程师,嵌入式软件、软件工程专家。长期从事嵌入式软件开发,在嵌入式多核软件设计和并行计算方面具有深入研究。
预估到手价 ×
预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。
确定