基于uCOS_II的以太网移植实例

合集下载

4、基于uCOS-II操作系统的移植实验

4、基于uCOS-II操作系统的移植实验

实验目的
内核的主要结构。 2.掌握将uC/OS-II 内核移植到ARM7 处 理器上的基本方法。
1.了解uC/OS-II
实验工具
实验平台 ADS1.2 超级终端
实验原理
所谓移植,指的是一个操作系统可以在某
个微处理器或者微控制器上运行。 设计的语言 C:主要开发工具 汇编:读写处理器、寄存器时只能通过汇 编语言来实现

C语言函数


后5个函数为接口函数,可以不加代码
uC/OS-II的启动
void main (void) { OSInit(); // 初始化uC/OS-II
. 通过调用OSTaskCreate()或 OSTaskCreateExt()创建至少一个任务; . OSStart(); //开始多任务调度,永不返回
所涉及到的函数

汇编函数

OSStartHighRdy() OSCtxSw() OSIntCtxSw() OSTickISR()
void void void void void void void *OSTaskStkInit (void (*task)(void *pd),void *pdata, *ptos, INT16U opt) OSTaskCreateHook (OS_TCB *ptcb) OSTaskDelHook (OS_TCB *ptcb) OSTaskSwHook (void) OSTaskStatHook (void) OSTimeTickHook (void)
}
基于uC/OS的应用开发
void YourTask (void *pdata)
{ /* 用户代码 */
OSTaskDel(OS_PRIO_SELF); }

UCOS-II在LPC1768基于固件库2.0下的移植

UCOS-II在LPC1768基于固件库2.0下的移植

移植UCOS-II-V291到LPC1768(基于LPC17XX V2.0固件库)( 基于RealView MDK )Create:LMY@2012.08.01前言:我从2011年年初开始玩LPC1768,在公司做过几个LPC1768的小项目,都是基于UCOS-II-V2.86操作系统和LPC17XX V2.0固件库(还有的基于uIP1.0以态网协议栈),产品运行稳定,芯片级操作也十分方便(毕竟是基于固件库操作,不用管那些复杂的寄存器),在官网看到不知何时出了UCOS-II-V2.91,于是准备应用本版本编写今后的程序,移植时,有意留心写下这篇移植步骤,希望对初学者有帮助。

一、移植前的准备工作下载所需文件:1、在LPCWARE官网下载LPC175x_6x CMSIS-Compliant Standard Peripheral Firmware Driver Library (LPC175X,LPC176X固件驱动库),下载地址链接:/content/nxpfile/lpc175x6x-cmsis-compliant-standard-perip heral-firmware-driver-library-keil-iar-gnu进入网址选择lpc175x_6x_cmsis_driver_library.zip下载(也可以在NXP官网下载,但本人去年下载的固件库编译时出现N多警告,看起不爽,自己改又不怕改出问题)2、在UCOS-II官网下载UCOS-II-V291源码(上面描述为2.89,但实际内核为2.91),下载地址链接:/page/downloads/source_code进入网址选择UC/OS-II下载,如下:3、在UCOS-II官网下载UCOS-II移植到STM32的Ports文件(用于修改移植) /page/downloads/ports/st/stm32选择基于IAR的V2.92的版本下载,如下:以上三个文件大约65M,如无法下载。

uC/OS—Ⅱ在TMS320F2812上移植的实现

uC/OS—Ⅱ在TMS320F2812上移植的实现

可剥夺 、 可裁剪并且 源代码 公 开. u C / O S —I I 广泛 应用 于工业控制领 域 , 通 过 了非 常 严 格 的 测 试 标
关 键词 :u C / O S—I I ; T MS 3 2 0 F 2 8 1 3 l 1 . 5 4 文献 标 志码 : A 文章 编号 : 1 6 7 2— 8 5 1 3 ( 2 0 1 3 ) 0 6—0 4 5 5— 0 4
( S c h o o l o f E l e c t i r c a l E n g i n e e i r n g S o u t h w e s t J i a o t o n g U n i v e r s i t y,C h e n g d u 6 1 0 0 3 1 , C h i n a )
u C / O S—I I 是 一 款 小 巧 但 功 能 强 大 的嵌 入 式 实时操作 系统 内核… , 它 的基本 特 点 是多 任 务 、
的处理 .
硬件 平 台 以 S E E D— D E C 2 8 1 2 V 2 . 1开 发 板 、
S E E D—X D S 5 1 0 P L U S仿 真器 及 P C机 来 搭 建 , 系 统 开发软 件选 择 C C S t u d i o v 3 . 3和 u C / O S V 2 . 9 1 .
wa s bu i l t ,a nd t h e o p e r a t i o n s y s t e m b a s e d o n u C/OS— I I ke r n e l wa s d e v e l o p e d. Fi r s t l y,t he b a s i c p r o bl e ms o f
内核进 行 该嵌 入 式 系统 的操 作 系统 开发 , 解 决 了移植 工作 之 前 的基 本软 硬 件 的 配置 问题 , 针 对 T M S 3 2 0 F 2 8 1 2编写了 C P U寄存 器处理函数和上下文切换 的关键代码 , 最后移植并测试 系统, 证 明 了移植 源代 码 的可 靠性 .

