IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32G070 使用 OpenBLT 记录。 -> 正文阅读

[嵌入式]STM32G070 使用 OpenBLT 记录。

一个项目需要使用UART来更新程序。(因为设备组装好之后,拆开就非常麻烦了)

在网上找到了开源的OpenBLT。具体的资料自行百度。

这里记录下使用的流程。

0.下载源码

Feaser - OpenBLT Bootloader

1. 创建boot工程

使用STM32CUBE来创建,使用内部晶振,配置UART口。UART需要使用LL库。

LED 和看门口根据需要进行添加。

参考源码目录下的DEMO进行来添加所需的文件:

openblt\Target\Demo

支持很多MCU。

创建三个组:

?core里面的代码貌似适合硬件无关的 直接添加即可。

位置:X:\openblt\Target\Source

App里面的代码是参考demo里面的。

?

主要是配置openblt的功能,使用UART? CAN或者网口进行程序下载。

blt_conf.h就是配置文件。

led可以根据需要进行添加。

myApp.c直接参考demo的main函数写的。

代码位置:X:\openblt\Target\Demo\ARMCM0_STM32G0_Nucleo_G071RB_Keil\Boot

ARMCM0_STM32G0组里面的文件是和硬件相关的,直接拷贝移植到的文件就行。

?

使用的MCU是STM32G070,因此直接看考作者移植好的文件就行。

代码位置:X:\openblt\Target\Source\ARMCM0_STM32G0

最后在main函数的最后调用:MyAppMain(); 就可以了。

根据自己的需要进行的修改:

我这边需要的功能是,boot启动以后,进入程序更新操作,等待上位机发送更新指令。超时时间为5秒钟。超过5秒后,直接进入到APP程序。

需要修改一个宏:

#define BOOT_BACKDOOR_ENTRY_TIMEOUT_MS  (5000)//(500)

在flash.c文件添加一个函数:

blt_bool iap_load_app(void)
{
	unsigned int appRunAddr = flashLayout[0].sector_start;
    /* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
    if (((*(volatile unsigned int*)appRunAddr) & 0x2FFE0000 ) == 0x20000000)
    {
	  return BLT_TRUE;
    }	
	else
	{
		return BLT_FALSE;
	}
}

主要是因为我没看懂?FlashVerifyChecksum()这个函数。原版的代码使用MicroBoot可以让程序启动,但是使用JTAK烧写的程序就无法启动,也无法进行调试。感觉太麻烦了。

修改nvm.c代码,屏蔽掉FlashVerifyChecksum函数,改调用iap_load_app。

extern blt_bool iap_load_app(void);
/************************************************************************************//**
** \brief     Verifies the checksum, which indicates that a valid user program is
**            present and can be started.
** \return    BLT_TRUE if successful, BLT_FALSE otherwise.
**
****************************************************************************************/
blt_bool NvmVerifyChecksum(void)
{
#if (BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0)
  /* check checksum using the application specific method. */
  return NvmVerifyChecksumHook();
#else
  /* check checksum using the interally supported method. */
  //return FlashVerifyChecksum();
  return iap_load_app();
#endif
} /*** end of NvmVerifyChecksum ***/

这样就可以使用JTAG烧写APP,并且可以进行代码调试。

2. 创建APP工程

以前怎么弄现在还怎么弄,需要修改下FLASH的位置。

然后在代码中添加一个函数:

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
static void VectorBase_Config(void)
{
  /* The constant array with vectors of the vector table is declared externally in the
   * c-startup code.
   */
  extern const unsigned long __Vectors[];

  /* Remap the vector table to where the vector table is located for this program. */
  SCB->VTOR = (unsigned long)&__Vectors[0];
} /*** end of VectorBase_Config ***/
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */
  VectorBase_Config();
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

貌似不加也是可以用的,SCB->VTOR 的位置不需要像以前那样需要用户自己修改,boot里面已经帮用户修改了。

?在添加一个hex转srec文件的命令:

fromelf #L --m32 --output=$L@L.srec

代码编译后会生成srec文件。

3.使用MicroBoot进行程序更新:

配置串口和波特率。选择固件文件即可。

?

程序升级完以后,这个软件直接就退出了。

这里要特别注意的是,固件文件的位置不支持中文路径。

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:35:52  更:2022-05-05 11:39:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:27:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码