请教Cwww.667871.com CCS5.4 NDKndk

C6748 NDK 环境搭建编译问题 - C6000(TM)单核 - 德州仪器在线技术支持社区
C6748 NDK 环境搭建编译问题
发表于2年前
<input type="hidden" id="hGroupID" value="31"
&p>& 定制c6748板卡,和lcdkc6748类似。安装SDK&bios_c6sdk_02_00_00_00_setupwin32.exe&,安装以后自带bios_6_33_01_25和ndk_2_20_06_35。另安装CCS版本6.0.0.00190&。现在要在这个硬件、软件平台上开发网络功能,需要使用NDK。因为自带第三方.lib文件是coff格式并且无源码,所以最终目标铁定必须是coff格式,所以必须重新编译NDK。&/p>
&p>& 现在在ccs中导入就会出现以下错误,完整错误提示&&/p>
&p>See details below. &br> Error: Import failed for project &#39;ndk_core_build&#39; because its compiler definition is not available. The project does not appear to be a &#39;CCS Project&#39;. Please try importing it through the &#39;General & Existing Projects into Workspace&#39; wizard.&&/p>
&p>& 请问这是什么问题?如果不通过CCS导入编译的方法,还有其他什么方法可以重新编译NDK? 谢谢!&/p>
&p>&a href=&/cfs-file.ashx/__key/communityserver-discussions-components-files/32/7242.error.png&>&img src=&/resized-image.ashx/__size/550x0/__key/communityserver-discussions-components-files/32/7242.error.png& border=&0& alt=& &>&/a>&/p>
&p>Best Regards,&/p>
&p>GAN XJ&/p>&div style=&clear:&>&/div>" />
C6748 NDK 环境搭建编译问题
此问题尚无答案
All Replies
& 定制c6748板卡,和lcdkc6748类似。安装SDK&bios_c6sdk_02_00_00_00_setupwin32.exe&,安装以后自带bios_6_33_01_25和ndk_2_20_06_35。另安装CCS版本6.0.0.00190&。现在要在这个硬件、软件平台上开发网络功能,需要使用NDK。因为自带第三方.lib文件是coff格式并且无源码,所以最终目标铁定必须是coff格式,所以必须重新编译NDK。
& 现在在ccs中导入就会出现以下错误,完整错误提示&
See details below.
Error: Import failed for project &#39;ndk_core_build&#39; because its compiler definition is not available. The project does not appear to be a &#39;CCS Project&#39;. Please try importing it through the &#39;General & Existing Projects into Workspace&#39; wizard.&
& 请问这是什么问题?如果不通过CCS导入编译的方法,还有其他什么方法可以重新编译NDK? 谢谢!
Best Regards,
You have posted to a forum that requires a moderator to approve posts before they are publicly available.NDK_TCP_UDP 采用NDK开发包的网络通信程序,在C6455上经过测试,速度可达50Mb/s。 void tcpclient( DSP program 261万源代码下载-
&文件名称: NDK_TCP_UDP& & [
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 5 KB
&&上传时间:
&&下载次数: 97
&&提 供 者:
&详细说明:采用NDK开发包的网络通信程序,在C6455上经过测试,速度可达50Mb/s。 void tcpclient()函数是经过测试的。-NDK development kit network communication program, tested on the C6455, speeds of up to 50Mb/s. void tcpclient () function is tested.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&NDK_TCP_UDP.txt
&[]:文件不全&[]:一般,勉强可用&[]:纯粹是垃圾&[]:纯粹是垃圾
&近期下载过的用户:
&&&&&&&&&&&&&&&&&&&&&[]
&相关搜索:
&输入关键字,在本站261万海量源码库中尽情搜索:
&[] - 一个用于TI 的C6747的BIN程序烧写器
&[] - EVM6424上vlynq接口编程示例,希望对需要的人有所帮助,经过CCS3.3验证
&[] - TI公司的NSP,NDK开发必备 dsp网络实现
&[] - android中listview使用例子,android中listview使用例子
二次开发接口DEMO
详细调用方法请参看: Demo\
目录的Java7、JavaScript、Delphi、C++Builder XE2、VS2008(C#,VC,VB.net)调用DEMO
\Demo\ActiveXForm (javascript)
&[] - TI DSP datasheet, 1000M ethernet, tcp/ip stack
&[] - 在dsk6455开发平台上实现dsp与主机之间的通信实例,主机端采用VC2005开发平台,dsp上采用ccs3.3,内附有在不同频率下通信的测试数据
&[] - c6455 emac .h
c6455 emac .h
&[] - 本软件是TI公司免费提供的网络开发包 现在好象很难找到,有黑心的公司把它改一改,就卖价5000元,对网络开发和网络驱动开发有参考价值
&[] - 用于PC机与C6416DSP之间的RS232串口通信查看: 2882|回复: 3
TI的TCP/IP协议栈--NDK
& && & 这是之前用TI的DM642做视频编码器用到的网络协议栈,源码TI官网上有的下载。维基网上也有关于NDK的一些技术文档,都是英文的,看了费劲。
看这个之前我对TCP/IP协议几乎不了解,拿到这个就开始看英文文档,天昏地暗的,边看边整理些东西,没基础真的痛苦,硬着头皮看吧。下面都是我边看边整理的,怕丢了,放到这,以后还有用。
& && & 一、NDK中创建任务的方法:
& && & 1、用标准的/BIOS API
struct TSK_A
ta = TSK_ATTRS;
ta.priority = OS_TASKPRINORM;
ta.stack = 0;
ta.stacksize =
ta.stackseg = 0;
ta.environ = 0;
ta.name = &TaskName&;
ta.exitflag = 0;
hMyTask = TSK_create( (Fxn)entrypoint, &ta, arg1, arg2, arg3 );复制代码& && &2、用NDK的任务抽象API
hMyTask = TaskCreate( entrypoint, &TaskName&, OS_TASKPRINORM, stacksize, arg1, arg2, arg3 );
In both cases, hMyTask is a handle to a DSP/BIOS TSK task thread.复制代码& && &二、内存分配
& && & 应用程序在分配内存时最好使用标准的malloc()/free()函数,或者使用DSP/BIOS来分配。
& && & 三、NDK初始化和配置
& && & 1、必须包含NETCTRL.LIB,NETCTRL模块是协议栈初始化、配置和事件调度的核心。
& && & 2、由DSP/BIOS创建的线程是程序的入口点,并且最终成为NETCTRL调度线程。这个控制线程直到协议栈关闭才返回给调用者。
& && & 3、在调用其他任何协议栈API之前必须先调用NC_SystemOpen()函数。它初始化协议栈及其所需内存环境。它的两个参数Priority和OpMode分别决定调度任务的优先级和调度器何时开始执行。
& && & Priority包括NC_PRIORITY_LOW 和 NC_PRIORITY_HIGH两种,
& && & OpMode包括NC_OPMODE_POLLING 和 NC_OPMODE_INTERRUPT两种,大部分情况使用interrupt模式,而polling模式会持续运行,当使用polling模式时,优先级必须设为低(NC_PRIORITY_LOW)。
& && & 4、使用实例:
//
// THIS IS THE FIRST THING DONE IN AN APPLICATION!!
//
rc = NC_SystemOpen( NC_PRIORITY_LOW, NC_OPMODE_INTERRUPT );
if( rc )
{
printf(&NC_SystemOpen Failed (%d)/n&,rc);
for(;;);
}复制代码
& && & 5、系统配置,包括以下参数:
· Network Hostname
· IP Address and Subnet Mask
· IP Address of Default Routes
· Services to be Executed (DHCP, DNS, HTTP, etc.)
· IP Address of name servers
· Stack Properties (IP routing, socket buffer size, ARP timeouts, etc.)复制代码
& && & 系统配置开始时调用CfgNew()来创建配置句柄。
& && & 配置好之后调用NC_NetStart()函数,该函数有4个参数,配置句柄,指向开始回调函数的指针,指向结束函数的指针,指向IP地址事件的函数。开始和结束函数都只被调用一次。开始函数在初始化结束准备执行网络应用程序时调用,结束函数在系统完全关闭时调用,意味着协议栈将不能执行网路应用。IP地址事件函数能够多次被调用。
& && & NC_NetStart()到系统关闭才返回一个关闭代码。
//
// Boot the system using our configuration
//
// We keep booting until the function returns 0. This allows
// us to have a &reboot& command.
//
do
{
rc = NC_NetStart( hCfg, NetworkStart, NetworkStop, NetworkIPAddr );
} while( rc & 0 );
As an example of a network start callback, the NetworkStart() function below opens a user SMTP server
application by calling an open function to create the main application thread.
//
// NetworkStart
//
// This function is called after the configuration has booted
//
static SMTP_Handle hSMTP;
static void NetworkStart( )
{
// Create an SMTP server
task hSMTP = SMTP_open( );
}
//
// NetworkStop
//
// This function is called when the network is shutting down
//
static void NetworkStop()
{
// Close our SMTP server task
SMTP_close( hSMTP );
}复制代码
& && & NetworkIPAddr()函数通常用来同步网络任务,该网络任务需要在执行前设置一个本地IP地址。
void NetIPCb( IPN IPAddr, uint IfIndex, uint fAdd );
& & IPAddr& && && && &增加或者移除的IP地址
& & IfIndex& && && &&&外设接口获取或者移除IP地址的标识
& & fAdd& && && && &&&增加一个IP地址时设为1,移除IP地址时设为0
//
// NetworkIPAddr
//
// This function is called whenever an IP address binding is
// added or removed from the system.
//
static void NetworkIPAddr( IPN IPAddr, uint IfIdx, uint fAdd )
{
if( fAdd )
&&printf(&Network Added: &);
else
&&printf(&Network Removed: &);
// Print a message
IPTmp = ntohl( IPAddr );
printf(&If-%d:%d.%d.%d.%d/n&, IfIdx,
& && && & (UINT8)(IPTmp&&24) & 0xFF,
& && && & (UINT8)(IPTmp&&16) & 0xFF,
& && && & (UINT8)(IPTmp&&8) & 0xFF,
& && && & (UINT8) IPTmp & 0xFF );
}复制代码& && &6、关闭协议栈的方法:
& && & ①手动关闭,NC_NetStop(1)重启网络栈,NC_NetStop(0)关闭网络栈。
& && & ②当检测到致命错误时关闭,NC_NetStop(-1)。
// We do not want the stack to abort on any error禁止错误引起的关闭
&&uint rc = DBG_NONE;
&&CfgAddEntry( hCfg, CFGTAG_OS, CFGITEM_OS_DBGABORTLEVEL,
& && && && && &CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8 *)&rc, 0 );复制代码
& && & 7、追踪服务状态
& && & 当使用NETTOOLS库时,NETTOOLS状态回调函数被引入,这个回调函数追踪被配置使能的服务的状态。状态回调函数有两级,第一个回调由NETTOOLS服务生成,当服务状态改变时它调用配置服务提供者。然后配置服务提供者增加它自己的状态到报告中,并且调用应用程序回调函数。当应用程序增加服务到系统配置中时,一个指向应用程序回调的指针被提供。
void StatusCallback( uint Item, uint Status, uint Code, HANDLE hCfgEntry )
Item& && && &Item value of entry changed被更改的入口的项目值
Status& && & New status新状态
Code& && && &Report code (if any)报告代码
hCfgEntry& & Non-Referenced HANDLE to entry with status change不引用复制代码
& &&&&&实例:
//
// Service Status Reports
//
static char *TaskName[] = { &Telnet&,&HTTP&,&NAT&,&DHCPS&,&DHCPC&,&DNS& };&&//不能改变,在netcfg.h中定义
static char *ReportStr[] = { &&,&Running&,&Updated&,&Complete&,&Fault& };&&//不能改变,在nettools.h中定义
static char *StatusStr[] = { &Disabled&, &Waiting&, &IPTerm&, &Failed&, &Enabled& }
static void ServiceReport( uint Item, uint Status, uint Report, HANDLE h )
{
printf( &Service Status: %-9s: %-9s: %-9s: %03d/n&,
&&TaskName[Item-1], StatusStr[Status],
&&ReportStr[Report/256], Report&0xFF );
}复制代码
& && & 以上函数打印的最后一个值是答应通过Report传递的低8位的值,这个值是固定的,大部分情况下这个值不需要。通常,如果服务成功,它报告Complete,失败,他报告Fault。对于那些不会结束的服务(例如,当IP分配启动时,DHCP客户端会持续运行),Report的高位字节意味着Running,而服务特定的低字节必须被用来指定当前状态。
& && & For example, the status codes returned in the 8 least significant bits of Report when using the DHCP client service are:
DHCPCODE_IPADD& && && &&&Client has added an IP address
DHCPCODE_IPREMOVE& && &&&IP address removed and CFG erased
DHCPCODE_IPRENEW& && && &IP renewed, DHCP config space reset复制代码
& && & 大部分情况下不必去核对这些状态报告代码,除非以下情况:
& && & 当使用DHCP客户端来配置协议栈,DHCP客户端控制CFGTAG_SYSINFO标签空间的前256个入口。这些入口与这256个DHCP操作标签通信。应用程序可以检查DHCPCODE_IPADD或者DHCPCODE_IPRENEW返回代码以便它能够读或者改变通过DHCP客户端获得的信息。
& && & 8、不使用DHCP client时,手动配置DNS的IP地址方法如下:
IPN IPT
// Manually add the DNS server &128.114.12.2&
IPTmp = inet_addr(&128.114.12.2&);
CfgAddEntry( hCfg, CFGTAG_SYSINFO, CFGITEM_DHCP_DOMAINNAMESERVER,
&&0, sizeof(IPTmp), (UINT8 *)&IPTmp, 0 );复制代码& && &如果以上代码被加到使用DHCP的应用程序中,当DHCP执行状态更新时这个入口将会被清除。
& && & 9、使用DHCP client时,手动配置DNS的IP地址方法如下:必须在DHCP配置完成以后再手动增加DNS服务。
//
// Service Status Reports
//
static char *TaskName[] = { &Telnet&,&HTTP&,&NAT&,&DHCPS&,&DHCPC&,&DNS& };
static char *ReportStr[] = { &&,&Running&,&Updated&,&Complete&,&Fault& };
static char *StatusStr[] = { &Disabled&,&Waiting&,&IPTerm&, &Failed&,&Enabled& };
static void ServiceReport( uint Item, uint Status, uint Report, HANDLE h )
{
printf( &Service Status: %-9s: %-9s: %-9s: %03d/n&,
&&TaskName[Item-1], StatusStr[Status],
&&ReportStr[Report/256], Report&0xFF );
// Example of adding to the DHCP configuration space
// When using the DHCP client, the client has full control over access
// to the first 256 entries in the CFGTAG_SYSINFO space. Here, we want
// to manually add a DNS server to the configuration, but we can only
// do it once DHCP has finished its programming.
if( Item == CFGITEM_SERVICE_DHCPCLIENT &&
&&Status == CIS_SRV_STATUS_ENABLED &&
&&(Report == (NETTOOLS_STAT_RUNNING|DHCPCODE_IPADD) ||
&&Report == (NETTOOLS_STAT_RUNNING|DHCPCODE_IPRENEW)) )
{
&&IPN IPT
&&// Manually add the DNS server when specified. If the address
&&// string reads &0.0.0.0&, IPTmp will be set to zero.
&&IPTmp = inet_addr(DNSServer);
&&
&&if( IPTmp )
& &CfgAddEntry( 0, CFGTAG_SYSINFO, CFGITEM_DHCP_DOMAINNAMESERVER,
& &&&0, sizeof(IPTmp), (UINT8 *)&IPTmp, 0 );
}
}复制代码
&&四、操作系统配置结构体和NDK配置结构体
& && & 以上两个结构体的值可以直接赋值,但是有两个原因说明增加这个参数给系统配置是有用的:
& && & 第一,它为所有的网络配置提供了固定的API。
& && & 第二,如果使用了配置加载和保存功能,这些配置参数都被保存除了系统配置的其余部分。
& && & 以下代码可以改变答应输出的调试信息的级别,例如,不打印出警告信息,而可以打印出调试信息:
// We do not want to see debug messages less than WARNINGS
rc = DBG_WARN;
CfgAddEntry( hCfg, CFGTAG_OS, CFGITEM_OS_DBGPRINTLEVEL,
& &CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8 *)&rc, 0 );复制代码& && &五、存储和加载配置
& && & 1、配置设置好后,存储在非易失性存储器中。
int CfgSave(HANDLE hCfg, int *pSize, UINT8 *pData);复制代码& && &返回值:正确返回被写的字节数,size错误返回0,操作错误返回小于1。
& && & 描述:该函数将由hCfg指定的配置内容存储到pData指定的内存块。
& && & 数据缓冲区的大小最初由pSize指定,如果这个指针指向的size值为0(pSize本身不能为NULL指针),这个函数不会试图存储配置,相反地,会计算需要的大小并且将这个值写到由pSize指定的位置。事实上,在任何时候pSize处的值都比存储配置所需的值要小,函数返回0值并且pSize处的值被用来设置存储数据所需的大小。参数pData指向接收配置信息的数据缓冲区。
int SaveConfig( HANDLE hCfg )
{
UINT8 *pB
// Get the required size to save the configuration
CfgSave( hCfg, &size, 0 );& &//计算存储所需的大小并存储到pSize
if( size && (pBuf = malloc(size) ) )
{
&&CfgSave( hCfg, &size, pBuf );
&&MyMemorySave( pBuf, size );&&//假设这个函数是将线性缓冲区存储到非易失性存储器
&&Free( pBuf );
&&return(1);
}
return(0);
}复制代码& && &2、加载配置
& && & 实例如下:假设两个函数
MyMemorySize()返回线性buffer中的配置的存储大小
MyMemoryLoad()从flash中加载线性buffer
int NetworkTest()
{
HANDLE hC
UINT8 *pB
I
//
// 在应用程序中,这绝对是第一个必须被完成的!
//
rc = NC_SystemOpen( NC_PRIORITY_LOW, NC_OPMODE_INTERRUPT );
if( rc )
{
&&printf(&NC_SystemOpen Failed (%d)/n&,rc);
&&for(;;);
}
//
// 首先加载装有配置信息的线性存储块
//
// 分配一个buffer用来装载配置信息
size = MyMemorySize();
if( !size )
&&goto main_
pBuf = malloc( size );
if( !pBuf )
&&goto main_
// 将配置信息从flash装载到buffer中
MyMemoryLoad( pBuf, size );
//
// 创建新配置并且加载配置信息
//
// 创建一个新配置
hCfg = CfgNew();
if( !hCfg )
{
&&printf(&Unable to create configuration/n&);
&&free( pBuf );
&&goto main_
}
// 加载配置信息(然后我们可以释放buffer)
CfgLoad( hCfg, size, pBuf );
Free( pBuf );
//
// 用这个配置来启动这个系统
//
// We keep booting until the function returns less than 1. This allows
// us to have a &reboot& command.
//
do
{
&&rc = NC_NetStart( hCfg, NetworkStart, NetworkStop, NetworkIPAddr );
} while( rc & 0 );
// 删除配置
CfgFree( hCfg );
// 关闭操作系统
& & main_exit:
NC_SystemmClose();
return(0);
}复制代码
& && & 六、ping NDK目标系统,以下代码例子配置IP重组最大的尺寸为65500个字节。
uint tmp = 65500;
CfgAddEntry(hCfg, CFGTAG_IP, CFGITEM_IP_IPREASMMAXSIZE,
&&CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8*) &tmp, 0);复制代码& && &七、发送和接收UDP数据包超过最大传输单元尺寸的方法:
& && & 1、NDK配置操作:
CFGITEM_IP_SOCKUDPRXLIMIT
CFGITEM_IP_IPREASMMAXSIZE复制代码
& && & 2、socket操作:
SO_SNDBUF
SO_RCVBUF复制代码
& && & 3、操作系统适配层定义:
MMALLOC_MAXSIZE
MMALLOC_MAXSIZE复制代码
& && & 例如:为了配置发送和接收的UDP数据包能达到65500字节的大小,一下代码必须被执行
& && & 1、uint tmp = 65500;
& &CfgAddEntry(hCfg, CFGTAG_IP, CFGITEM_IP_IPREASMMAXSIZE,
&&CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8*) &tmp, 0);
& &CfgAddEntry(hCfg, CFGTAG_IP, CFGITEM_IP_SOCKUDPRXLIMIT,
&&CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8*) &tmp, 0);复制代码
& && & 2、在&pbm.c&文件中修改MMALLOC_MAXSIZE参数,在&mem.c&文件中修改RAW_PAGE_SIZE参数,并且重新建立OSAL库。
& && & 3、uint tmp = 65500;
& &setsockopt(s, SOL_SOCKET, SO_RCVBUF, &tmp, sizeof(int) );
& &setsockopt(s, SOL_SOCKET, SO_SNDBUF, &tmp, sizeof(int) );复制代码& && &八、UDP数据报有效载荷时间戳
& && & NDK允许应用程序更新UDP数据包的有效载荷。常用的方法是更新数据包的时间戳信息。这样,发送端和接收端能更精确地调整依赖于改变系统特有的运行时间的传递延时。
& && & 1、在传输端:
& && & 在每个socket上,通过使用&setsockopt&函数,应用程序可以注册一个唤起函数。
& && & 将数据包插入驱动的传输队列之前,协议栈调用这个唤起函数。
& && & 在头部,唤起函数要更新UDP校验和信息。
& && & 以下代码示意了怎样控制它:
void myTxTimestampFxn(UINT8 *pIpHdr) {
& &&&...
& && && &}
setsockopt(s, SOL_SOCKET, SO_TXTIMESTAMP, (void*) myTxTimestampFxn, sizeof(void*));复制代码
& && & 2、在接收端:
& && & 在每个接口基础上,通过使用&EtherConfig&函数,应用程序可以注册一个唤起函数。EtherConfig函数在&netctrl.c&文件中的NC_NetStart()函数中设置。
这个唤起函数仅仅在处理包之前协议栈调度器调用。
& && & 在头部,唤起函数要更新UDP校验和信息。
& && & 以下代码示意了怎样控制它:
void myRcvTimestampFxn(UINT8 *pIpHdr) {
& &&&...
& && && & }
EtherConfig( hEther&i&, , 6, 12, 4, myRcvTimestampFxn);&/i&复制代码& && &九、调试信息
& && & 包括DBG_INFO,DBG_WARN,DBG_ERROR。使用这些等级有两个目的:
& && & 1,决定调试信息是否会被打印。
& && & 2,决定调试信息是否会引起NDK关闭。
& && & DBG_ERROR这一层的信息会引起栈的关闭。可以通过系统配置和使用操作系统配置结构来调整这个行为。
& && & 十、存储器出错
& && & 当诊断NDK调试信息时,字存储器出错会频繁发生。这是因为对于缓冲设备很容易造成存储器出错。包含在NDK中的大部分示例程序都是用全L2缓冲模式。在这种模式下,任何对CPU内部存储边界的读写访问都会引起缓冲区出错,从而引起存储器出错。因为内部存储(L2)边界从地址0x开始,当使用全缓冲时,一个空指针会导致问题。
& && & 当L2使用cache+RAM模式时,对于地址0x的读写不会引起缓冲错误。
& && & 十一、程序死锁
& && & 大部分程序死锁都是由于任务堆栈空间不足引起的。例如,当我们写一个HTTP CGI函数时,CGI函数的任务线程可能总共只需要5000字节的任务堆栈空间。因此,使用过大的堆栈是不被推荐的。
& && & 一般来说,不使用下面的源码:
myTask()
{
char TempBuffer[2000];
myFun( TempBuffer );
}
而是这样使用:
myTask()
{
char *pTempB
pTempBuf = MEM_alloc( 0, 2000, 0);
if( pTempBuf != MEM_ILLEGAL )
{
&&myFun( pTempBuf );
&&MEM_free( pTempBuf, 2000 );
}
}复制代码
& && & 如果调用一个内存分配函数速度太快,可以考虑使用外部buffer。这仅仅是个例子,几乎不要事先考虑就能排除所有可能的堆栈溢出情况,并且消除可能的程序死锁。
& && & 十二、内存管理报告
mmAlloc()和mmFree():分配/释放小的内存块
mmBulkAlloc()和mmBulkFree():分配/释放较大(不受限制的,通常在3000bytes以上)内存块
48:48 ( 75%)& &18:96 ( 56%)& &8:128 ( 33%)& &28:256 ( 77%)& &1:512 ( 16%)& &0:1536& &0:3072
( mmAlloc: /, mmBulk: 25/0/17)
18:96 ( 56%):内存管理器的页的大小是3072 bytes,至多被分成18块*96字节,使用了一页的56%。
mmAlloc: /&&:调用了mmAlloc()函数次,失败了0次,调用mmFree()函数次。在任何时候,调用mmAlloc()的次数 + 失败的次数 = 调用mmFree()的次数 + 应该分配而未分配的次数。假如在最终的报告中有 mmAlloc:n1/n2/n3,n1+n2应该等于n3,如果不等,就有内存泄露。复制代码
& && & 十三、NC_NetStart()函数流程
NC_NetStart()
{
设备初始化;
创建配置启动线程;
网络调度器(NetScheduler(););
关闭配置;
关闭设备;
}复制代码
我也玩过一段时间...
谁用过6455和ET1011呀,是在不会配置ET1011了,有高手指点一下吗,有程序最好了,谢谢了
站长推荐 /1
Code Composer Studio(TM) (CCStudio) 是用于德州仪器 (TI) 嵌入式处理器系列的集成开发环境 (IDE)。TI CCS5.2.1破解说明:下载许可证文件拷贝到目录即可..
Powered byc6455,在ccs5.3的环境下,NDK的例子是在哪里下 - C6000(TM)单核 - 德州仪器在线技术支持社区
c6455,在ccs5.3的环境下,NDK的例子是在哪里下
发表于3年前
<input type="hidden" id="hGroupID" value="31"
在安装ccs5.3后,用ndk_2_22_00_06,里面没有例子,下载例子nsp_1_10_01_06里面也没有C6455的例子,请问c6455NDK的例子在哪里下&/p>&div style=&clear:&>&/div>" />
c6455,在ccs5.3的环境下,NDK的例子是在哪里下
此问题尚无答案
All Replies
在安装ccs5.3后,用ndk_2_22_00_06,里面没有例子,下载例子nsp_1_10_01_06里面也没有C6455的例子,请问c6455NDK的例子在哪里下
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
ccs3.3中setupwin32_ndk-2_0_0.exe是有C6455的例子的,但不能在ccs5.3中使用,怎么找ccs5.3的例子
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
举人1010分
请问您问题解决了没
You have posted to a forum that requires a moderator to approve posts before they are publicly available.

我要回帖

更多关于 6678开发板 的文章

 

随机推荐