基于μC-OS-Ⅱ的嵌入式系统以太网通信功能的实现

基于μC-OS-Ⅱ的嵌入式系统以太网通信功能的实现
(5)当控制器传送完包以后,memory中的第一个字(16bit)被CSMA/CD写入相应的Status Word,然后将TX FIFO中的packet number移到TX completion FIFO,当TX completion FIFO不为空时产生中断。
(6) DSP接收到中断后,开始执行中断处理程序,它读入中断状态寄存器,如果产生发送中断,则从FIFO ports寄存器读入发送的包的Packet Number,并将它写到Packet Number寄存器。然后从内存中读人状态字(包括设置Pointer寄存器为TX,RD,AUTOINC,即0x6000,然后从数据寄存器中读入包的状态字),它是EPH寄存器的镜像,
,就可以直接使用了。
(2 )sys_mbox_t消息
LwIP使用消息队列来缓冲、传递数据报文,因此要在sys_arch中实现消息队列结构sys_mbox_t,以及相应的操作函数。
sys_mbox_new()/创建一个消息队列 sys_mbox_free( ) /释放一个消息队列
自己的网络设备实现驱动时应参照这个模板,根据相应的网络芯片来实现。本系统选用的网络芯片是由SMSC公司生产的自适应10M/100M第三代快速以太网控制器芯片LAN91C111,集成了SMSC/CD协议的MAC(媒体层)和PHY(物理层)。由于其灵活性和集成度高,具有较高的性价比。
(3)sys_arch_timeout函数
LwIP中每个与外界网络连接的线程都有自己的timeout属性,即等待超时时间。这个属性表现为每个线程都对应一个sys_timeout结构体队列,包括这个线程的timeout时间长度
,以及超时后应调用的timeout函数,该函数会做一些释放连接,回收资源的工作.timeout结构体已经由LwIP自己在sys.h中定义好了,而且对结构体队列的数据操作也由LwIP负责,我们所要实现的是如下函数:

UCOS_II在PC上的移植(详细版)

UCOS_II在PC上的移植(详细版)

UCOS II在PC上的移植网上移植教程有不少,不过对于初学者还是容易出问题,在这里将移植的详细过程记录如下,建议有兴趣的同学,找台电脑,从头试一遍,这样就算是入门了.一、准备工作在PC上移植ucos系统,因为ucos系统的源代码是c语言写的,因此编译C的软件必不可少。

在pc机上运行,还需要对pc的设备进行一空的控制,会用到汇编语言,因此汇编语言的编译软件也必不可少。

再有就是操作系统的源码,这些都准备好了,就可以进行移植了。

一些教材在移植是c编译环境选BORLAND C++ 4.5,汇编编译用TASM5.0,网络上能找到的移植方法基本都是基于这2个软件的。

这2个编译软件和操作系统源码可以通过网络下载。

图1 ucos移植的必备文件下载解压后,如图1所示。

下边开始安装,编译软件。

BORLAND C++和TASM5.0安装顺序不会影响到使用,在安装之前先来看下c盘的文件结构。

在图2中,c盘根目录下只有3个文件夹,当我们配置完成后,会多出4个文件夹。

图2 编译环境安装前c盘文件结构二、开始安装1.安装编译软件BORLAND C++ 4.5。

在BORLAND C++ 4.5安装文件包里找到找到install.exe文件并双击,默认的安装路径就C:\BC45。

因此安装时,可以用默认设置一直继续,安装过程如图3所示(注意安装包里还有一个setup文件,请不要用它来安装)。

图3 bc4.5安装界面2.安装汇编编译软件TASM5.0(1)这一步如果不小心,很容易安装不正确。

先在C盘建立一个名为TASM的文件夹,然后把TASM5.0安装文件里的所有文件都复制进去。

