# bonor **Repository Path**: fallstar2008/bonor ## Basic Information - **Project Name**: bonor - **Description**: Work - **Primary Language**: C++ - **License**: GPL-3.0 - **Default Branch**: Latest - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-04-17 - **Last Updated**: 2026-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于Linux平台的汽车诊断仪 #### 项目介绍 相比于安卓汽车诊断仪,不仅能够兼容各种车型,而且降低生产成本,采用ST的异核架构芯片还能将下位机和上位机都集成到一个开发板 #### 项目架构 项目采用 QML 与 C++混合编程,使用 QML 高效便捷地构建 UI,而 C++则用来实现业务逻辑和复杂算法。整个项目应用了多线程技术,同时由三个部分编译组成,包括主APP、静库和动态库,分别对应着上层、中间层和底层,主APP也是主线程,实现数据交互以及界面显示,静态库则是封装了一系列通用各车型的接口函数,供主线程去调用和配置,而动态库是各个车型的诊断程序,负责与单片机进行通信,此诊断程序会作为子线程运行在后台,另外有子线程负责采集和解析诊断数据包最后丢给上层 #### 开发环境 1. STM32MP1芯片、下位机通信芯片、5寸非标准屏(显示屏驱动IC ST7701S、FRD500H40120-A-CTQ、分辨率480*854、触摸屏驱动IC GT911) 2. ST官方SDK(uboot版本号2020.01、tf-a版本号2.2、kernel版本号5.4.31) 3. Ubuntu版本号20.04.6、Ubuntu交叉编译工具链版本号9.2.1、Qt交叉编译工具链用buildroot生成的、Buildroot版本号2020.02.6 4. QtCreator版本号5.12.9 #### 开发方案 1. 135、153、157都完成了系统移植 2. 开发调试阶段使用的是157板子,生产部署阶段使用的是135和153两种不同的方案 3. 主要体现在135需要与外部单片机进行连接,采用串口通信;而153则是已经把单片机固件集成进M4核里了,采用异核通信 #### 系统移植 TFA、UBOOT、Kernel打补丁、配置、编译出固件,根据项目的应用场景和功能需求裁剪出特定的根文件系统rootfs #### 外设驱动 1. 两种不同的显示屏,标准屏和非标准屏,非标准屏需要初始化,通过gpio子系统模拟spi通信协议发送一系列的命令 2. USB驱动 --有线版本 3. WIFI驱动 --无线版本 4. 蓝牙驱动 --无线版本 #### 技术难点 1. 初始化驱动非标准屏,在SPI引脚被占用情况下,通过GPIO子系统使用空闲IO引脚来模拟SPI通信协议发送一系列的指令,最终成功激活并且配置完成 2. QT移植后拷贝好所需的依赖项及库文件,仍然无法显示出图片,交叉编译链和QT库版本不兼容问题,最终使用Buildroot重新配置编译生成新的工具链解决 3. 在应用到Sqlite数据库时,编译正常运行时报错无法加载数据库驱动,待将其库文件拷贝到指定的路径目录下后才解决(/usr/lib/qt/plugins/sqldrivers/) 4. 系统在处理较为复杂的业务时会出现卡顿,当尝试把应用程序与诊断程序从两个APP进程改成线程模式后,系统流畅度大大提升