目录
前言
28377D芯片有两个主频200M的32位CPU,两个CPU有各自独立的内存,并共享一块内存用于交互。此外还共用外设,通过CPU1可以配置外设及共享内存块到哪个CPU。一般将一个CPU用于实时性要求高的控制环路计算,另一CPU用于与外界的交互通信等;前段时间工作需要,将CPU2用于实时控制环路计算,CPU1用于人机交互,特意研究了下双核的如何使用。
一、DSP的双核是怎样的?
首先看28377D数据手册中的功能框图,可以看出CPU1和CPU2共用外设,各自有独立的内存,独立的看门狗及三个定时器,也有共享的内存区域。
28377D上,CPU1子系统当主机,并且默认情况下,它拥有所有的配置和控制权。通过在CPU1上运行的软件,可以将外围设备和I/O配置为可由CPU2子系统访问,并且可以锁定所选的配置。默认情况下,PLL时钟配置也由CPU1子系统拥有,但提供了一个时钟控制信号量,CPU2可以通过该信号量访问时钟配置寄存器。
二、DSP的双核怎样应用?
1.CPU2的启用
CPU2需要由CPU1引导启动,库函数包中为以下接口
#ifdef _FLASH
//
// Send boot command to allow the CPU2 application to begin execution
//
Device_bootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
#else
//
// Send boot command to allow the CPU2 application to begin execution
//
Device_bootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
#endif // _FLASH
uint16_t
Device_bootCPU2(uint32_t bootMode)
{
uint32_t bootstatus;
uint16_t returnstatus=STATUS_PASS;
//
// If CPU2 has already booted, return a fail to let the application
// know that something is out of the ordinary.
//
bootstatus