1,ISP和IAP介绍和比较

STM32F103单片机默认支持ISP(在系统编程In System Programming, ISP),即通过ISP软件(Flash_Loader_Demonstrator)通过USART1向Flash烧写程序。它的实现方式是通过单片机的Boot0和Boot1引脚来让单片机进入系统存储器启动方式(ISP启动),系统存储器中是厂商提供的bootload固件。这种方式得优点是使用厂商的bootload和下载软件,方便简单。但缺点是必须通过硬件引脚设置,无法实现在线升级。

IAP(在应用编程(In Application Programming, IAP)是另一种可下载固件的方式,它可以实现在线升级,但需要自己开发bootload。单片机启动模式使用主Flash启动。

下图是STM32单片机的3种启动方式:(通过Boot0和Boot1引脚设置选择)

ISP模式,单片机上电启动后,会直接执行用户程序;

IAP模式,单片机上电会先运行bootloader,bootloader决定是下载固件还是执行用户程序。

2,IAP的Flash分配情况

Flash中需要有2块固件,分别是bootload和application,如下图:

具体Flash分配如下:

3,bootload实现的技术要点

在工程中需要设置Flash和Ram空间如下:

定义application的起始地址

#define ApplicationAddress    0x8002000 // 8K

跳转到application的代码:

typedef  void (*pFunction)(void);

static void start_application()

{

/* Jump to user application */

uint32_t JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);

pFunction Jump_To_Application = (pFunction) JumpAddress;

/* Initialize user application's Stack Pointer */

__set_MSP(*(__IO uint32_t*) ApplicationAddress);

Jump_To_Application();

}

4,application实现的技术要点

在工程中需要设置Flash和Ram空间如下:

因为0x08000000处存储的是bootload的中断向量表,application的中断向量表存储在在0x08002000,所以需要在main函数开始处,执行中断向量offset设置。

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);

而且bootload下载固件是用的bin文件,我们需要通过执行如下命令生成bin文件

C:\Keil\ARM\ARMCC\bin\fromelf.exe --bin -o  ..\Output\application.bin ..\Output\application.axf

在Keil中如下设置,可在编译完成后自动生成。

5,固件烧录步骤

1,烧录bootload

使用Flash_Loader_Demonstrator工具下载bootload.hex到单片机

2,下载application

使用Hypertrm下载application.bin到单片机

Hypertrm 的串口设置如下:

单片机上电,bootloader启动

输入1,bootload进入Download Image模式

选择菜单Transfer下的Send File…

选择要下载的程序application.bin,协议选择Ymodem

点击Send,开始传输

等待传输完成后,输入3启动application

ISP软件Flash_Loader_Demonstrator,超级终端Hypertrm,STM32F103C8T6的bootload和application的完整工程代码可从下面的分享中下载。

https://download.csdn.net/download/tanzj123/14964219

STM32F103C8在应用编程(IAP)介绍及实现相关推荐

  1. 计算机 编程 教程 pdf,计算机专业教程-第3章编程接口介绍.pdf

    下载 第3章 编程接口介绍 • DB2 UDB应用程序概述 • 嵌入S Q L编程 • CLI/ODBC应用程序 • JAVA应用程序 • DAO .R D O .A D O应用程序 本章将介绍对DB ...

  2. java面向方面编程_面向方面编程的介绍----基本概念

    面向对象的编程中常用的概念是:继承.封装.多态.在面向方面的编程中常使用的概念是:advices/interceptors, introductions, metadata, and pointcut ...

  3. 编程关键词介绍...

    编程关键词介绍: gcc是GUN compiler Collection (GUN编译器套件),也可以简单理解为编译器,他可以编译多种语言. GNU是基于Unix开发设计,并且是与Unix兼容的操作系 ...

  4. 输入2个正整数lower和upper(lower_题库 | 华为研发工程师编程题型介绍及解析 第 2 期...

    题目1:给定两个已经升序排序好的的序列 A={a1,a2,a3,-an} 和 B={b1,b2,b3-bn} ,一个数 R,找出满足以下条件的的(ai,bj)序列对. 1.ai<=bj 2.bj ...

  5. pythonguitkinter编程入门_Python Tkinter GUI编程入门介绍

    一.Tkinter介绍 Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口.Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个 ...

  6. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)

    PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了. 在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简 ...

  7. abb机器人离线编程软件叫做_工业机器人离线编程(ABB)1-2 常用离线编程软件介绍.pptx...

    1-2 常用离线编程软件介绍;一.常用离线编程软件;1. ABB RobotStudio离线编程软件介绍RobotStudio 是一款 PC 应用程序,用于机器人单元的建模.离线创建和仿真.如图1-1 ...

  8. 幼儿机器人编程课程介绍

    幼儿机器人编程课程介绍?对于很多的家长们来说,孩子的学习一直都是他们十分关心和重视的一件事情.很多的家长在培养孩子的学习的时候,也可以说是十分的耐心的.他们会给孩子选择一些能够对于孩子学习有帮助的课程 ...

  9. 朱有鹏 socket编程接口介绍(3)

    朱有鹏 socket编程接口介绍(3) 建立连接 socket(man 2 socket) socket()函数类似于open()函数,用来打开一个网络连接,如果成功则返回一个网络文件描述符(int类 ...

  10. Motoman机器人离线编程——MotocomES介绍

    欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程--Motocom32开发简介 Motoman机器人离线编程--Visio Studio环境配置 Moto ...

最新文章

  1. 先进的ListenableFuture功能
  2. 空间统计分析_【空间分析】地理探测器原理
  3. php生成随机密码的几种方法
  4. 死锁(python 版)
  5. 打造自己的专业图像工具-Visual C++ 2005图像编程系列【四】
  6. sql2005安装过程,(不装C盘)
  7. [CXF REST标准实战系列] 一、JAXB xml与javaBean的转换
  8. 免费源码赠送之 printf(C语言简化版)
  9. docker 定时重启脚本_群晖Docker容器定时执行重启任务
  10. 将GeoIP的region_code列表也复制过来一份
  11. Docker桥存储卷管理
  12. 友盟分享 微博 c8998文件不存在
  13. 掌握el-table的formatter方法,提升数据展示效果
  14. Android第三方开发包值高德地图SDK使用介绍
  15. python解椭圆方程的例题_《椭圆》方程典型例题20例(含标准答案)
  16. 计算机创建只读用户,如何把电脑的文件夹在局域网共享成只读,别人不能删除和修改?...
  17. USB OTG功能是什么意思?
  18. 夏培肃完成了第一台电子计算机运算器,【判断题】夏培肃完成了第一台电子计算机运算器和控制器的设计工作,同时编写了我国第一本电子计算机原理讲义。...
  19. 北大计算机陈鹏,陈鹏-北京语言大学人事处
  20. DM8168 IPNC Boa移植

热门文章

  1. 咸鱼CAD笔记—CAD基础操作
  2. 视频营销自动赚钱秘诀
  3. 魔兽世界服务端开服架设服务器搭建教程Centos系统
  4. VBScript 程序员参考手册 读书笔记01-07
  5. 中兴新支点操作系统挺好用的,国内电脑应预装国产操作系统
  6. a标签实现点击复制文本
  7. 火星人学习第二周——虚幻引擎蓝图应用与开发
  8. 怎样快速做个 BI 系统
  9. Unity编辑器控制粒子系统Playback Time
  10. FPGA 设计算法篇 —— 格雷码编解码原理及实现