X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
单片机
[分享] 【极海APM32F407 Tiny Board】 5.基于LWIP的IAP升级
zght
2024-3-24 23:37
楼主
# 1 LWIP ## 1.1 LWIP简介 LwIP 是一款轻量化的 TCP/IP 协议,是瑞典计算机科学院(SICS)的 AdamDunkels 开发的一个小型开源的 TCP/IP 协议栈。在保持 TCP 协议主要功能的基础上减少对资源的占用。此外 LwIP 既可以移植到操作系统上运行,也可以在无操作系统的情况下独立运行。 可以在网页http://savannah.nongnu.org/projects/lwip/, 下载获取到 LwIP 的各个版本的源代码包和对应的contrib 包。 本次计划基于上一篇LWIP移植的基础上实现LWIP网络传输固件进行升级。 ## 1.2 硬件设计 开发板使用 APM32F407 控制器通过 RMII 接口和 SMI 接口与 LAN8720A 以太网 PHY 进行连接。通过接下拉电阻把 nINTSEL 引脚设置为低电平,从而使能 nINT/REFCLKO 引脚的输出功能为RMII 接口中 REF_CLK 信号线提供时钟信号, 硬件上 XTAL1 与 XTAL2 之间接入提供 25MHz时钟,经过 LAN8720A 内部 PLL 电路陪频后使得 nINT/REFCLKO 引脚的输出的时钟信号为50MHz 时钟。
# 2 移植步骤 ## 2.1 Bootloader配置 本次由于在bootloader程序中添加了lwip的代码,需要将bootloader的大小调整一下,初步编译了一下,大概占用30k左右的样子,这里进行试验就调整大一点,200k
应用程序配置,只需要调整APP的起始地址即可。
同时应用APP程序中只需要一个简单的例子即可,2s闪烁一次LED
接下来在bootloader建立TcpServer服务器,端口设置为80,代码基于lwip移植和串口IAP升级的工程合并而成。
Lwip接收数据回调函数,连接收向服务器发送消息证明建立通讯
接下来就是接收数据后的回调函数,先将接收的数据返回发送到服务器
实现Tcpserver这个功能后在实现代码升级的部分,然后初始化函数放在主函数中初始化。
打开网络测试工具,先ping一下,ping正常
接下来点击打开TCP,可以发现lwip Tcpserver connect这串字符上传,这是代码里面写的,说明成功,接下来向服务器发送数据11,返回11。说明功能已正常使用
## 2.2 网络固件传输调整 由于最开始使用的串口升级的的方式,现在需要使用lwip实现,从串口IAP升级中将串口接收的数据固定存放在一个区域就可以,lwip升级同样也是。通过对lwip接收到的数据存放在我们的app段地址,通过按键去启动。 可以同样使用串口的缓冲,将lwip接收的数据存放在串口升级的缓冲区,首先找到lwip接收数据的接口tatic err_t tcp1_server_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *tcp_recv_pbuf, err_t err)。其lwip接收到的数据存放在tcp_recv_pbuf这个结构体中。
将接收到数据指针指向我们的串口接收缓冲区,同时拿出接收的长度
串口缓冲区数据存放地址
在主循环中通过检测按键进行代码升级和运行APP。检测到lwip接收的数据不为0,将接收的数据写入到指定区域。
# 3 验证 打开网络工具,本次使用野火的上位机,可以发文件,点击网络助手,配置协议类型为TCP Client,以及开发板的地址,端口,点击建立连接
接下来点击右下角的加载文件,选择APP代码生成的bin文件,如下所示
点击发送数据,接下来就可以通过串口看到输出消息,按下按键,执行用户程序。
正确执行升级后的代码,LED灯按APP的代码执行。
点赞
回复评论 (1)
沙发
みずじ
博主,能否提供一些完整的参考代码
点赞
2024-11-3 09:33
最新活动
是德科技有奖直播 | 应对未来高速算力芯片的设计与测试挑战
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
随便看看
请教彩信头中的ID号是怎样得到的?
VGA汉字显示.pdf
OPA847进行跨阻放大震荡,无法理解其中奥妙,求高人指点
可以装进钱夹的剃须刀
【T叔藏书阁】光电二极管及其放大电路设计
测一测,你合不合适当程序猿!~
基于SPI2M采样速率ADC信号处理经验分享--滤波算法、精度补偿技术(源程序,调试通过!
求推荐开关电源芯片
求指导,关于RA2A1的SDADC几个问题
请问WinCE5.0下可以编程读取XML数据吗?
国产变频器之死穴
母亲节就要到了,大家有什么表示吗?
【求助】请教个关于线程切换的问题。请帮忙看看。多谢!!
激发灵感变现创意!飞思卡尔MCU创意大奖赛诚邀您的参与
嵌入式开发之CPU的分析
哭求:我代码里的/case WM_SIZE:到底有什么问题,程序运行貌似正常,但提示一个shell32.exe错
四管升降压变换器FSBB
BLE低能耗技术内幕
关于stm32的串口,为什么经常看见串口发送的第一个字节数据会丢失及解决办法
LM3S9B96无法下载程序了
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复