项目一:Linux驱动开发方向
项目名称:工业级ARM平台多串口扩展驱动开发
项目描述
为某工业控制终端(基于i.MX6ULL / Allwinner 平台)开发多路UART扩展芯片(如SC16IS752、XR21V1414等)的Linux字符设备驱动程序,实现4-8路串口的高可靠数据收发,满足工业现场设备(PLC、传感器、仪表)的数据采集需求。
核心职责与技术要点
编写字符设备驱动,实现open/read/write/ioctl等文件操作接口,支持用户层通过标准串口API(termios)访问;
基于设备树(Device Tree) 描述硬件资源(中断、寄存器地址、时钟),使用platform驱动框架实现设备与驱动的匹配;
处理中断与并发:采用中断顶半部+底半部(tasklet/workqueue) 机制收数据,使用自旋锁+互斥锁保护共享资源,避免竞态;
对接TTY子系统,将驱动注册为标准的tty_driver,使应用层可沿用现有串口工具;
实现DMA模式批量数据传输,降低CPU占用率,在115200波特率下实现零丢包;使用printk、kgdb、ftrace、bpftrace进行内核调试与性能分析
项目:跨平台蓝牙调试助手(Qt + Bluetooth)
项目描述
开发一款基于Qt 5.15/6.x的跨平台蓝牙调试工具,支持Windows/Android/Linux平台,实现与蓝牙模块(如HC-05、HC-06)或蓝牙设备的数据透传通信。该项目借鉴了串口调试助手的成熟设计思路,将底层通信从QSerialPort迁移至QBluetoothSocket,实现有线到无线的无缝迁移。
核心职责与技术要点
设备发现:使用QBluetoothDeviceDiscoveryAgent扫描周围经典蓝牙设备(BR/EDR),实时显示设备名称和地址列表;
服务发现:通过QBluetoothServiceDiscoveryAgent配合UUID过滤,精准查找提供串口服务(SPP)的目标设备;
RFCOMM连接:采用QBluetoothSocket建立RFCOMM通信通道,实现与蓝牙模块的数据收发;
数据传输:提供发送/接收编辑框和十六进制/文本模式切换,支持ASCII与Hex格式互转,满足不同调试需求;
跨平台适配:处理Android平台蓝牙权限动态申请(QBluetoothPermission),一套代码编译生成Windows/Android/Linux多端应用;
UI设计:使用Qt Widgets构建简洁界面,包含设备列表、连接状态显示、收发日志区、AT指令快捷发送按钮。
项目成果
成功实现手机App与HC-05蓝牙模块的通信测试,数据收发稳定,无丢包;