⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsp side program to use a mailbox.c

📁 利用Mailbox实现运行在PC上的主机程序与运行在DSP EVM上的客户端程序间的数据交换。包括PC端源码和DSP端源码。
💻 C
字号:
DSP side program to use a mailbox
/* Mailbox part is taken from Dahnoun, Naim: "Digital Signal Processing Implementation
   Using the TM320C6000 DSP Platform" */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <pci.h>
#include <Intr.h>
#include <Board.h>
#include <dma.h>  
#define BUFSIZE	10
unsigned int i,j;
int buf[BUFSIZE];
/* Mailbox */
void MailBox_Setup(void)
{
	int Dummy;
	
	(*(volatile unsigned int *)0x01700038) = 0x00001010;
	Dummy = (*(volatile unsigned int *)0x01700000);
	(*(volatile unsigned int *)0x01700038) |= 0x00030000;
}
int MailBox_GetCommand(void)
{
	int HostCommand;
	
	while(!((*(volatile unsigned int *)0x01700038) & 0x00010000));
	HostCommand = (*(volatile unsigned int *)0x01700000);
	(*(volatile unsigned int *)0x01700038) |= 0x00010000;
	
	return HostCommand;
}
void MailBox_SendCommand(int HostCommand)
{
	(*(volatile unsigned int *)0x01700010) = (unsigned int)HostCommand;
	while(!((*(volatile unsigned int *)0x01700038) & 0x00020000));
	(*(volatile unsigned int *)0x01700038) |= 0x00020000;
}
void main(void)
{       
	int msg;
	int *temp;
	
  /******************************************************/
  /* Initialize EVM                                     */
  /******************************************************/  
	printf("Initializing EVM board\n");
	evm_init();
	printf("Done initializing EVM\n");
	MailBox_Setup();
	printf("Done Mailbox setup\n");
	  
	printf("Wait for start signal from host\n");
	do
  		msg = MailBox_GetCommand();
	while(msg != 11);
	MailBox_Setup();
	printf("Send ready message to host\n");
	msg = BUFSIZE;
	MailBox_SendCommand(msg);
  
	printf("Wait for reply from host\n");
	do
  		msg = MailBox_GetCommand();
	while(msg != 13);
  
	for (i = 0; i < 10; i++)
		buf[i] = (10 - i);
	
	MailBox_Setup();
	printf("Send ready message to host\n");
	temp = buf;
	printf("temp=%x, *temp=%d\n", temp, *temp);
	MailBox_SendCommand((int)temp);
	
	exit(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -