嵌入式LED显示屏控制系统应用研究 第11页
37
图5.1任务堆栈的结构
一致uC/OS-II时我们使用图5.1所示的任务堆栈结构。这里不必保护SPSR寄存器,因为移植
后的uC/OS-II运行在系统模式下,没有SPSR。堆栈初始化、任务切换时保存和恢复寄存器都必须
严格按照图1的堆栈结构操作。由于ARM汇编没有直接将当前状态寄存器CPSR压栈的指令(类
似51汇编中PUSH PSW指令),所以必须先将R0压栈保护,再用R0当中间寄存器保存CPSR,这
样在保存任务堆栈时CPSR寄存器只能最后一个压栈,这也就是为什么CPSR不放在堆栈中高地址
的原因。
4.任务切换时寄存器的保护和恢复问题
不管是中断级任务切换还是任务级任务切换,发生切换需求时处理器都将脱离原先的系统
模式,进入IRQ异常模式或SVC异常模式。由于这两种异常模式使用自己独立的SP(R13)、
LR(R14)物理寄存器,进入异常时当前SP指针已经不是刚才指向任务堆栈的SP指针,当前
LR也不是刚才系统模式下的LR寄存器,所以我们必须想个办法保存刚才系统模式下的
R0-R12、LR、CPSR和指向下条指令地址的PC,使用的堆栈必须是系统模式下SP指向的任务
堆栈,同时还要保证异常模式下的堆栈恢复原样不发生内存泄漏。操作上为保证压栈的是中断
刚发生时系统模式下寄存器的值,程序采用先用异常模式堆栈过渡,再切换模式,分批保存的
策略。
图5.2两种模式下的可见寄存器
图5.2为系统模式和IRQ模式下的寄存器表。因为OSStartHighRdy()、OSCtxSw()、
OSIntCtxSw()、OSTickISR()四个汇编程序中保存和恢复寄存器的程序部分有高度相似性,东南大学硕士学位论文
38
所以下面就以OSTickISR()程序开始和结尾部分的代码为例,说明具体操作过程:
OSTickISR
stmfd sp!,{r0-r3};将r0-r3压入irq堆栈
mov r1,lr;r1=r14_irq
mrs r0,cpsr;切换到sys模式
orr r0,r0,#0x1f
msr cpsr_c,r0
sub r1,r1,#4;r1微调
str r1,[sp,#-4]!;返回地址压入任务栈
stmfd sp!,{r2-r12,lr};压r2-r12和lr
mrs r0,cpsr;切换到irq模式
bic r0,r0,#0x1f
orr r0,r0,#0x12
msr cpsr_c,r0
ldmfd sp!,{r0-r3};r0-r3弹出irq栈
mrs r3,spsr;r3=spsr_irq=中断发生前的cpsr
mrs r2,cpsr;切换到sys模式
orr r2,r2,#0x1f
msr cpsr_c,r2
stmfd sp!,{r0,r1};将上次未压的r0-r1压栈
str r3,[sp,#-4]!;最后保存cpsr
……
……;其余代码
……
ldmfd sp!,{r0};从任务堆栈中恢复所有寄存器
msr cpsr_cxsf,r0
ldmfd sp!,{r0-r12,lr,pc}
5.2 uC/TCP-IP介绍
uC/TCP-IP是一个精简的、可靠的高性能TCP/IP协议栈。使用uC/TCP-IP可以快速配置网络选
项,以最快时间推出产品。
uC/TCP-IP具有如下特性:
高可读性的源代码。uC/TCP-IP提供高质量的源代码,保持Berkeley4.4套接字接口,使用
ANSI C书写。
可移植性。uC/TCP-IP可以基于16位、32位甚至某些64位CPU。
高性能。uC/TCP-IP专为嵌入式系统需求设计,拥有最短的临界段和可选的运行时有效性
检查。采用0拷贝缓存管理提供最佳性能。第五章基于uC/OS-II的软件设计
39
可裁减、可固化。uC/TCP-IP允许用户调整内存分配,可以配置包括所需要的网络模块。
不使用的模块不被编译,以节省嵌入式系统的存储器需求。
网络。uC/TCP-IP当前支持以太网控制器,能很容易地移植到任何网络控制器上。
RTOS需求。uC/TCP-IP需要RTOS支持,或者任务调度核心和信号量支持。uC/TCP-IP包
括uC/OS-II的所有源代码接口,但是很方便移植到其他的RTOS上去。
图5.3 uC/TCP-IP家族层次图
图5.3为uC/TCP-IP协议家族的层次图。从下往上依次是硬件、操作系统、协议栈、应用。对
应于TCP/IP模型的网络接口层、互联网层、传输层和应用层。TCP/IP的模型如图5.4所示。
图5.4 TCP/IP模型
其中网络接口层详细指定如何通过网络实际发送数据,包括直接与网络媒体(如同轴电缆、光
纤或双绞铜线)接触的硬件设备如何将比特流转换成电信号。
互联网层详细指定如何通过网络实际发送数据,包括直接与网络媒体(如同轴电缆、光纤或双
绞铜线)接触的硬件设备如何将比特流转换成电信号。
传输层提供主机之间的通讯会话管理。定义了传输数据时的服务级别和连接状态。
应用层定义了TCP/IP应用协议以及主机程序与要使用网络的传输层服务之间的接口。
图5.5列出了uC/TCP-IP支持的基本网络协议,都是最常用的、最基本的、不可缺省的传输层
协议。东南大学硕士学位论文
协议描述
NIC/IF网络接口(以太网)
ARP网络地址到物理地址映射
IP网际协议
ICMP差错与控制报文
UDP用户数据报协议
TCP传输控制协议
Sockets BSD套接字API
图5.5 uC/TCP-IP支持的基本网络协议
协议描述
uC/DHCPc动态主机配置协议(客)
uC/DNSc动态域名解析(客)
uC/TFTP简单文件传输协议(客/服)
uC/FTP文件传输协议(客/服)
uC/HTTPs超文本传输协议(服)
uC/TELNETs远程登录协议(服)
uC/SNTPc简单网络时间协议(客)
图5.6 uC/TCP-IP可选协议
图5.6为uC/TCP-IP可选协议,主要是应用层协议。实际使用时可根据需要裁减甚至全部去除。
协议最大(KB)最小(KB)
NIC 2.25 2.1
IP/ARP/ICMP 42 18
UDP 3.6 2.1
TCP 15 10
BSD Sockets 18 10
总计81 42.2
图5.7 uC/TCP-IP内存占用图
可裁减性是uC/OS-II和uC/TCP-IP一大特性,通过裁减可以节省部分存储空间,去除不必要的
功能。uC/TCP-IP内存占用如图5.7所示。
<< 上一页 [11] [12] 下一页
嵌入式LED显示屏控制系统应用研究 第11页下载如图片无法显示或论文不完整,请联系qq752018766