M0内核单片机中断向量重映射
前段时间,做了个项目,使用了华大HC32L110,一开始没什么,一切顺利。但是做OTA在线升级时,发现了一些问题。不同于M3内核的MCU,M0内核没有中断向量的寄存器(华大是M0+内核,有些网友说M0+是有这个寄存器的,这个我暂时没验证,稍后找资料看看),所以无法重定向中断向量。这就有点麻烦了,岂不是做不了固件升级了?
赶紧在网上搜索解决方案,结果发现了ST的STM32F0系列的解决方法,简单来说就是利用地址重映射的功能,让应用程序段的固件能找到正确的中断向量。所以赶紧试一下,what !华大M0+MCU没有地址重映射功能。。这可怎么办?
想了几天想破了头都不知道该怎么办。。。终于有一天,我顿悟了。我一直在思考怎么让MCU自动重定向中断向量。但是,既然不能自动重定向,难道就不能手动重定向吗?既然MCU只能固定的找到BOOT程序里的中断函数,那我在boot的中断函数里手动去找APP的中断函数不行么?理论上是可以的!赶紧试试。
void IRQ000_Handler(void)
{FunVoidType JumpToApplication;JumpToApplication = (FunVoidType) (0x2000 + 16*4);JumpToApplication();
}
测试一下,果然可以。。。
看来,有时候我们还是习惯了把简单的事情想复杂了。只要换个思路,还是挺简单的。
完整代码我已上传,下载地址:
https://download.csdn.net/download/pilihuo182175954/85413760
注意请将代码里面的APP偏移地址设置为你实际的偏移地址。我当时只是测试,所以没有把这个地址定义为宏,所以每个中断函数里都写了一遍,就是0x2000这个,记得一定要改为你的实际地址哦。
M0内核单片机中断向量重映射相关推荐
- linux内存重映射的概念及对内核虚拟地址的重映射方法分析
[摘要]本文分析了Linux设备的内存映射的相关概念和理论,使用例子对mmap及nopage的驱动编写方法进行了解释,最后对3种不同的内核虚拟空间分配方法下,mmap驱动编写方法进行了细致的分析和调试 ...
- stm32单片机端口映射_STM32单片机的重映射与地址映射的使用方法及步骤
重映射 STM32 中对于一些端口的外设已经被其他引脚所使用,这是就需要用端口重映射来解决 了,很方便. 以 USART1 为例 重映射的步骤为: 打开重映射时钟和 USART 重映射后的 I/O 口 ...
- 32 位 ARM® Cortex®-M0+内核 单片机
PY32F003 系列微控制器采用高性能的 32 位 ARM® Cortex®-M0+内核,宽电压工作范围的 MCU.嵌入高达 32Kbytes flash 和 4Kbytes SRAM 存储器,最高 ...
- 32位ARM®Cortex®-M0+内核单片机 XL32F003系列MCU
XL32F003系列微控制器采用高性能的32位ARM®Cortex®-M0+内核,宽电压工作范围的MCU.嵌入高达64 Kbytes flash和8 Kbytes SRAM存储器,最高工作频率32 M ...
- STM32F0芯片IAP实现之中断向量表重映射(没有中断向量表偏移寄存器SCB->VTOR的应对方法)
问题背景 项目使用STM32F030,需要通过IAP进行固件升级,在FLASH里面要烧录两份代码:一个Boot loader,一个用户应用程序APP.在开发应用程序APP时,外设中断不能正确响应进到对 ...
- STM32从Flash地址0x08000000的启动重映射
在初写STM32程序时,遇到一个困惑,STM32的Flash在MDK里被设置为起始地址0x0800 0000,而CM3手册规定芯片复位时要从0x0000 0000地址开始取出中断向量 ,那STM32怎 ...
- STM32F103单片机JTAG端口重映射
STM32单片机复位后,JTAG口默认是被占用的.如果想将JTAG占用的几个IO口设置为普通IO口,就需要进行端口重映射. 复位后端口默认功能可以在STM32参考手册上看到 要将JTAG占用的这些口设 ...
- Linux内核内存管理(2):固定映射地址(fixmap)和输入输出重映射(ioremap)
Linux内核内存管理 固定映射地址(fixmap)和输入输出重映射(ioremap) rtoax 2021年3月 在英文原文基础上,针对中文译文增加5.10.13内核源码相关内容. Print ke ...
- C语言printf重入,单片机中printf函数的重映射
单片机中printf函数的重映射 一.源自于:大侠有话说 1.如果你在学习单片机之前学过C语言,那么一定知道printf这个函数.它最最好用的功能 除了打印你想要的字符到屏幕上外,还能把数字进行格式化 ...
- 国产高性能32位M0内核MCU单片机DP32G003
DP32G003TS20内嵌ARM Cortex M0 内核,最高工作频率可达48MHz,内置高速存储器,丰富的增强型IO端口和外设连接到总线.本产品包括16路IO.1个(9 通道)12位的ADC.2 ...
最新文章
- IO 多路复用之poll总结
- 进程和线程相关小知识
- 代码质量检测平台架构设计
- 荣耀双十一开门红:斩获多品类销量及销售额冠军
- jenkins + Git 搭建持续集成环境
- logstash multiline
- ubuntu下安装win7虚拟机总结
- iOS手机模拟器配置
- Android柠檬水面试题,柠檬水的饮料摊(面试案例)
- oracle系统常见错误(摘自文平书)
- 人机融合智能时代的人心
- 学计算机应用技术买什么笔记本电脑,大学什么专业用电脑 要不要买电脑
- 如何启用计算机安全模式,怎么进入电脑安全模式
- smplayer 字幕!解决smplayer字幕乱码的方法
- 阿童木机器人完成数千万元B1轮融资,雅瑞资本领投
- SF中对象发出消息后在chatter上显示名字的问题
- 凭借近2亿的年销量,小米三年超越苹果的可能性有多大?
- 问题 A: 买牛奶 某同学负责给班里的同学买牛奶 ,每人两瓶。输入一个整数,表示班级人数。输出牛奶瓶数
- 倍福--IO模块灯亮没输出
- 【2023秋招面经】4399 前端 一面-部门初面(26min)
热门文章
- Scratch的安装与界面介绍
- mysql 查询重复数据并删除
- 前端Tippy.js组件 配置 Button点击事件
- spss多元线性回归散点图_SPSS19.0实战之多元线性回归分析
- java如何知道城市是省会_全国各省的省会都是怎么确定的?
- 计算机家庭网络共享,Windows7创建家庭组实现多台电脑之间共享资源
- 家庭计算机上网必须用到的设备,家庭网络中常见的几种网络设备介绍
- veeam 备份文件服务器,如何用veeam给windows服务器做备份?
- 吃欢天面皮的26种吃法,中国人的福音!
- 搜狗浏览器怎么清除浏览记录 搜狗浏览器清除浏览记录教程