下载此文档

从Cfgdemo项目来分析协议栈的启动修订稿.docx


文档分类:通信/电子 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
WEIHUA system office room 【WEIHUA 16H-WEIHUA WEIHUA8Q8-WEIHUA1688】
从Cfgdemo项目来分析协议栈的启动
从Cfgdemo项目来分析协议栈的启动
项目中静态创建的任务有两个:一个是空闲任务,一个是StackTest任务,main函数是空的。任务StackTest的优先级(5)比空闲任务高。整个程序的初始化部分执行完之后,就会执行StackTest任务,从而执行StackTest()函数。
StackTest()函数首先调用了NC_SystemOpen()函数,来完成协议栈系统的初始化工作。必须注意的是:在使用协议栈之前必须最先调用该函数。接下来调用函数CfgNew()来创建一个配置(Configuration)并获得该配置的句柄,接下来的工作就是在配置中增添配置项(Configuration Entry),增添配置选项是通过调用CfgAddEntry()函数实现的。该项目中首先增添的配置项为Host name:
从CFGDEMO项目来分析协议栈的启动
接着增添的配置项为Telnet服务,那么协议栈系统在启动之后会启动Telnet服务(创建了一个名为telnetd的任务):
?
接着通过调用efs_createfile()创建5个文件,其名字分别为:、、、 ;这5个文件中,前两个文件的数据分别存放在数组DEFAULT[]、TIBUG[]中,而后三个文件实际是cgi程序,这三个cgi程序分别完成来之客户端的命令请求:View configuration、Change password、Submit configuration,与之同时,它们动态修改并发送了两个网页并CONFIG、USERMSG。
接着增添的配置项为HTTP服务,那么协议栈启动之后会启动Http服务(创建一个名为http server的任务)
接着的增添的配置项为CFGITEM_OS_DBGPRINTLEVEL,来选择打印的信息内容:
接下来调用函数CfgSave()来获取配置的大小并讲配置数据存入一个缓存中去,并释放配置。
接下来调用函数NetBoot()来启动协议栈。这个函数是NDK的用户自己写的一个函数,在这个函数中,调用了协议栈启动函数NC_NetStart(),这个函数属于Network Control API,该函数的源代码可以在\ti\NDK\src\netctrl\中找到。其函数接口如下:
NetBoot()在调用NC_NetStart()之前调用CfgNew()来创建一个新的空的配置,然后再调用CfgLoad()来把之前存入缓冲区中的配置好的配置数据载入新的配置中去,并把它作为参数传入NC_NetStart()中去,接着就调用NC_NetStart()启动协议栈。
NC_NetStart()函数首先调用了4个硬件抽象层(HAL)的四个初始化函数,由它们来完成底层硬件的初始化(具体细节过程等待进一步研究):
接着该函数调用CfgSetDefault()把传入NC_NetStart()函数中构建好的配置设置为默认配置。由于编程方法上的需要,协议栈就使用配置是统一为一个配置句柄指向的配置。这样CfgSetDefault()的本质就是把该配置句柄指向传入NC_NetStart()函数中构建好的配置。
接着把传入NC_NetStart()函数的三个函数指针赋值给三个全局变量,以方便后面适当的时候调用:
接着调用协议栈的核心API函数ExecOpen()来初始化协议栈的executive(自己意会这个概念)。
接着动态创建一个名为ConfigBoot的任务,其优先级为15(最高),其执行的函数是NS_BootTask()。由于DSP/BIOS是占先式实时OS,所以一旦任务高优先级的任务创建,OS内核的调度模块就会自动切换到高优先级的任务执行。很显然,接下来执行的是函数NS_BootTask()。这个函数的源码在\ti\NDK\src\netctrl\ 中可以找到。
NS_BootTask()函数首先调用CfgSetService()来Set Service CallBack Funtions for Every Configuration Tag,其意思是为每个Configuration Tag设置一个回调函数,其目的是为了在修改完配置之后能及时更新协议栈系统,也就是使协议栈系统随着配置的改变而实时地改变。 回调函数的接口定义如下:
?
在NDK的协议栈中,Configuration Tag共有如下8个:
?
其中需要配置回调函数的有如下几个:CFGT

从Cfgdemo项目来分析协议栈的启动修订稿 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人保珠
  • 文件大小617 KB
  • 时间2021-06-13
最近更新