你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

移植LWIP到STM32F207

[复制链接]
STMCU小助手 发布时间:2021-7-23 14:38
在上篇文章《LWIP初体验-修改ST官方demo》中我们已经在自己的开发板上实现了简单的TCPsever和TCPclient功能。验证完了硬件,接下来的工作就是优化代码,添加应用程序。; g) d6 p& @9 l( h9 x
有些同学想学习一下,如果下载LWIP的代码,然后移植到自己的代码中,下面我们聊聊移植问题。
2 L$ m" L+ G* x8 ]: r我们需要的基础工程是已经实现了10ms定时,led灯1s闪烁,实现了串口打印工程。还需要一份LWIP1.4.1的源码,需要STM32F2系列的以太网驱动。5 K0 I  R) w# w" o
) l! U+ b2 I/ c! G
IAR工程移植2 a( a/ ?6 D9 L/ n, @& K9 n

! h/ H7 r* ^9 n1 }( ?( P首先是IAR工程的移植操作。
* ?- t$ y) {7 u8 r添加以太网驱动库,注意,以太网驱动库并不在标准外设库中,需要大家自行到网上或ST官网下载。
7 ^1 [& D' k, @2 ^ 1.jpg
+ {. I* t8 ?% A* T
把以太网驱动库添加进工程0 p% q7 }9 h+ ^5 {3 \
2.jpg
( B) e4 p& k5 f5 X9 Q  }- _6 |0 R# o7 ^: w; R2 {2 a) ~
增加新库的头文件路径! O$ I( l/ b2 p6 [0 N" H# w
3.jpg # ?4 t! `3 j0 H
- G, ?2 ^+ k) e( m7 J7 ~
将LWIP源码放入目录中,我的个人习惯放到了Third_Party文件夹中,属于第三方库,以后用到其他类似FATFS这样的第三方库,都会放入次文件夹内。) p1 S. W) u( J( u2 z( Y3 Y# n
4.jpg 4 Z8 U3 Q+ N+ q/ {0 F5 O

! l8 W" c4 }3 K5 L* }
我们把stm32f2x7_eth_conf_template.h文件剪切到文件夹中,并重命名为stm32f2x7_eth_conf.h
+ c  D( }- |+ t5 E% j) x 5.png
5 Y% P5 h9 B5 M  Z) e7 {/ n6 m! u4 G2 d$ s
修改文件名称# D* d! ^$ q3 `' u: Y+ [
6.jpg
; _2 U$ S! x0 X) S/ J  `  ~3 ^
0 Y( z1 B! h% N& z
当然新加的头文件,要添加新的头文件路径。
0 t% D0 }; B% {. ~& _: J 7.jpg ( N0 f' h$ _# w' n. i& D1 t

: S2 _$ H+ T& v6 a
注意:这个文件是只读文件,要把对勾去掉,不然的话在IDE中无法修改代码。
7 i( @( s2 _8 M 8.png , w( ^, L+ }9 Y1 ~& c, h
  W1 ]3 q/ p4 n# ?) K
添加以太网RTL8201EL的驱动程序
3 \( Z, @1 d4 k- D' ^3 {* q& t7 ^我们首先拷贝官方历程驱动,这部分主要是硬件层的初始化,在《LWIP初体验-修改ST官方demo》中,我们已经修改完代码,直接拷贝过来就行。
; j! U9 J0 M; [- k1 Q9 K) S) }: w 9.png 1 v6 Y1 O4 R, p' @( s% y

2 C8 W6 Y0 h- |- M' A$ c% A6 n放入对应的位置, [* j( N- C7 }/ j
10.jpg 3 y8 N+ A$ P" C8 c
; K% x, Z+ _/ h  A$ U
然后把BSP硬件驱动添加进入工程# m6 A3 p0 C" [& L+ P2 F
11.jpg 0 q  X( b- z$ y0 U! Q- x3 j) L9 @

$ P5 ^9 f+ R$ g; K' v4 O
添加lwip源代码,直接按照LWIP源码目录结构添加即可,不用全部添加,按下图所示接口
1 V+ [3 o& h/ z 12.jpg + {/ U$ u6 t- |7 |3 E3 {  p

0 l5 }3 H! {3 A1 J+ ]4 z
添加API相关文件5 }& _' K7 `' o0 {
13.jpg 5 Z" K) ?; W1 \! }/ B% V
& k" Z% c: v9 c5 C$ O# U
添加Netif相关文件
  t9 f: H9 z: o6 V7 w8 I0 p 14.jpg ) y4 K7 Z% m( t. q: T! x" X

: w, m; f; M$ m; A& q; m5 P
添加IPV4相关文件
! O( t" Z0 m3 z& z 15.jpg
1 D3 l& D- R! n  n; w; K4 w6 G6 S8 I1 K: L( \% h4 Y& @# ], H9 _
当然,还要添加头文件路径,这是必不可少的
0 }; N2 C! W  O9 A 16.jpg
+ N4 b/ c0 {: U9 Z: f+ Z
) R& s' m( F6 E
添加中间文件
2 g8 s5 V) b& }# g4 D) r7 Q# W/ f& U2 D 17.jpg 6 W- R- Y$ z! i/ l

8 q6 q2 Q! o8 P/ G" D9 N! H
添加lwipopts.h& h) T9 F' \3 D0 S( u* F6 |
18.jpg # l3 r1 G* I9 L: Q
1 q* g; s' R' H1 ]' A, t. f& Q
编译出错: ~; b. f$ a" m/ Z% W. T
19.jpg
8 ]1 P# w5 J- z
) c7 {4 u0 ?6 }
这些文件主要是官方开发板的lcd相关文件,把他们屏蔽掉
5 N7 ]2 \1 ?& q/ q( ~' T" | 20.jpg ' c( m/ Q8 @; _! t$ u7 i
4 f" l) ~7 |5 b* B5 I4 C% `. l9 [
再编译,出新的错误,再次屏蔽这些现实部分的代码。
1 i8 p$ W' v* N8 f8 _% A; F 21.jpg % a  l6 W( R' J" z, ~6 j
1 ]! x) _4 Q, M3 m
修改之后,编译没有问题: A; `3 x8 v' r$ E( D. D) O& _  M
22.jpg 8 E7 }5 ^( ~6 x, L3 T7 S& L

; }( U" {) [: W/ Z& `) G5 a5 D/ y9 H
复制驱动,直接使用官方demo的文件,/ `2 d( X' \, r' K
23.jpg
  P" S9 x$ @8 C  I8 L9 N4 w) Y/ ]& x2 P6 G0 a$ {3 i/ u, s( E
拷贝ethernetif.c文件' [: m6 j$ J# V+ x( e( {
24.jpg
# K1 W1 ?% e% n# N# s; g' b' }( x$ I& \& r) t* G5 j6 A
拷贝lwipopts.h文件。( A+ s( f3 z: {# V0 j- x' ]4 O9 F
25.jpg
5 k3 c1 P, J  N2 y! t' n1 D2 B& c/ F
把原来的文件删除掉/ U, b- C! x4 d8 e
26.jpg $ n0 P/ ~& K; C0 A' w; d+ U. V

0 N! E! h9 t- |) `6 U
重新添加我们新添加的文件(注意解除只读属性)1 r7 k$ N% P) V% M9 \2 h5 N
修改文件1 ?* B1 M; C9 V& t. k
27.jpg 7 I! P% V- X* D& k) q# `) q
1 f. R7 O) ^# Y$ A! d
新建lwip_app.c和lwip_app.h文件
6 ~0 p% Z( |3 b3 R* s% l 28.jpg
6 L6 E4 x5 @4 y3 M- u9 J
6 Q9 i' c4 t/ X' A7 _
添加LwIP_Init函数接口。
2 U* h/ q+ B* X0 j$ |: G' U5 D& i 29.jpg
4 e/ p0 C% ~$ t3 U8 \7 V
6 S- J0 @- g4 V, r- k
增加LwIP_Pkt_Handle函数。
7 g0 P  _. I7 o8 f! r5 J4 f 30.jpg
: N5 F( C" }# K, v0 [* L+ ]6 w' [; r, }8 q
定义一下宏
  q/ T& D# R; d  g9 a 31.jpg 6 {. _  T- ~. L. ]" i4 X- D

- v" {  M: D8 T$ b" t8 u3 t
包头文件包含一下, |" c* e  u/ B& f  H
32.png
$ U8 e  I2 k! Q" p; Y6 @; w$ w( Z8 R. z+ m2 E5 Z5 L' y
修改函数
/ V5 B6 }- x6 y) c- |. s 33.jpg
7 W8 j/ _( J  M5 O$ ?3 T' V7 Z
3 _4 d7 J3 U( K( L7 Y2 R* g
修改主函数1 U6 ^( w0 G, D/ y5 x( D* a2 n
34.jpg
5 b1 ^7 p0 ?' B# J7 h3 e, ]0 f' w# y( ], U2 g9 W+ t
使用PC端ping一下开发板的IP
' w7 }  G6 R' p9 J" o 35.jpg
- v) _, a+ e" L/ v' O6 b8 i3 m
, N1 x8 s1 h* p5 X7 }1 b; z3 F
移植成功,可以正常响应ping。
. X( J3 a" ^0 j这只是个简单的移植,就是个流水账,想看具体修改内容的,可以到文章开头下载工程代码,对比修改前和修改后的区别。网络部分有很多知识,想深入了解,还需要自己多看看代码。6 m6 Z' i5 U/ A5 A2 J6 E  U

8 Z) g4 Q/ F/ m( T# ?3 K4 }+ v) `& c; l2 \7 V, X! E+ R6 t
收藏 评论0 发布时间:2021-7-23 14:38

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版