当我使用“猫”写入字符设备时,“猫:写错误:设备上没有剩余空间”

时间:2019-12-09 09:59:11

标签: linux-device-driver space cat device-driver inode

我正在尝试在Linux 4.14上使用音频解码器VS1053播放音乐。该设备通过SPI总线进行通信,我开发了一个驱动程序,并将VS1053注册为字符设备,感谢https://github.com/rvp-nl/vs10xx-linux。问题来了。

播放音乐的方式是:

environment: 
  - HOST: localhost
  - WITH_PORT: ${HOST}:8080 #host read from env variable above

当我将WAV音乐文件扔到设备上时,一切正常,音乐播放良好。但是,当我将mp3音乐文件扔到设备上时,Linux会抛出错误

  

猫:写入错误:设备上没有剩余空间

我已经在许多网站上搜索了原因。许多人说,检查文件系统上的可用空间和可用索引节点,但这是我的结果:

cat musicfile.mp3 > /dev/VS1053_device

音乐文件限制在100MB以内,无法耗尽空间。

我试图编写一个打印文件程序来代替“ cat”,但这也不起作用。我不知道为什么以及如何发生此错误。

如果有人可以帮助我,我将非常感谢!

2 个答案:

答案 0 :(得分:0)

尝试以下命令:

 tune2fs -l /dev/VS1053_device | grep -i reserved

cat不适合您正在执行的操作.MP3格式有各种垃圾,可能会在文件的开头和结尾潜伏,需要将其清除掉。请尝试使用 ffmpeg或mp3wrap或aplay

答案 1 :(得分:0)

似乎您使用的驱动程序有问题。当您看到“设备上没有剩余空间”时,这并不意味着本地文件系统已满。可能这意味着SPI总线的本地或另一侧存在问题。您正在使用的驱动程序可能从Linux内核的SPI驱动程序接收到-ENOSPC状态,但是您的驱动程序无法正确处理此错误。因此,需要对使用的驱动程序进行一些深入研究。