一、概述
本设计的设计流程如图所示
1 主核创建messageQ(master)
2 发送起始标志信号至FPGA(nwrite)
3 FPGA收到信号之后,通过SWRITE的方式向DSP写数据
4 FPGA写完数据之后,发送doorbell,触发DSP doorbell中断
5 在doorbell中断中释放信号量 开始进行数据处理
6 DSP打开从核创建的messageQ(slave) 并将各自需要的数据通过messageQ发送给各个从核
7 从核接收主核发送来的messageQ(slave) 进行数据处理
8 处理完毕之后 发送messageQ(master)至主核
9 主核接收到从核发送的messageQ(slave)之后,通过SWRITE的方式发送数据至FPGA
二、cfg文件
主要定义doorbell中断函数以及信号量
//创建SRIO doorbell硬件中断
var hwi0Params = new Hwi.Params();
hwi0Params.instance.name = "hwi0";
hwi0Params.eventId = 0x14; //CSL_GEM_INTDST_N_PLUS_16
Program.global.hwi0 = Hwi.create(4, "&SRIO_Doorbell_ISR", hwi0Params);
//创建信号量
Sem.supportsEvents = false;
Program.global.sem_db = Sem.create(0);
定义初始化入口函数
Startup.firstFxns.$add('&system_init');
三、main函数