基于S3C2440的LWIP-1.3.0和DM9000在UCOS-II-2.8.6上的移植

发布时间:2024-08-21  

经常在Linux上跑,一时间跳到UCOS,感觉有点不习惯。首先是编译器,GCC是个不错的选择,但GDB调试太麻烦。ADS和仿真器结合是个十分不错的调试环境,于是,将代码就搬到ADS上,这下完全脱离Linux,整个开发过程都在Windows进行。其实是UCOS太简洁了,时钟、接口很多都需要自己开发…小弟对UCOS不是很熟,下面是移植过程的一些小结,希望对有需要的朋友带来些帮助。关于UCOS在S3C2440上的移植,可以参考《uCOS-II在S3C2440上的移植》一文。
1.
寻找最新代码,总结前辈经验,就是下载LWIP的源代码和Michael Anburaj基于S3C2410的移植版。
http://download.savannah.nongnu.org/releases/lwip/contrib-1.3.0.zip
http://geocities.com/michaelanburaj/downloads/lwip_ucos_1.11.zip
http://download.savannah.nongnu.org/releases/lwip/lwip-1.3.0.zip
2.
解压缩,整理工程代码。
LWIP-1.3.0独立一个目录,与mcu相关的移植移植文件放置在s3c2440/lwip目录。另外dm9000的驱动也防止在与mcu相关的目录s3c2440/dm9000。在app目录添加一个简单的http server文件httpserver-netconn.c(从contrib-1.3.0.zip中提取)。
3.
添加lwipopts.h
1.3.0版的LWIP将配置文件独立出来,对组件的配置十分方便。首先定义LWIP_PROVIDE_ERRNO,让LWIP自己提供错误号。然后是TCPIP_THREAD_STACKSIZE栈大小和TCPIP_MBOX_SIZE邮箱大小。接着是LWIP进程的优先级,主要有TCPIP_THREAD_PRIO(TCPIP任务,LWIP核心)和DM9000_THREAD_PRIO(网络芯片轮训任务,这里没采用中断方式接收)。
另外,还有些十分重要的三个参数:MEM_ALIGNMENT、ETH_PAD_SIZE和TCP_MSS。MEM_ALIGNMENT指定内存池分配的地址对齐字节,在S3C2440上访问32位地址需4字节对齐。ETH_PAD_SIZE指定以网络包头部的填充大小,否则也会引起地址对齐问题。关于这部分,可以参考《LWIP-1.3.0在S3C2440平台UCOS-II-2.8.6系统上的移植过程DEBUG》一文。最后一个参数是TCP_MSS,指定网络包的分段大小,主要目的是将大包切小,变成一个个的小包。奇怪的是,小包除了效率低点,应该不会导致通讯失败的呀?经过部分测试,切割后的小包偶尔会丢失,这里没有深入追踪,欢迎朋友们帮忙分析一下。
包大了,顺便把LWIP的缓冲也设大一点,充分利用S3C2440配置的64M内存。
#define TCP_SND_BUF
2048
#define MEM_SIZE
2048
#define MEMP_NUM_PBUF
32
4.
添加网络接口
我的开发板上配置的网络芯片是DM9000,在U-BOOT上已工作得很好。所以,直接借U-BOOT的驱动过来,重新包装一下,OK。现在先来看看LWIP需要的网络接口,主要参考lwip-1.3.0netifethernetif.c文件,分别是初始化接口ethernetif_init()、包发送接口low_level_output()和包接收接口ethernetif_input()。
其中ethernetif_init()负责网络的接口的初始化,如底层收发包函数、MAC地址和硬件初始化等,另外,网络的接收采用轮训方式,这里还需创建一个定时收包的任务sys_thread_new('DM9000IN', poll_input,…)。ethernetif_input ()就是轮训任务调用的收包函数,负责查询是否有以太包,有则将其传递到ethernet_input(p, netif),然后再分发到各个协议,如ARP,IP,PPP等。
low_level_output()就是负责将上层传来的网络包通过DM9000发送出去。
5.
重新包装DM9000驱动
上面提到的LWIP网络接口与DM9000的沟通需要以下几个函数(也分为初始化、接收和发送三类):
int dm9000_eth_init(struct netif *bd);
void dm9000_eth_send(volatile void *, int);
int dm9000_eth_send_done(int);
int dm9000_eth_rxlen(void);
int dm9000_eth_rx(U8 *rdptr, U16 RxLen);
int dm9000_drop_frame(U16 RxLen);
其中,只有发送和接收两个函数需要改动。LWIP上层传给low_level_output()的数据包,将根据MSS和MTU等值切割成一个个的小包,分别填充到链表pbuf里。

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    GPS、PDA、数字电视等手持设备的主要方案处理器提供方韩国Sumsung公司,最近又新推出ARM处理器S3C2450、S3C6410芯片。这些平台又与S3C2440处理器......
    s3c2440之cache(2023-08-10)
    /s3c2410里面主要有一个arm920t的核,但同时包含几个协处理器,协处理器相当于一个处理器,帮助主CPU完成如浮点数运算,这儿讨论的cache及MMU、TLB就会用到协处理器CP15。CPU与协处理器......
    S3C2440,S3C2450和S3C6410的区别;作为GPS、PDA、数字电视等手持设备的主要方案处理器提供方韩国Sumsung公司,最近又新推出ARM处理器S3C2450、S3C6410芯片......
    提出了一种基于DM9000AE网络接口芯片和32位三星ARM9处理器S3C2440嵌入式系统的以太网接口的设计方案,并在Windows CE操作系统上开发移植了网络驱动程序实现网络的接入。 2. DM9000AE工作......
    领域的研究人员广泛关注,并在实际应用中展露出显着的优势。本文提出了一种基于DM9000AE网络接口芯片和32位三星ARM9处理器S3C2440嵌入式系统的以太网接口的设计方案,并在Windows CE操作......
    给出一种基于ARM 微处理器S3C2440与DSP专业运动控制芯片PCL6045BL构成的嵌入式四轴运动控制器。该运动控制器具有高性能、低成本、体积小、可独立运行等特点,可以满足运动控制系统高速、高精......
    ARM9嵌入式处理器S3C2440实现了远程图像光线监控系统;  对图像监控系统,用户常常提出这样的功能需求:希望能够监控距离较远的对象 这些对象有可能分布在郊区、深山,荒原......
    S3C2440嵌入式处理器为核心的远程图像无线监控系统设计;对图像监控系统,用户常常提出这样的功能需求:希望能够监控距离较远的对象。这些对象有可能分布在郊区、深山,荒原或者其他无人值守的场合;另外......
    ARM时钟初始化(2024-08-16)
    、配置LOCKTIME(使用默认值,不需要做)   2、设置分频系数   3、设置处理器为异步工作模式(如果FCLK=!HCLK,一般都不会相等)   4、配置FCLK 6410:   S3C6410......
    (U-Boot 源码包)和 u-boot-1.1.6_jz2440.patch(韦东山老师移植到 S3C2440 处理器的 patch 包)。 二、配置编译 U-Boot   1. 将下......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>