如图4所示,双击图4中的install 文件开始安装。

图4 TASM5.0安装(2)在弹出的界面按回车键继续,出现安装选择文件界面,将默认的A改为C如图5所示。

图5 修改盘符(3)按回车键继续,出现一个路径设置的界面,继续按回车键,出现安装配置界面如图6所示。

实验一 uCOS-II的移植

实验一 uCOS-II的移植

实验一uC/OS-II的移植1.实验目的(1)理解uCOS-II实时内核的工作原理;(2)熟悉uCOS-II在XS128上的移植过程;(3)掌握uCOS-II移植的细节。

2.实验任务(1)观察示例程序中的代码,体会实时操作系统与前后台程序的不同之处。

(2)完成由前后台程序编程到基于实时操作系统编程的思想转变。

3.预习要求(1)参考《嵌入式实时操作系统uCOS-II》(第2版),熟悉uCOS-II各模块的基本工作原理。

(2)参考《单片机与嵌入式系统开发方法》第9章内容以及《uCOS-II移植说明文档》。

熟悉uCOS-II在XS128上的移植过程。

4.实验步骤(1)打开示例程序,观察程序结构。

(2)识别出哪些是与硬件无关的文件,哪些是移植需要修改和添加的文件。

(3)打开OS_CPU.H文件,该文件定义CPU的数据类型,定义相关的宏。

打开OS_CPU_C文件,分析文件里各个函数的作用。

这两个文件是与CPU特性有关的文件。

(4)分别打开OS_CFG.H, INCLUDES.H. OS_CFG.H这三个文件,了解这三个文件的作用。

用户根据自己的应用系统来定制合适的内核服务功能.包括两个文件:OS_CFG.H, INCLUDES.H. OS_CFG.H是来配置内核, 用户根据需要对内核进行定制, 留下需要的部分, 去掉不需要的部分, 设置系统的基本情况. 比如系统可提供的最大任务数量, 是否定制邮箱服务, 是否需要系统提供任务挂起功能, 是否提供任务优先级动态改变功能等等;头文件INCLUDES.H为整个实时系统程序所需要的文件,包括了内核和用户的头文件。

(5)修改.prm文件中的中断向量,将其中的ROM_C000 = READ_ONLY DATA_NEAR IBCC_NEAR 0xC000 TO 0xFEFF;改为ROM_C000 = READ_ONLYDATA_NEAR IBCC_NEAR 0xC000 TO 0xEEFF;将结尾处原有的VECTOR 0 _Startup;改为VECTOR ADDRESS 0xEFFE _Startup;再添加上VECTOR ADDRESS 0xEFF6 OSCtxSw;VECTOR ADDRESS 0xEFF0 OSTickISR两个中断向量。

关于UCOS-Ⅱ的移植

关于UCOS-Ⅱ的移植

关于UC/OS-II的移植网上介绍的已经很多了,比较流行的几款处理器(例如ARM)在网上都可以直接下载移植好的代码。

由于最近选修了一门嵌入式系统的课,用的处理器是EPSON公司的S1C33系列,做实验的时候要进行操作系统的移植,这个周末花了一天半的时间学习了一下,因为毕业设计的时候做过ARM 上的移植,于是将两者比较了一下,给出一般的移植要点。

由于将来实验还要设计到GUI的移植以及文件系统的移植和网络协议的移植,我会将自己的学习笔记都记录下来。

大家下载到源码后,针对Intel 80x86的代码在uCOS-II\Ix86L目录下。

代码是80x86实模式,且在编译器大模式下编译的。

移植部分的代码可在下述文件中找到:OS_CPU.H, OS_CPU_C.C, 和OS_CPU_A.ASM。

大家可以参考这个例子,对它进行修改。

INCLUDES.H 是主头文件,在所有后缀名为.C的文件的开始都包含INCLUDES.H文件。

使用INCLUDES.H 的好处是所有的.C文件都只包含一个头文件,程序简洁,可读性强。

缺点是.C文件可能会包含一些它并不需要的头文件,额外的增加编译时间。

与优点相比,多一些编译时间还是可以接受的。

用户可以改写INCLUDES.H文件,增加自己的头文件,但必须加在文件末尾。

//////////////////////////////////////////////////////////一、(1)OS_CPU.H文件的移植(针对S1C33209)//////////////////////////////////////////////////////////OS_CPU.H 文件中包含与处理器相关的常量,宏和结构体的定义。

