在NUC977DK61Y芯片上中断的误操作导致串口数据出现OVER_IF问题
问题描述
在NUC977DK61Y芯片上有编码器,有串口通讯,当编码器旋转过快,导致串口数据错乱。
问题定位
由于芯片的串口只有中断模式接收数据,没有DMA,我当时一直看代码,发现没问题,后来我意识到问题方向不对, 由于我的操控是编码器操控,监控到的数据是每次跟编码器旋转速度有关系,快了就数据接收出问题。
在NUC977DK61Y芯片上有编码器,有串口通讯,当编码器旋转过快,导致串口数据错乱。
由于芯片的串口只有中断模式接收数据,没有DMA,我当时一直看代码,发现没问题,后来我意识到问题方向不对, 由于我的操控是编码器操控,监控到的数据是每次跟编码器旋转速度有关系,快了就数据接收出问题。
相信80后的程序员,多少都接触过TC,我接触的第二个编程语言就是C,当时一度以为TC就是C语言的全部,
第一次接触算起来已经过去了快30年,想在现代的电脑重温下当时的美好,于是在网上找到了他们产品的官方网站,目前产品授权是免费的.
很早以前看过一个电影 叫做 飞天法宝 Flubber,里面有个能飞的小助理机器人 叫做 薇波 (WEEBO),觉得挺有意思,一直想实现它,大概在2008年的时候,用Java语言实现过语言对话的部分,后来由于工作忙,没有坚持.
最近研究了DeepSeek,发现在低算力的平台上,也能实现比较好的AI模型,对于这个有意思的AI助理机器人,又有了点自己的想法.

Enable Debug Message No Key Boot from NAND nand_boot
U-Boot 2013.04-rc2 (Aug 08 2016 - 15:16:02)
CPU: NUC977 DRAM: 64 MiB NAND: 256 MiB MMC: mmc: 0 In: serial Out: serial Err: serial Net: Net Initialization Skipped No ethernet found. Hit any key to stop autoboot: 0
Loading from nand0, offset 0x200000 Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4613632 Bytes = 4.4 MiB Load Address: 00007fc0 Entry Point: 00008000 Booting kernel from Legacy Image at 00007fc0 … Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4613632 Bytes = 4.4 MiB Load Address: 00007fc0 Entry Point: 00008000 Verifying Checksum … OK XIP Kernel Image … OK OK
安装VMware player 17版
|
|
安装 qemu 用户模式模拟器(可选,如果你想要运行 ARM 程序)
|
|
安装 GCC 多架构支持
|
|
如果你需要完整的交叉编译工具链,可以使用 gcc-arm-none-eabi,这是一个轻量级的工具链,适用于嵌入式开发。
USB协议分析工具
在线的USB标准请求、USB标准描述符、HID报告描述符分析工具https://www.usbzh.com/tool/usb.html
DATA VIEWER onLine
XToolBox开发的USB数据结构在线分析:http://dv.tusb.org
BUS HOUNDWindows系统下的USB抓包工具
USB Device Tree Viewer
在微软USB viewer的基础上开发的USB设备信息的神器。
x64:https://www.uwe-sieber.de/files/UsbTreeView_x64.zip
Win32:https://www.uwe-sieber.de/files/UsbTreeView_Win32.zip
Opensoundmeter是一个免费的音频/声学/电声学测量软件。
https://github.com/psmokotnin/osm
QT5.15 开发
Open Sound Meter(OSM)是一个用于调音音响系统的开源项目,主要使用C++和QML语言开发。
用离线的DeepSeek大模型编写程序
测试用的机器A
测试用的机器B
先说测试结果,模型大小越大要求的性能越高,还有要开启GPU支持的,必须要用NVDIA的卡,带CUDA功能,AMD的卡不支持。
目前主要的音频网络协议有 CobraNet、Dante、Ethernet AVB
CobraNet 是一种在以太网上传输专业非压缩音频信号的技术,工作在数据链路层(OSI 二层)的低层传输协议,但无法穿过路由器,只能在局域网中传递,音频流不能大于 8 个数据包 Bundle。