我正在嘗試在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. 與操作系統無關的文件系統訪問
- 2. 訪問Android操作系統設置
- 3. .htaccess:拒絕訪問操作系統
- 4. Chrome操作系統USB /藍牙訪問
- 5. 訪問Android操作系統根文件
- 6. 從CAPL訪問操作系統功能
- 7. 如何訪問直接操作界面
- 8. 操作系統升級後無法從ANT訪問env vars
- 9. 無法訪問操作系統的更改日期
- 10. 3.0 Android操作系統2.2 Android操作系統問題
- 11. IBM 32位操作系統問題(無法連接)
- 12. C/C++聲音操作系統API
- 13. 操作系統
- 14. 哪個操作系統支持wifi直接?
- 15. x86彙編直接寫入VGA簡單操作系統
- 16. RTM操作系統版本直接升級到芒果
- 17. 操作系統更新後,CocoaPods會一直詢問id_rsa密碼
- 18. 系統rvm無法直接撥打
- 19. Java可以訪問操作系統中的搜索文件系統功能嗎?
- 20. 直接從Linux內核訪問系統性能數據
- 21. nasm系統調用Linux
- 22. 宏+ Linux系統調用(NASM)
- 23. 操作系統 - TLB
- 24. 操作系統中
- 25. Linux操作系統
- 26. FASM操作系統
- 27. i7處理器與Windows8操作系統的多線程問題操作系統
- 28. 通過Java直接或間接訪問系統命令時出現問題?
- 29. 可訪問的jquery選項卡 - 直接鏈接到選項卡
- 30. 有了root訪問權限,我該如何訪問操作系統級別的通知系統?
什麼是聲卡?你有權訪問該卡的註冊地圖嗎? – 2009-12-14 13:52:16