Asio驅動開發學習筆記 2

2021-07-08 21:28:56 字數 1526 閱讀 4677

假設有一usb音效卡,支援asio,如何實現asio驅動呢?

1 實現register註冊**。此處省略,可參考asio官方sample。

2 實現class usbasio: public iasio, public cunknown的

init();

createbuffers();

start();

stop();

disposebuffers();

exit();

下面參照asiosample,對每乙個函式做講解,實現自己的驅動。請注意,asiosample僅實現了螢幕列印,沒有實際實現驅動,本**實現了自己的功能。

asiobool cusbasio::init (void

* sysref)

}//false

if(m_device)

m_device->stop();

delete m_device;

m_device =

null;

outputclose();

inputclose();

return asiofalse;

}

usbaudiodevice的功能將在後面介紹。inputopen()初始化inputbuffers,outputopen()初始化outputbuffers。對inputbuffers, outputbuffers預處理。

outputclose()與inputclose()釋放初始化的記憶體。這四個函式具體如下

bool cusbasio::inputopen()

if(m_inputsamplesize == 4)

m_device->setadccallback(cusbasio::sfillinputdata4, (void*)this);

else

if(m_inputsamplesize == 3)

m_device->setadccallback(cusbasio::sfillinputdata3, (void*)this);

m_asiosyncevent = createevent(null, false, false, null);

return true;

}bool cusbasio::output()

if(m_outputsamplesize == 4)

m_device->setdaccallback(cusbasio::sfilloutputdata4, (void*)this);

else

if(m_outputsamplesize == 3)

m_device->setdaccallback(cusbasio::sfilloutputdata3, (void*)this);

return

true;

}void cusbasio::outputclose()

void cusbasio::inputclose()

驅動開發學習筆記2

嘗試在a9開發板執行裸機程式,在這個過程加深對程式執行的 了解。目的 在a9平台裸機執行跑馬燈程式 led.c是邏輯功能 led.lds.為記憶體布局檔案,makefile指定編譯規則 start.s檔案進行記憶體空間分配,通過一系列操作生成led.bin檔案。這個bin檔案提供給後面bl2的製作,...

驅動開發學習 2

利用 driverstudio 的 driverwizard 生成了驅動,研究了一天.整個研究了個雲裡霧裡.摸不著一點頭緒.發現走入了誤區,又要學習ddk 又要搞清楚driverstudio的框架.所以難度太大.決定扔掉driverstudio從ddk入手.做了乙個世上最簡單的驅動程式。pragma...

arm linux驅動開發學習2

驅動測試階段 wifi模組始終無法載入成功,usb wifi插上之後,始終無法顯示wifi網路資訊 lib modules 4.1.15 ifconfig a eth0 link encap ethernet hwaddr00 04 9f 04 d2 35 inet addr 192.168 1.5...