如果我们的MCU调试不通过,我们该如何测试?(未完待续)
我们拿到一款MCU,首先在选型的时候对他们都会有一个大概的了解,首先我们知道它多大与的FLASH,多大的RAM,是否与我们的项目适合,资源上是否足够,内频是否足够,运行速率能否达到标准,性能怎么样,比如抗静电干扰,高温,潮湿的环境,寒冷,对芯片本身的影响,还有如何焊接几层板,成本,是否易于开发,这里分为软件和硬件来说明一下:
首先说一下硬件:
一般最小系统+外围模块,几伏供电,供电等级,电压等级(其实这个M0等也会涉及),原理图的设计,元器件的选型,元器件的布局,布线更是一门大学问,甚至有些特殊场合,硬件对性能有非常严格的要求,比如说抗静电干扰,电磁感应等。(后面我会重新补充更新这一块)
静电感应干扰是累积电荷高电压放电的电击现象。干扰表现是非持续性的,但是可以对电子设备造成永久性损害。用静电计可以测到。可以用抗静电措施与接地等方法消除。
电磁感应干扰是混进信号通路的杂波,会使信号波形产生大量毛刺,甚至严重到使波形发生畸变。干扰表现是持续性的,但是通常不会是永久性损害。一般通过电磁屏蔽隔离措施与接地等方法消除。
然后是软件:
软件其实就是配置寄存器,再配置寄存器的过程中需要参考手册,学会看手册,看手册也是一门学问,比如说SPI的配置,首先看他选择了那几个引脚,然后配置成了什么模式,选择了那个时钟源,然后如何与外部器件进行通讯,外部器件的规格,这里有需要看SPIFLASH的型号和它对应的手册,不过好在现在有很多MCU里有库函数,省去了很多麻烦。
那么我们该如何测试呢?
首先要看懂代码,明白他想要做什么,然后看它问题是出在哪?引脚,时钟,模式,寄存器的配置,很多问题都出现在这,因为32位机的资源,寄存器很多,如果没有参考手册,一般什么都做不了,但是既然出现了问题,就要解决问题,好在现在大多数集成开发环境已经具有了调试,仿真的功能,还有示波器,电压表,逻辑分析仪等配合分析解决问题的工具,出现问题切记不要欺骗自己,不要得过且过,我承认换一种方法是达到效果的捷径,但你一定要明白,为什么这么做不可以?为什么?这样你又能多明白一种道理,比如选取晶振为时钟源,但是他不工作,换一个内部时钟,达到了效果,但是我们也要知道,为什么绕过它就行,而使用它就不行呢?是不是因为它坏掉了,或者说它并不能做这个接口的时钟?为了验证我的猜测,我把所有例程都选择晶振为时钟都跑了一遍,发现没有一个能够工作的,然后,基本可以确定它确实是坏掉了,然后进行下一步的测试,用示波器观察它是否起振,结果跟预计的一样,它不起振,确实是坏掉了,还有一种问题,纯粹是软件的问题,这种验证方法,有引脚的可以测引脚,没有引脚的,可以仿真调试,实在不行那就凭借自己强大的大脑去思考,分析验证,一遍一遍的尝试,观察现象,比如一个定时器进不去中断,我们可以用调试,仿真的办法进行验证,然后查看手册,分析原因,查看库函数,调用,结果发现是一个定时器的标志位起了冲突,还有一个串口问题,也是标志位的错误,分析问题前提是弄懂问题,熟悉你手上的东西,还有一个问题是关还没有于库函数的问题,问题已经解决,但我目前还没弄懂,无法解释,明天有时间,我再看看,熟练使用工具,熟悉你手中的MCU,然后用各种验证方法,计算也好,分析也好,替代也好,总之,解决问题,和为什么会出现这种问题,搞懂,你就会少走很多弯路,会有很大的成长。
如果我们的MCU调试不通过,我们该如何测试?(未完待续)的更多相关文章
- python 单步调试初探(未完待续)
pdb 调试: import pdb pdb.set_trace() pudb 调试: http://python.jobbole.com/82638/
- 使用IntelliJ IDEA进行Python远程调试的需求(未完)
使用IntelliJ IDEA进行Python远程调试的需求(未完) 在研究深度学习Machlearning时,有时候需要借助ubuntu搭建的tensorflow环境,另外也有越来越多的运算程序只能 ...
- iOS——关于创建真机调试证书(发布证书,测试(调试)证书,推送调试证书)、iOS开发者账号申请 请用开发者账号去iTunes connect 查看状态
- 无法自动调试 未能调试远程过程。这通常说明未在服务器上启用调试 WCF 托管在IIS上
解决方案,把新建的网站的app.config修改下配置 <system.web> <!-- 设置 compilation debug="true" 可将调试符号插 ...
- ngrok内网穿透(微信调试:只试用于微信测试账号)
一.简介 ngrok:https://ngrok.com 功能:就是把外网地址映射到本地的内网地址 缺点: 1.免费版生成的域名是随机的(由于我是用于调试,就没什么关系,如果是正式生产环境可能需要一个 ...
- 异常处理与调试6 - 零基础入门学习Delphi55(完)
调试(Debug) 让编程改变世界 Change the world by program 使用调试窗口 为方便调式程序,Delphi中提供了许多调试窗口,给开发人员的调试工作带来了极大的便利. 断点 ...
- VS2017 启动调试报错:ID为{....}进程未启动解决方案
今天遇到这么一个问题,打开VS启动调试,始终报错,如下图: 我重启VS,甚至重启电脑都不得行,那个进程号还在变化,就在网上查找资料,各式各样的解决方案,这里我记录我成功的方案. 打开项目文件地址,在解 ...
- 百度搜索_Selenium WebDriver 环境搭建和错误调试_chromedriver_win32必须下载否则无法测试chrome
转自: http://www.360doc.com/content/14/0821/18/597197_403634783.shtml zTree 东西不多,我也一直使用着原始的人工测试手段,随着内 ...
- 调试正常,签名打包提示 "x应用未安装。"
今天在工作的时候遇到一个奇葩的问题,开发一个新项目,然后在AS中调试运行都是一切正常.打包签名后,缺无法安装,提示"x应用未安装."如图所示. 网上找了好多方法,比如,签名的时候要 ...
随机推荐
- IWDG—独立看门狗
本章参考资料:<STM32F4XX 中文参考手册> IWDG 章节.学习本章时,配合<STM32F4XX 中文参考手册> IWDG 章节一起阅读,效果会更佳,特别是涉及到寄存器 ...
- 利用IT++搭建通信仿真平台
IT++ is a C++ library of mathematical, signal processing and communication classes and functions.也就是 ...
- 一款基于css3的简单的鼠标悬停按钮
今天给大家分享一款基于css3的简单的鼠标悬停按钮.这款悬停按钮鼠标经过前边框是间断的.当鼠标经过的时候边框间隔消失.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div ...
- 通过buildroot 移植 libsocketcan.so 以及 can 工具
进入buildroot make menuconfig Target packages ---> Networking applications ---> [*] can-utils // ...
- Idea配置sbt(window环境)
近开发spark项目使用到scala语言,这里介绍如何在idea上使用sbt来编译项目. 开发环境:windows 1. 下载sbt http://www.scala-sbt.org/download ...
- ansible register when: result | succeeded when: item.rc != 0
ansible register 这个功能非常有用.当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般会用到register . 举个例子: ...
- 上手并过渡到PHP7(1)——基于Homestead的PHP7和XDdebug环境
PHP7 up and running 泊学实操视频泊学原文链接PHP7, Xdebug and Homestead 在经历了13个RC版本之后,PHP 7终于来了.在我们上手评估PHP 7的新特性之 ...
- (五)Qt实现自定义模型基于QAbstractItemModel
一个小例子 QTableView + QStandardItemModel QStandardItemModel model; //设置大小 model.setColumnCount(); //列 m ...
- 关于Unity中UI中的Slider,Toggle和InputField等节点
一.Slider节点 1.创建一个Canvas 2.对Canvas进行一些初始化操作 3.创建一个Image的UI节点在Canvas下面作为子节点 4.把Image铺满整个Canvas,把宽高设置为6 ...
- 关于用Cocos2d-x.3.10运行别人游戏项目的步骤
1.首先打开Cocos那个一体化软件. 2.创建工程,取名字,选择路径. 3.用VS2013打开新建的项目. 4.打开cocosdata(我自己放游戏项目的文件目录)的相应项目(自己刚创建的). 5. ...