DSP:6678开发板NDK网口通信完整实现(附源码)

如果出现图片打不开,或是显示异常,请点击下方链接阅读原文!!!

DSP:6678开发板NDK网口通信完整实现(附源码) - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/85110735

 

//*************************************************************************************************

//写在前面:

1.已经有很多前辈做过很优秀的记录,本篇尽量讲得详细一点,能够让新手直接上手。

2.在整个调试过程中,会遇到各种各样的问题,如果遇到问题请看第四部分,大部分问题应该能解决掉,不能解决的就评论区留言。

3.我的CCS安装路径是“C:\Ti\***”,后文如果出现,请对应你自己的安装路径

 

1.开发环境:CCS 5.4 、卓岚TCP&UDP调试工具

2.开发平台: Ti TMDSEVM6678LE(TMDSEVM6678LE是开发板,程序在其他6678板卡上也运行过)

3.需要工程源文件,ccs,调试助手的评论区留言!

 

//*************************************************************************************************//

目录

一、原理

二、调试流程

三、程序执行流程与部分程序解读

四、注意事项与遇到过的问题及解决方法

五、程序源码

 

 

一、原理

1.通过UDP实现DSP与PC的通信,硬件上只需要用网线连接电脑与6678板卡即可,在程序上只是对TI已有的范例进行一些修改就能实现简单的通信。

2.板卡上电后,CCS通过JTAG连接调试板卡,则会首先从GEL的StartUp( )函数开始执行初始化,JTAG连接后执行OnTargetConnect( )函数,OnTargetConnect( )会调用Global_Default_Setup_Silent()函数中的ddr3_setup_auto_lvl_1333(0);和 configSGMIISerdes();函数完成DDR和SGMII的初始化。

3.如果要使用NDK,建立的ccs工程必须是跑sys/bios的工程。所以需要安装bios,我安装的是bios_setupwin32_6_33_06_50(正常情况下,安装ccs时已经安装了,检查下安装目录)

4. 在任何SOCKET应用程序建立之前,TCP/IP堆栈必须被正确的配置然后初始化。通常可以动态创建或者在DSP/BIOS中静态创建一个堆栈初始化任务,不管应用程序当中建立了多少SOCKET,在整个系统中只能有一个堆栈初始化任务,并且该任务会成为整个网络任务的唯一调度者,因此该任务在应用程序结束前不会返回。

堆栈初始化过程:(1)使用NC_SystemOpen()。该函数为所有网络应用程序建立堆栈和内存环境;(2)使用CfgNew()。该函数会创建一个配置句柄,利用该句柄使用CfgAddEntry()函数可以添加DHCP、DNS、HTTP等服务和配置SOCKET缓冲区大小与ARP超时参数;(3)使用NC_NetStart()。该函数根据前面的配置参数启动网络,并创建三个回调函数,分别是网络启动时只运行一次的函数、网络被关闭时只运行一次的函数、当IP地址改变时运行的函数。通常会在启动函数里面创建自己的应用程序线程,在关闭函数里面删除创建的应用程序线程。

 

 

二、调试过程

1.首先需要安装MCSDK和NDK,一般来说安装的CCS版本不是太低,都已经自动安装这些组件了。(我记得ndk_2_21_01_38这个版本是有问题的,尽量不用这个,安装了也没关系,可以在设置里面修改成其他版本。)

我ccs安装目录下文件状态

2.导入工程

在C:\Ti\mcsdk_2_01_02_06\examples\ndk\helloWorld路径下是ndk例程的官方例程,

导入工程可以分为在它源文件上进行调试,也可以复制到其他地方调试,担心破坏掉源文件,所以这里采用把文件复制到其他路径下调试。

(1)开始导入工程

(2)工程文件选择到helloWorld或者evmc6678l都可以,因为后面还得改。第3步是把文件复制到自己的工作路径下,我的是workspace

(3)可以看到此时文件标识有感叹号,这是由于路径不对,如果编译,会报错:

 
 

Description Resource Path Location Type gmake: *** No rule to make target `C:/Ti/workspace/udpHello.c', needed by `udpHello.obj'. helloworld_evmc6678l Unknown C/C++ Problem

(4)在工程上右键,点击properties

(5)在箭头处双击,进去过file找到helloWorld.c等4个c文件的位置,也就是:C:\Ti\mcsdk_2_01_02_06\examples\ndk\helloWorld里面。就完成了修改路径

(6)修改完之后是下图的状态

(7)此时右键工程选择Rebuild Project,编译就通过了。

 

3.配置仿真文件

由于需要硬件仿真,需要选择仿真器类型,创建ccxml和gel文件,如果以前写过相关的ccxml和gel,只要仿真器和板卡没变,可以直接复制过来使用,就可跳过这一步,文章最后会提供我的ccxml和gel。

(1)右键工程,选择新建Target Configuration File

(2)命名为evmc6678l.ccxml

(3)选择仿真器型号和芯片

(4)配置gel文件

【Gel文件的执行时间一般在DSP connect target之后,在download代码之前。因为gel文件通常会进行一些初始化的寄存器的设置,比如memory map,PLL和DDR初始化等。所以在download之前必须初始化这些。

gel文件的脚本都可以找到的。CCS5的版本可以在这个目录下找到大部分EVM的gel脚本

ccsv5\ccs_base\emulation\boards

gel脚本类似于C语言函数,就是运行一些函数。比如DDR初始化函数。如果DDR没有初始化,是无法将代码download到DDR中去的。执行gel脚本有两种,一种是用户自己执行,另一种是CCS5自动将gel脚本关联到相关的操作中,比如connect target就自动关联了初始化PLL,初始化DDR的gel函数。

可以找个gel脚本看看,这样更有助于理解。】

双击刚刚新建的evmc6678l.ccxml文件,再点击图中位置,

(5)gel文件在CCS安装路径下的\ccsv5\ccs_base\emulation\boards里可以找到对应芯片的gel文件,最后点击save。6678是多核芯片,这里只用到了core0,所以给0核配置就可以了。也可以直接在路径中复制过来。

4.文件处理好的状态

5.IP设置

(1)由于是采取的静态IP,需要把板卡上的拨码开关设置成下图这样,(这个拨码开关决定选择dhcp还是静态IP&#

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子木呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值