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

移植LWIP到STM32F207

[复制链接]
STMCU小助手 发布时间:2021-7-23 14:38
在上篇文章《LWIP初体验-修改ST官方demo》中我们已经在自己的开发板上实现了简单的TCPsever和TCPclient功能。验证完了硬件,接下来的工作就是优化代码,添加应用程序。
. J9 F" Y8 ^( o( n5 p, h, J; h5 r有些同学想学习一下,如果下载LWIP的代码,然后移植到自己的代码中,下面我们聊聊移植问题。
0 a; e5 S; I+ R* u/ |9 F我们需要的基础工程是已经实现了10ms定时,led灯1s闪烁,实现了串口打印工程。还需要一份LWIP1.4.1的源码,需要STM32F2系列的以太网驱动。
0 S+ N/ \+ N8 f% O$ W
  ^& A  L( e; @) B# D( nIAR工程移植
% e) S. {( D# b3 g( V

; C+ p3 ^$ F  q! l; _7 e" T首先是IAR工程的移植操作。/ t- d$ j7 f" j# A; O
添加以太网驱动库,注意,以太网驱动库并不在标准外设库中,需要大家自行到网上或ST官网下载。6 C/ q  v* p* S8 m6 V3 d% y
1.jpg ' i+ u, |8 \% `( U
把以太网驱动库添加进工程7 j- K5 S6 N2 G" s+ A% \
2.jpg
8 ~7 ^$ _. F! \( j  C
8 ~1 u' h0 e7 o5 y
增加新库的头文件路径
6 \: K% e9 O9 k  `) [& q 3.jpg 9 v( p7 {( Q8 D  @& p1 R) v
- ^& Y- q' y% }0 k
将LWIP源码放入目录中,我的个人习惯放到了Third_Party文件夹中,属于第三方库,以后用到其他类似FATFS这样的第三方库,都会放入次文件夹内。
4 i7 q6 l4 J. j" K, H8 ^/ I 4.jpg 3 I: b  Q' B  `0 c+ c. L" u

4 p" B1 E  F  O" {' y
我们把stm32f2x7_eth_conf_template.h文件剪切到文件夹中,并重命名为stm32f2x7_eth_conf.h% q' s$ f1 m" i7 B
5.png
# {. s3 I2 m  p# L; S" I( A' \
1 ^: s# a% E, |  K
修改文件名称
' [# r! v3 Q2 _0 @! ]" v5 F. | 6.jpg ! n. x; b/ c$ t# ]
+ m0 v, f& A/ v3 q2 _- r
当然新加的头文件,要添加新的头文件路径。
3 u, x1 A( ~8 B+ r! }' \; _; ~: C 7.jpg 5 ]% x5 v4 y9 M- u, g. }

  k, }# w! a' K$ C# h6 W
注意:这个文件是只读文件,要把对勾去掉,不然的话在IDE中无法修改代码。
: D4 W. [! o& y* `# u 8.png
1 R' \6 k; f3 U5 N- R+ _, }* |/ v% v4 Q
添加以太网RTL8201EL的驱动程序
6 g2 J6 U0 \' i7 m1 x我们首先拷贝官方历程驱动,这部分主要是硬件层的初始化,在《LWIP初体验-修改ST官方demo》中,我们已经修改完代码,直接拷贝过来就行。8 I; E- f9 }. d9 A8 H
9.png 2 Y6 U8 K+ Z; }- ^) ?+ d
* X: p. e9 f) G/ {8 C
放入对应的位置
5 E+ o3 m- y: ]% ^# |& o& ^ 10.jpg
! P7 O3 T( n" }) L- m5 d! |8 f, M1 z- M# A1 N) V
然后把BSP硬件驱动添加进入工程) d! N% j% X1 ~
11.jpg
1 }4 m# G1 Q$ L$ d! D* f$ W) Y, u
添加lwip源代码,直接按照LWIP源码目录结构添加即可,不用全部添加,按下图所示接口& W3 c& _2 {2 D8 ]7 z' t
12.jpg , m4 X* F3 X* [" \$ U' I) b

+ }7 I% t6 v0 r4 v7 X5 S2 {$ g
添加API相关文件
, {9 e& T2 G( `" ?* g7 [+ l 13.jpg
4 H! Y, `% f% y; o6 V* p  @  z+ ?" }9 b  E& V- U1 x( y% _6 Z
添加Netif相关文件* x( ~* d1 ?3 d2 m# d2 I
14.jpg # F/ ~, k% r+ Z. I

9 B% y& ^/ K4 K2 A
添加IPV4相关文件
' }& a; \. c4 }1 X# f; k 15.jpg + D+ l1 u/ {% `9 d$ N, c

5 Y5 j! j% ~9 ?; B' f0 ]
当然,还要添加头文件路径,这是必不可少的
4 l( l3 R/ K) }. j# ~ 16.jpg ! l1 {0 n; P* A( v, ~$ Y
9 a4 R* u1 n( Y8 }4 N
添加中间文件0 j3 E$ X% x; g; `) I' T! ]
17.jpg
- J2 K9 w  D- k4 B3 X
4 y& |! H8 S4 @7 ?9 m# u
添加lwipopts.h( B" Z1 S6 U1 d: z5 ~, d4 d
18.jpg
4 b+ n& D* f$ G* d" z
2 H$ p/ _% f2 t2 K0 d
编译出错
$ t4 D9 D# v+ x' [' L7 W 19.jpg
5 `# X0 \- y8 S" d* M; H% C5 s4 ^
# U% C( C0 p& N
这些文件主要是官方开发板的lcd相关文件,把他们屏蔽掉
5 r; M3 Y/ a$ G2 G1 T 20.jpg
4 B% g9 `1 J7 `& l; m5 e9 {0 x) E7 X7 x9 k1 w
再编译,出新的错误,再次屏蔽这些现实部分的代码。( O) P/ u! c1 w$ T
21.jpg
. U( {& k- t5 b/ x* w' G' P$ \$ L" A1 [* U8 Z; Z
修改之后,编译没有问题
( D0 @# ?6 d1 A$ {9 c 22.jpg - C& T% Y$ k4 `8 A) {' T4 y- g9 u
1 V4 u; O( b! t: N
复制驱动,直接使用官方demo的文件,/ A9 y/ g4 G% Q  D/ W  _8 E2 b0 A
23.jpg
/ v+ K' w( P; m- _$ `& e( K5 P% k* |+ P2 w: B1 Y
拷贝ethernetif.c文件
1 K0 N$ K; c: B, G. Y 24.jpg % G! R: F" @! D# W2 T
( r$ X! h+ k6 Z- L4 _
拷贝lwipopts.h文件。; @+ Z3 K2 g. m+ V
25.jpg
2 H3 D  K9 ]! E# s5 C4 D1 g* A
1 y0 ^! `5 n/ z9 k. S7 Q9 _
把原来的文件删除掉, `* R" D$ n- a# S' W
26.jpg
. [" T/ Z( E+ @' z
. T& p7 J3 Y& c% H8 _- B0 q& j; @
重新添加我们新添加的文件(注意解除只读属性)
" \1 a0 I5 e  M! M9 f* G3 M+ @4 w修改文件8 s. Y1 ^) ]9 ]  n1 T+ I  \
27.jpg ! z1 ?4 z9 R8 b; g
' C# m) \/ q. |  ~. G
新建lwip_app.c和lwip_app.h文件
( U0 J' n' [& q! U 28.jpg
/ H) q" F  f% z/ {* z( O
- [* _% b: \! D+ C) ^
添加LwIP_Init函数接口。  i' C% f6 A( f/ j
29.jpg 1 S! \& h3 `" [6 E! q
8 ]7 F3 y% E0 D* o
增加LwIP_Pkt_Handle函数。
& R" B) L' L. P: ~( c; d 30.jpg # w1 L* i: o( N0 Y3 G0 L4 \' u

% W. f8 K' i/ \6 @1 p. ^2 y
定义一下宏3 q" J" X7 w* X5 {1 {% r# L$ b
31.jpg ; V2 m7 I; ~, x( g0 y3 _* g; A

+ ^' l9 C  b9 j9 B- O' V- P
包头文件包含一下
7 ?7 x  p( v/ M$ r" q 32.png ; t  q* I9 M# V0 K

; e% P- }/ b  v& Y
修改函数) X, r/ C3 F% c6 R' e* k
33.jpg
' P5 e/ a) ]" e8 X# h4 J  U; v8 s% W# k* ]$ h+ f
修改主函数
: B4 A0 f$ D) J( M 34.jpg 9 A# U* q6 \$ K2 e6 p9 u( m  \

! E; N% S( v! k1 {& j; s
使用PC端ping一下开发板的IP
/ {8 I! \" b# r; J# L 35.jpg 9 U1 A) V; g1 Z1 y1 O$ j& H

9 ?% q6 q! f( X, P8 M1 @
移植成功,可以正常响应ping。
7 O. v1 ]  q0 ]. |+ ^( _& ^这只是个简单的移植,就是个流水账,想看具体修改内容的,可以到文章开头下载工程代码,对比修改前和修改后的区别。网络部分有很多知识,想深入了解,还需要自己多看看代码。
& _+ V# A8 W8 g( i0 G; L8 r2 C. A$ _8 W

9 F# l+ |: j, J4 w) g5 O+ L
收藏 评论0 发布时间:2021-7-23 14:38

举报

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