ARM启动DSP核,以及双核简单通信

废话不多说哈,直奔主题。。。。
首先简单介绍下启动流程:
1. 上电后,RBL从BOOT脚获取启动方式信息;
2. RBL引导了ARM核的UBL程序,ARM开始正常运行;
3. ARM核的UBL程序通过HOST1CFG寄存器配置DSP核的复位向量,之后再通过PSC模块唤醒DSP核;(注意,DSP核的复位向量必须是1K对齐,因为HOST1CFG寄存器的低10位是保留了)
4. DSP核开始执行。
这里介绍基于创龙公司的TL138-EVM开发板(标配)开发ARM核启动DSP核。根据开发板的硬件,程序实现以下功能:
1. ARM启动后,首先初始化系统时钟以及串口打印(使用串口2);
2. 初始化部分共享RAM,用于双核简单的通信测试;
3. ARM核唤醒DSP核;
4. DSP核启动后,完共享RAM区写数据(数字),并通过标识通知ARM核可以读取该数据;
5. ARM核读取DSP核写入的数据,获取数字,对数字加一,再写入共享RAM并通过标识通知DSP核可以读取该数据
之后双核就是这么个流程一直共用共享资源。
注意一点,由于系统时钟以及串口在ARM核中已经做了初始化,所以DSP核的应用就不用在做初始化了,可以直接使用。
鉴于这个原因,DSP核的代码不能单独使用,因为没有做初始化,串口打印会死机在那里。
使用CCS分别建立ARM核、DSP核的应用程序;编译后,使用AISGEN工具,合并两个.out文件为一个,再通过sfh_omapl138.exe工具烧写到开发板。
烧写步骤:
先设置开发板为串口启动模式,串口1、2都可以,然后通过sfh_omapl138.exe工具烧写,测试过程中我是烧写到SPI FLASH中,烧写完后,关掉开发板
电源,重新设置开发板为SPI1 FLASH启动模式即可。
工程中重新实现了fputc函数,这样就可以使用printf函数打印到串口上去。但是这个函数还有问题,不能自动转换%d格式。 
工程见附件!可用CCS直接导入即可。

你可能感兴趣的:(ARM,OMAP-L138,启动DSP)