F28379D烧写双核程序(在线&离线)

本文介绍了如何在TI的F28379D芯片上烧写双核程序,包括在线和离线两种方式。在线烧写涉及对CPU1和CPU2的单独编译和加载,离线烧写则需要配置FLASH模式。在烧写过程中需要注意避免干扰开发板,确保程序正确运行。

文章信息

撰写日期2018.11.21
完稿日期2018.11.21
最近维护2018.11.30
本文作者multimicro
联系方式multimicro@qq.com

开发环境

环境说明详细信息备注信息
操作系统Win10_x64
CCS版本Code Composer Studio v8官网地址
controlSUITEcontrolSUITE for C2000 MCUs官网地址
F28379DC2000 Delfino MCU F28379D LaunchPad™ development kit官网地址

烧写双核程序前需知

在分别对F28379D的CPU1和CPU2两个核进行烧写程序时,需要在CCS中建立两个工程,独立编写两个核的程序。如controlSUITE中提供的双核程序例程:
在这里插入图片描述

1. 在线

1.1 编译烧写CPU1程序到F28379D中

在这里插入图片描述

1.2 编译CPU2程序,把生成的.out文件加载到CPU2中

选中上图中红色框框中的Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU2 (Disconnected:Unknown),右键点击Connect Target连接上CPU2,如图:
在这里插入图片描述
选定CPU2,在CCS菜单栏中选择"Run -> Load -> Load Program..."弹窗中选择编译好的CPU2的.aout文件
在这里插入图片描述
在这里插入图片描述
点击ok烧录进去即可。

1.3 运行双核程序

在这里插入图片描述
上图中可以看出,Debug选项中选定的是CPU2,所以这个时候,点击播放按钮就是运行CPU2内的程序,若在Debug选项中选定的是CPU1,再次点击播放就是运行CPU1内的程序。

2. 离线

离线就涉及到烧写FLASH了,这个时候就需要更改一些配置了。
首先看一张图:
在这里插入图片描述
从图中可以看出,F28379D的CPU1和CPU2是各自配有一套FLASH、RAM和ROM在烧录烧程时两个核实分别烧写到自己所属下的存储位置去的,烧写程序的地方是没有共用部分的,双核之间的数据传输有一个专门的RAM供交换数据(黑色箭头所指的)。

2.1 对CPU1烧写FLASH

对于F28379D的离线烧写有两种模式,一种是FLASH,另一种是FLASH_STANDALONE(见下图)
FLASH:支持CPU1离线运行程序
FLASH_STANDALONE:支持CPU1离线运行程序,并可通过IPC控制启动CPU2
对于CPU1,如图:
在这里插入图片描述
通过以上步骤设置为FLASH_STANDALONE模式
在这里插入图片描述
编译后烧录即可。不要点击运行
注意,由于是烧写FLASH,所以一定要保证在烧写时不要干扰开发板,否则会容易导致烧写失败,造成FLASH锁定!

2.2 对CPU2烧写FLASH

对CPU1烧写完FLASH后不要运行,紧接着把cpu2的程序也配置为FLASH模式:
CPU2的FLASH只有一种,没有STANDALONE模式
在这里插入图片描述
编译后生成.out文件即可
在这里插入图片描述
然后仿照在线烧写CPU2程序的套路把这个.out文件烧写进去即可
烧写完的界面如下:
在这里插入图片描述
全部烧写完不要点击运行,正确的顺序是点击红色的按钮断开连接,然后给开发板断电,上电后开发板就会运行双核CPU里面的程序。此时的CPU2就是通过IPC机制被CPU1控制启动的。
在这里插入图片描述
板子的启动模式一定为从FLASH启动哦!
Tip:
若对CPU2设置为FLASH模式后,直接点击小虫子烧写FLASH,则会出现以下错误:
C28xx_CPU2: Error occurred during flash operation: No core matches the pattern 'CPU1'
所以,一定要通过load的方式烧写CPU2的FLASH程序
在这里插入图片描述

