用ozone调试stm32的boot跳APP的问题--Apple的学习笔记

一,前言

过年不能一直玩游戏呢~那么我干什么呢!又开始折腾了,记得之前做过一个boot跳app是正常的,原因是base工程一样,一个做boot,一个做app,但是我app框架换成了用cubemx生成的之后,看上去boot就无法app了。所以我今天就来查下这个问题。

二,调查方法

首先要看是否boot跳入app其实也简单,用一个led灯即可,总的来说我仅修改了app框架代码,怎么就无法跳入app了,所以大体上我觉得是跳入APP的。但是我不想用led或printf来调试,我想用调试器来来说,但是keil没有attach功能,怎么调试呢!我想到了ozone是可以attach的。

三,问题原因

用keil分别下载了boot+app,然后用ozone直接加载app的elf,attach进入后,在init函数打断点,然后开发板上点击reset后,ozone的断点就被捕获到了,说明boot能跳入app,然后进入了app的while死循环hook函数。

image.png

分析一下原因,应该就是设置频率设置了2次导致的,应该说这个cubemx的函数写的健壮性不强,于是我本来想直接删除此函数,因为boot中已经设置过了,但是想了下boot中用的base工程中的外设频率设置和app应该是不同的,所以boot我基于cubemx做了一个,然后app中的systemInit就被我删除了。确保外设分频都是我的期望值,然后app正常运行,哈哈~

四,小结

工欲善其事必先利其器,要用各种高效方法来解决问题,就要掌握各种工具,SEGGER Embedded Studio for ARM 5.70a我也安装了下,它也有attach功能,但是在编译的适合比较麻烦,我还不习惯,将来有机会再研究下。

你可能感兴趣的:(用ozone调试stm32的boot跳APP的问题--Apple的学习笔记)