uIP其主要是为8位和16位系统设计的,程序在编写时就考虑到了移植问题。uIP的主要文件包括uip.c和uip_arp.c。
(1)移植的基本过程。
针对所用编译器的类型更改定义数据类型,底层RTL8019AS芯片的驱动和实现应用层代码,系统定时器接口等。下面分别予以说明。
数据类型的定义:
typedefunsignedcharu8_t;typedefunsignedshortu16_t;typedefunsignedshortuip_stats_t;由于KeilC编译器默认情况下的编译模式为small,变量的定义在内部RAM中,编译时编译模式应改为Large,即变量的定义在XDATA中。
(2)RTL8019AS的驱动。
主要包括以下内容。
①etherdev_init()完成系统上电初始化,包括设定RTL8019的物理地址和IP地址等,设定收发缓冲区的位置和大小等。
②etherdev_send()完成数据的发送。
⑨etherdev_read()完成以太网数据的接收。底层网络设备驱动程序与uIP协议栈通过两个全局变量实现接口:变量uip_buf为收发缓冲区的首地址;uip_len为收发的数据长度。
etherdev_send函数将uip_buf里的uip_len长度的数据发送到以太网上。recv函数将接收到数据存储到uip_buf中,同时返回uip—len的值。
④etherdev_timerO_isr()定时器1中断函数为系统提供时钟定时。
51系列单片机一般有2或3个定时器,本移植中选用定时器1产生定时时间,为ip_perioDIC()函数的执行提供基准,另外还对ARP表项,TCP连接超时等提供时间基准。
RTL8019AS初始化、收发包的详细过程在12.6节中已经详细介绍过,在此不再赘述。移植后的文件如下:
uIP的设置在uipopt.h头文件中。在该文件中用户根据具体的实际条件设置uIP的IP地址,MAC地址,网络掩码,网关地址。另外还包括可建立的最大连接数,端口是否启动UDP协议功能等,在具体的应用中可以参考uIP的说明文档,其中都有详细的说明。
关键字:uIP 51单片机 移植
引用地址:
uIP在51单片机上的移植
推荐阅读最新更新时间:2024-03-16 15:56
51单片机理通定时器输出PWM例程
开门第一话,授人以鱼不如授人以渔。简单介绍一下原理及程序过程。 通过定时中断翻转IO口电平。PWM波一个周期需要两次电平翻转,因为高电平时间与低电平时间可能不相对,所以定时器需要根据该电平状态的持续时间来负初值,也就是说,不能用常量。赋初值后启动定时器,中断时翻转IO口电平,实现PWM波的输出。 开门第二话,直接上代码。 IO口及变量定义 //定义IO口以及高低电平持续时间对应定时器初值的暂存变量 sbit PWM=P2^6; uint PWM_H=0; //高电平定时器初值 uint PWM_L=0; //低电平定时器初值 初始化部分,提供“周期+脉宽”和“频率+占空比”两种方式的初始化函数 //////
[单片机]
如何利用MCS-51单片机对周期波频率进行测量
对于周期波频率的测量方法很多,但大多是通过测量间接计算频率。本文介绍了用目前应用比较广泛的MCS-51系列单片机对周期波频率进行测量,并通过LED以数字形式直观地示出频率,实现测量的智能化,省去间接对频率计算的麻烦与错误。文章对其测量原理,设计和实现作了说明,介绍了主要程序,并进行了误差分析。 目前单片机广泛应用到国民经济建设和日常生活的许多领域,成为测控技术现代化不可缺少的重要工具。而本文适应这一发展趋势,把MCS-51系列单片机应用于对周期波频率的测量,并通过LED显示器自动显示出来,这对于频率的测量带来了极大的方便。 设计思想 利用施密特触发器将边缘缓慢变化的周期性信号如正弦波、三角波或任意形状的模拟信号变换成同频率
[单片机]
C8051单片机在变风量空调控制系统中的设计
C8051单片机在变风量空调控制系统中的设计 变风量(VariableAirVolume,简称VAV)空调系统是通过变风量箱去调节送入房间的风量和新回风混合比,并相应调节空调机组的风量或新回风混合比来控制某一空调区域温度的一种空调系统。变风量空调系统可以根据空调载荷的变化及室内要求参数的改变,自动调节空调送风量(达到最小送风量时调节送风温度),以满足室内人员的舒适要求或者其它的工艺要求。同时根据实际送风量自动调节送风机的转速,最大限度的减少风机动力、节约能量。与定风量空调系统相比,变风量空调系统具有节能性、舒适性、环保性、灵活性等优点。 2、硬件电路设计 2.1、风阀与水阀执行电路的设计 本控制器将温度、湿度、CO 2 传感器检
[单片机]
SQLite数据库移植
SQLite是一款轻型的数据库,它遵守ACID的关系型数据库管理系统,包含在一个相对小的C库中。它的设计目标是嵌入式系统,目前已经在很多嵌入式产品中使用,其占用资源非常低,在嵌入式设备中,只需要几百K的内存就够了。SQLite能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,还具有ODBC接口,比起MySQL、PostgreSQL这两款开源的著名数据库管理系统来,它的处理速度比他们都要快。同时,SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是一个零配置的数据库,这意味着与其他数据库不一样,它不需要在系统中配置。 下面就来讨论
[单片机]
linux内核移植之二 linux-4.1.4的移植过程
linux-4.1.4中已经有mini2440的驱动程序,所以移植工作比较少. 1. 分区表的修改 arch/arm/mach-s3c24xx/mach-mini2440.c中修改为分区表mini2440_default_nand_part使得分区于移植u-boot的分区定义一致,如下: 0 - 0x100000 1M u-boot 0x100000 - 0x140000 256K u-boot环境参数 0x140000 - 0x540000 4M linux内核 0x540000 - 最后 文件系统 2. 修改配置文件 cp arch/arm/configs/s3c2410_defconfig arch/arm/confi
[单片机]
基于AT89S51单片机的PID温度控制系统设计
温度控制技术不仅在工业生产有着非常重要的作用,而且在日常生活中也起着至关重要的作用。本文对系统进行硬件和软件的设计,在建立温度控制系统数学模型的基础之上,通过对PID控制的分析设计了系统控制器,完成了系统的软、硬件调试工作。算法简单、可靠性高、鲁棒性好,而且PID控制器参数直接影响控制效果。 1. 系统概述 1.1 系统总体结构 该系统利用AT89S51丰富的外设模块搭建硬件平台。系统的硬件电路包括:模拟部分和数字部分,基本电路由核心处理模块、温度采集模块、键盘显示模块及控制执行模块等组成。 1.2 系统工作流程 系统开始工作时,首先由单片机控制软件发出温度读取指令,通过数字温度传感器采集被控对象的当前温度
[电源管理]
mini2440_LCD_x35移植
从linux 2.6起引入了新一套的驱动管理和注册机制:platform_device 和piatform_driver. (platform代表平台);设备用platform_device表示,驱动用piatform_driver进行注册。 Linuxplatformdriver机制和传统的devicedriver机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platformdevice提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植性和安全性(这些标准接口是安
[单片机]
8051单片机指令系统的7种寻址方式解析
寻址方式:寻址就是寻找操作数的地址。绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。所谓寻址方式就是通过什么途径获取操作数的方式。根据指令操作的需要,计算机总是提供多种寻址方式。一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。 8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。 寄存器寻址 寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。例如:MOV A R1 这条指令的功能是把工作寄存器R1
[单片机]