前言 C66x是TI(Texas Instruments)公司推出的新一代处理器内核,包含定点和浮点计算能力,C66x包含 90个新指令用于提升浮点和矢量运算。TMS320C6678是基于C66x内核的8核处理器,66AK2Hx是基于ARM CortexA15和C66x内核的异构多核处理器。基于C66x内核的DSP处理器已经成为主流的高性能DSP。 多核DSP的软件开发技术对DSP嵌入式软件开发人员具有一定的挑战性。多核任务划分、并行处理设计、同步设计以及Cache一致性等问题是多核并行设计的关键,良好的并行设计才能发挥C66x处理器的优势。 通过多年的研究并结合工程设计实践,总结了C66x多核DSP并行开发技术经验和设计中一些经常遇到的问题。本书以C6678为例系统介绍了C66x多核DSP、数据一致性、CCS使用、SYS/BIOS实时操作系统、多核并行设计和优化等设计方法,用一个设计实例完整地描述了从任务并行设计到具体实现的过程。 在C66x多核软件设计中,程序员的软件设计思想、设计方法需要调整和提高。本书从程序员的工作需要和高校学生的学习需要出发,结合实际工作,详细叙述了多核软件开发技术。初学者可以循序渐进地建立基于C66x多核并行开发的概念,并积累优化设计的经验,提高设计水平,从初学就设计出高性能的并行代码。 各章的内容要点如下: 第1章主要介绍了C66x处理器,并以C6678为例介绍了处理器概况、处理器内核、外围设备、多核导航器等模块。 第2章详细介绍了C66x多核引导(Boot)的方法。以C6678为例介绍了RBL(ROM Boot Loader)引导过程、在EVM板上实现SPI Flash引导的实例及多核引导的改进方法。 第3章详细介绍了SRIO接口,包括SRIO、SerDes宏、DeviceID配置、组播和多个DestID支持、包转发、DirectIO操作、消息传递、Doorbell、中断操作等相关知识,并介绍了其他SRIO编程注意事项。 第4章主要介绍了C6678存储控制器、多核共享存储控制器、外部存储控制器EMC、扩展存储控制器XMC、存储器保护架构、带宽管理等存储器相关内容。 第5章主要介绍了Cache基础知识,C66x的各级Cache、Cache的使用、数据一致性等内容。 第6章主要介绍了IDMA、EDMA使用的一些知识。 第7章介绍了C66x中断控制器、内核事件以及中断控制器与DSP交互的相关知识。 第8章介绍了如何使用CCS进行相关的操作和配置。 第9章介绍了SYS/BIOS实时操作系统,并给出了相关设计例程。 第10章介绍了多核并行设计的相关问题,如并行粒度、并行方式、依赖关系、死锁活锁、同步等问题,并介绍了任务级优化设计的例子。 第11章介绍了软件优化技术,如for循环优化、软件流水、编译指示和关键字的使用、内建函数的使用等。 第12章介绍了一个多核软件设计的实例。 第13章介绍了多核发展的趋势及一些思考。 附录中列出了常用的存储器地址映射、MAR寄存器地址对照表、C6678 EDMACC事件列表 、C6678内核System Event事件输入列表和C6678 System Interrupt事件输入列表。 本书中关于TI C66x多核DSP的相关资料来源于 德州仪器(Texas Instruments,TI)相关网站,如 德州仪器官网、德州仪器在线技术支持社区等,相关资料的最新版本可以从中查询。 刘晶参与本书的修订工作,为本书的出版做出了重要贡献。参与本书审校的有牛蕾、习建博、邓庆勇、郭琦、白晓慧、张玉营、潘勇先、朱鹏等,方志红、梁之勇、宋皓、顾庆远等在多核开发技术方面做出了很大贡献。 感谢夏靖涵在本书出版过程中给予的鼓励和支持。感谢家人一直以来的支持和付出。 为本书的形成及多核C66x DSP开发技术做出贡献的人还有很多,在这里一并致谢! 多核开发技术发展迅速,基于C66x的多核开发技术难点较多,由于作者水平有限,书中难免有疏漏之处,欢迎读者指正。 本书提供“C66x多核Boot方法”等内容和代码,以及本书配套教学课件作为附加资源,读者可从清华大学出版社网站下载。 作者 2021年6月于合肥