从Cfgdemo项目来分析协议栈的启动

从Cfgdemo项目来分析协议栈的启动

ID:39545634

大小:704.00 KB

页数:9页

时间:2019-07-05

从Cfgdemo项目来分析协议栈的启动_第1页
从Cfgdemo项目来分析协议栈的启动_第2页
从Cfgdemo项目来分析协议栈的启动_第3页
从Cfgdemo项目来分析协议栈的启动_第4页
从Cfgdemo项目来分析协议栈的启动_第5页
资源描述:

《从Cfgdemo项目来分析协议栈的启动》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、从Cfgdemo项目来分析协议栈的启动项目中静态创建的任务有两个:一个是空闲任务,一个是StackTest任务,main函数是空的。任务StackTest的优先级(5)比空闲任务高。整个程序的初始化部分执行完之后,就会执行StackTest任务,从而执行StackTest()函数。StackTest()函数首先调用了NC_SystemOpen()函数,来完成协议栈系统的初始化工作。必须注意的是:在使用协议栈之前必须最先调用该函数。接下来调用函数CfgNew()来创建一个配置(Configuration)并获得该配置的句柄,接下来的工作就是在配置中

2、增添配置项(ConfigurationEntry),增添配置选项是通过调用CfgAddEntry()函数实现的。该项目中首先增添的配置项为Hostname:从CFGDEMO项目来分析协议栈的启动接着增添的配置项为Telnet服务,那么协议栈系统在启动之后会启动Telnet服务(创建了一个名为telnetd的任务):  接着通过调用efs_createfile()创建5个文件,其名字分别为:index.html、tibug.gif、cfgstart.cgi、cfgpass.cgicfgdone.cgi;这5个文件中,前两个文件的数据分别存放在数组D

3、EFAULT[]、TIBUG[]中,而后三个文件实际是cgi程序,这三个cgi程序分别完成来之客户端的命令请求:Viewconfiguration、Changepassword、Submitconfiguration,与之同时,它们动态修改并发送了两个网页并CONFIG、USERMSG。  接着增添的配置项为HTTP服务,那么协议栈启动之后会启动Http服务(创建一个名为httpserver的任务)  接着的增添的配置项为CFGITEM_OS_DBGPRINTLEVEL,来选择打印的信息内容:接下来调用函数CfgSave()来获取配置的大小并讲配

4、置数据存入一个缓存中去,并释放配置。    接下来调用函数NetBoot()来启动协议栈。这个函数是NDK的用户自己写的一个函数,在这个函数中,调用了协议栈启动函数NC_NetStart(),这个函数属于NetworkControlAPI,该函数的源代码可以在tiNDKsrcetctrletctrl.c中找到。其函数接口如下:NetBoot()在调用NC_NetStart()之前调用CfgNew()来创建一个新的空的配置,然后再调用CfgLoad()来把之前存入缓冲区中的配置好的配置数据载入新的配置中去,并把它作为参数传入NC_Ne

5、tStart()中去,接着就调用NC_NetStart()启动协议栈。    NC_NetStart()函数首先调用了4个硬件抽象层(HAL)的四个初始化函数,由它们来完成底层硬件的初始化(具体细节过程等待进一步研究):接着该函数调用CfgSetDefault()把传入NC_NetStart()函数中构建好的配置设置为默认配置。由于编程方法上的需要,协议栈就使用配置是统一为一个配置句柄指向的配置。这样CfgSetDefault()的本质就是把该配置句柄指向传入NC_NetStart()函数中构建好的配置。    接着把传入NC_NetStart(

6、)函数的三个函数指针赋值给三个全局变量,以方便后面适当的时候调用:接着调用协议栈的核心API函数ExecOpen()来初始化协议栈的executive(自己意会这个概念)。    接着动态创建一个名为ConfigBoot的任务,其优先级为15(最高),其执行的函数是NS_BootTask()。由于DSP/BIOS是占先式实时OS,所以一旦任务高优先级的任务创建,OS内核的调度模块就会自动切换到高优先级的任务执行。很显然,接下来执行的是函数NS_BootTask()。这个函数的源码在tiNDKsrcetctrletsrv.c中可以找到

7、。NS_BootTask()函数首先调用CfgSetService()来SetServiceCallBackFuntionsforEveryConfigurationTag,其意思是为每个ConfigurationTag设置一个回调函数,其目的是为了在修改完配置之后能及时更新协议栈系统,也就是使协议栈系统随着配置的改变而实时地改变。 回调函数的接口定义如下: 在NDK的协议栈中,ConfigurationTag共有如下8个: 其中需要配置回调函数的有如下几个:CFGTAG_OS、CFGTAG_IP、CFGTAG_SERVICE、CFGTAG_IP

8、NET、CFGTAG_ROUTE,它们的回调函数分别为:SPConfig()、SPConfig()、SPService()、SPIpNe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。