LWIP在STM32上的移植
本文做记录摘抄,加上自己的体会:
文章标题:STM32使用LWIP实现DHCP客户端
http://www.cnblogs.com/dengxiaojun/p/4379545.html
该文章介绍了几点,LWIP源码的内容。关键点:1、include下新建arch文件夹,在arch文件夹下的sys_arch.c多任务定时检测功能,配合的timer.c文件完成协议栈心跳抽水泵。
2、lwipopts.h文件是对协议栈的配置文件,内存大小设置、是否使用操作系统、是否使能DHCP功能。
3、netif文件夹下的ethernetif.c完成的是协议栈与网卡驱动衔接的功能。也就是说将LWIP协议栈移植适应不同的网卡芯片,这里就是重点需要更改的地方。
4、main函数中的LWIP_Polling函数就是一个定时轮训的过程,这样就维持了协议栈的正常工作。
下面是正点原子提供的《STM32 LWIP开发手册》的阅读记录。
一篇文档读几遍每一遍的阅读理解程度是不一样的,这应该是我第三遍读此文档,相信还要读几遍。
在第8页有张图:REF_Clk out模式时的REF_CLK时钟源。这张图上STM32F407与LAN8702之间的关系一清二楚了。STM32F407内置MAC层硬件,LAN8702是PHY层硬件。他们之间通过RMI总线连接。RMI总线非常简洁,就9根线。既然STM32F407驱动LAN8702,那么LAN8702提供了哪些接口供STM32F407使用了呢,主要的就是后面提到的BCR和BSR。控制寄存器和状态寄存器。对于一个网卡能有什么状态呢,也不过是网卡当前运行的速度。控制寄存器稍微多一些,比如提供回路测试功能。
STM32提供的库中对于PHY级寄存器的定义在stm32f4x7.h中,同理,STM32对PHY级芯片的初始化工作就再stm32f4x7.c中---Eth_Init()函数完成对PHY芯片的初始化。
stm32f4x7_eth_conf.h中有对PHY芯片的选择和配置,比如PHY芯片特殊功能寄存器的地址。
LWIP在STM32上的移植的更多相关文章
- 怎样把UCos-ii_在STM32上的移植
下载代码 stm32 标准外设库是 stm32 全系列芯片的外设驱动,有了它能够大大加速我们 开发 stm32. 首先从 st 公司的站点下载最新的 stm32 标准外设库,写本文时最新的版本号是 V ...
- FreeRTOS移植到STM32上的移植过程
所有的单片机都是顺序执行的,而对于多任务而言就显得力不从心了,虽然在一些小项目中可以通过定时器来实现,但这种实现方式没有实时性,一旦任务需要在规定时间内做出响应,那只能通过实时操作系统来完成了.在很多 ...
- KEIL MDK环境下uCOS-II在LPC17xx上的移植实例
1. 知识准备 要想对ucos-ii的移植有较深的理解,需要两方面知识: (1)目标芯片,这里是lpc17xx系列芯片,它们都是基于ARMv7 Cortex-M3内核,所以这一类芯片的ucos-ii移 ...
- STM32上移植ds1307笔记
PS:网上关于ds1307的资料最多还是基于51等单片机的,和stm32上还是略有差别,代码是参考了http://www.openedv.com/posts/list/20167.htm 但是他的代码 ...
- 基于STM32的uCGUI移植和优化
基于STM32的uCGUI移植和优化 首先在开始这个说明之前,要简要说明下具体的环境: 编译工具:MDK4.20 开发板:安富莱v2版开发板 调试器:JLink v8盗版 移植篇 相信大家有移植经验 ...
- Qt4.8.5在ARM9上的移植
Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...
- stm32上的Lava虚拟机开发进度汇报(1)
这几天我打算在stm32上做一个lava的虚拟机,只要160*80的黑白显示就行了,主要是想怀旧一下,嘿嘿. 目前的进度是图形显示和按键处理完成了,还有文本显示.文件处理.其他函数等. 当然,这都仅是 ...
- OpenCV在ARM上的移植
OpenCV在ARM上的移植 与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方 ...
- UCOSII在STM32F1上的移植
UCOSII在STM32F1上的移植 首先准备好一份STM32F1的工程.UCOSII源码. 在准备好的工程中新建一个"UCOSII"文件夹(或者取其它名字也行): UCOSII文 ...
随机推荐
- weixin-api生成二维码
二维码长链接转成短链接(减少扫描时间和提高成功率) 微信返回正确的二维码的结果,参数有个url,即二维码图片解析后的地址,也可以根据此URL生成需要的二维码图片,而不需要通过ticket去换取图片了 ...
- bzoj1975: [Sdoi2010]魔法猪学院【k短路&A*算法】
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2446 Solved: 770[Submit][Statu ...
- 使用sudo,mvn command not found
一个简单的解决办法是,编辑你当前用户的 .bashrc 文件,添加下面这行内容: alias sudo="sudo env PATH=$PATH" 因为系统预装的 sudo 在编译 ...
- AOP面向方面(切面)编程
1.引言 软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创建和管理的模块.于是出现了以系统模块化特性的面向对象程序设计技术.模块化的面向对象编程极度极地提 ...
- 负环 BZOJ 4773
负环 [问题描述] 在忘记考虑负环之后,黎瑟的算法又出错了.对于边带权的有向图 G = (V, E),请找出一个点数最小的环,使得环上的边权和为负数.保证图中不包含重边和自环. [输入格式] 第1两个 ...
- 并发编程辅助工具-java.util.concurrent
1. CountDownLatch 类似于计数器的功能,主要用于控制某个任务的执行先后顺序,可以控制某个任务在其他任务(可能是多线程的)执行完 之后,才会去执行. public static void ...
- 487. Max Consecutive Ones II
Given a binary array, find the maximum number of consecutive 1s in this array if you can flip at mos ...
- UICollectionView 讲解
什么是UICollectionView UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView(请一定注意这是 UICollectionView的最 ...
- 深入理解javascript之设计模式
设计模式 设计模式是命名.抽象和识别对可重用的面向对象设计实用的的通用设计结构. 设计模式确定类和他们的实体.他们的角色和协作.还有他们的责任分配. 每个设计模式都聚焦于一个面向对象的设计难题或问题. ...
- Linux网络编程简单示例
linux 网络编程是通过socket(套接字)接口实现,Socket是一种文件描述符,socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭& ...