我正在尝试在ASM和C中编写一个非常简单的操作系统(NASM汇编程序) 我想直接访问声卡,无论是否带驱动程序。 如果我不需要驱动程序,我怎样才能访问并发送示例音频文件 到声卡? (一个例子会很好) 如果我确实需要驱动程序,是否有接口,并从驱动程序调用函数 ?我如何访问并发送示例音频文件到 声卡? (另一个例子会很好)NASM直接访问声卡(无操作系统)
回答
我不想让你灰心,但现代声卡驱动程序是非常复杂的,正如你可能知道的,操作系统特定的。这是操作系统开发中的一个难题 - 驱动程序支持。这不是用简单的代码片段就可以实现的。
为了加载文件,您需要一个文件系统。你有没有实现呢?你使用“内核”标志的事实表明你的操作系统还处于初级阶段。我不确定我是否想要对操作系统的内核提供良好的支持。
这就是说,有一个很好的模拟器叫做Bochs,它有Sound Blaster 16 emulation。还有一些really old documentation如何编程。这可能是你最好的选择。在一天之内访问声音硬件要容易得多。
是的。但是,大量的声卡/板载芯片组都与AC97兼容。直接编程比编程SB16更容易。有一点运气,OP有这些芯片之一.. – 2009-12-12 02:51:25
嗯....我其实正在考虑SB16。但是,现在你提到它了,AC97是我认识的东西。但是,我不知道如何编程该芯片组。:P我的板载声卡是基于英特尔HDA的芯片组,支持AC97,这是完美的测试场地。 – 2009-12-12 03:03:34
当然,你需要一个驱动程序,当然还有没有简单的方法来与现有的驱动程序接口(有一个统一的操作系统无关的“统一驱动程序接口”的建议 - 但我不认为它有任何地方) 。
因此,在您编写代码从硬盘读取文件后,您需要打开自己的音频驱动程序。
现在,我一段时间都没有这样做过,所以这可能已经过时了,但在90年代,你会用一些'out dx,al'(细节因声卡而异)配置你的声卡,并且然后设置DMA将数据从内存缓冲区发送到您的卡。该卡(或者它是DMA控制器?)会在中断到达缓冲区的末尾时触发中断,该中断将用于使用新数据填充缓冲区。
如果你的卡有一个可用的linux驱动程序,我会先看看它的代码。否则,您将不得不逆向设计Windows驱动程序,Soft-Ice的bpio(断开io端口访问)日志记录对于该iirc是非常有用的。
祝你好运。
“90年代”的界面类型就是我的想法。我听说有人说新的声卡可能(可能)支持SoundBlaster接口。问题是 - 我不知道如何让它工作! :P我期待只支持ALSA驱动程序集。我不会去尝试反汇编或记录自己的专有驱动程序,因为这对于一个特定的芯片组来说是浪费时间。也许我可以为我的操作系统编译ALSA ....? (我打算实现ELF兼容性。) – 2009-12-12 03:01:20
最好的办法是看看Linux或FreeBSD声卡驱动程序,看看它们的功能。除了最简单的声卡外,你不可能获得更好的实现文档...
这是一个难题。被警告:-p
我知道。太糟糕的声卡制造商并不专注于一种实现方式,而只是自己动手制作。 :P我想知道是否有可能将ALSA移植到我的内核中... – 2009-12-12 02:57:35
这是一个免费的开源操作系统,全部使用汇编语言编写。如果你对它不熟悉,它对汇编内核编程很有参考价值。
- 1. 从CAPL访问操作系统功能
- 2. 无法访问操作系统的更改日期
- 3. 操作系统升级后无法从ANT访问env vars
- 4. IBM 32位操作系统问题(无法连接)
- 5. 操作系统
- 6. FASM操作系统
- 7. Linux操作系统
- 8. 操作系统 - TLB
- 9. 通过Java直接或间接访问系统命令时出现问题?
- 10. 可访问的jquery选项卡 - 直接链接到选项卡
- 11. 有了root访问权限,我该如何访问操作系统级别的通知系统?
- 12. 数据库无操作系统
- 13. glibc:elf文件操作系统ABI无效
- 14. Mmap系统调用操作能够访问内存位置
- 15. 操作系统和实现独立访问键盘?
- 16. 从操作系统内核访问GPU内存
- 17. 在64位操作系统上访问Registry.LocalMachine
- 18. 从Chrome浏览器访问操作系统服务JS
- 19. 从VMWare中的客户操作系统访问主机IIS
- 20. 以可访问模式运行的Windows操作系统?
- 21. 用于访问稀疏文件的操作系统API?
- 22. 如何在Windows操作系统中访问Undeletable目录/文件?
- 23. 如何访问操作系统拷贝的变量
- 24. 在PHP中确定访问者的操作系统
- 25. 防止文件系统访问和其他破坏性操作
- 26. Android操作系统更新系统
- 27. 操作系统6上的RadioButtonGroup问题
- 28. 操作系统10.10.3 Wifi问题
- 29. 黑莓操作系统集成问题
- 30. Xcode 6.4操作系统版本问题
什么是声卡?你有权访问该卡的注册地图吗? – 2009-12-14 13:52:16