9G-STM32 简易BOOT及XMODEM串口IAP移植过程简介

一,准备EWARM + AN2557软件包

1,在https://www.mcu123.com/news/Soft/embsof/arm/201001/514.html
 下载 IAR Embedded Workbench for ARM version 5.41 (2010.1.5更新) 软件
 CD-EWARM-5411-1760_mcu123.zip
    https://esoft.mcu123.com/MCU123_temp_20100103@/ARM/CD-EWARM-5411-1760_mcu123.zip
    相关文件“IAR_EWARM5.4和谐文件.rar ”可以在GOOGLE上搜索到

2,在https://www.manley.com.cn/web/Service_down.asp?down_lei=驱动程序和技术资料&lei2=资料下载&lei3=驱动程序和技术资料
 上下载 “ST-Link仿真器驱动程序(IAR EWARM V5升级版)”
 installSTLink.zip
 https://www.manley.com.cn/web/admin_ml32/pic/down/installSTLink.zip
    
3,在https://www.st.com/mcu/familiesdocs-110.html
    下载STM32F10x in-application programming using the USART 文档和软件
 13588.pdf 和 an2557.zip
 https://www.st.com/stonline/products/literature/an/13588.pdf
 https://www.st.com/stonline/products/support/micro/files/an2557.zip
 
4,在https://www.st.com/mcu/familiesdocs-110.html
    下载ARM-based 32-bit MCU STM32F10xxx standard peripheral library 软件
 stm32f10x_stdperiph_lib.zip
 https://www.st.com/stonline/products/support/micro/files/stm32f10x_stdperiph_lib.zip
 
5,在GOOGLE上搜索“EK-STM3210E仿真学习开发套件用户手册”然后点击下载
    下载 EK-STM3210E仿真学习开发套件用户手册
 EKSTM3210E_UM.pdf 和 200892211563259629.pdf
 https://www.manley.com.cn/web/down.asp?id=181
 https://www.manley.com.cn/web/admin_ml32/pic/down/200892211563259629.pdf

二,建立STM32的EWARM+ST-LINK开发环境

1,双击“IAR_EWARM5.4和谐文件.rar”运行里面的“EWARM_FULL_ARM540.exe”后选择产品“Product”中的“Embedded Workbench for ARM v5.40”
 后点击“Generate”会根据本机的HostID产生“License number”和“License key”;

2,双击“CD-EWARM-5411-1760_mcu123.zip”运行里面的autorun.exe,在“Welcome to IAR Systems”中选择“Install IAR Embedded Workbench ”
 按常规默认路径安装IAR EWARM 541软件;

3,双击“installSTLink.zip”运行“installSTLink.exe”按“NEXT”在选择默认路径C:\Manley\Drivers\STLink按“Install”安装ST-LINK的驱动,
 安装完成选择“Finish”。

三,建立STM32 BOOT基本工程

1,在电脑开始菜单中打开“IAR Systems”->“IAR Embedded Workbench for ARM 5.41”->“IAR Embedded Workbench”打开IAR EWARM集成开发环境,
 在“IAR Embedded Workbench IDE”菜单中选择“Project”->“Create New Project”创建一个新工程;

2,在“Create New Project”选择“ARM”工具链,创建一个空的项目模板,到D:\works\9G-BOOT\project下面,工程和空间文件名都叫9G-BOOT,保存后后有
 9G-BOOT.eww,9G-BOOT.ewd和9G-BOOT.ewp文件产生;
 
3,在“D:\works\9G-BOOT\”下建立文件夹“include”,“driver”,“library”,“source”,在“library”下建立“CMSIS”和“STM32”子目录,在“source”
 下建立“boot”“app”子目录;

4,解压“stm32f10x_stdperiph_lib.zip”到D:\works\下,复制“D:\works\STM32F10x_StdPeriph_Lib_V3.2.0\Libraries\CMSIS\CM3\CoreSupport”下面的“core_cm3.c”和“core_cm3.h”
 和“D:\works\STM32F10x_StdPeriph_Lib_V3.2.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\iar”下的所有文件到“D:\works\9G-BOOT\library\CMSIS”目录;

5,复制“D:\works\STM32F10x_StdPeriph_Lib_V3.2.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x”下面的源文件到“D:\works\9G-BOOT\library\CMSIS”目录,
 复制“D:\works\STM32F10x_StdPeriph_Lib_V3.2.0\Libraries\STM32F10x_StdPeriph_Driver”下的“inc”和“src”文件夹到“D:\works\9G-BOOT\library\STM32”目录
 
