当前位置: 首页 > news >正文

网站源码网址修改怎么知道一个网站是哪家公司做的

网站源码网址修改,怎么知道一个网站是哪家公司做的,做英语在线翻译兼职网站,广东省广州市白云区区号GD32 IAP升级——boot和app相互切换 目录 GD32 IAP升级——boot和app相互切换1 Keil工程设置1.1 修改ROM1.2 Keil烧录配置 2 代码编写2.1 app跳转2.2 软件重启2.3 app中断向量表偏移 结束语 1 Keil工程设置 1.1 修改ROM GD32内部Flash是一整块连续的内存,但是因为…

GD32 IAP升级——boot和app相互切换

目录

  • GD32 IAP升级——boot和app相互切换
    • 1 Keil工程设置
      • 1.1 修改ROM
      • 1.2 Keil烧录配置
    • 2 代码编写
      • 2.1 app跳转
      • 2.2 软件重启
      • 2.3 app中断向量表偏移
    • 结束语

1 Keil工程设置

1.1 修改ROM

GD32内部Flash是一整块连续的内存,但是因为要分成boot和app,因此我们的boot工程和app工程要分别设置代码存放的地址。

举个例子:我这里用的是GD32E50x,内存大小为512k,我把前面16k作为boot分区,后面的496k作为app分区。那么Keil的ROM的配置如下:

分区起始地址大小
boot0x80000000x04000
app0x80040000x7C000

keil配置如下图:
boot工程配置:
在这里插入图片描述
app工程配置:
在这里插入图片描述

1.2 Keil烧录配置

如果需要使用Keil一键烧录的话,要先修改一下烧录的配置,具体根据自己boot和app的分区来设置。
boot配置参考:
在这里插入图片描述

app配置参考:
在这里插入图片描述

2 代码编写

2.1 app跳转

从boot跳转到app的代码参考:

app_func application;
uint32_t app_address;void jump_to_app(uint32_t app_load_addr)
{if (((*(__IO uint32_t*)app_load_addr) & 0x2FFE0000U) == 0x20000000U) {app_address = *(__IO uint32_t*) (app_load_addr + 4U);application = (app_func) app_address;/* initialize user application's stack pointer */__set_MSP(*(__IO uint32_t*) app_load_addr);/* jump to user application */application();}
}

完整用法示例:

#include "main.h"#define APP_LOADED_ADDR    0x08004000Uapp_func application;
uint32_t app_address;void jump_to_app(uint32_t app_load_addr)
{if (((*(__IO uint32_t*)app_load_addr) & 0x2FFE0000U) == 0x20000000U) {app_address = *(__IO uint32_t*) (app_load_addr + 4U);application = (app_func) app_address;/* initialize user application's stack pointer */__set_MSP(*(__IO uint32_t*) app_load_addr);/* jump to user application */application();}
}int main(void)
{systick_config();jump_to_app(APP_LOADED_ADDR);while(1){}
}

2.2 软件重启

在app运行期间,如果需要重新进入boot,可以通过软件重启实现,参考代码如下:

NVIC_SystemReset();

NVIC_SystemReset()函数原形如下:

/**\brief   System Reset\details Initiates a system reset request to reset the MCU.*/
__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void)
{__DSB();                                                          /* Ensure all outstanding memory accesses includedbuffered write are completed before reset */SCB->AIRCR  = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos)    |(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |SCB_AIRCR_SYSRESETREQ_Msk    );         /* Keep priority group unchanged */__DSB();                                                          /* Ensure completion of memory access */for(;;)                                                           /* wait until reset */{__NOP();}
}

2.3 app中断向量表偏移

GD32的Flash存放了程序固件,默认从0x08000000开始启动,前面的部分是中断向量表,在做了boot和app的区分后,从0x08000000开始运行的是boot的中断向量,它在跳转到app以后就失效了,因此需要重新映射app的中断向量表。
做法是在app的程序里面,修改中断向量表偏移,如下:

#define VECT_TAB_OFFSET  (uint32_t)0x4000            /* vector table base offset */

注:上述代码在system_gd32e50x.c里面定义,具体偏移多少取决于你app分区的起始地址,计算方法是:偏移 = app起始地址 - 0x08000000。

结束语

好了,关于GD32如何切换boot和app就讲到这里,有什么问题欢迎评论区留言。

http://www.yayakq.cn/news/702235/

相关文章:

  • 平面设计师看的网站市场调研报告800字
  • 泉州效率网络网站建设做网站要用什么软件图文教程
  • 有了域名怎么建网站阿里云服务器做网站django
  • 响应式视频网站模板适合设计师的网站
  • 国家建设工程质量检查标准网站wordpress 只有英文版
  • 前端怎么做网站服务器租用泰海
  • 网站需求列表论坛门户网站开发
  • c 网站开发如何每天10点执行任务网站开发需求书模板
  • 物流网站模板免费微信公众号怎么创建内容
  • 网站网站程序架设wordpress鼠标插件
  • 淄博做网站的公司有哪些wordpress nginx配置文件
  • 网站建设的目的和目标跨境网站入口
  • 做网站要学多久做网站ps分辨率给多少钱
  • 大作设计网站家装设计师工资高吗
  • 中文域名指向同一个网站做一个小说阅读网站怎么做
  • 小型购物网站建设中国国家商标注册网官网
  • 网站的ftp地址是什么开饰品店网站建设预算
  • 网站的seo如何设计沈阳酒店企业网站制作公司
  • delphi10.2 网站开发软件公司主要做哪些
  • 企业建设银行网站登录不了东营会计信息网官网首页
  • 保定seo排名优化优化搜索曝光次数的方法
  • seo网站关键词优化软件网络推广员是干什么的
  • 网域高科学校网站管理系统wordpress建设的是模板网站吗
  • 商品展示的网站源码北京制作网站的公司
  • 学校网站的作用和意义WordPress免插件相册幻灯片
  • 英文网站开发做交互网站
  • 北京海淀建设部大院小区昆明网站优化推广平台
  • 建网站需什么条件购物网站开发 项目描述
  • 英文企业网站源码成都住建官网app
  • 做全网营销型网站建设北京网站开发网站建设价格