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

查看: 6967|回复: 32

[STM32F769-DISC] 【F769IDISCOVERY评测】LwIP之以太网固件升级

[复制链接]

60

主题

2051

回帖

31

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2017-7-16 18:46:13 | 显示全部楼层 |阅读模式


相关推荐【F769IDISCOVERY评测】LwIP Echo 及数据传输测试



    下周ST会有个在线的以太网进阶培训直播,因为时间冲突没法凑热闹跟着学习,所以趁着周末自己先提前准备下。这次培训的实验部分有个以太网更新固件,下面的测试就是简单实现下局域网内以太网更新固件的功能。



1、硬件部分及LwIP移植。


本次测试使用的开发板是STM32F769-DISCO,板载的的以太网PHY是LAN8742A,很多的ST的板子都是使用的这个芯片,移植起来可以参考的例子很多。


TIM截图20170716174356.png


从上面可以看到使用接口模式是RMII,这在初始化外设的时候需要注意别选择错误了。测试移植的是LwIP,,如果系统系统中没有使用RTOS,PHY的RX模式要设置为轮询模式,如果是RTOS,可以选择使用中断模式。


TIM截图20170716175052.png


注意了上面容易忽略的地方后,LwIP 部分的初始化如下:我们本次开发板作为客户端使用,Netif_Config() 函数会初始化PHY外设,注册接收函数,根据具体的设置设置服务器的IP和端口已经客户端的静态IP,当然也可以使用动态IP模式。
  1. <font face="微软雅黑" size="3">lwip_init();
  2.     Netif_Config();
  3.     tcp_echoclient_connect();
  4.     User_notification(&gnetif);</font>
复制代码
然后周期调用查询接收处理即可:
  1. <font face="微软雅黑" size="3"> ethernetif_input(&gnetif);

  2.           sys_check_timeouts();</font>
复制代码


客户端程序中会周期的去连接服务器,一旦连接上了就会请求固件文件。


TIM截图20170716175849.png


2 IAP 部分


  IAP的功能应该很多的同学的都比较熟悉,该功能用一个bootloader 更新BIN文件,本次演示更新的bin文件是之前的测试的一个“弹幕”的简化版。(【F769IDISCOVERY评测】”弹幕“来了) .IAP功能中需要对FLASH进行擦除写操作,这些使用方法可参考参考手册的操作步骤来或者直接参考帖子中附件的代码。等对FLASH操作完成后还需要一个操作是判断BIN文件的有效的堆栈地址,然后取出复位地址的直接复位设备进入BIN中执行代码。
  1. <font face="微软雅黑" size="3">void j2a(void)
  2. {
  3.    /* Check if valid stack address (RAM address) then jump to user application */
  4.   if (((*(__IO uint32_t*)USER_FLASH_FIRST_PAGE_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
  5.   {
  6.     /* Jump to user application */
  7.     JumpAddress = *(__IO uint32_t*) (USER_FLASH_FIRST_PAGE_ADDRESS + 4);
  8.     Jump_To_Application = (pFunction) JumpAddress;
  9.    
  10.     /* Initialize user application's Stack Pointer */
  11.     __set_MSP(*(__IO uint32_t*) USER_FLASH_FIRST_PAGE_ADDRESS);
  12.     Jump_To_Application();
  13.   }
  14. }</font>
复制代码


3 固件的更新


  本次测试总体的步骤是:
1)开发板STM32F769-DISCO 作为客户端连接局域网的服务器,连接上之后请求发送BIN文件。
2)局域网内的PC运行服务器上位机,在接收到客户端的连接和请求BIN文件后,分包发送BIN文件。
3)服务器发送的数据包使用的协议比较简单:包序号+数据长度+校验+数据部分组成。(为了简化操作没有使用校验部分)。
4)STM32F769-DISCO 接收到分包的数据后使用FATFS创建文件并保存BIN文件到SD卡,等到BIN文件接收完成后便软复位进入IAP模式。
5)IAP中判断BIN文件是否存在,如果存在开始更新BIN,包括上面说到的擦除扇区写扇区,更新完成后进入BIN代码部分运行。
6)IAP如果检测不到需要更新的BIN文件会自动运行之前的BIN代码部分,为了演示方便,IAP并没有进行版本以及BIN文件的校验。




