软件准备: 开发环境:CCS5.5,MCSDK,NDK 导入创龙例程NDK_UDP,参照博文[1]创建socket任务,参照范例[2]编写send_to_PC函数,完成DSP向上位机发送数据程序。 硬件准备:创龙开发板TL6655-EasyEVM-B4 在线进行测试。网口带宽只有12Mbps。
C6655端向上位机发送数据代码如下: - void task_sendto_PC()
- {
- struct sockaddr_in sa, sinDst;
- int sa_size1 = 0, err = 0;
- int chain = 0;
- int retSize1 = 0;
- int PktNum = 0;
- int buff_size1 = 0;
- int i = 0;
- //unsigned int unDelay = 0;
- // Allocate the file environment for this task
- fdOpenSession(TaskSelf());
- // initiate socket
- SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (s == INVALID_SOCKET)
- {
- printf("socket failed \n");
- return;
- }
- // setsocket
- err = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, buff1, 1472);
- err = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, buff1, 1472);
- // initiate address (local)
- bzero(&sa, sizeof(struct sockaddr_in));
- sa.sin_family = AF_INET;
- sa.sin_addr.s_addr = INADDR_ANY;
- sa.sin_port = htons(1000);
- //bind the socket
- err = bind(s, (struct sockaddr *)&sa, sizeof(sa));
- if (err == 0)
- {
- printf("socket bind successfully");
- }
- else
- {
- printf("socket-bind failed errnum = %d\n", fdError());
- }
- //initiate address (dst)
- bzero(&sinDst, sizeof(struct sockaddr_in));
- sinDst.sin_family = AF_INET;
- sinDst.sin_addr.s_addr = inet_addr("192.168.2.105");
- sinDst.sin_port = htons(5000);
- sa_size1 = sizeof(struct sockaddr_in);
- buff_size1 = 1472;
- TaskSleep(500);
- buff1[0] = 48;
- while(1)
- {
- TaskSleep(1);
- buff1[1] = i + 48;
- i++;
- chain ^= 1;
- if(chain == 0)
- memset(buff1, '1', 1024);
- else
- memset(buff1, 'A', 1024);
- retSize1 = sendto(s, buff1, buff_size1, 0, (struct sockaddr *)&sinDst, sa_size1);
- if (retSize1 < 0)
- printf("error sending sendto () %d \n", fdError());
- //else
- //printf("%d send_size = %d \n", PktNum, retSize1);
- PktNum++;
- if(i == 10)
- i = 0;
- }
复制代码 UDP带宽可以达到24MBps,请问是如何配置的?
|