#ifdef OS_CPU_GLOBALS#define OS_CPU_EXT //全局变量#else#define OS_CPU_EXT extern#endif//////////////////////////////////////////////////////////由于不同的处理器有不同的字长,µC/OS-II的移植需要重新定义一系列的数据结构。

uCOS-II移植实验

uCOS-II移植实验

17

基础知识
OS_CPU.S的移植 -OSStartHighRd
OSStartHighRd()函数是在OSStart()多任务启动之后,从最高优先 级任务的TCB控制块中获得该任务的堆栈指针sp,通过sp依次将cpu现 场恢复,这时系统就将控制权交给用户创建的该任务进程,直到该任 务被阻塞或者被其他更高优先级的任务抢占cpu.该函数仅仅在多任务 启动时被执行一次,用来启动第一个,也就是最高优先级的任务执行.
void OSIntCtxSw(void) { need_to_swap_context = 1; }
12

基础知识
OS_CPU.S的移植 -时钟节拍中断服务函数
时钟节拍是特定的周期性中断.这个中断可以看作是系统 心脏的脉动. 时钟的节拍式中断使得内核可以将任务延时若干个整数时 钟节拍,及当任务等待事件发生时,提供等待超时的依据. 时钟节拍率越快,系统的额外开销就越大.中断之间的时 间间隔取决于不同的应用,本系统使用S3C44B0的timer 0 作为时钟节拍源,产生间隔10mS的时钟节拍. OSTickISR()就是时钟节拍中断服务函数,也就是S3C44B0 的timer 0的中断处理函数.
jx44b0实验系统教案ucosii移植实验jx44b0实验系统教案ucosii移植实验武汉创维特信息技术有限公司201969提纲11113333222244445555基础知识实验目的实验内容预备知识实验设备6666实验过程7777实验报告要求实验目的实验目的了解ucosii内核的基本原理和主要结构掌握将ucosii内核移植到arm处理器上的基本方法掌握ucosii下基本多任务应用程序的编写实验内容实验内容学习ucosii再arm处理器上的移植过程编写简单的多任务应用程序同时实现跑马灯和数码管显示的功能预备知识预备知识了解嵌入式操作系统的构架以及具体的ucosii的组成了解操作系统的移植方法实验设备实验设备jx44b0教学实验箱adt1000仿真器和adtide集成开发环境串口连接线基础知识ucosii概述ucosii在特定处理器上的移植工作绝大部分集中在多任务切换的实现上因为这部分代码主要是用来保存和恢复处理器现场许多操作如读写寄存器操作不能用c语言只能使用特定的处理器的汇编语言来完成
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于μC/OS_II的以太网移植实例目录第一章以太网移植准备工作 (2)1.1 硬件平台 (2)1.2 软件平台 (2)第二章以太网移植步骤 (4)2.1 文件结构以及文件说明 (4)2.2以太网文件移植 (5)2.3MDK中文件的导入 (5)2.4 程序中需要编辑的代码 (8)第三章以太网任务创建以及初始化流程 (11)3.1 以太网任务创建 (11)3.2 以太网初始化流程 (12)3.3 以太网数据收发流程 (12)第四章测试以太网连接以及任务间通信 (14)4.1Ping命令测试 (14)4.2 网络调试助手测试 (14)第一章以太网移植准备工作以移动基站的电表管理系统为背景,探讨基于μC/OS嵌入式系统的以太网移植方法。

移动基站电表管理系统终端的基本功能就是上位机通过以太网发送命令或数据给终端,终端收到后,再通过485通信对电表执行相应的动作,最后,终端把得到的信息处理后再次通过以太网上传回来。

这里重点是把以太网协议栈移植到程序中来,以创建一个以太网通信任务。

1.1 硬件平台硬件平台是主芯片为STM32F107VC的金牛开发板,开发板上已集成有以太网功能模块和RS485功能模块。

只是在开发板上RS-485与RS-232接口共用了微处理器的接收串口,需要设置JP4,且配置为1-2,如表1.1所示。

金牛开发板支持两种以太网接口模式,一种是MII接口模式,另一种是RMII接口模式。

这里选用MII接口模式,根据表1.2对跳线JP2、JP6、JP7、JP8、JP12进行相应的配置。

1.2 软件平台软件平台为RVMDK软件。

RVMDK是由ARM编译器RVCT与Keil的工程管理、调试仿真工具集成,RVMDK是业界最好的Cortex-M3开发工具之一,它拥有流畅的用户界面与强大的仿真功能,是一款非常强大的ARM微控制器开发工具。

移植前需要熟悉RVMDK软件的使用。

