首先创建一个AT32F437的工程,然后发现调试工程配置这里的型号和创建工程选的型号不一致,手动更改一下,使用PW Link下载程序的话还要配置一下pyocd.exe的路径。

FPT刷ROM文件BIOS fpt 刷bios_AT32F437

打开drv_clk.c文件的调试功能看下系统时钟频率。

FPT刷ROM文件BIOS fpt 刷bios_网络_02

FPT刷ROM文件BIOS fpt 刷bios_网络_03

项目使用的是AT32F437VMT7芯片,内部flash空间是4032K,用来做OTA升级完全够用,就没有使用外部FLASH,打开FAL分区功能。

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_04

 在board.h文件里使能on chip flash和using fal

FPT刷ROM文件BIOS fpt 刷bios_重启_05

 工程中要使用fal_cfg.h文件,需要手动添加一下文件路径。

FPT刷ROM文件BIOS fpt 刷bios_IP_06

然后根据自己的需要将flash分几个区。

FPT刷ROM文件BIOS fpt 刷bios_IP_07

 然后在主函数里初始化一下fal。

FPT刷ROM文件BIOS fpt 刷bios_AT32F437_08

 下载测试,分区成功。

 然后下载qboot软件包,制作bootloader。

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_09

 系统会自动添加其他依赖的软件包。

FPT刷ROM文件BIOS fpt 刷bios_网络_10

然后在qboot_at32.c里更改一下qbt_reset_periph函数。

 

FPT刷ROM文件BIOS fpt 刷bios_IP_11

 编译提示FALSE和TRUE重复定义,随便改掉一个。

FPT刷ROM文件BIOS fpt 刷bios_网络_12

 然后将qboot.c文件里的HAL_RCC_DeInit()函数改成crm_reset();

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_13

 

FPT刷ROM文件BIOS fpt 刷bios_重启_14

 在qboot.c里引用一下这两个函数。

FPT刷ROM文件BIOS fpt 刷bios_网络_15

 然后下载,因为app、download、factory都是空的,所以程序停在这里。

FPT刷ROM文件BIOS fpt 刷bios_AT32F437_16

 发现没有重启,更改一下qboot的参数配置

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_17

 改这些,重启了

FPT刷ROM文件BIOS fpt 刷bios_AT32F437_18

 然后BootLoader就制作完成了,接下来开始编写APP程序

 

FPT刷ROM文件BIOS fpt 刷bios_IP_19

 新建工程明明选的是AT32F437VMT7,新建完工程后芯片型号居然变了,只好手动改一下,如上图所示。

然后改一下link.lds文件的起始地址,将程序下载到app分区。

FPT刷ROM文件BIOS fpt 刷bios_AT32F437_20

 调试配置这里也要改一下。

FPT刷ROM文件BIOS fpt 刷bios_重启_21

然后下载程序,发现直接hard fault了,仔细想想是忘了改中断跳转地址了。

 

FPT刷ROM文件BIOS fpt 刷bios_AT32F437_22

 在main.c里把中断向量跳转地址改一下。

FPT刷ROM文件BIOS fpt 刷bios_网络_23

然后下载,程序正常运行,bootloader跳转APP就完成了。

FPT刷ROM文件BIOS fpt 刷bios_网络_24

 http ota升级当然要支持网络功能了,使能SAL和LWIP。

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_25

 改个静态IP。

FPT刷ROM文件BIOS fpt 刷bios_网络_26

在board.h里使能ETH和LAN8720A

 

FPT刷ROM文件BIOS fpt 刷bios_重启_27

在drivers文件夹里放进去drv_lan8720.c和drv_lan8720.h驱动文件

 

FPT刷ROM文件BIOS fpt 刷bios_网络_28

 下载、启动,用ifconfig看下IP地址,连上网线就能ping通了。

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_29

APP程序里和Bootloader里一样,添加fal的配置和初始化函数。

FPT刷ROM文件BIOS fpt 刷bios_网络_30

编译下载bootloader和app程序里的分区就都做好了。

 

FPT刷ROM文件BIOS fpt 刷bios_IP_31

 添加两个网络调试神器agile_console和agile_telnet软件包。特别感谢软件包制作者马龙伟大神,之前用telnet组件各种问题死机等,用agile_telnet软件包很稳定,啥问题都没有。

 

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_32

软件配置里使能uart1,这样串口和telnet就能同时用了。

FPT刷ROM文件BIOS fpt 刷bios_网络_33

 

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_34

 然后添加ota_downloader软件包。

FPT刷ROM文件BIOS fpt 刷bios_重启_35

 使能http OTA下载功能

FPT刷ROM文件BIOS fpt 刷bios_重启_36

 编译下载

FPT刷ROM文件BIOS fpt 刷bios_FPT刷ROM文件BIOS_37

 

FPT刷ROM文件BIOS fpt 刷bios_AT32F437_38

然后再把程序改一下

 

FPT刷ROM文件BIOS fpt 刷bios_网络_39

 使用OTA打包一下。

FPT刷ROM文件BIOS fpt 刷bios_AT32F437_40

web server开个服务器

 

FPT刷ROM文件BIOS fpt 刷bios_网络_41

然后发个OTA升级的命令,开始下载重启,新的程序就更新过去了。OTA升级完成。

 

FPT刷ROM文件BIOS fpt 刷bios_IP_42

 

FPT刷ROM文件BIOS fpt 刷bios_重启_43