Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C NASM直接访问声卡(无操作系统)_C_Assembly_Audio_Kernel_Nasm - Fatal编程技术网

C NASM直接访问声卡(无操作系统)

C NASM直接访问声卡(无操作系统),c,assembly,audio,kernel,nasm,C,Assembly,Audio,Kernel,Nasm,我正试图用ASM和C编写一个非常简单的操作系统(NASM汇编程序) 我想直接访问声卡,有或没有驱动程序。 如果我不需要驱动程序,如何访问和发送示例音频文件 到声卡?(举个例子就好了) 如果我确实需要驱动程序,是否有接口来调用它们和函数 从司机那里?如何访问示例音频文件并将其发送到 声卡?(再举一个例子就好了)我不想让你泄气,但是现代的声卡驱动程序非常复杂,而且你可能知道,是特定于操作系统的。这是操作系统开发中的难题之一——驱动程序支持。这不是一个简单的代码片段可以实现的 为了加载文件,您需要一个

我正试图用ASM和C编写一个非常简单的操作系统(NASM汇编程序) 我想直接访问声卡,有或没有驱动程序。 如果我不需要驱动程序,如何访问和发送示例音频文件 到声卡?(举个例子就好了) 如果我确实需要驱动程序,是否有接口来调用它们和函数 从司机那里?如何访问示例音频文件并将其发送到
声卡?(再举一个例子就好了)

我不想让你泄气,但是现代的声卡驱动程序非常复杂,而且你可能知道,是特定于操作系统的。这是操作系统开发中的难题之一——驱动程序支持。这不是一个简单的代码片段可以实现的

为了加载文件,您需要一个文件系统。你实现了吗?您使用“内核”标志的事实表明,您的操作系统仍处于初级阶段。我不确定我是否想在操作系统的内核中提供良好的支持


这就是说,有一个叫做Bochs的很好的仿真器。还有一些是关于如何编程的。这可能是你最好的选择。在过去,访问声音硬件要容易得多。

当然,你需要一个驱动程序,当然,与现有的硬件接口也没有简单的方法(有人建议使用统一的操作系统不可知的“统一驱动程序接口”—但我认为它没有任何用处)

因此,在您编写了从硬盘读取文件的代码之后,您需要启动自己的音频驱动程序

现在,我已经有一段时间没有这样做了,所以这可能已经过时了,但是在90年代,你会用一些“out dx,al”(不同声卡的细节不同)来配置你的声卡,然后设置DMA将数据从内存缓冲区发送到你的声卡。该卡(或者是DMA控制器?)在到达缓冲区末端时会触发一个中断,您可以使用该中断向缓冲区填充新数据

如果你的卡上有一个运行正常的linux驱动程序,我会先看看它的代码。否则,您将不得不对windows驱动程序进行反向工程,Soft Ice的bpio(中断io端口访问)日志记录过去对该iirc很有用


祝你好运。

你最好的选择可能是看看Linux或FreeBSD声音驱动程序,看看它们能做什么。除了最简单的声卡之外,您不太可能获得更好的实现文档


这是一个难题。注意:-这里有一个免费的开源操作系统,用所有汇编语言编写。如果您是新手,那么它对于汇编内核编程非常有参考价值


没错。然而,许多声卡/板载芯片组与AC97兼容。直接编程比编程SB16更容易。如果运气好的话,OP有一个这样的芯片..嗯。。。。我其实在想SB16。但是,现在你提到了,AC97是我认识的东西。但是,我不知道如何为该芯片组编程…:P我的车载声卡是基于Intel HDA的芯片组,支持AC97,这是一个完美的测试平台。我知道。糟糕的是,声卡制造商没有专注于一种实现,只是四处奔走,自己制作P我想知道是否有可能将ALSA移植到我的内核中……我一直在想“90年代”类型的接口。我听人说新的声卡可以(可能)支持SoundBlaster接口。问题是-我不知道如何让它工作P我希望只支持ALSA驱动程序集。我不会去尝试自行拆解或记录专有驱动程序,因为对于一个特定的芯片组来说,这只是浪费时间。也许我可以为我的操作系统编译ALSA。。。。?(我计划实现ELF兼容性。)什么声卡?您有权使用该卡的注册地图吗?