《UIP在NIOS上的移植》
移植环境:Cyclone IV 开发板,网卡芯片为ENC28J60,浏览器(Firefox_24.0.0.5001a)
首先,需要了解网卡芯片ENC28J60,有中文版的说明书:http://wenku.baidu.com/link?url=79r8JOHiGAyAG9kX9-fOYIRh41jfSyRkxPIdAW9XIzdPjIT5Jbh8gjIobjcsIekhYm-4TiSqnXFd74e2tF1bE2WxUPUiEws0RfrDIw9pRKS
ENC28J60并不是一款标准的以太网PHY,它使用SPI协议,只支持10Mbps以太网速率。首先搭建NIOS的SOPC系统如下图:
系统时钟100MHz,程序运行在SDRAM中,跟ENC28J60相关的硬件连接,LAN其实是一个SPI,另外还有LAN_CS(片选),LAN_NINT(接收中断)。
时钟为TIMER,定时Period为1ms。

下图是系统的BDF原理图连接情况,PLL提供时钟,C0为系统时钟,C1为SDRAM时钟(有相位偏转-73度)

系统编译后,下载对应的SOF文件。
其次,我们要下载UIP的源代码,地址为:http://www.dunkels.com/adam/uip,现在UIP已经是ThingSqure(Contiki)的一部分。
下面对UIP进行移植,测试程序为uip提供的web_server程序在UIP的APP文件夹中。enc28j60的驱动程序为enc28j60.c和enc28j60.h

NIOS II 中主要修改这几个文件
tapdev.c:添加网卡驱动程序,别忘了初始化MAC地址(tapdev_init函数中)
uip-confi.h 对UIP的功能进行配置(使能#include "webserver.h")
clock_arch.c 里面有个UIP系统时间函数,全局变量g_runtime管理系统时间
下面开一个定时器来对g_rumtime进行计时。

编译程序后,run as nios ii hardware
程序运行后,用抓包工具(wireshark)NetAnalyzer查看数据包。
TCP三次握手,连接请求如下:







程序的下载地址为:
http://download.csdn.net/detail/wangyue2725/7423141
《UIP在NIOS上的移植》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- 大规模图的存储(前向星、next数组)
大规模图的储存 在信息学中,经常会遇到比较大规模图,使用指针固然是很好的方法,不过一有指针速度不如数组之说,二有指针不如数组稳定之说,三有,也是最重要的,指针不如数组来得方便,这也便是大多数Oier不 ...
- 上传文件到hdfs注意事项
我在MapReduceInput下创建CFItemSet文件夹,下面有itemSet.txt. 我想上传到cf下,然后想着hdfs上会显示cf/itemSet.txt. hdfs dfs -put i ...
- 【poj3017】 Cut the Sequence
http://poj.org/problem?id=3017 (题目链接) 题意 给出一个数列要求将它分割成许多块,每块的数的和不超过m,要求每块中最大的数之和最小. Solution 这道题真的很不 ...
- Hash_bzoj1862: [Zjoi2006]GameZ游戏排名系统
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- Jenkins实现测试环境到生产环境一键部署(Windows)
前言: 因为dotnet在发布站点后,然后再上传服务时,会因为各种的网速问题,导致站点瞬间挂掉!那么通过一键部署,先在测试站点测试好的文件,复制到正式站点上的一个缓冲区,进行预热配置,之后再本机进行文 ...
- centos7 建立虚拟目录
一.安装mysql,直接用yum安装即可,mysql在centos7.0版本中被mariadb替代了. 命令: yum install mysql-server mysql 安装好了,选择修改mysq ...
- 第三次个人作业——关于K米(Andorid)的案例分析
第三次个人作业--关于K米(Andorid)的案例分析 1.K米简介 官方网址:http://www.ktvme.com/ 2.评测 2.1.上手体验 带着找bug的心态,兴致勃勃地开始体验 K米.打 ...
- Logistic Regression分类器
1. 两类Logistic回归 Logistic回归是一种非常高效的分类器.它不仅可以预测样本的类别,还可以计算出分类的概率信息. 不妨设有$n$个训练样本$\{x_1, ..., x_n\}$,$x ...
- Enlisting multiple 1-phase aware participants in the same transaction
In some cases it may be necessary to enlist participants that aren't two-phase commit aware into a t ...
- Altium Designer 15 --- Make 3D PCB Library with Rhinoceros
in the mode of "渲染模式" in the mode of "着色模式" Principle 1 : In the mode of "着 ...