当前位置:首页 > 嵌入式 > 嵌入式硬件

摘要:针对实时操作系统 μC/OS-II没有自己的网络协议栈,提出了基于 ARM7TDMI处理器的 μC/OS-II操作系统上轻型 PPP协议的设计与实现,对 μC/OS-II与处理器相关的代码部分进行了修改与编译,实现了 μC/OS-II在 ARM开发板上移植,为 PPP协议的设计与实现提供了系统软件开发平台。通过编写了 PPP协议main主模块、LCP模块、PAP模块、NCP模块和PPP等模块代码,在μC/OS-II操作系统中实现了轻型 PPP协议。通过测试,验证了 ARM开发板的 PPP协议的网络通信功能。

1 引言

随着嵌入式技术的发展,让嵌入式设备接入 Internet,实现网络资源共享,是未来发展的必然趋势,μC/OS-II操作系统中没有完备的网络协议栈[1,2],要实现嵌入式设备网络通信,必须要有自己的网络协议。鉴于目前 PPP协议使用的普遍性和广泛性[3,4],本文提出了基于 ARM7TDMI处理器的 μC/OS-II操作系统上 PPP协议的设计与实现。通过 PPP协议在 μC/OS-II上的实现[5,6],能让嵌入式设备接入 Internet,进行信息互访,为未来的“普适计算”的发展提供了一个有利条件。

2 μC/OS-II移植实现

2.1编写 ARM7TDMI的启动程序

启动代码是芯片复位后进入 C语言的 main()函数前执行的一段代码,启动代码主要有 4个文件: Vectors.s、Init.s、Target.c和 Target.h。Vectors.s主要包括了异常向量表、堆栈初始化 InitStack和中断服务程序与 C程序的接口。而 Init.s主要是指系统初始化代码,执行的顺序是初始化堆栈,目标设备初始化和执行 Main模块。对于 Target.c和 Target.h来说,主要包含了异常处理程序和目标板初始化程序。

2.2 μC/OS-II的移植

OS_CPU.H中函数软中断 SWI机制[7],为了使底层接口函数与处理器状态无关,同时在对底层函数调用不需要知道函数的位置,因此在 uC/OS移植中,使用软中断指令 SWI[1]作为底层接口,通过不同的功能号来区分不同的函数,其软功能分配号如表 1所示。


用软中断作为操作系统的底层接口就需要在 C语言中使用 SWI指令。在 ADS中,有一个关键字_swi,用它声明一个不存在的函数,若在用户任务中调用这个函数就在调用这个函数的任务代码中地方插入一条 SWI指令,并且指定了功能号。

OS_CPU.H中关中断 OS_ENTER_CRITICAL()和开中断 OS_EXIT_CRITICAL()都是用来保护临界资源代码[8]。移植使用软中断指令 SWI使处理器进入管理模式和 ARM指令状态,并通过调用功能号 0x02和 Ox03来关中断和开中断。但在 C语言中,仍然使用 OS_ENTER_CRITICAL()关中断,而使用 OS_EXIT_CRITICAL()开中断。

OS_CPU.H中通过使用结构常量 OS_STK_GROWTH中值来指定堆栈的生长方式:当 OS_STK_GROWTH置为 1时,表示在堆栈存储时,是从上到下的方式存储。当 OS_STK_GROWTH置为 0时,表示在堆栈存储时,是从下向上的方式存储。

OS_CPU_A.S中OS_TASK_SW()是在μC/OS-II中从低优先级任务切换到最高优先级任务时被调用的。在 ARM移植使用软中断指令 SWI使处理器进入管理模式和 ARM指令状态,并调用功能号 0实现 OS_TASK_SW()的功能。但在 C语言中,仍然使用 OS_TASK_SW()函数进行任务切换功能。

OS_CPU_A.S中 OSStartHighRdy():在多任务环境下, OSStart()最终调用 OSStartHighRdy()函数运行多任务启动优先级最高的任务。移植中使用软中断指令 SWI使处理器进入管理模式和 ARM指令状态,并使用功能号 1实现 OSStartHighRdy()功能。在调用 OSStartHighRdy()函数之前, OSTCBHighRdy指向的是优先级最高的任务的任务控制块。

OS_CPU_C.C中断服务子程序的算法如下: void XxxISR(void) {OS_ENTER_CRITICAL()或直接给变量 OSIntSum赋 1;

清除中断源(与具体的外设有关);通知中断控制器中断结束:VICVectAddr=0;开中断:OS_EXIT_CRITICAL();用户处理程序;}

OS_CPU_C.C中任务堆栈的初始化函数 OSTaskStkInit() OS_STK *OSTaskStkInit() {模拟带参数(pdata)的函数调用;

模拟 ISR向量;按照预先所设定的寄存器值初始化堆栈结构;返回栈顶指针给调用该函数的函数;}

3 轻型 PPP协议的设计与实现

PPP协议软件模块主要通过各层协商机制完成数据链路的建立、配置、测试、以及在链路连接建立后,将收到的 PPP数据帧解析,根据协议字段将数据信息交由不同的上层模块进行处理;同时可根据系统的需要,将上层模块传来的信息打包成不同的PPP数据帧发送出去。