6,在IDE的“Workspace”下面的“Files”的“9G-BOOT”上右击选择“Add”->“Add Group”,在“Add Group”页面上填入文件夹名字“DRV”,同样的方式建立
 “SRC”“BASE”“LIB”等子目录,并在“SRC”下面建立“APP”和“BOOT”目录;

7,在IDE的“Workspace”下面的“files”的“9G-BOOT”下的“BASE”上右击选择“Add”->“Add Files”,在“Add Files - BASE”页面里选择“D:\works\9G-BOOT\library\CMSIS”下面的
 “core_cm3.c ”,“system_stm32f10x.c”和 “startup_stm32f10x_hd.s ”(针对于高密度的STM32F,其它的根据不同密度的CPU更换 );

8,在IDE的“Workspace”下面的“files”的“9G-BOOT”下的“LIB”上右击选择“Add”->“Add Files”,在“Add Files - LIB”页面里选择“D:\works\9G-BOOT\library\STM32\src”下面的
 所有C文件;
 
9,点击IDE的“File”->“New”->“File”建立一个新的文件,然后在文件中输入如附件“main.c”所示的内容,然后用菜单“File”->“Save”保存到“D:\works\9G-BOOT\source\boot”目录下面,
 再利用以上的方式添加到IDE工程的“Workspace”下面的“files”的“9G-BOOT”下的“SRC”下的“BOOT”中;
 (参考D:\works\STM32F10x_StdPeriph_Lib_V3.2.0\Project\STM32F10x_StdPeriph_Template\main.c)
 
10,同样建立一个新的文件,然后在文件中输入如附件“uart.c”所示的内容,然后用菜单“File”->“Save”保存到“D:\works\9G-BOOT\driver”目录下面,
 再利用以上的方式添加到IDE工程的“Workspace”下面的“files”的“9G-BOOT”下的“DRV”中;
 (参考D:\works\STM32F10x_StdPeriph_Lib_V3.2.0\Project\STM32F10x_StdPeriph_Examples\USART\Printf\main.c)
 
11,复制“D:\works\STM32F10x_StdPeriph_Lib_V3.2.0\Project\STM32F10x_StdPeriph_Template”下面的“stm32f10x_conf.h”文件到“D:\works\9G-BOOT\include”;
   
四,配置STM32 BOOT开发工程

1,在IDE的“Workspace”下面的“files”的“9G-BOOT”上右击选择“Options”打开“ Options for node "9G-BOOT"”配置页面,选择“Category”中的“General Options”,在“Target”下
 的“Processor variaet”的“Device”中选择“ST”公司的“STM32F10xxE”,在“Library Configuration” 中选择库的等级用“FULL”;

2,在“ Options for node "9G-BOOT"”配置页面,选择“Category”中的“C/C++ Compiler” 里的“Preprocessor”的“Additional include directories:” 里面添加上以下头文件路径:
  $PROJ_DIR$\..\include
  $PROJ_DIR$\..\library\CMSIS
  $PROJ_DIR$\..\library\STM32\inc
  $PROJ_DIR$\..\source\boot
 在“Defined symbols:”添加以下的全局宏:
  USE_STDPERIPH_DRIVER
  STM32F10X_HD
  VECT_TAB_FLASH
3,把D:\works\STM32F10x_StdPeriph_Lib_V3.2.0\Project\STM32F10x_StdPeriph_Template\EWARMv5下面的几个ICF文件复制到
 “D:\works\9G-BOOT\project\Linker”目录下,在“ Options for node "9G-BOOT"”配置页面,选择“Category”中的“Linker” 里的“Config”的“Linker Configuration file” ,
 选择用“Override default”并选择:$PROJ_DIR$\Linker\stm32f10x_flash.icf ;

4,在“ Options for node "9G-BOOT"”配置页面,选择“Category”中的“Output Converter”的“Output”勾选上“Generate additional output”,在“Output format”选择“binary”,
 在“Output file”选择用“Override default”;

5,在“ Options for node "9G-BOOT"”配置页面,选择“Category”中的“Debugger”的“setup”的“Driver”选择“Third-Party Driver”,回到配置页面,选择“Category”中
 的“Third-Party Driver”下面的“IAR debugger driver”下面填入“C:\Manley\Drivers\STLink\STM32DriverV5.dll”;

五,添加命令行和XMODEM

1,在“D:\works\9G-BOOT\source\boot”下建立“term.c”“command.c”“xmodem.c”,并添加到在IDE的“Workspace”下面的“files”的“9G-BOOT”下面的“SRC”的“BOOT”中,
 在“D:\works\9G-BOOT\include”里添加上“command.h”,把“time.c”复制到“D:\works\9G-BOOT\driver”下面并添加到项目中;
 (参考自VIVI)

(待续)