📄 dsp side program to use a mailbox.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 + -