Main主模块:该模块控制着整个 PPP守护进程的程序流程。当PPP连接成功后,它使 PPP守护进程进入休眠状态,一直到管理员断开或者外部事件引起断开时它负责断开 PPP连接。在 PPP成功建立连接后,建立一个信号量,由 PPP模块处理任务不断检测这个信号量;若检测到有调制解调器中断复服务程序发来的信号量,则进行PPP数据帧的发送或接收。

LCP模块:该阶段是通过交换配置数据包来建立和配置数据链路,发送 LCP REQ数据包,将会收到客户端的发送过来的 LCP ACK数据包,客户端还要回 REQ数据包,服务器端接受到 LCP REQ后,则向客户端同样发送一个 LCP ACK数据包,至此链路协商正式结束。

认证协商模块( PAP):认证阶段是可选的,如果在链路建立协商阶段,服务器发送的第一个 LCP REQ数据包中含有了认证的数据选项,而且其数据选项一直没有被对方拒绝并且得到确认,则进入认证协商阶段;否则,进入网络层协商阶段。

网络层协商模块(NCP):NCP协商的主要目的是服务器首先让客户端确认自身的 IP地址,然后给客户端动态分配一个合法的 IP地址。网络层协商 NCP每次请求数据包必须含有服务器端的 IP选项,并且此选项最终被确认。在客户端回送了对服务器端的确认数据包后,开始进入客户端向服务器端申请动态分配 IP地址的阶段,所以客户端继续向服务器端发送含有客户端 IP地址且值为 0的 NCP REQ数据包,服务器端接受到这个数据包后,从 IP地址池中取出一个合法的 IP地址,发送了一个 NCP NAK数据包。在该数据包中,客户端 IP地址的数据选项中填入了从 IP地址池中取出的 IP地址的值,即给客户端动态的分配 IP地址的值。随后,客户端将接收到的 NCP NAK中的 IP地址值作为下一次回送的 NCP REQ中的客户端的 IP地址值的选项。当服务器端再接收到此 NCP REQ数据包后,便发送 NCP ACK数据包,至此整个 PPP协商过程结束,链路建立成功。

PPP模块:在协商好网络协议,可以进行数据的传输。为了更实时的进行数据传输,在这里为 PPP协议模块建立一个信号量,当发生 modem接受事件时,当 Modem接收到数据时引发处理器的外部中断。在外部中断 0处理函数中,将接收到的数据存入串口缓冲区中,如果缓冲区的数据已组成了一个完整的 PPP数据帧,则由中断服务子程序通过 μC/OS-II所提供的 OSSemPost()向任务 PPP模块任务发送一个信号量。

对PPP模块任务来说,通过 OSSemPend()函数等待由Modem中断服务程序发出的信号量,当接收到这个信号量后,说明有事件发生;再次判断这个事件是什么事件,若是接送事件,则调用 Receive()接收PPP数据帧,放到 SRAM接收缓冲区,若接收后,判断接收缓冲区是否正确地接收到数据,若正确地接收到PPP数据帧时,则调用 PPPInput()进行对PPP数据帧的解析。若帧类型是 IP则调用 IP数据包的处理例程;若帧类型是 LCP则调用LCP数据帧的处理例程;若帧类型是 PAP、NCP则分别调用这两种类型数据包的处理例程。若是发送事件,则调用Send()发送PPP数据帧。

4 轻型 PPP协议模块的测试和性能分析

根据点对点通信的特点,分别在 PC和ARM板两端安装一个Modem,通过一个交换机,或直接用电话线连接起来。由 PC端通过拨号软件,进行与 ARM开发板端的连接后,分别通过双方的协商,建立数据通信;在ARM开发板端,建立一个Test_task测试任务模块,将一个信息“ hello world”封装成 UDP包,再经 PPP模块的封装,发送到 PC机端,PC机端若与ARM板连接成功,在 Modem状态对话框中,能够正确的显示出对方所发送来的字符数和自己发送给对方字节数以及连接状态;若 PC端显示出这个信息,说明PPP模块得以实现。通过测试后,其 Modem状态连接图如图 1所示。


从PC端的Modem状态连接图可知,该 PC机端已经通过了相互协商,建立连接,处于数据帧的接收状态。已经正确地接收到由 ARM开发板所发送的PPP数据帧,进行了相互通信,表明 ARM板上PPP协议成功的得到了实现。

5 结束语

本文作者创新点在于从uCOS—II内核工作原理入手 ,以ARM开发板为平台,简述了系统硬件平台 ARM7TDMI处理器的体系结构和相应的指令集。对与处理器相关的代码部分进行了修改与编译,实现了μC/OS-II在ARM开发板上移植;在该系统平台上重点的介绍了轻型PPP协议设计与实现的具体过程,主要对main主模块、LCP模块、PAP模块、NCP模块和PPP模块等五个方面的设计与代码编写。通过测试,验证了ARM开发板的PPP协议的网络通信功能。



可可

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