1、在提供的范例包中,motenv1中已经有了hex文件,可以直接下载到内存。这个过程,体现了L476的启动和内存分配过程。2、首先执行,CleanMotEnv1.bat命令行文件,这个文件执行以下过程。
- 擦除Flash
- 把正确的Bootloader写入起始地址
- 把随后的MOTENV1firmware写入随后的一个地址块中
- 把整个文件都写入。这个过程可以用st-link的写入,也可用mbed的drag and drop复制功能。
3、这张图显示了这个循环的过程和地址分布。其中bootloader在0x0800 0000起始地址,随后的MOTENV1在0x0800 4000中开始。分配给OTA的地址不适用在本程序中。
4、在这个范例中,起始体现了STM32L4xx的启动过程。在手册中boot有专门的启动位,确定程序启动后的地址。通常都会从flash启动,从0x0800 0000地址启动,并写入文件。对于相对复杂的程序,一般会写入一个firmware,便于程序调用,包括协议栈和专用的HAL包等。而不是通常小容量MCU的顺序分配空间。
在此分享一下使用的过程。
5、随后开始的开发环境使用。原计划采用的mbed不是非常的理想,因为这个芯片是最小的JG系列,而mbed.org中是L476RG系列,这个在管脚上是完全不兼容的,因此,如果移植,还要对照2种芯片的数据,才能很好适用,无形中增大了复杂度,而且也不能预知结果。
最后采用IAR30天评估版本,估计可以了。手册中推荐的Nucleo板载st-link其实不是那么好用。因为,nucleo支持两种驱动,mbed和stlink。如果使用IDE不支持CMSIS-DAP的话,就要把firmware升级为stlink。这个过程并没有一次成功,不能识别出MCU。还好有存货,专用的stlinkv21,连接上就好。
这个这个过程发现其实只要4根线就可以了,其中第5位的是reset,在下载器中,看来是没有用到。可以直接flash和erase。这样就可以省一根线了。
|