Keil C调试经验】的更多相关文章

我们使用Keil C调试某系统时积累的一些经验:     1.由于Keil C对中文支持不太好,因而会出现显示的光标与光标实际所在不一致的现象,这会对修改中文注释造成影响.在Windows2000下面,我们可以把字体设置为Courier,这样就可以显示正常.     2.当使用有片外内存的MCU(如W77E58,它有1K片外内存)的时候,肯定要设置标志位,并且编译方式要选择大模式,否则会出错.        3.当使用Keil C跟踪程序运行状态的时候,要把引起Warning的语句屏蔽,否则有可…
CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处理器构成.一般情况下,集成好的模组我们只看到外面的镜头.接口和封装壳,这种一般是固定焦距的.有些厂商只提供芯片,需要自己安装镜头,镜头要选择合适大小的镜头,如果没有夜视要求的话,最好选择带有红外滤光的镜头,因为一般的sensor都能感应到红外光线,如果不滤掉,会对图像色彩产生影响,另外要注意在PCB…
上一讲中我们学习了如何建立工程.汇编.连接工程,并获得目标代码,但是做到这一 步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能 发现并解决,事实上,除了极简单的程序以外,绝大部份的程序都要通过反复调试才能得到 正确的结果,因此,调试是软件开发中重要的一个环节,这一讲将介绍常用的调试命令.利 用在线汇编.各种设置断点进行程序调试的方法,并通过实例介绍这些方法的使用. 一.常用调试命令 在对工程成功地进行汇编.连接以后,按 Ctrl+F5 或者使用菜单 Debug->…
转自:http://bbs.52rd.com/forum.php?mod=viewthread&tid=276351 CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处理器构成.一般情况下,集成好的模组我们只看到外面的镜头.接口和封装壳,这种一般是固定焦距的.有些厂商只提供芯片,需要自己安装镜头,镜头要选择合适大小的镜头,如果没有夜视要求的话,最好…
调试经验--硬盘U菜 随着嵌入式设备功能的开发,随着对存储设备的需求:需要存储大量数据信息.需要在转储数据,U盘升级功能等.     在使用存储设备的过程中,我们遇到一些问题,也总结了些经验: 1.几个硬盘经常使用命令  2,硬盘信息分析 3,U盘升级失败的原因分析 4,U盘识别的分区更改为/dev/sda 一.几个硬盘经常使用命令 硬盘分区: fdisk /dev/hda  (np1  w) 格式化硬盘:mkfs.ext2 /dev/hda1 设置UDMA 6 传输模式:hdparm -X70…
转自:https://blog.csdn.net/yapingmcu/article/details/37817727 转自:http://bbs.52rd.com/forum.php?mod=viewthread&tid=276351 CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处理器构成.一般情况下,集成好的模组我们只看到外面的镜头.接口和…
转载2015-06-14 20:23:04 一.在keilc的调试状态下,如何观察各个片内外设的运行状态?如何修改它们的设置?​ 在调试状态下,点击Peripherals菜单下的不同外设选项命令,就会显示或隐藏对应外设的观察窗口. 在程序运行时,各个片内外设的状态会不断地变化,为了随时观察它们的变化,为了随时观察它们的变化,可以启用view菜单下的Periodic Windows Update命令,让keilc自动周期刷新各个调试窗口.​ 二.在keilc的调试状态下,如何观察和修改变量?​ 在…
1,程序异常崩溃后用windbg辅助调试解决的经验  状况:我的程序调用别人的库做 文件写入工作. 在这一过程中出现异常,程序崩溃. 经反复检查,认为自己的程序没有错,但无法判断在别人库里哪里有错. 使用windbg绑定程序进程进行调试,可以在发生异常时候,获取函数调用顺序,进而知道在哪个函数出了异常. 由截图可见,在我的程序函数CEncryptionUtils::write_user_certs调用别人的MWHwMan库的SDFP_Close函数中调用另一个人的sdfp_lib库中的SD_Sa…
一是设计功能 我的理解协议就是一个命令包,通过给出不同的控制命令,来调动不同的功能模块,实现不同的功能,如读数据,写数据,擦除等. 二设计过程 先看了尤老师的视频,主要讲了大致设计原理和总体框架,当然咯还有时序图,然后就从核心的控制模块做起,控制模块又分成三个部分,一是读数据,二是页写数据,三是擦除时序.我是先写一个部分,再仿真验证一个部分,每写好一个都把另外一个屏蔽了仿真验证,然后接着写下一个部分,直到把整个控制模块写好,再把所有功能模块在顶层连接好,然后我直接就建立了工程,然后下板验证,自然…
一.伺服电机的双环pid 双环pid在正常底盘运动的控制中已经足够了,但是对于双轴云台的控制来说,双环pid的云台控制的响应速度是远远不够的,所以加入了电流环的控制. 两篇大佬的文章--这是我学习pid和电机控制的入门 https://www.cnblogs.com/sasasatori/p/12227708.html https://www.cnblogs.com/sasasatori/p/11672918.html 双环pid 之前对电双环pid的调试,总结了一些经验. 当时的理解比较粗浅,…
在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug.最近,我回顾了我所有的194个条目(从13岁开始),看看有什么经验教训是我可以学习的.下面是我总结的最重要的经验教训,包括编码,测试和调试三个方面.编码下面这些都是我经历过的会导致难点bug的问题:1.事件顺序.在处理事件时,提出下列问题会很有成效:事件可以以不同的顺序到达吗?如果我们没有接收到此事件会怎么样?如果此事件接连发生两次会怎么样?哪怕通常不会发生,但系统(或交互系统)其他…
上一讲中我们学习了几种常用的程序调试方法,这一讲中将介绍Keil提供各种窗口如输出窗口.观察窗口.存储器窗口.反汇编窗口.串行窗口等的用途,以及这些窗口的使用方法,并通过实例介绍这些窗口在调试中的使用. 一.程序调试时的常用窗口 Keil软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows).观察窗口(Watch&Call Statck Windows).存储器窗口(Memory Window).反汇编窗口(Dissambly Window)串行窗口(Serial Wi…
转载自http://blog.csdn.net/g_salamander/article/details/9163455 以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点: 一.D-PHY 1.传输模式 LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHz HS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane 传输的最小单元为 1 个字节,采用…
用定时器延时,有时候显得有点麻烦,我们不如考虑软件精确延时,软件延时无非就是利用for或while多重循环.以前用到延时函数时,都是从网上下载别人写好的延时子程序.延时5ms,400ms,1s,……,这些延时函数的函数名中都清清楚楚地标明了延时的时间,可我一直不知道这些函数是如何编写的,确切地说,是如果根据延时时间来确定循环次数的.如果是纳秒级的延时,可以通过示波器来观察波形,或者反汇编一下,计算一下指令执行时间,但如果延时时间相对较长,示波器便无能为力了.这几天好好看了一下Keil调试,发现K…
原文网址:http://blog.csdn.net/cmm20071020/article/details/7179958 把一个i2c驱动从2.6.21升级到2.6.39 上网查到一篇帖子,讲了驱动分为i2c总线,i2c设备,总线驱动做实际的总线读写操作,设备驱动实现针对不同设备操作.先找一篇帖子看看整体架构,再看代码,理解效果不错,这招是跟老猫学的. 又查到一篇帖子,讲了从老版本i2c驱动,升级到新版本,需要做哪些变更,是翻译的内核文档. 照做,但是i2c设备驱动的probe函数调不起来,这…
前言:不知不觉写了很多,希望你能耐心看完这篇文章 任何一个编程者都少不了要去调试代码,不管你是高手还是菜鸟,调试程序都是一项必不可少的工作.一般来说调试程序是在编写代码之后或测试期修改Bug 时进行的,往往在调试代码期间更加能够体现出编程者的水平高低以及分析问题的准确度.不少初学者在寻找错误原因时,总是不得要领,花费了大量时间却无法解决一些最终证明是相当简单的Bug. 在长期解答 zTree 相关问题时,也的确发现很多的问题其实不算什么问题,仅仅是编程者不会调试造成的,通过自己日常工作观察,这里…
以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点: 一.D-PHY 1.传输模式 LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHz HS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane 传输的最小单元为 1 个字节,采用小端的方式及 LSB first,MSB last. 2.Lane States *  LP mode 有 4 种状态:…
参考: 很郁闷,买来没多久的 STM32F4-DISCOVERY 就挂了? STM32F103RB   Jlink调试的时候出现flash timeout.reset the target and try it again 看完以上网友的方案后本人使用FlyMcu读芯片,内容提示芯片被锁.遂想下载一个程序试试,不想程序可以下载,然后再读芯片时已正常. 返回Keil使用ST-Link也可正常使用. 从网友结论及本人测试,些次出现“flash timeout.reset the target and…
在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug. 最近,我回顾了我所有的194个条目,看看有什么经验教训是我可以学习的.下面是我总结的最重要的经验教训,包括编码,测试和调试三个方面. 编码 下面这些都是我经历过的会导致难点bug的问题: 1.事件顺序.在处理事件时,提出下列问题会很有成效:事件可以以不同的顺序到达吗?如果我们没有接收到此事件会怎么样?如果此事件接连发生两次会怎么样?哪怕通常不会发生,但系统(或交互系统)其他部分的b…
转自:http://blog.csdn.net/g_salamander/article/details/9163455 版权声明:本文为博主原创文章,未经博主允许不得转载. 以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点: 一.D-PHY 1.传输模式 LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHz HS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps]…
如今升级快.网上的资料仅仅能做參考. 学到了NDK逆向这一块,昨天为了能让IDA 能动态调试SO,瞎折腾了非常久,这里分享一下我的经验. 工具: IDA pro 6.8 Android 5.x IDA 6.8 在看雪吾爱应该都能找到下载地址. 我的手机是三星 on7 Android 5.1系统. 曾经我一直用的是IDA 6.6.群里人说5.0以上的系统要用6.8- 在启动android_server 服务的时候遇到以下这样的情况有可能就是IDA的版本号不正确了. 以下開始正式写,内容可能有些反复…
目录 一.D-PHY 1.传输模式 2.Lane States 3.Lane Levels 4.操作模式 5.时序要求 二.DSI 1.线路构成 2.两种接口的 LCD 3.数据包类型 4.从控制器到外设发送的包类型 5.从外设到处理器数据包类型 6.Video 模式的 3 种数据格式 三.调试记录 转载自https://blog.csdn.net/g_salamander/article/details/9163455,整理修改图示部分,参考MIPI DSI Spec V01 以下是最近几个月…
下面这些都是我经历过的会导致难点bug的问题: 1.事件顺序.在处理事件时,提出下列问题会很有成效:事件可以以不同的顺序到达吗?如果我们没有接收到此事件会怎么样?如果此事件接连发生两次会怎么样?哪怕通常不会发生,但系统(或交互系统)其他部分的bug可能会导致事件发生呢. 2.过早.这是第一点“事件顺序”的一个特例,但它确实会引起一些棘手的bug,因此我把它单独拎出来说明.例如,如果信令消息在配置和启动程序完成之前就被过早接收,那么可能就会有很多奇怪的行为发生.另一个例子:连接在被放进空闲列表之前…
相信相信不少人在开始用OpenvSwitch(以下简称OVS)或者修改源码的时候,都不知道如何去调试,根据我的学习历程以及从网上搜集的资料做一个汇总. 一. 个人经验 从网上找相关资料,熟悉OpenvSwitch的构架和自己需要修改的代码,后续如果有事件,我会写关于OpenvSwitch2.4.0的代码分析(和前面版本的核心相同); 推荐一个QQ群:387310964,里面的大神都挺热心的,凡问必答; 前面写了一个自动化编译和安装OVS的脚本,通过我的观察,即使编译有错误,不会自动中断,而是会编…
GDB调试的一些很有用经验: 1. gdb调试,如果有参数,可以在run命令后加,也可以使用set args :如果是使用gdbserver+gdb的远程调试方式,参数可以在gdbserver后面加. 2. gdbserver通过网络远程调试一个正在运行的进程:gdbserver IP:PORT –attach PID 3. gdb显示:.dynamic section for “/lib/libthread.so.0” is not at the expected address(wrong…
记录一下调试usb有关的芯片的一些经验. 1.有i2c的芯片.一般有i2c的地址选择. 检查地址选择是否正确,地址是多少.SCL和SDA上面是否有上拉电阻. 芯片的地址是几位的.I2c的时钟频率也是必须设定的一个方面.工作速率一般有100K和400K两种.并且里面寄存器一般为一个byte.I2c出错时.须要測量一下i2c bus上是否真的有信号 2.有时钟的芯片,搞清楚时钟採用的是那种时钟,晶振还是RTC. 一般芯片为了方便使用.可能同意几种不同的时钟选择.能够是通过引脚进行选择的.也可能通过寄…
在调试过程中,可以使用keil自带的逻辑分析仪查看变量的试试信息,减少串口输出,提高部分cpu的效率,可以添加以下信息: 1.gpio引脚 2.全局变量 全局静态变量.局部变量是不行的. 然后,添加变量后,需要右键设置:如下 g_u32tick 是8位的全局变量…
引用:http://blog.sina.com.cn/s/blog_3c63d2bd0102vt9a.html 问题描述:使用MDK进行软件设计时没有使用ST官方的模板而是手动建立的工程,使用ST官方提供的3.5版本固件库.编译完全通过,在使用软件仿真时出现问题,表现为程序无法跳转到main入口,直接在SystemInit()函数就无法执行,调试窗口出现如标题所示的错误信息: error 65: access violation at 0x40021000 : no 'read' permiss…
最近在调试一次SMBIOS的动态更新以及I2c设备的配置读取时,遇到了很多问题,特此总结: 1. 第一个是调试一个I2c设备的时候,遇到了一个很奇怪的问题,也由此问题总结了下SMBUS模块的知识,如下: 待完成 2. 在动态更新到SMBIOS某些type字串时,遇到很多细节问题,总结如下: 1)问题:同样的代码,放置位置不同会导致代码跑飞: 如下图,在获得了SmBiosType1Record的Protocol时,如果StringNumber的两个变量赋值分开,将红框代码移至下面,就会导致值改变,…
在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug.最近,我回顾了我所有的194个条目(从13岁开始),看看有什么经验教训是我可以学习的.下面是我总结的最重要的经验教训,包括编码,测试和调试三个方面. 编码 下面这些都是我经历过的会导致难点bug的问题: 1.事件顺序.在处理事件时,提出下列问题会很有成效:事件可以以不同的顺序到达吗?如果我们没有接收到此事件会怎么样?如果此事件接连发生两次会怎么样?哪怕通常不会发生,但系统(或交互系统…