STM32的SWD调试进不了main函数】的更多相关文章

玩了那么久STM32,还没有用SWD调试过程序(一直都是用printf调试程序),觉得有些落后了,于是开始搞起了SWD调试. 很快通过查阅资料,知道了keil里面的配置和ST-Link与STM32的连接方式,但是在调试时就是进不了main函数,具体的现象就是能够下载程序,但是进入调试后,进入的是如下页面: 一开始就是全速运行,而没有现象,而且是在某个地方死循环,就是进不了自己写的程序里. 查了好几个小时,一直都认为keil配置有问题. 最终,不晓得哪里来的灵感,将boot0和boot1都改成0,…
原文地址:http://blog.sunnyxx.com/2014/08/30/objc-pre-main/ 我是前言 一个iOS app的main()函数位于main.m中,这是我们熟知的程序入口.但对objc了解更多之后发现,程序在进入我们的main函数前已经执行了很多代码,比如熟知的+ load方法等.本文将跟随程序执行顺序,刨根问底,从dyld到runtime,看看main函数之前都发生了什么. 从dyld开始 动态链接库 iOS中用到的所有系统framework都是动态链接的,类比成插…
我是前言 一个iOS app的main()函数位于main.m中,这是我们熟知的程序入口.但对objc了解更多之后发现,程序在进入我们的main函数前已经执行了很多代码,比如熟知的+ load方法等.本文将跟随程序执行顺序,刨根问底,从dyld到runtime,看看main函数之前都发生了什么. 从dyld开始 动态链接库 iOS中用到的所有系统framework都是动态链接的,类比成插头和插排,静态链接的代码在编译后的静态链接过程就将插头和插排一个个插好,运行时直接执行二进制文件:而动态链接需…
两种 一.JTAG调试(5针), 二.SWD调试(2针), 在JTAG/SWD模式设置库函数 (在文件stm32f10x_gpio.c中): void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState) setup设置 1.Debug: use j-link cortex. run to main 2.Utilities: use Debug Driver Update Target before Debuggin…
STM32:main函数退出后发生什么? 我们都在说单片机要运行在无限循环里,不能退出,可退出之后会发生什么? 讨论STM32启动过程的文章数不胜数,可main函数结束之后会发生什么却少有讨论. 几日前突然想到这个问题,便开始了探究. 如果不想看冗长的调查和实验过程,可以直接到文章底部看结论,也有流程图版哦. 目录 STM32:main函数退出后发生什么? 网上搜索 文档查阅 实验测试 非半主机 半主机 结论 网上搜索 可能因为大家不太关心这种情况,我没有找到有关论述单片机main函数退出的文章…
异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. 方法1: class Program { /// <summary> /// 图片资料文件同步 /// </summary> /// <param name="args"></param> [STAThread] //加这个属性,创建并进入单…
stm32的swd接口的烧写协议是否公开的呢? 需要用一台好的示波器来抓才能有足够的存储深度,保证你能够过滤掉那个该死的50clock. 按照Arm的手册,每次转换发送方都需要一个TNR---但是我观察JLINK的波形却没有那个该死的TNR. 手册中说异步SWD需要,同步不需要----或者相反,但是我没有找到关于同步异步的描述. 姑且不管他,反正目前忽略掉TNR就能够读到该死IDR. 另外JLINK的复位时序很奇怪,大致是 70clk High,0xe79e(注意,SWD是LSB First),…
用SWD调试接口测量代码运行时间 关于时间测量的种种问题 在嵌入式中,我们经常需要测量某段代码的执行时间或测量事件触发的时间,常规的思路是: 1:在测量起始点,反转电平2:在测量结束点,再次反转电平 然后通过示波器或者逻辑分析仪来测量反转间隔,也就是代码时间 这种方法,在测量两个或多个时间信号同步的时候,非常有用,实际上,这也是唯一的方法. 但是如果在测量中,其它代码也会控制这个管脚电平或者周期性动作,这时便需要在<动作1>之前增加前导码,从而便于在繁杂的波形中,一眼识别出需要特定的波形 同时…
c# Clipboard.SetDataObject(bmp1)  在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常 将 try { //Image bmp1 = Image.FromFile("C:\\Users\\jake\\Desktop\\03.jpeg"); // Clipboard.Clear(); Clipboard.SetDataO…
自己在学c++的时候,一个项目中的多个cpp文件默认不允许多个main函数的出现,但是通过选项操作能够指定单个cpp文件进行运行,如下: 1.此时我就想运行第二个cpp文件,我们只需要把其他的两个右键属性 2.选项改为是,就不会参与到项目的运行中. 参考文章:https://blog.csdn.net/qq_35556064/article/details/84586081…
蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: 室内定位兴起,DWM1000 作为超宽带UWB的代表,在国内用的越来越多,但是可见资料非常少. 一方面是官方代码写的实在有点太差,另一方面是现在国内普及者将自己的代码当作是商业机密,当作是卖点,很少出来分享解析的. 我计划花一段时间来梳理DWM1000 代码,之前稍微接触过一点,感觉还能理解DWM1000 一点思路. 放在这里供大家参考. 作为穷人,目前我淘到一块DWM1000 模块,与我老旧的ST…
VS2015版本release查找main函数入口 vc++开发的程序main或WinMain函数是语法规定的用户入口,而不是应用程序入口.入口代码是mainCRTstartup.wmainCRTStartup.WinMainCRTSartup或wWinMainCRTStarup,具体情况由编译器制定. VS2015版本debug查找main函数在<VS程序反汇编找main函数>.release版本找main函数入口有所区别的地方在于一开始就单步步过一个call指令,jmp跳转.然后经过三个p…
IDA 常见操作 空格,切换反汇编视图 选择CALL或是跳转 进入函数内部或是跳转处 返回键 ESC daq.exe 分析32位程序 ,生成的IDA数据库文件是 .idb Idap64.exe 分析64位程序, 生成的IDA数据库文件是 .i64 查找程序main函数入口点 在exports选项卡下找到入口点 双击start_0 就进到了函数入口处.在没有导入签名库识别库函数前,显示的是sub_XXXX这样的地址. 使用IDA签名文件识别库函数 签名(view->open subviews->…
昨晚和同事一起看一个scala写的程序,程序都写完了,且在idea上debug运行是ok的.但我们不能调试的方式部署在客户机器上,于是打包吧.打包时,我们是采用把外部引入的五个包(spark-assembly-1.5.1-hadoop2.6.0.jar.commons-logging.jar.fastjson-1.2.10.jar.sqljdbc4.jar.log4j.jar)打包到我们的jar包中.好了,一切都好了...在java -jar demo.jar方式运行,以及把它拷贝到spark集…
int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下:void main(int argc, char *argv[]){... ...}argc和argv是main函数的形式参数.这两个形式参数的类型是系统规定的.如果main函数要带参数,就是这两个类型的参数:否则main函数就没有参数.变量名称argc和argv是常规的名称,当然也可以换成其他名称.那么,实际参数是如…
 Java面向对象 Main函数 静态的应用与单例设计模式 知识概要             (1)Main函数的细解 (2)静态的应用,静态变量,静态代码块,静态函数 (3)单例设计模式 1.Main函数的细解                             public static void main(String[] args) 主函数:是一个特殊的函数.作为程序的入口,可以被jvm调用. 主函数的定义:      public:代表着该函数访问权限是最大的.      st…
DB Version:9.5.3 环境:CentOS7.x 调试工具:GDB source:src/backend/main/main.c 56 /* 57 * Any Postgres server process begins execution here. 58 */ 59 int 60 main(int argc, char *argv[]) 61 { 62 bool do_check_root = true; 63 sleep(30); 64 progname = get_progna…
  如下,通过vc6.0编写一个hello world程序.尝试结合汇编代码.分析启动函数找到main函数.   在printf(xxx)插入断点,调试执行.如下,在堆栈窗口中可见main()下的一个函数mainCRTStartup().mainCRTStartup函数是连接器对控制台程序设置的入口函数,此函数会调用main函数.   双击mainCRTStartup 函数,可调准到基本文件CRT0.c中,此文件定义了启动的规则,也就是说程序首先是从这里运行的,然后才调用运行main()函数的.…
工具:OllyICE 调试快捷键说明: F2键:设置断点,只要在光标定位的位置 F4键:程序运行到光标处 F7键:单步步入.功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上. F8键:单步步过.每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码. 回车键: F9键:运行.按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行. VS2013 默认调用三个参数 VS2015 默认调用四个参数 对表…
1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数(说明:static变量包括static变量和static代码块,按位置顺序执行) 2. 样例 2.1 无继承的类的初始化顺序 public class TestClass { public static void main(String[] args) { // TODO…
main函数的argc.argv参数. 英文版:菜单Project -> Properties -> Configuration Properties -> Debugging在Command Arguments里填上即可. 中文版:菜单[项目] -> 属性页 -> 配置属性 -> 调试在[命令行参数]里填上即可. 不同参数之前用空格隔开.…
1. C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv[]) C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组.加上形参说明后,main函数的函数头应写为:  main (int argc,char *argv[]) 2. 由于main函数不能被其它函数调用,因此不可能在程序内部取得实际值.那么,在何…
Hadoop源码学习笔记(1) ——找到Main函数及读一读Configure类 前面在第一季中,我们简单地研究了下Hadoop是什么,怎么用.在这开源的大牛作品的诱惑下,接下来我们要研究一下它是如何实现的. 提前申明,本人是一直搞.net的,对java略为生疏,所以在学习该作品时,会时不时插入对java的学习,到时也会摆一些上来,包括一下设计模式之类的.欢迎高手指正. 整个学习过程,我们主要通过eclipse来学习,之前已经讲过如何在eclipse中搭建调试环境,这里就不多述了. 在之前源码初…
转自:http://blog.csdn.net/gary_ygl/article/details/8506007 1 最简单的程序  1)编辑helloworld程序,$vim helloworld.c 1 #include <stdio.h> 2 3 int main (int argc, char *argv[]) 4 { 5         printf("Hello world!\n"); 6 7         return 0; 8 } 2) 编译,$ gcc…
MapReduce 最简单的 MapReduce应用程序至少包含 3 个部分:一个 Map 函数.一个 Reduce 函数和一个 main 函数.main 函数将作业控制和文件输入/输出结合起来.在这点上,Hadoop 提供了大量的接口和抽象类,从而为 Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等. MapReduce 本身就是用于并行处理大数据集的软件框架.MapReduce 的根源是函数性编程中的 map 和 reduce 函数.它由两个可能包含有许多实例(许多 Map…
原博地址:https://blog.csdn.net/dcrmg/article/details/51987413 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个: 简单用法示例,新建工程键代码: #include <iostr…
title: VC 在调用main函数之前的操作 tags: [VC++, 反汇编, C++实现原理] date: 2018-09-16 10:36:23 categories: VC++反汇编分析 keywords: VC++, 反汇编, C++实现原理, main函数调用, VC 运行环境初始化 --- 在C/C++语言中规定,程序是从main函数开始,也就是C/C++语言中以main函数作为程序的入口,但是操作系统是如何加载这个main函数的呢,程序真正的入口是否是main函数呢?本文主要…
Keil开发的ARM程序main函数之前的汇编分析 ——BIN文件中RW段的数据移动 系统平台: STM32系列STM32F103ZE,512KB内部FLASH,64KB片内存储; FLASH地址范围0x0800 0000 ~ 0x0808 0000,用于存放代码; 片内存储地址范围0x2000 0000 ~ 0x2001 0000,用于存放数据; Cortex-M3上电后来到复位中断(已将前4个字节的值存入MSP堆栈指针),转到__main标号,完成RW段的移动.ZI段的初始化,建立堆栈,初始…
1. Eclipse-cdt如何添加main函数参数: 打开eclipse,新建工程.新建源文件,此处以C语言为例,写入代码如下: #include <stdio.h> //int argc 表示:命令行有几个字符串 //char *argv[]表示:一个字符指针数组,每一个元素都是一个指针,每一个指针都存储了一个字符串首地址 int main(int argc, char *argv[]) { printf("%d\n", argc); //打印参数个数 ; i <…
设置与读取C#控制台应用程序Main函数中的参数args 在项目属性面版->调试->命令行参数设置.空格分隔.读取:string[] str = Environment.GetCommandLineArgs(); Main函数是C#应用程序的入口点,Main函数可以有四种签名,分别如下: static void Main() static void Main(string[] args) static int Main() static int Main(string[] args) 执行这个…