上位机我是用C#写的一个简陋的小软件,因为对C#不太熟悉这部分代码写的差劲,高手如果路过请无视。


上位机发送BIN文件到开发板:


txbin.gif


根据长度判断发送完成:


TIM截图20170716161735.png




开发板接收部分,本来是一个完整的视频,为了方便加载我转化为了2个GIF文件:


1)连接服务器接收BIN文件


IMG_0070.GIF


2) 下面的图片中读取bin文件后要擦除扇区需要一些时间


IMG_0069.GIF




  有的时候网络不好的时候可能连接服务器或者传输文件有些延迟和卡顿,上面的局域网的更新固件的方法可以延伸到远程更新,只要有个云服务器把服务器程序和固件BIN文件放到服务器就可以先远程固件了。因为只是测试验证所以代码和操作流程难免有不合理的地方,实际项目使用要仔细规划测试。


测试代码如下,注意带BIN的源代码工程的中断向量偏移的偏移设置,如果直接使用要设置为相应的值。


IAP.rar (4.02 MB, 下载次数: 168)

评分

参与人数 1ST金币 +12 收起 理由
wofei1314 + 12 神马都是浮云

查看全部评分

<
回复

使用道具 举报

47

主题

3404

回帖

30

蝴蝶豆

版主

最后登录
2020-12-7
发表于 2017-7-16 20:53:55 | 显示全部楼层
赞X3
回复 支持 反对

使用道具 举报

64

主题

744

回帖

23

蝴蝶豆

实习版主

最后登录
2020-12-8
发表于 2017-7-16 21:56:37 | 显示全部楼层
回复 支持 反对

使用道具 举报

64

主题

744

回帖

23

蝴蝶豆

实习版主

最后登录
2020-12-8
发表于 2017-7-16 21:56:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

35

主题

423

回帖

93

蝴蝶豆

版主

最后登录
2020-9-9
发表于 2017-7-16 23:34:05 | 显示全部楼层
屏幕啊屏幕啊
回复 支持 反对

使用道具 举报

1

主题

455

回帖

2

蝴蝶豆

金牌会员

最后登录
2019-5-7
发表于 2017-7-17 05:07:30 | 显示全部楼层
谢谢楼主的分享!!
回复 支持 反对

使用道具 举报

19

主题

1454

回帖

27

蝴蝶豆

论坛元老

最后登录
2020-6-29
发表于 2017-7-17 08:56:44 | 显示全部楼层
大神,请教一下,移植LWIP后,ping时拔掉网线,再插上还没ping的通吗
回复 支持 反对

使用道具 举报

1182

主题

3785

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-3-17
发表于 2017-7-17 09:09:15 | 显示全部楼层
谢谢橙子大大分享
回复 支持 反对

使用道具 举报

60

主题

2051

回帖

31

蝴蝶豆

版主

最后登录
2020-12-9
 楼主| 发表于 2017-7-17 09:32:27 | 显示全部楼层
队长shiwo 发表于 2017-7-17 08:56
大神,请教一下,移植LWIP后,ping时拔掉网线,再插上还没ping的通吗

没测试过,如果有能检测到拔掉网线的中断,等插上的时候再初始化一次以太网部分,应可以吧。
有时间的话我可以帮队长测试下。
回复 支持 反对

使用道具 举报

19

主题

1454

回帖

27

蝴蝶豆

论坛元老

最后登录
2020-6-29
发表于 2017-7-17 09:57:07 | 显示全部楼层
creep 发表于 2017-7-17 09:32
没测试过,如果有能检测到拔掉网线的中断,等插上的时候再初始化一次以太网部分,应可以吧。
有时间的话 ...

谢谢橙子大神,再初始化一次啊?这个一般是配置以太网参数时才用的,比如改IP,MAC,重插网线不至于吧
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版