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

免费做企业推广的网站网站后台模板论坛

免费做企业推广的网站,网站后台模板论坛,沧州市网站设计,网站开发新型技术参考: CH32V 系列 MCU IAP 升级跳转方法 CH32V103 的 IAP 问题#xff08;跳转及中断向量表重定位#xff09; 1. 沁恒的RISC-V内核MCU的IAP跳转示例程序简要分析 沁恒的RISC-V内核的MCU比如CH32V203、CH32V307等系列的EVT包中IAP升级的示例程序中都是通过使能软件中断之后跳转及中断向量表重定位 1. 沁恒的RISC-V内核MCU的IAP跳转示例程序简要分析 沁恒的RISC-V内核的MCU比如CH32V203、CH32V307等系列的EVT包中IAP升级的示例程序中都是通过使能软件中断之后在 SW_Handler 函数中进行 APP 地址的跳转如下图指定了 0x5000 的偏移地址去跳转实际是为0x08000000 0x5000的地址只不过在 LD 文件里设置了APP的 FLASH 起始地址后中断向量会自动偏移IAP 不用管它。 这种方法是通过使能软件中断使内核自动从用户模式进入机器模式后进行的跳转该方式无需配置工程在机器模式下无需修改启动文件中 mstatus 寄存器的值。但是是写死的跳转地址不够灵活。参见**QingKeV4_Processor_Manual.PDF**中 1.1 mstatus描述 在默认的启动文件中可以看到mstatus寄存器值为0x6088MPP位配置为了用户模式MPIE和MIE使能。 2. 直接在 IAP 程序中需跳转位置直接进行跳转 重点参考: CH32V 系列 MCU IAP 升级跳转方法 但某些情况下软件中断函数需用做他用或用户不想通过中断进行跳转可直接在 IAP 程序中需跳转位置直接进行跳转。当不通过中断直接进行跳转时需要配置工程在机器模式下需要修改 mstatus 寄存器的值。 mstatus 寄存器为机器模式状态寄存器通过该寄存器可配置 MCU 运行在机器模式或用户模式下。此外对于支持浮点运算的 MCU通过该寄存器可开启或关闭浮点运算功能。关于该寄存器的具体介绍可参考各 MCU 对应的青稞手册具体可在沁恒官网搜索下载。 CH32V103 机器模式下配置 mstatus 的值为0x1888 CH32V307 机器模式下配置 mstatus 的值为0x7888 方式 1 跳转函数按照下方式编写注意此处一定要使用 a0需要加__attribute__((noinline))具体如下 __attribute__((noinline)) void jump_APP(uint32_t addr) {__asm(jr a0);while(1); }入参addr实际保存在寄存器a0中通过jr a0跳转到addr地址中。 方式2 void jump_APP(uint32_t addr) {__asm volatile(jr %0: :r(addr));while(1); }使用方法与方式 1 一致直接在程序调用即可这里同样注意是相对的偏移地址即 0x08000000 addr 的地址 方式3 void jump_APP(uint8_t value) {if(value1){__asm(li a6, 0x5000);__asm(jr a6);}else if (value2){__asm(li a6, 0x6000);__asm(jr a6);}else if (value3){__asm(li a6, 0x7000);__asm(jr a6);}else{__asm(li a6, 0x8000);__asm(jr a6);}while(1); }这种其实和EVT中的IAP没啥区别都是写死的地址跳转不像方式2那种可以灵活制定地址进行跳转。 3. 利用软件中断jump_APP(addr)使用 /********************************************************************** fn SW_Handler** brief This function handles Software exception.** return none*/ // 这里的addr是相对0x08000000的偏移地址 void jump_APP(uint32_t addr) {__asm volatile(jr %0: :r(addr));while(1); }void SW_Handler(void) { // 假设要跳转到的APP地址为 0x08005000 // jump_app_address 0x08005000 - 0x08000000 0x5000;jump_APP(jump_app_address); }如上所示进入软件中断中使用jump_APPaddr就可以灵活指定要跳转到的APP入口地址了。 3.1. 简单测试 这里我使用了Ymodem协议通过串口发送APP固件给bootloader固件接收保存在MCU中的flash后更新APP入口地址这个全局变量 jump_app_address值为0x7800实际为FLASH中的0x080000000x7800的地址在软件中断中跳转到偏移地址0x7800即可。 不用像ARM单片机那样考虑中断向量表的重新映射因为CH32V在默认的LD 文件里设置 FLASH 起始地址后中断向量会自动偏移IAP 不用管它。
http://www.dnsts.com.cn/news/20434.html

相关文章:

  • 重庆网站制作套餐做网站如何分类
  • 网站自然优化网站 not found
  • 网站后台如何做下载连接计算机编程培训班
  • 企业建站系统插件介绍网站名超链接怎么做
  • 网站怎么做内链接五合一网站建设方案
  • 电脑下载17zwd一起做网站免费观看电视剧软件
  • 阜阳企业网站建设广州品牌网站制作公司
  • 网站建设微信文章网络营销推广方法ppt
  • 谁有凡科网做的网站以橙色为主的网站
  • 做海淘的网站做海淘的网站有哪些免费服务器虚拟化
  • 最权威的做网站的公司哪家好怎么自己做论坛网站吗
  • 浙江建筑协会网站wordpress的视频嵌入
  • 营销型网站制作哪个好薇网站服务器和空间
  • 网站开发过程及要点app开发公司找xiala5徵推广
  • 聊城网站seo建设部政务网站建设
  • 网站如何加入广告联盟峨眉网站建设
  • 济南建网站送400电话重庆南川网站制作公司推荐
  • 做直播的网站哪些网站首页做的好
  • 网站开发 外包百度网址大全免费下载
  • 创意包装设计网站建设网站查询
  • 空间 建网站wordpress股市实时数据
  • 深圳建设银行分行网站雄县有做网站的吗
  • 好看的免费网站模板下载wordpress 侧边栏
  • 做母婴产品哪个网站做的好四川建筑培训考试网
  • 购物网站的建设时间江西赣州网站
  • 单页站好做seo吗导视系统设计
  • 宿迁建设安全监督站网站网站开发新加坡
  • 外贸网站建设费用一般要多少官方在家做兼职的网站
  • 网页设计成品网站铜排制作 东莞
  • 德州网站建设设计网站美工如何做