移植过程中需要用到如图1.1和图1.2所示文件,一个是基于μC/OS_II的移动基站电表管理系统终端程序,另一个是基于μC/OS_II系统以太网移植文件。

图1.1 电表系统终端程序文件夹图1.2 需要移植的以太网文件夹第二章 以太网移植步骤以太网的移植方法需要从三方面着手,首先分清电表管理系统终端文件和以太网文件层次结构;其次掌握以太网文件的移植过程以及在MDK 软件中如何把工程文件导入过程;最后明确以太网运行尚需添加的相应代码。

2.1 文件结构以及文件说明基于μC/OS_II 的移动基站电表管理系统终端程序主文件夹如图2.1所示,文件夹中包含了整个工程项目文件。

主文件夹中包含了如图2.2所示的四个文件夹。

Lis 和Obj 文件夹中是MDK 软件编译时生成的临时文件;MDK 文件夹中主要包含MDK 工程的启动文件;Source 文件夹包含了整个工程的源文件。

Source 文件夹中包含了如图2.3所示的四个文件夹。

App 文件夹中为用户的应用文件;CMSIS 文件夹主要包含STM32芯片内核启动文件;STM32F10x_StdPeriph_Driver 文件夹包含了STM32内部及外围器件的驱动文件;μC/OS_II 文件夹是μC/OS_II 系统源文件夹,包含了μC/OS_II 系统运行所需要的全部文件。

基于μC/OS_II 系统的以太网移植文件夹如图2.4所示,文件夹中包含了整个以太网协议栈文件和以太网驱动文件。

以太网主文件中包含了如图2.5所示的四个文件夹。

efsl 文件夹包含的文件功能是对输出文件的操作管理;STM32_ETH_Driver 文件夹包含STM32芯片中以太网的驱动文件;APP 文件夹中是用户对以太网初始化配置所写的文件;lwip-1.3.1文件夹包含整个以太网协议栈文件。

lwip-1.3.1文件夹包含了如图2.6所示的三个文件夹。

Doc 文件夹是作者写的一些说明性文本文件;port 文件夹包含以太网协议栈的接口文件;src 文件夹包含了以太网协议栈源文件。

图2.2 主文件夹中包含的文件夹 图2.3 Source 文件夹中包含的文件图2.4 以太网移植主文件夹 图2.5 主文件夹中包含的文件夹 图2.1 工程项目主文件夹src 文件夹中包含了如图2.7所示的四个源文件。

Api 文件夹中包含了以太网协议栈的应用接口文件;core 文件夹中包含了以太网协议栈最核心的文件,即以太网的内核文件;include 文件夹中是以太网协议栈的头文件。

2.2 以太网文件移植首先,将以太网文件夹中的efsl 、lwip-1.3.1、STM32_ETH_Driver 三个文件夹复制到Source 文件夹中。

复制过程如图2.8所示,复制后Source 文件夹中的文件如图2.9所示。

其次,将以太网文件夹中APP 文件夹里的四个文件复制到Source 文件夹中APP 文件夹里。

复制过程如图2.10所示,复制后APP 文件夹中的文件如图2.11所示。

2.3 MDK 中文件的导入首先,打开MDK 工程,进入文件添加界面,新建LWIP/Port 、LWIP/Source 、efsl 、图2.8 需要移植的文件夹 图2.9 Source 文件夹中的文件夹 图2.6 lwip-1.3.1文件夹中所包含的文件夹 图2.7 Src 文件夹中包含的文件夹 图2.10 以太网中APP 文件夹需要移植的文件 图2.11 Source 中APP 文件夹里的文件 图2.12 MDK 文件夹添加STM32_ETH_Driver 这四个文件夹,新建文件夹结果如图2.12所示。

其次,将刚刚移植过来的文件分类添加到各个工程文件夹中。

LWIP/Port 文件夹中添加文件结果如图2.13所示。

LWIP/Source 文件夹中依次添加如图2.14、图2.15、图2.16、图2.17所示文件。

ipv6、snmp 文件夹中的文件没用到,可以不添加这两个文件夹里面的文件,但如果需要可以选择添加。

LWIP/Source 文件夹中添加的文件结果如图2.18所示。

图2.14 Core 文件夹中需要添加的文件 图2.15 Ipv4文件夹中需要添加的文件 图2.16 netif 文件夹中需要添加的文件 图2.17 api 文件夹中需要添加的文件 图2.18 LWIP/Source 文件夹中添加后的文件 图2.13 LWIP/Port 文件夹需添加的文件Efsl文件夹中依次添加如图2.19、图2.20所示文件。

