Part Number:TMS320F28379D
例程sci_flash_kernal_cpu1能顺利下载到CPU1中,但sci_flash_kernal_cpu2例程下载不到CPU2中,感觉是下载地址不正确,pc程序计数器一直停留在最开始的地方0x3fe00a,请问这应该怎么解决?例程没有任何改动。
CPU2一直是no symbol are defined!
Susan Yang:
好的,我会在测试后给您回复
,
Susan Yang:
另外对于双核 IPC(处理器间通信),请参阅以下研讨会,特别是第 11 章
https://training.ti.com/c2000-f2837xd-microcontroller-workshop
本次研讨会逐步介绍如何处理设备的双核调试内容。
,
user6574429:
您好,请问测试结果怎样?程序下载进去能正常运行吗?
,
Susan Yang:
我使用launchpad也是不可以的,我怀疑是launchpad不支持sci boot的原因。
测试其他的dual例程是没有问题的
,
user6574429:
cpu2程序下载进去跑不起来而cpu1的能跑起来就有点奇怪了,我怀疑是不是CPU2程序的cmd文件配置不对导致程序的入口地址不对?
,
Susan Yang:
/* BEGIN is used for the "boot to SARAM" bootloader mode */
BEGIN : origin = 0x000000, length = 0x000002
user6574429 说:我怀疑是不是CPU2程序的cmd文件配置不对导致程序的入口地址不对?
配置是没有问题的
另外在F2837xD_sci_flash_kernels_cpu01.c内
//! In this example, we set up a UART connection with a host using SCI, receive//! commands for CPU1 to perform which then sends ACK, NAK, and status packets//! back to the host after receiving and completing the tasks. This kernel has//! the ability to program, verify, unlock, reset, run, and boot CPU2 to SCI//! boot loader. Each command either expects no data from the command packet//! or specific data relative to the command.//!//! In this example, we set up a UART connection with a host using SCI, receive//! an application for CPU01 in -sci8 ascii format to run on the device and//! program it into Flash.
,
user6574429:
那CPU2程序下载不进去是什么原因?我换了一个cmd文件就能跳到main函数
,
Susan Yang:
user6574429 说:我换了一个cmd文件就能跳到main函数
换了哪一个cmd?您也是launchpad测试的?
,
user6574429:
Susan Yang 说:换了哪一个cmd?您也是launchpad测试的?
是的,我换了2837x_RAM_Lnk_cpu02.cmd
,
Susan Yang:
我看了一下,使用launchpad是会卡在
即使是使用您换的2837x_RAM_Lnk_cpu02.cmd,虽然在load时可以跳到main,但是cpu1还是会卡在上面的语句
即不能从CPU1使用sci boot 来使能cpu2
launchpad是不支持sci boot的
,
user6574429:
我需要解决的就是让程序进入main就行了,但是我的直接跳不到main函数中?这是什么其情况?
,
user6574429:
Susan Yang 说:
cpu1还是会卡在上面的语句
即不能从CPU1使用sci boot 来使能cpu2
通过更改scia的引脚能够实现通过sci从主机上下载程序
,
Susan Yang:
请问您现在是想实现什么功能呢?launchpad的sci boot而后在flash运行?
,
user6574429:
我就是想把这个程序当作二次bootloader烧入到flash中
,
user6574429:
但是程序烧入flash后在调试模式下能运行,重新上电后就不能运行了(我增加了关闭LED灯的程序来判断程序是否运行)
,
Susan Yang:
以下是launchpad的说明
https://www.ti.com.cn/cn/lit/ug/sprui77c/sprui77c.pdf
user6574429 说:但是程序烧入flash后在调试模式下能运行,重新上电后就不能运行了
您使用的是哪种boot呢?是否有可能是根本就没有boot起来?
,
user6574429:
Susan Yang 说:您使用的是哪种boot呢
boot引脚设置为GET boot模式(拨码开关设置为0,1,1),没有对bootctrl寄存器进行设置,使用默认模式,默认模式是FLASH BOOT
,
Susan Yang:
sci_flash_kernel 是利用GPIO设置的串口引导方式,然后通过ROM中的SCI BOOT将flash_kernel从PC端加载到RAM中运行,然后kernel运行后接收串口发过来的应用程序的数据进行flash操作。
flash kernel是ROM里面的,ROM里面的SCI boot需要配置GPIO来进入这种模式,让它跳转到Flash kernel的代码
如之前所说,该launchpad不支持sci boot,所以上面的是行不通的。您需要使用control card
,
user6574429:
Susan Yang 说:flash kernel是ROM里面的,
Susan Yang 说:通过ROM中的SCI BOOT将flash_kernel从PC端加载到RAM中运行
您提到的这两个flash_kernel应该不是同一个东西吧,一个是固化在boot RAM中的一个是二次bootloader吧?
,
user6574429:
Susan Yang 说:ROM里面的SCI boot需要配置GPIO来进入这种模式,让它跳转到Flash kernel的代码
我的想法是把flash_kernel烧到flash中,通过flash boot启动flash_kernel,并进行应用程序下载
,
user6574429:
Susan Yang 说:该launchpad不支持sci boot,所以上面的是行不通的
我已经把scia的管脚更换成仿真器中的gpio42,43,flash_kernel程序下载到RAM中后能实现与主机通信,并且能将应用程序烧到flash中。
,
Susan Yang:
user6574429 说:我已经把scia的管脚更换成仿真器中的gpio42,43,
您是带仿真器来在CCS内进行上述操作的?默认在CCS下debug模式使用的是仿真器boot模式
https://www.ti.com/lit/an/sprabv4d/sprabv4d.pdf
,
user6574429:
好的,谢谢您的回复, 我还有一个疑问,如果烧写了两个工程到flash的不同位置(程序没有覆盖)中,采用flash启动,那么上电后程序是进入哪个工程运行?
,
Susan Yang:
user6574429 说:那么上电后程序是进入哪个工程运行
这取决于您boot程序内设置的跳转到APP的地址是哪一个
,
user6574429:
您好,请问如果板子支持SCI boot模式,那么SCI boot函数是rom里面已经存在的,还是需要用户下载进去的?
,
Susan Yang:
user6574429 说:那么SCI boot函数是rom里面已经存在的,还是需要用户下载进去的?
一般来说,引导 ROM 在出厂时已设定好引导加载软件。 引导模式信号(通用的 I/O)用于指示 bootloader 软件在上电 时要使用哪种模式。
具体您可以看一下
Figure 4-9. Overview of SCI Boot Function
https://www.ti.com.cn/cn/lit/ug/spruhm8i/spruhm8i.pdf