0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SWM181定制UserBoot执行流程

0xQC_gh_ed4f95b 来源:华芯微特32位MCU 作者:华芯微特32位MCU 2021-11-17 16:23 次阅读

01 存储器划分

SWM181xB的Flash总大小为120K,其中前96K用于APP,后24K用于UserBoot,芯片上电先执行UserBoot,然后跳转到APP。

SWM181xC的Flash总大小为248K,UserBoot在96K起始的24K处,若程序大小超过96K,则需要在Keil中做如下设置:

02 执行流程

05587c1e-444e-11ec-b939-dac502259ad0.png

B0接低时,上电后芯片直接执行APP。

B0接高时,上电后芯片检查地址0x18020处内容:

若内容不是0x0B11FFAC,则执行ISP代码,可通过串口烧录APP。

若内容是0x0B11FFAC,则跳转到UserBoot。

03 工程设置

UserBoot 和 APP

startup_SWM181.s中需要如下设置,确保程序的0x20、0x24、0x28三个地址处有正确取值:

DCD 0x0B11FFAC

DCD 0x6000

DCD SRAM_SWITCH

05b452c8-444e-11ec-b939-dac502259ad0.jpg

关于0x6000

UserBoot和APP中的0x6000分别指定了UserBoot和APP的大小为24k,若它们的大小不是24k,可修改对应值缩短代码拷贝时长;设定值必须是0x1000的整数倍,且大于等于实际程序大小。如果对上电时间没有苛刻要求,建议不要修改。

UserBoot

UserBoot的连接使用分散加载文件控制。

04 程序下载

UserBoot

可使用SWMProg、SYNWIT_ISP等可将代码下载到指定位置的软件下载。

APP——可使用Keil下载

下载时不要选全擦,否则会把之前下载的UserBoot擦掉。

使用其他工具给SWM181xC下载时需要注意:若程序大于96K需要避免下载工具将0x18000-0x1E000的UserBoot覆写掉。

可以将APP和UserBoot的bin文件合并成一个然后再用批量工具烧录。

05 升级ISP

检查0x18020地址处内容并跳转到UserBoot的工作其实是由ISP代码完成的,旧版ISP代码没有此功能,因此需要给带有旧版ISP代码的芯片升级ISP。

06 跳转前的清理工作

UserBoot程序中,跳转到APP之前,需要执行以下清理操作:

(1)关闭UserBoot中开启的外设中断;

(2)关闭UserBoot中使用过的外设(给外设的控制寄存器恢复默认值);

比如如果UserBoot中使用了Timer中断,在跳转到APP之前没有关闭Timer的话,那么进入APP之后这个Timer还会触发中断,而APP中没有给这个Timer写ISR的话,就会执行默认ISR,是个死循环。

注意事项:

下载UserBoot后,ISP程序无法再执行,若App中关闭了SWD,则芯片无法再通过JLink和ISP串口更新程序,只能通过UserBoot更新或擦除App。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47787

    浏览量

    409089
  • 存储器
    +关注

    关注

    38

    文章

    7148

    浏览量

    161978

原文标题:SWM181定制UserBoot操作指南

文章出处:【微信号:gh_ed4f95bde4df,微信公众号:华芯微特32位MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    2SJ181(L), 2SJ181(S) 数据表

    2SJ181(L), 2SJ181(S) 数据表
    发表于 11-16 18:30 0次下载
    2SJ<b class='flag-5'>181</b>(L), 2SJ<b class='flag-5'>181</b>(S) 数据表

    SWM341 DMA2D模块介绍

    SWM341 DMA2D模块介绍
    的头像 发表于 11-06 17:11 408次阅读
    <b class='flag-5'>SWM</b>341 DMA2D模块介绍

    SWM341系列之SWM34SRET6介绍

    SWM341系列之SWM34SRET6介绍
    的头像 发表于 10-27 10:19 1426次阅读
    <b class='flag-5'>SWM</b>341系列之<b class='flag-5'>SWM</b>34SRET6介绍

    SWM32SRET6——LVGL移植

    SWM32SRET6——LVGL移植
    的头像 发表于 10-26 17:33 856次阅读
    <b class='flag-5'>SWM</b>32SRET6——LVGL移植

    如何配置SWM系列系统时钟?

    如何配置SWM系列系统时钟?
    的头像 发表于 09-18 16:35 405次阅读
    如何配置<b class='flag-5'>SWM</b>系列系统时钟?

    对于CV181系列芯片的SDK定制化疑问求解

    您好,对于CV181系列芯片的SDK定制化有以下疑问,烦请解答。 是否可以实现SDK定制化,例如,能否使用客户自己研发的linux系统或者更换linux系统等 能否由客户自行完成SDK定制
    发表于 09-18 06:38

    SWM201系列MCU数据手册

    SWM201 系列 32 位 MCU(以下简称 SWM201)内嵌 ARM® CortexTM-M0 内核,凭借其出色的性能以及高可靠性、低功耗、代码密度大等突出特点,可应用于工业控制、电机控制
    发表于 09-14 08:56

    SWM181系列MCU数据手册

    SWM181 系列 32 位 MCU(以下简称 SWM181)内嵌 ARM® CortexTM-M0 内核,凭借其出色的性能以及高可靠性、低功耗、代码密度大等突出特点,可应用于工业控制、电机控制
    发表于 09-14 08:24

    SWM260系列MCU数据手册

    SWM260 系列 32 位 MCU(以下简称 SWM260)内嵌 ARM® CortexTM-M0 内核,凭借其出色的性能以及高可靠性、低功耗、代码密度大等突出特点,可应用于工业控制、电机控制
    发表于 09-14 08:14

    SWM211系列MCU数据手册

    1 概述 SWM211 系列 32 位 MCU(以下简称 SWM211)内嵌 ARM® CortexTM-M0 内核,凭借其出色的性能以及高可靠性、低功耗、代码密度大等突出特点,可应用于工业控制
    发表于 09-14 07:39

    SWM190系列MCU数据手册

    SWM190 系列 32 位 MCU(以下简称 SWM190)内嵌 ARM® CortexTM-M0 内核,凭借其出色的性能以及高可靠性、低功耗、代码密度大等突出特点,可应用于工业控制、电机控制
    发表于 09-14 07:16

    U-boot的执行流程

    本文主要讲述了U-boot的执行流程
    发表于 07-14 16:58 466次阅读
    U-boot的<b class='flag-5'>执行</b><b class='flag-5'>流程</b>

    用 TCL 定制 Vivado 设计实现流程

    常常用来报告特定的时序信息、修改网表内容、实现 ECO 等等。 用 Tcl定制实现流程 综上所述,标准的 FPGA 设计实现流程完全可以通过 Vivado IDE 一键式执行,如果仅
    发表于 06-28 19:34

    用TCL定制Vivado设计实现流程

    今天推出Xilinx已发布的《Vivado使用误区与进阶》系列:用TCL定制Vivado设计实现流程
    的头像 发表于 05-05 09:44 725次阅读
    用TCL<b class='flag-5'>定制</b>Vivado设计实现<b class='flag-5'>流程</b>

    【野火 fireFlasher Mini 脱机烧录器】第一次遇见fireFlasher Mini 脱机烧录器

    、GD32F30x、GD32F3x0、GD32F4xx | | WCH南京沁恒| CH32F103xx | | Synwit华芯微特| SWM181SWM190、SWM201、SWM
    发表于 05-03 10:42