1. 程序在ram中运行
要点:(1)程序的下载地址改到ram空间中
(2)程序的debug之前要设定sp,pc指针到ram空间
新建工程,选择stm32 的具体型号,我买的万利的开发板,选择stm32f103vb。
设定程序下载地址,如下图所示,irom1的地址指向了stm32的ram空间。
空间大小如何分配取决于自己的需求。本款处理器内部ram大小为20k,分配16k给只读区,4k给可读可写区。这样irom设定的大小为0x4000,iram1的起始就变为0x20004000,大小只剩下0x1000。
debug标签选择ulink1 cortex debugger(软件采用yjgyiysbcc兄crack方法)。不选load application at start,在initialization中加入启动脚本ram.ini。
ram.ini中具体内容如下:
func void setup (void) {
sp = _rdword(0x20000000); // setup stack pointer
pc = _rdword(0x20000004); // setup program counter
_wdword(0xe000ed08, 0x20000000); // setup vector table offset register
}
load xxx.axf incremental // download,红色代表工程文件名.axf
setup(); // setup for running
g, main
utilities下update target before debugging不选
这样添加后就可以在ram中调试了。
>>>>>>我们需要在代码中设置正确的中断向量表位置。中断向量表通常被放置在用户程序的开始,所以flash中运行时,向量表位于0x08000000处,而当代码被放置在sram中运行时,他的位置就成了0x20000000。在初始化nvic时,我们可以放置如下代码,定义向量表的位置
nvic_setvectortable(0x20000000 , 0x0);
或
nvic_setvectortable(0x08000000 , 0x0);
或
>>>>>工程选项中debug项,download选项卡中,去掉所有钩子,不下载代码到flash,这样就可以在ram中调试程序了!
2. flash中调试
新建工程后系统默认设定好irom1为flash的地址和空间大小。只需要两步:
1) 设定调试工具为ulink1 cortex debugger,如下图所示,不需要设定起始脚本。
2) 在utility中设定选择ulink1 cortex debugger,并设定编程算法。如下图所示。
之后就可以flash调试了。
硬件:万利的 ek-stm32f开发板,硬件去掉rs3,rs4 排阻,断开开发板本身的仿真器。
软件:keilmdk3.20+ulink驱动替换文件。
京东家电驱动热水器逆市求增长 2019热水器节同步启动
mysql触发器简单实例
免费提供环境监控云平台,扬尘监测仪实现数据可视化
德国内政部长:高成本不会阻止德国移除华为零部件
无线自由:探索AGV无线充电技术的自由度优势
Keil MDK3.20的stm32调试方法
由SiTime 推出解决5G基础设施的突破性 MEMS 时序解决方案
Oculus传闻中的Quest续集可能就在眼前
雷军首上《奇葩说》:为宣传小米手机玩疯
家用洗地机哪个品牌好 洗地机口碑排行榜
虹科教您 | 可实现带宽计量和延迟计算的时间敏感网络测试工具RELY-TSN-LAB操作指南与基本功能测试
ApiBoot Logging忽略路径不进行采集日志的教程
rk3566和h618参数对比
中国移动杨光:以云网商业价值为导向,引领产业向5G云XR方向创新发展
企业主动构建内部信息安全管理体系,提高数据安全和隐私保护能力
浅谈LoRa射频转4G网络服务器的核心功能
RFID军队资产管理可视化平台—部队资产管理系统
我国最先进自主水下机器人及创下多项记录的“黄胖鱼”
三维异构集成技术发展的竞争态势分析
苹果“电池门”事件:赔偿和解与背后的商业策略