图2.19 efsl文件夹中需要调节的文件图2.20 efsl文件夹中需要调节的文件Efsl文件夹中添加的文件结果如图2.21所示。

图2.21 efsl文件中添加后的文件图2.22 STM32_ETH_Driver中需要添加的文件STM32_ETH_Driver文件夹中添加如图2.22所示文件,STM32_ETH_Driver文件夹中添加的文件结果如图2.23所示。

图2.23 STM32_ETH_Driver中添加后的文件图2.24 App文件夹中需要添加的文件App文件夹中添加如图2.24所示两个文件,APP文件夹中添加的文件结果如图2.25所示。

以太网移植文件全部添加到MDK工程文件夹中后,其MDK工程文件夹结构如图2.26所示,再点击全部保存后,以太网移植文件就全部导入到MDK工程文件夹中来了。

图2.25 App文件夹中添加后的文件图2.26 MDK工程文件结构以太网移植文件全部导入到MDK工程文件夹之后,最后,还需把以太网移植文件所用到的头文件的路径添加到工程中来。

其添加的头文件路径过程如图2.27所示。

图2.27 MDK中包含的头文件到这一步已经完成了以太网文件的导入,下面只需编译一下,检查文件的导入是否正常。

其编译结果如图2.28所示,零错误和零警告提示,表明编译通过。

但需值得注意的是要把Spi.c文件添加到STM32库里去,因为efsl对文件操作时,需要用到SPI中的函数。

图2.28 MDK编译结果2.4 程序中需要编辑的代码第一处:以太网接收数据是通过中断方式接收的,需要编写以太网中断函数。

其中断函数编写如图2.29所示。

中断函数中调用了如图2.30所示头文件中的函数,在中断文件中需要把下面两个头文件包含进来。

第二处:主函数中需对以太网硬件进行初始化,初始化位置如图2.31所示。

初始化函数需要自己写,由于程序中已经写好了,直接调用就行了,但值得注意的是需把如图2.32所示的头文件包含进来。

第三处:创建其它分任务之前,需要初始化LWIP 通信协议栈,初始化位置如图2.33所示。

LWIP 初始化函数需要自己写,由于程序中已经写好了,直接调用就行了,但值得注意的是需把如图2.34所示的头文件包含进来。

第四处:程序中用到了printf 函数(对字符串进行格式化输出),需在串口文件中添图2.29 以太网中断函数 图2.30 中断文件中需要包含的头文件 图2.31 以太网硬件初始化调用 图2.32 主文件中需要包含的头文件 图2.34 C 文件中需要包含的头文件 图2.33 LWIP 协议栈初始化调用加如图2.35所示一个函数。

此函数用到了C文件标准库,需要把标准库头文件包含进来并在工程设置选项中把“Use MicroLIB”勾上,其操作过程如图2.36、图2.37所示。

图2.35 fputc函数图2.36 C文件中需要包含的头文件图2.37 MDK选项中的设置到这一步,程序中需要修改的部分基本上完成。

最后,把工程编译一下,检查一下程序修改是否有错。

其编译结果如图2.38所示,零错误、零警告提示,表明程序修改无误。

图2.38 MDK编译结果第三章 以太网任务创建以及初始化流程在完成以太网移植且并对以太网硬件和协议栈进行了初始化之后,还不能进行以太网通信。

在μC/OS 系统中进行以太网的通信还必须先创建一个以太网任务并且把任务添加到μC/OS 系统中的任务列表中来。

以太网协议栈比较复杂,一下比较难理解其工作过程,这里也只是对以太网的通讯过程进行简单的描述,以求快速入门。

3.1 以太网任务创建以太网任务的创建分三步完成。

第一步:编写一个以太网任务函数。

函数功能能够创建一个新的TCP 连接;绑定IP 地址和端口号;监听TCP 的连接;等待TCP 连接。

如果有客服端请求连接则建立TCP 连接,否则继续等待TCP 连接。

编写的以太网任务函数如图3.1所示。

第二步:定义以太网任务堆栈空间大小和任务优先级,定义结果如图3.2、图3.3所示。

第三步:将创建的以太网任务添加到μC/OS 操作系统中的的任务列表中去,其添加结果如图3.4所示。

图3.2 以太网任务空间大小定义 图3.3 以太网任务优先级定义图3.1 以太网任务函数图3.4 以太网任务的添加任务添加完成之后,只需编译一下,检查一下以太网任务创建是否正确。

相关文档
最新文档