记录一次keil调试过程:自动识别GPS厂家芯片
一个嵌入式程序可能使用了不同家的GNSS导航接收机,虽然都是nema0183格式的数据,但是不同的厂家对于0183的版本选择不一样,往往会造成数据格式略有区别,经过对比,发现区别在于一条语句的逗号个数不同,或者是包含的信息不同。选择越来越多的GNSS接收支持多星座组合导航,典型的语句为GNGGA,就是以GN开头的表示使用了多星座,理论上多星座的定位精度优于单星座。
本次实践要完成程序自动识别GNSS接收的厂家,也就是类型,根据识别的情况调用不同的解析函数,(是否可以用一个解析函数来处理所有厂家的呢?理论上可行,但是操作起来函数很冗杂,看起来不是很爽,这里采用硬件驱动的思路,一个硬件对应一个函数。)经过一番操作,主要就是上电之后,各个厂家的产品都会输出一些系统和制造商信息,根据这个信息来判断厂家类型。
实际遇到的问题是,使用0x8000000的程序没有问题,当修改为0x8008000的程序+bootloader之后,程序异常,无法自动识别厂家信息。
原因猜测:1.bootloader与APP程序冲突?
上述原因如果成立,则现象应该为app运行不正常,异常的时候会触发看门狗,从而程序不断复位,通过串口打印出来的调试信息,未发现这个现象。考虑到bootloader和APP都已经是发布过的版本,应该是不存在这个问题,此原因排除。
2.bootloader程序与对应的硬件不兼容,打开了某些引脚和功能,造成读取失败。
解决方案:找到了适配的bootloader程序,下载测试,依旧没有解决问题。
3.经过深入分析认为,既然是上电之后要马上读取厂商信息,那么有没有可能bootloader启动的时候,就给gnss接收机上电,于是厂商信息已经发完了,串口缓存区已经把数据覆盖了。经过和同事讨论认为这个原因极有可能,但是没有找到bootloader的源码,所以不知道是否是这个原因。但是我可以控制应用程序,通过在应用程序初始化的时候,先把gnss模块关闭电源,就是不管之前什么状态,初始化的时候先关闭-延时-再打开,这样就可以读取厂家信息了。
经过第三步的操作,问题得以解决。
经验总结:有人说程序的智能化在于传感器,这一次就明白了自动识别外设的方法,靠的是数据。
记录一次keil调试过程:自动识别GPS厂家芯片相关推荐
- keil调试过程中源代码界面没有箭头
对于一个初次使用keil软件的菜鸟,由于对于操作缺乏了解,错误的操作造成了错误的结果! 问题定位1:由于没有将源代码加入到Target中管理. 分析1:对于这个led.c文件如果移出这个project ...
- 腾讯在线教育互动课堂——Demo调试过程记录
官方文档地址:https://cloud.tencent.com/document/product/680/17888 "Demo调试"不像集成使用,不需要完全按照文档一步步处理, ...
- 到银联的调试过程,总结,记录
几个月前,支付宝在杭州率先实现公交扫码付.一石激起千层浪,我们终端设备的升级改造迫在眉睫.而实现银联小额免密免签,扫码付与ODA,时间紧迫,责任重大. 7月24号到**银联调试小额免密与 银联扫码支付 ...
- Proteus仿真stm32和51单片机,串口通信调试过程记录
前言 本文所用Proteus版本为8.10,主要内容为在Proteus中仿真stm32和51单片机进行串口通信,记录了仿真过程中遇到的问题和解决办法. 这里要注意的是,在Proteus中 ...
- PIXHAWK上安装PX4Flow光流传感器及调试过程
摘自:https://blog.csdn.net/wlrh253250/article/details/90146561 PIXHAWK上安装PX4Flow光流传感器及调试过程 置顶 wang-rh ...
- KEIL 调试的 ini 文件有什么用?
在初学者眼里,调试手段很多,自己平常使用调试手段的具有局限性.单一性,碰到复杂的问题还是很难解决.比如看watch窗口.memory窗口.打断点这些基本的调试手段. 就比如新接手中的一个项目,总是会出 ...
- PLC、STM32单片机、PC端485modbus通信调试过程
设备明细: PLC:埃森ARS-010-32PLC,软件AR Logic Editor. 单片机:STM32F103RCT6,软件keil. 测试软件:modbus串口调试软件.modbus poll ...
- stm32--FatFs调试过程(SPIFlash)
移植方法参见我的另一篇博客:<stm32--FatFs移植(SPIFlash)>. 本文仅记录在初次移植完成后,遇到的问题,和解决的过程. 调试记录: 问题1:f_open返回3,即磁盘没 ...
- KEIL 调试经验总结
来源:公众号[鱼鹰谈单片机] 作者:鱼鹰Osprey ID :emOsprey 通过前面的多篇文章(已整理成专辑)我们已经了解了很多的 KEIL 调试方法,但是到底该怎么使用这些方法呢?这篇文章将 ...
- keil 调试 操作系统_调试操作系统:内存分配的经验教训
keil 调试 操作系统 It began, as so many investigations do, with a bug report. 和许多调查一样,它是从一个错误报告开始的 . The n ...
最新文章
- ADO.Net五个对象
- PTA浙大版python程序设计题目集--第1章-2 从键盘输入三个数到a,b,c中,按公式值输出 (30 分)
- python3环境变量_配置环境变量切换到python3.7
- 【华为云技术分享】MySQL Seconds_Behind_Master简要分析
- PCIe的事务传输层的处理(TLP)
- FileDemo4~5 获取一个目录中的所有子项/部分子项
- 训练的时候 nvidia:自动刷新
- Hybrid Skeleton Driven Surface Registration for Temporally Consistent Volumetric Video
- iPhone5/iPad4越狱后10.3.3降级8.4.1详细教程
- 慕课翁凯习题集答案01厘米转换为英尺,英寸问题
- 数学也荒唐:20个脑洞大开的数学趣题
- Java面向对象总结篇
- 有关Nodejs的视频教程
- 【干货】如何有效地提问
- (三篇长文让你玩6Pandas)数据分析入门_PART2常用工具包_CH02数据分析工具:Pandas__Part03(统计分析基础)
- WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers
- 关于 Windows 7 语言包
- 使用railway部署Node项目及遇到的问题
- MATLAB 控制baxter机器人相关信息(个人记录--学习用)
- VBA 自定义函数语法