首页资源分类嵌入式系统 > LwIP在嵌入式Nios_软核处理器上的移植及应用

LwIP在嵌入式Nios_软核处理器上的移植及应用

已有 445117个资源

下载专区

文档信息举报收藏

标    签:LwIP在嵌入式

分    享:

文档简介

LwIP在嵌入式Nios_软核处理器上的移植及应用

文档预览

第 31 卷 第 5 期 2010 年 9 月 肇庆学院学报 JOURNAL OF ZHAOQING UNIVERSITY Vol.31, No.5 Sep. 2010 LwIP 在嵌入式 Nios II 软核处理器上的移植及应用 元泽怀 (肇庆学院 电子信息与机电工程学院, 广东 肇庆 526061) 摘 要 :Nios II 是 专 门 为 SOPC 设 计 的 一 种 软 核 CPU, 它 以 IP 核 的 形 式 提 供 给 嵌 入 式 设 计 者 . 它 的 可 配 置 特 性 给 嵌 入 式 系 统 设 计 带 来 了 更 大 的 灵 活 性 , 可 以 说 它 为 嵌 入 式 系 统 的 设 计 提 供 了 一 种 全 新 的 思 路 . 讨 论 了 LwIP 在NIOS II处 理 器 上 的 移 植 实 现 方 法 ,并 将 其 成 功 地 应 用 于 简 单socket服 务 器 的 设 计 中. 关 键 词 :LwIP; Nios II; 嵌 入 式 系 统 ; μC蛐OS II 中 图 分 类 号 :TP399 文 献 标 志 码 :A 文 章 编 号 :1009-8445(2010)05-0021-04 Nios II 处 理 器 是 用 户 可 随 时 配 置 和 构 建 的 32 位 指 令 集 和 数 据 通 道 的 嵌 入 式 系 统 微 处 理 器 IP 软 核 , 采 用 avalon 总 线 结 构 通信接口,带有增强的内存调试和软件功能,它可以与各种外 设 相 结 合 , 构 成 一 个 可 定 制 的 可 编 程 片 上 系 统 SOPC (System On a Programable Chip). 网 络 协 议 LwIP (Light weight Internet Protocol),即 轻 量 级 网 络 协 议 ,是 一 种 专 门 针 对 嵌 入 式 系 统 应 用 而 设 计 的 网 络 通 信 协 议,LwIP实 现 的 重 点 是 在 保 持TCP蛐IP协 议 主 要 功 能 的 基 础 上 减 少 对 RAM 的 占 用 , 一 般 它 只 需 要 几 十 Kbyte 的 RAM 和 40Kbyte 左 右 的 ROM 就 可 以 运 行 , 非 常 适 合 在 以Nios II 处 理 器 为 核 心 的 系 统 中 使 用.Nios II 处 理 器 系 统 的 网 络开发平台的系统模型如图1. 图1 Nios II 的 网 络 开 发 模 型 1 LwIP在Nios II上的移植 Altera使 用 μC蛐OS-Ⅱ RTOS 多 线 程 环 境 移 植 LwIP, 因 此 , 要 使 用 LwIP, 必 须 建 立 基 于 μC蛐OS - Ⅱ RTOS 上 的 C蛐C ++ 项 目 .Altera 对 LwIP的 移 植 是 基 于 Nios II 硬 件 抽 象 层 HAL 通 用网络设备模式的.通过这个模式,我们可以 自编新驱动程序去支撑目标媒体访问控制器 图2 Nios II软 件 模 型 (MAC),维 持HAL和socket API访 问 硬 件[1].Nios II软 件 体 系 结 构 见 图2. 1.1 初 始 化LwIP协 议 栈 在 调 用OSStart( )函 数 开 始μC蛐OS-Ⅱ调 度 程 序 前 ,必 须 先 初 始 化LwIP[2]. Lwip_stack_init( ),这 个 函 数 执 行 协 议 栈 设 置. init_done_func( ),这 个 函 数 在 栈 初 始 化 后 被 调 用 ,函 数 必 须 调 用lwip_devices_init( )初 始 化 所 有 安 装 的网络设备驱动程序,然后创建接收任务. lwip_devices_init( ), 这 个 函 数 说 明 了 所 有 在 system.h 文 件 里 定 义 的 已 安 装 的 网 络 设 备 驱 动 程 序 . 函 收 稿 日 期 :2010-07-15 作者简介:元 泽 怀 (1975- ) , 男 , 广 东 惠 来 人 , 肇 庆 学 院 电 子 信 息 与 机 电 工 程 学 院 高 级 实 验 师 , 硕 士 . 22 肇庆学院学报 第 31 卷 数 返 回 非0值 ,表 示 初 始 化 成 功.如 果 成 功 ,TCP蛐IP栈 是 可 见 的 ,然 后 就 可 为 程 序 创 建 任 务. get_mac_addr( )和 get_ip_addr( ),这 2 个 函 数 在 设 备 初 始 化 期 间 被 LwIP 系 统 代 码 调 用.这 些 函 数 是 LwIP 系 统 代 码 设 置 MAC 和 IP 地 址 所 必 需 的. 通 过 编 写 这 些 函 数 ,系 统 可 以 在 任 意 位 置 存 储 MAC 地 址 和 IP 地 址. 1.2 调 用 socket 接 口 一 旦 网 络 设 备 被 初 始 化 ,程 序 的 其 余 部 分 必 须 使 用 socket API 访 问 IP 栈. 要 使 用 socket API 建 立 和 IP 栈 对 话 的 新 任 务 ,必 须 使 用 sys_thread_new( ) 函 数 , 这 个 函 数 是 LwIP OS 移 植 层 创 建 线 程 的 一 部 分.sys_thread_new( )调 用 μC蛐OS-Ⅱ OSTaskCreate( )函 数 并 执 行 其 他 LwIP 指 定 的 动 作[3].我 们 可 以 通 过 在 应 用 程 序 里 加 入 语 句 #include ″lwip / sys.h″调 用 它. 1.3 在 Nios II IDE 里 配 置 LwIP LwIP 协 议 栈 有 很 多 配 置 选 项 , 这 些 选 项 可 以 通 过 使 用 lwipopts.h 文 件 里 的 #define 来 进 行 配 置 . Nios II IDE 集 成 开 发 环 境 提 供 了 一 个 图 形 化 的 用 户 接 口 GUI, 见 图 3. 通 过 GUI 可 以 配 置 LwIP 选 项 (也 就 是 修 改 lwipopts.h 文 件 里 的 #define) 而 不 必 编 辑 源 代 码 , 当 然 有 些 选 项 是 必 须 通 过 lwipopts.h 文 件才能改变的. 图 3 Light wight TCP蛐IP 栈 选 项 在 图 中 ,提 供 了 IP、TCP、ARP、UDP、DHCP 等 各 选 项 的 配 置 选 择 , 用 户 可 直 接 根 据 实 际 需 要 进 行 设 置.至 此 ,就 完 成 了 LwIP 在 Nios II 上 的 整 个 移 植 过 程[4]. 1.4 测试 完 成 上 面 的 移 植 修 改 工 作 后 , 就 可 以 在 μC蛐OS-Ⅱ 中 初 始 化 LwIP, 并 创 建 TCP 或 UDP 任 务 进 行 测试了.这部分是用 C 语言实现的.关键部分的代码和说明如下: main( )邀 OSInit( ) ; OSTaskCreate(lwip_init_task,&task1_data,&lwip_init_stk[TASK_STK_SIZE-1],0); OSTaskCreate(user_task,&task2_data,&user_stk[TASK_STK_SIZE-1],1); OSStart( ); 妖 主 程 序 中 , 创 建 了 Lwip_init_task 初 始 化 LwIP 任 务 ( 优 先 级 0) 和 user_task 用 户 任 务 ( 优 先 级 1). 1wip_init_task 任 务 中 除 了 初 始 化 硬 件 时 钟 和 LwIP 之 外 , 还 创 建 了 tcp ip_thread ( 优 先 级 3) 和 tcpecho_thread(优 先 级 4).实 际 上 tcp ip_thread 才 是 LwIP 的 主 线 程,多 线 程 的 Berkley API 也 是 基 于 这 个 线 程 实 现 的,即 上 面 的 tcpecho_thread 线 程 也 要 依 靠 tcp ip_thread 线 程 来 与 外 界 通 信. 第5期 元泽怀:LwIP 在嵌入式 Nios II 软核处理器上的移植及应用 23 编 译 下 载 运 行,用 ping ip 地 址 命 令 可 以 得 到 ICMP reply 响 应,用 telnet ip 地 址 30(登 录 30 号 端 口) 命 令 可 以 看 到 echo server 的 回 显 效 果.说 明 ARP、IP、ICMP、TCP 协 议 都 已 正 确 运 行. 2 应用实例 本 系 统 使 用 Nios II 开 发 板 进 行 应 用 程 序 的 调 试 , 开 发 板 以 微 控 制 器 EP1C6Q240C8N 为 核 心 ,外 扩 2MB FLASH 和 1MB SRAM 存 储 器 ,用 来 存 放 调 试 过 程 中 所 用 到 的 系 统 软 件 、用 户 代 码 和 数 据 . 该 开发板不含网卡部分,网卡由自己实现. 下 面 在 Nios II 处 理 器 系 统 上 设 计 了 一 个 简 单 的 socket 服 务 器 实 例 , 实 现 LwIP 功 能 , 构 建 一 个 嵌 入 式 网 络 开 发 平 台.该 socket 服 务 器 实 现 的 数 据 流 程 图 如 图 4. 图 4 简 单 socket 服 务 器 实 现 的 数 据 流 程 图 该数据流程图的工作过程是: (1)LwIP 软 件 组 件 接 收 网 络 数 据 包 (包 含 发 自 远 程 客 户 端 程 序 的 一 个 LED 命 令 ). (2)LwIP 通 过 TCP蛐IP 协 议 处 理 进 来 的 网 络 数 据 包 ,并 通 过 套 接 字 接 口 (socket API)将 数 据 包 提 交 给 socket server task. (3) 包 含 在 数 据 包 中 的 LED 命 令 被 提 取 并 发 给 LED 命 令 队 列 , 等 待 LED management tasks 进 行 处理. 测 试 时 ,可 以 根 据 个 人 的 网 络 设 置 情 况 改 变 开 发 板 的 IP 地 址 (本 测 试 中 IP 为 192.168.1.120, 端 口 为 30),应 用 程 序 编 译 下 载 运 行 后,在 Nios II IDE 的 console 窗 口 出 现 如 下 提 示 : Simple Socket Server starting up Static IP Address is 192.168.1.120 [sss_task] Simple Socket Server listening on port 30 说 明 简 单 Socket 服 务 器 已 准 备 就 绪 ,开 始 运 行. 用 ping ip 地 址 命 令 可 以 得 到 ICMP reply 响 应,用 telnet ip 地 址 30 (登 录 30 号 端 口 ) 命 令 可 以 看 到 socket 服 务 器 的 回 显 效 果.见 图 5. 这 时 , 输 入 相 应 的 数 字 , 开 发 板 上 相 应 的 LED 灯 就 闪 烁 . 在 Nios II IDE 的 console 窗 口 出 现 如 下 提示: [sss_handle_accept] accepted connection request from 192.168.1.113 [sss_handle_receive] processing RX data 24 肇庆学院学报 Value for LED_PIO_BASE set to 1. Value for LED_PIO_BASE set to 3. Value for LED_PIO_BASE set to 7. Value for LED_PIO_BASE set to 15. Value for LED_PIO_BASE set to 31. Value for LED_PIO_BASE set to 63. Value for LED_PIO_BASE set to 127. Value for LED_PIO_BASE set to 255. 说 明 ARP、IP、ICMP、TCP 协 议 都 已 正 确 运 行. 第 31 卷 图 5 简 单 Socket 服 务 器 的 响 应 窗 口 3 结束语 借 助 以 太 网 和 嵌 入 式 技 术,把 嵌 入 式 系 统 连 接 到 internet 上 ,已 成 为 嵌 入 式 系 统 今 后 发 展 的 一 个 重 要 的 方 向.本 文 的 创 新 点 是 在 Nios II 处 理 器 上 实 现 了 LwIP 网 络 协 议 的 移 植 ,并 成 功 应 用 于 简 单 socket 服务器的设计.该内容后续可应用于嵌入式系统的远程智能控制等网络开发. 参考文献: [1] 李良仁,彭雪峰.LwIP 协议栈在 NIOS II 系统中的移植[J].机电技术,2009 (4):25-28. [2] 张翠,邓志良.LwIP 协议栈在 μC蛐OS-II 上的移植和应用[J].微计算机信息, 2010(3):84-85. [3] 杨玉佳,李广军,郊志勇.基于 LwIP 的串口以太网协议转换器的设计与实现[J].电子设计应用,2009(3):63-65. [4] 时建雷,肖铁军.面向 LwIP 的 Nios II 网络驱动程序开发[J].微计算机信息,2008(24):36-38. The Porting of LwIP in Nios II soft-core Processor and its Application YUAN Zehuai (College of Electronic Information and Mechatronic Engineering, Zhaoqing University, Zhaoqing, Guangdong 526061, China) Abstract: Nios II is a kind of soft CPU designed for SOPC specially. For embedded system designer, it is a kind of IP core. Nios II has the characteristics of reconfiguration, which brings more flexibility to the designer. Nios II has offered a kind of brand-new train of thought to Embedded System designer. The porting of LwIP in Nios II Processor is discussed, and it is successfully applied to the design of a simple socket server. Key words: LwIP; NiosII; Embedded Systems; μC蛐OS II (责任编辑:徐生然)

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。