STM32学习的总结编译调试错误

 由于学习 STM32 也不久,经常遇到一些编译调试的错误,但是老是找不到原因,多亏身边大侠的帮忙才得以解决。因此,将之前遇到的一些错误进行总结,方便以后自己查看,也希望能满足某些有需要的同行的需求。如果大家也有相关的经验,希望能写出来供大家分享。在此先谢谢啦!
      
      一、JILINK下载程序时,出现“ FLASH timeout, Reset the Target and try it again ”错误

               遇到这个问题,要检测TARGET选择的芯片型号与你使用的芯片型号是否一致。我遇到过这个问题,就是因为我两个芯片型号不一致所引起
        的。具体错误如下所示:
62197aa567b2b7f355d316727426e97f_240.jpg
                具体的修改过程如下所示:


                1、首先确定芯片的型号,如下所示:
a6dd381c9cce976a0cd275f3943257e8_616.jpg

                2、芯片型号选择好之后,接下来就需要选择下载器,我用的是JLINK,如下图所示。

f2c29fd4eaab0a2874e13747314a97d9_49.jpg




0abbd9ba40a2d11e7fede4ac037555e8_204.jpg

                3、选择合适的FLASH算法配置。




6edc517842679c658183fe969e7b9c34_18.jpg
225099d4f1d879edbba21a83917e2304_736.jpg

                添加新的FLASH配置之后,将之前的FLASH配置删去,如下图所示。


c530208b6c9b4542329fcf0f1e32ec8d_918.jpg

                4、保存配置,重新编译之后就可以下载了。




          二、JLINK在调试时出现“could not stop cortex-M device,please check the JTAG cable”

                 查看了多位网友的帖子,有以下几个原因(不一定都对呦):
                 
                 1、可能是因为将处理器的复位脚直接连接到GND,所以,没有复位信号来使MCU停止。

                 2、可能是JTAG的时钟配置的不正确,将其接到RTCK。

                 3、当系统的频率过高时,会导致该错误的发生。(换个频率较低的晶振,或者检查一下时钟配置,看是否是倍频设置的过高。)

                 4、看看你是否使用了看门狗,看门狗复位也会造成该错误的发生。

                 我的就是第四个原因,开启了看门狗,将看门狗关闭就可以使用JLINK调试了。

                三、JLINK调试时出现以下错误信息:

                        JLINK warning:CPU could not be halted
                        JLINK error:can not read register 0(R0) while CPU is running
                        JLINK error:can not read register 1(R1) while CPU is running
                              JLINK error:can not read register 2(R2) while CPU is running
                              ......
                
                    参考多位网友的帖子,原因可能有以下几点:
                    
                    1、设置debug->setting->dubug->connect & reset options -> reset 选项没有设置正确,应该设置为normal。

                2、BOOTO与BOOT1的设置是否正确。

                3、JLINK功能是否关闭。我的就是为了降低功耗将所有的IO都下拉所致,在调试的过程中,关闭该函数就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F103是意法半导体推出的一款高性能的微控制器,具有频率高、功耗低、内存大等特点,应用广泛。反编译指的是将已经编译好的程序代码转化为可读性更高、易懂的源代码。从实际操作来看,stm32f103反编译的难度相对其他芯片而言较大,因为这款芯片的程序代码较为复杂,而且ST公司采用了一些安全措施限制对程序代码的修改和调试。但是,如果技术人员熟悉STM32F103内部结构和指令集,并且具备扎实的反编译技术,通过使用一些反编译工具,可以实现将STM32F103程序代码反编译为可读性更高的源代码,便于分析和调试。最终,反编译的成果取决于技术人员的水平和使用的反编译工具的优劣。需要注意的是,为了保护代码的安全,进行反编译操作必须得到程序代码所有者的允许,并且不能将反编译的程序代码用于商业用途。 ### 回答2: STM32F103是一款常用的ARM Cortex-M3单片机,其代码可以通过反编译的方式查看。反编译是指将已编译好的可执行程序转变为源代码的过程,主要用于代码的分析和修改。 对于STM32F103的反编译,需要使用一些专业的工具和技巧。其中,最常用的反汇编工具为IDA Pro,可以将二进制代码转化为伪汇编代码进行分析。此外,还可以通过JTAG调试的方式获取程序内存进行反编译。 需要注意的是,在反编译过程中,可能会存在一些困难和限制。由于编译器和优化器的存在,反编译后的代码可能与原先的代码存在差异,可能会出现错误或不可预知的情况。同时,厂商可能会采取一些加密和保护措施,使得反编译变得更加困难。 因此,在进行STM32F103的反编译时,需要具备一定的编程和计算机知识,同时也需要注意保护知识产权和不侵犯他人的利益。 ### 回答3: STM32F103是一种常用的单片机芯片,在应用中经常会使用到它的固件以实现各种功能。但是,这些固件常常是通过C或者汇编语言编写而成的,难以直接修改或调试。因此,对于一些需要定制化开发的应用而言,反编译STM32F103的固件就成为了一个常见的需求。 要反编译STM32F103的固件,我们首先需要将固件从芯片上读出。这个过程需要使用一些专业的工具和技术,例如JTAG调试接口、编程器等。不过在读取的过程中,由于固件是以二进制代码的形式存储在芯片中的,因此我们需要使用反汇编工具将其转换成可读的汇编代码。 通过反汇编工具,我们可以看到每个固件函数的汇编代码,包括其输入、输出参数、执行语句以及调用的子函数等。反汇编工具还可以将代码按照C语言的格式进行输出,更加方便阅读和理解。但需要注意的是,反汇编出来的代码往往不太容易阅读,需要有一定的汇编语言基础,以及对STM32F103硬件的了解。 总之,反编译STM32F103固件需要使用专业的工具和技术,对于非专业人士比较困难,需要一定的学习和实践。但是通过反编译,我们可以更好地理解固件的执行流程和实现原理,为应用的开发和调试提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值