一个嵌入式程序可能使用了不同家的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厂家芯片相关推荐

  1. keil调试过程中源代码界面没有箭头

    对于一个初次使用keil软件的菜鸟,由于对于操作缺乏了解,错误的操作造成了错误的结果! 问题定位1:由于没有将源代码加入到Target中管理. 分析1:对于这个led.c文件如果移出这个project ...

  2. 腾讯在线教育互动课堂——Demo调试过程记录

    官方文档地址:https://cloud.tencent.com/document/product/680/17888 "Demo调试"不像集成使用,不需要完全按照文档一步步处理, ...

  3. 到银联的调试过程,总结,记录

    几个月前,支付宝在杭州率先实现公交扫码付.一石激起千层浪,我们终端设备的升级改造迫在眉睫.而实现银联小额免密免签,扫码付与ODA,时间紧迫,责任重大. 7月24号到**银联调试小额免密与 银联扫码支付 ...

  4. Proteus仿真stm32和51单片机,串口通信调试过程记录

    前言 本文所用Proteus版本为8.10,主要内容为在Proteus中仿真stm32和51单片机进行串口通信,记录了仿真过程中遇到的问题和解决办法.        这里要注意的是,在Proteus中 ...

  5. PIXHAWK上安装PX4Flow光流传感器及调试过程

    摘自:https://blog.csdn.net/wlrh253250/article/details/90146561 PIXHAWK上安装PX4Flow光流传感器及调试过程 置顶 wang-rh ...

  6. KEIL 调试的 ini 文件有什么用?

    在初学者眼里,调试手段很多,自己平常使用调试手段的具有局限性.单一性,碰到复杂的问题还是很难解决.比如看watch窗口.memory窗口.打断点这些基本的调试手段. 就比如新接手中的一个项目,总是会出 ...

  7. PLC、STM32单片机、PC端485modbus通信调试过程

    设备明细: PLC:埃森ARS-010-32PLC,软件AR Logic Editor. 单片机:STM32F103RCT6,软件keil. 测试软件:modbus串口调试软件.modbus poll ...

  8. stm32--FatFs调试过程(SPIFlash)

    移植方法参见我的另一篇博客:<stm32--FatFs移植(SPIFlash)>. 本文仅记录在初次移植完成后,遇到的问题,和解决的过程. 调试记录: 问题1:f_open返回3,即磁盘没 ...

  9. KEIL 调试经验总结

    来源:公众号[鱼鹰谈单片机] 作者:鱼鹰Osprey ID   :emOsprey 通过前面的多篇文章(已整理成专辑)我们已经了解了很多的 KEIL 调试方法,但是到底该怎么使用这些方法呢?这篇文章将 ...

  10. keil 调试 操作系统_调试操作系统:内存分配的经验教训

    keil 调试 操作系统 It began, as so many investigations do, with a bug report. 和许多调查一样,它是从一个错误报告开始的 . The n ...

最新文章

  1. ADO.Net五个对象
  2. PTA浙大版python程序设计题目集--第1章-2 从键盘输入三个数到a,b,c中,按公式值输出 (30 分)
  3. python3环境变量_配置环境变量切换到python3.7
  4. 【华为云技术分享】MySQL Seconds_Behind_Master简要分析
  5. PCIe的事务传输层的处理(TLP)
  6. FileDemo4~5 获取一个目录中的所有子项/部分子项
  7. 训练的时候 nvidia:自动刷新
  8. Hybrid Skeleton Driven Surface Registration for Temporally Consistent Volumetric Video
  9. iPhone5/iPad4越狱后10.3.3降级8.4.1详细教程
  10. 慕课翁凯习题集答案01厘米转换为英尺,英寸问题
  11. 数学也荒唐:20个脑洞大开的数学趣题
  12. Java面向对象总结篇
  13. 有关Nodejs的视频教程
  14. 【干货】如何有效地提问
  15. (三篇长文让你玩6Pandas)数据分析入门_PART2常用工具包_CH02数据分析工具:Pandas__Part03(统计分析基础)
  16. WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers
  17. 关于 Windows 7 语言包
  18. 使用railway部署Node项目及遇到的问题
  19. MATLAB 控制baxter机器人相关信息(个人记录--学习用)
  20. VBA 自定义函数语法

热门文章

  1. chrome应用程序无法正常启动0x0000005
  2. 交叉编译nftables
  3. PART 3.3 风控建模卡方分箱计算篇
  4. 4. C语言预定义符号
  5. CAD2019的使用
  6. 深度linux如何安装迅雷,deepin官方论坛-深度科技官网旗下网站
  7. 【Flutter 问题系列第 7 篇】TextField 去掉下划线
  8. LabVIEW编程LabVIEW控制cRIO-9043例程与相关资料
  9. 如何检测网站死链接?
  10. XCTF练习题---MISC---simple_transfer