第1篇 CCS V5使用以及高级应用实例精解 3
第1章 CCS V6的新特性与安装使用 3
1.1 CCS V6的新特性 3
1.2 CCS V6的下载与安装 4
1.3基于CCS V 6使用C2000 LaunchPad硬件仿真 7
1.3.1准备工作 8
1.3.2新建工程 8
第2章 如何从外部输入数据文件处理并用Graph工具显示波形 17
2.1.*dat文件的格式介绍 17
2.2基于CCS V5的例程演示——读入sine.dat并显示波形 20
2.3实验中所遇到的问题 31
2.4实例程序编程语句的解释说明 32
第3章 汇编、线性汇编、C语言混合编程以及基于Prifile的性能统计 34
3.1建立混合编程实例工程 35
3.2编写程序 41
3.3运行结果以及性能统计 45
3.3.1用Profile进行混合编程性能测试 46
3.3.2使用C语言库clock函数 47
3.3.3比较分析profile和clock()函数得到的结果 49
3.4主函数调用汇编子函数参数传递示例 50
3.5汇编代码优化 52
3.6遇到的问题 53
第4章 利用CCS Image Analyzer工具对YUV格式图像处理精解 57
4.1 YUV格式详解 57
4.1.1概述 57
4.1.2与RGB格式的转换 57
4.1.3 YUV格式 57
4.1.4 YUV存储方式 58
4.1.5常见的YUV格式举例 59
4.2 Image Analyzer介绍 60
4.2.1概述 60
4.2.2 property参数介绍 61
4.3图像处理示例 63
4.3.1新建工程 63
4.3.2代码要点 63
4.3.3图像处理 64
4.4视频处理示例 70
4.4.1新建工程 70
4.4.2转换格式 70
4.4.3代码要点 70
4.4.4视频处理 72
4.5附录 74
4.5.1图像处理的Main.c代码 74
4.5.2视频处理的Main.c代码 76
4.5.3 C6416地址空间 78
第2篇 SYS/BIOS高级技术以及实例精解 81
第5章 SYS/BIOS以及线程调度实例 81
5.1 SYS/BIOS的下载及安装 82
5.2在CCS5.4中建立基于SYS/BIOS的helloworld例程 86
5.3 SYS/BIOS下Idle线程的使用实例 91
5.4 SYS/BIOS中SWI实例精解 93
5.4.1带SWI工程的建立过程 93
5.4.2程序代码及解析 99
5.5 SYS/BIOS中TASK实例精解 105
5.5.1 SYS/BIOS中相同优先级间的任务切换 105
5.5.2代码解释 106
5.5.3例程解析 111
第6章 SYS/BIOS中的同步模块 113
6.1信号量 113
6.1.1应用信号量的实例 114
6.1.2上述实例的输出结果 118
6.2事件模块(Events) 119
隐性触发事件 122
6.3“门” 124
6.3.1基于屏蔽优先级的“门”应用 125
6.3.2基于信号量的“门”应用 126
6.3.3优先级反转 126
6.4邮箱 127
6.5队列 128
6.5.1队列的“FIFO(先入先出)”基本操作 128
6.5.2队列循环 130
6.5.3队列中对象的插入与删除 130
6.5.4队列的原子操作 130
6.6 SYS/BIOS中Semaphore实例精解 131
6.6.1建立工程 131
6.6.2代码 131
6.6.3例程解析 135
6.6.4 Semaphore中的API函数 135
6.7 SYS/BIOS在CCS V5.4中的MBX例程 138
6.7.1程序代码详解 138
6.7.2 MBX, TASK, IDLE在cfg文件中配置 140
6.7.3 DSP/BIOS中例程的结果 143
第7章 SYS/BIOS中的钩子函数(hook)及其应用 145
7.1 Windows操作系统中的钩子函数 145
7.2 SYS/BIOS中的hooks(钩子) 146
7.3硬件中断钩子 148
7.3.1 Register函数 148
7.3.2 Create和Delete函数 148
7.3.3 Begin和End函数 149
7.3.4硬件中断钩子实例 149
7.4软件中断钩子 154
7.4.1 Register函数 155
7.4.2 Create和Delete函数 155
7.4.3 Ready, Begin和End函数 155
7.4.4软件中断钩子实例 156
7.5任务钩子 161
7.5.1 Register函数 162
7.5.2 Create和Delete函数 162
7.5.3 Switch函数 163
7.5.4 Ready函数 163
7.5.5 Exit函数 163
7.5.6任务钩子实例 163
第8章 SYS/BIOS中的定时服务 170
8.1定时服务概述 170
8.2时钟 170
8.3计时器模块 173
8.4时间戳模块 173
第9章 SYS/BIOS中的内存管理 175
9.1背景 175
9.2内存映射 176
9.2.1选择有效的平台 176
9.2.2创建一个自定义的平台 177
9.3将段放置到内存块中 181
9.3.1配置简单的段存放 181
9.3.2使用SectionSpec配置段存放 181
9.3.3提供附加的编译器命令文件 182
9.3.4默认链接器命令文件和自定义选项 183
9.4 MSP430, Stellaris M3和C28的段和内存映射 184
9.5堆栈 184
9.5.1系统堆栈 184
9.5.2任务堆栈 185
9.5.3系统堆栈和任务堆栈的ROV 185
9.6缓存配置 186
9.6.1在启动时配置缓存大小寄存器 186
9.6.2配置参数以便设置MAR寄存器 187
9.6.3缓存执行的程序接口 187
9.7动态内存分配 187
9.7.1内存规则 187
9.7.2设定默认的系统堆 188
9.7.3使用xdc.runtime.Memory模块 189
9.7.4为模块动态实例指定一个堆 190
9.7.5使用malloc()和free() 190
9.8堆实现 190
9.8.1 HeapMem 191
9.8.2 HeapBuf 192
9.8.3 HeapMultiBuf 193
9.8.4堆跟踪(HeapTrack) 195
第10章 SYS/BIOS中的硬件抽象层(HAL) 197
10.1硬件抽象层(HAL)应用程序接口(APIs) 197
10.2 HWI模块 198
10.2.1 C函数与系统中断源的关联 198
10.2.2 Hwi实例配置参数 198
10.2.3使用非缺省的实例配置参数创建一个Hwi对象 199
10.2.4使能和关闭中断 200
10.2.5 Hwi应用的一个简单示例 200
10.2.6中断调度器 203
10.2.7中断调度器保存和释放寄存器 203
10.2.8附加的指定目标/设备的Hwi模块功能 203
10.3定时器模块 205
10.4高速缓存模块 210
10.5 HAL封装组织 211
第11章 SYS/BIOS中的设备 214
11.1设备综述 214
11.2负载(Load)模块 214
11.2.1 Load模块配置 215
11.2.2获取Load统计数据 215
11.3错误处理 216
11.4代码调试器(CCS)中的设备工具 217
11.5 RTA Agent 218
11.5.1从暂停的目标板获取日志(Log)数据 219
11.5.2系统日志自动配置 219
11.6 CCS中的RTA Tools 220
11.6.1原始日志数据 220
11.6.2打印日志 222
11.6.3执行图 223
11.6.4执行图形数据 225
11.6.5 CPU负载 225
11.6.6线程负载(Thread Load) 226
11.6.7 CPU负载数据 226
11.6.8 RTA控制面板 227
11.7性能优化 229
11.7.1配置日志 229
11.7.2诊断配置 230
11.7.3选择一个堆管理 231
11.7.4硬中断配置 231
11.7.5栈校验 231
第12章 SYS/BIOS中的输入输出(Input/Output) 232
12.1综述 232
12.2配置设备列表中的驱动 233
12.3使用GIO APIs 236
12.3.1使用GIO APIs的限制 236
12.3.2创建与删除GIO通道 237
12.3.3使用GIO_read()与()——标准模式 239
12.3.4使用GIO_issueO, GIO_reclaim()以及GIO_ prime()——发出/回收模式 241
12.3.5 GIO_abort()以及错误处理 243
12.4在多种线程环境中使用GIO 244
12.4.1在任务中使用GIO 244
12.4.2在软中断中使用GIO 244
12.4.3在事件中使用GIO 245
12.5 GIO与同步机制 245
第13章 重新构建SYS/BIOS 247
13.1概述 247
13.2前提条件 247
13.3使用bios.mak Makefile构建SYS/BIOS 247
13.4使用SYS/BIOS重建工具构建用户的项目 250
第14章 SYS/BIOS的定时基准 252
14.1定时基准 252
14.2中断等待 252
14.3硬件中断基准 252
14.4软件中断基准 253
14.5任务基准 254
14.6信号量基准 256
第15章 SYS/BIOS的尺寸基准 258
15.1概述 258
15.2与DSP/BIOS 5的比较 258
15.3默认配置尺寸 259
15.4静态模块应用尺寸 260
15.4.1 Hwi应用 260
15.4.2时钟应用 260
15.4.3时钟对象应用 261
15.4.4 Swi应用 261
15.4.5 Swi对象应用 261
15.4.6 Task应用 261
15.4.7 Task对象应用 262
15.4.8 Semaphore(旗语或者信号量)应用 262
15.4.9旗语对象应用 262
15.4.10内存应用 262
15.5动态模块应用尺寸 263
15.5.1动态Task应用 263
15.5.2动态旗语应用 264
15.6时钟应用尺寸 264
第16章 最小化应用程序占用空间 265
16.1概述 265
16.2减少数据大小 265
16.2.1移除动态内存分配堆(memory allocation) 265
16.2.2减少主函数参数空间 266
16.2.3减少栈大小 266
16.2.4禁用指定模块(Disabling Named Modules) 266
16.2.5使得文本字符脱离目标板 266
16.2.6禁用功能模块表 266
16.2.7减少退出程序操作的数量 267
16.3减少代码大小 267
16.3.1使用自定义构建的SYS/BIOS动态库 267
16.3.2禁用日志 267
16.3.3设置内存策略 267
16.3.4禁用内核特征 268
16.3.5消除打印函数printf () 268
16.3.6禁用RTS线程保护 268
16.3.7禁止任务堆栈溢出检查 268
16.4基本大小基准配置脚本 269
第17章 SYS/BIOS中的IOM(I/O Mini-driver)微型驱动接口 271
17.1微型驱动接口概述 271
17.2微型驱动接口函数汇总 273
17.3微型驱动接口函数定义 275
第3篇 基于SYS/BIOS的多核软件编程技术(MCSDK)以及实例精解 281
第18章 基于SYS/BIOS的多核软件开发(MCSDK)技术概述 281
18.1引言 281
18.1.1缩写词和定义 281
18.1.2支持的设备/平台 283
18.1.3其他资源 283
18.1.4 MCSDK信息 283
18.1.5入门指南 284
18.1.6 API和LLD使用指南 284
18.1.7硬件-EVM概述 284
18.1.8硬件-处理器概述 285
18.1.9相关软件 285
第19章 多核软件开发(MCSDK)软件架构 286
19.1软件概述 286
19.1.1平台开发套件 287
19.1.2操作系统适配层 287
19.1.3资源管理器 287
19.1.4芯片支持库 288
19.1.5底层驱动 289
19.1.6平台库 295
19.1.7传输系统 296
19.1.8 EDMA3底层驱动程序 296
19.1.9 SYS/BIOS RTOS 297
19.2处理器间通信 298
19.2.1 IPC传输 299
19.2.2 IPC流程 301
19.3网络开发套件 305
19.4算法库 308
19.4.1 DSP库 308
19.4.2图像处理库 309
19.4.3浮点数学函数库 309
第20章 MCSDK实例演示软件 311
20.1高性能DSP实用应用程序 311
20.2图像处理示例 311
20.3引导装载程序和引导工具 311
20.4工具 312
20.4.1多核系统分析仪 312
20.4.2 Eclipse RTSC Tools (XDC) 313
20.5第三方软件和工具 314
20.5.1 CriticalBlue公司的棱镜 314
20.5.2 PolyCoreSoftware公司的Poly-Platform 314
20.6创建和实例指南 315
20.6.1创建构建环境 315
20.6.2构建软件 315
20.6.3修改库 315
20.6.4平台库(platform libraries) 315
20.6.5构建CSL和底层设备驱动程序 317
20.6.6构建设备驱动程序示例工程 317
20.6.7编辑大端MCSDK样板和示例 318
20.6.8使用软件模拟器构建和运行NDK client示例 322
20.6.9构建NDK 325
20.6.10示例 326
20.7使用MAD完成一个多核的可启动的镜像 339
第21章 使用IPC明确的编程模型 341
21.1使用和配置导航/QMSS传输 343
21.1.1通过使用QMSS传输模块&其他TransportQmssSetup参数改变GEM中断 343
21.1.2 TransportQmss配置选项(TransportQmss Configuration Options) 343
21.1.3 TransportQmss队列分配的注意事项 345
21.2使用和配置sRIO传输 345
21.2.1使用RapidIO传输配置IPC 345
21.2.2修改sRIO传输模块&其他TransportSrioSetup使用的GEM中断的参数 346
21.2.3 TransportSrio配置选项 346
21.2.4 TransportSrio内核镜像配置和IPC群集参数 348
21.2.5 TransportSrio单设备内核映射和IPC群集配置 348
21.2.6 TransportSrio多设备内核映射MAP和IPC群集配置 350
21.2.7 TransportSrio队列分配的注意事项 354
21.2.8 TransportSrio应用程序配置要求 354
第22章 Booting和Flash 356
22.1 Boot概述 356
22.2 上电自检 356
22.3 初始引导加载程序(IBL)和实例 358
22.4 NAND启动 359
22.5 NOR启动 359
22.6 TFTP启动 360
22.7 Flash和flash工具 361
第23章 MCSDK技术支持和产品更新 363
23.1技术支持和论坛 363
23.2产品更新 363
23.3 Eclipse更新管理器 363
23.3.1 Eclipse更新(自动) 364
23.3.2 Eclipse更新(手动) 364
23.4 MCSDK常见问题 366
23.4.1怎样才能恢复EVM的出厂默认状态 366
23.4.2刚更新了BIOS MCSDK软件,该如何加载到EVM中 366
23.4.3在 CCS环境汇总中使用JTAG 369
23.4.4访问发行版中提供的文件的简单方法 370
23.4.5卸载BIOS-MCSDK 370
23.4.6各种外设的示例代码 370
23.4.7加速下载BIOS MCSDK安装文件 371
23.4.8在CCS 5.1下使用BIOS MCSDK 2.0 371
23.4.9同一CCS的实例中连接并使用类型相同的两个硬件仿真器 371
第24章 空RTSC工程解决方案 377
24.1概述 377
24.2问题 377
24.3解决方案 378
24.4警告 378
第25章 HUA以及Imaging实例 382
25.1 MCSDK HUA指南 382
25.1.1概述 382
25.1.2要求 383
25.1.3软件设计 384
25.1.4构建说明 384
25.1.5运行说明 385
25.1.6排除故障 386
25.2 MCSDK图像处理例程手册 386
25.2.1概述 386
25.2.2要求 387
25.2.3软件设计 387
25.2.4了解更多处理算法 387
25.2.5多核框架 388
25.2.6算法的性能分析 388
25.2.7用户界面 388
25.2.8运行说明 389
25.2.9建立说明 390
25.2.10软件路径结构概述 391
25.2.11图像处理示例串行代码概述 391
25.2.12多核系统分析器的集成和使用 392
25.2.13用Prism分析图像处理示例 392
25.2.14使用MAD功能文件链接和创建可引导的应用程序镜像 393
25.2.15 使用IBL引导应用程序镜像 394
25.3 MCSA和MCSDK例程 398
参考文献 401