2.3 小结

以上是TI在controlSUITE中提供的例程,涉及到自己建立的工程脱机运行时,需要自己手动配置cmd文件和进行预定义了,不过既然你能撸到双核开发,想必脱机步骤你应该可以搞定的!
多说一下,在选择不同的模式时,在Predefined Symbols下会有不同的预定义,这个是CPU1的程序,预定义中有CPU1,那么CPU2的程序中就应该有CPU2
在这里插入图片描述
在这里感谢TI e2echina社区里面的两位工程师提供的帮助,给我提供了一些帮助,让我少走了很多弯路,感谢!
在这里插入图片描述
在这里插入图片描述

维护日志

维护日期维护内容
2018.11.30加入在对CPU2烧写FLASH时的错误操作

参考资料

  1. F28379D CPU2烧写FLASH
  2. F28379D双核程序调试问题
  3. C2000 One-Day Workshop
  4. F28379D所涉及的各种官方文档
### CCS调试教程 #### 1. 使用CCS进行程序录 在使用Code Composer Studio (CCS) 进行程序录时,可以通过特定工具完成目标设备上的代码下载。例如,在C2000系列微控制器中,“C2000 Hex Utility”是一个重要的功能模块[^1]。通过开启该选项并设置相关参数,能够实现对目标芯片的有效编程。 #### 2. 版本匹配问题及其处理方式 当遇到因版本差异引发的功能异常情况时,需确认所使用的固件与硬件板卡是否兼容。比如SEEDVPM642存在多个版本(如1.0版和1.1版),这些版本间可能存在显著差别,特别是涉及IIC总线布局调整的情况[^2]。如果发现配置失败,则应及时核实当前应用环境下的具体需求,并向供应商索取适配的软件包。 #### 3. FLASH引导加载过程中的注意事项 对于基于DM642架构的产品而言,若观察到BOOT启动环节存在问题,则可能是由于缺少必要的初始搬移程序所致。此时建议将`Boot.asm`文件纳入构建流程之中,并合理规划其内存映射范围至低址区段(通常为0x000~0x400之间)。此部分区域往往被预留作为系统初始化阶段的关键指令存储位置。 #### 4. OMAP双核平台联调技巧 针对OMAPL138这类融合了DSP与ARM处理器单元的设计方案来说,开展协同工作模式下的测试验证显得尤为重要。遵循标准操作规程激活整个电路板之后,借助CSs分别导入各自对应的执行体文件来达成独立而又相互协作的状态。值得注意的是尽管两者具备一定的自治能力但仍需妥善管理公共资源访问权限等问题[^3]。 #### 5. 存储介质特性概述 理解不同类型存储器件的作用有助于优化整体设计方案。ROM主要用于存放那些几乎不会改变的核心算法或者数据结构;而RAM则适合用来暂存临时变量或是动态生成的信息片段。因此设计者应当依据实际应用场景灵活选用合适的记忆载体以满足性能指标要求[^4]。 #### 6. 编译器版本冲突修复指南 有时会遭遇编译错误提示诸如“cannot resolve archive”的情形,这通常是源于指定链接库路径下找不到相应实体对象造成的。对此可通过更新工程项目属性内的compiler version字段值使之同现有开发环境中配备的实际编译引擎保持一致性从而消除此类警告信息[^5]。 ```python # 示例Python脚本用于自动化修改项目配置项 import os def update_compiler_version(project_path, new_version="v7"): prop_file = os.path.join(project_path, ".settings", "com.ti.ccstudio.buildDefinitions.C6000_7.0.prefs") with open(prop_file, 'r') as file : lines = file.readlines() updated_lines = [] for line in lines: if "Compiler.version" in line: updated_line = f'Compiler.version={new_version}\n' updated_lines.append(updated_line) else: updated_lines.append(line) with open(prop_file, 'w') as file: file.writelines(updated_lines) update_compiler_version("/path/to/your/project", "v8") ```
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值