Linux人工智能開發(fā)實例 課件 2.1 總體設計與Linux驅動開發(fā)_第1頁
Linux人工智能開發(fā)實例 課件 2.1 總體設計與Linux驅動開發(fā)_第2頁
Linux人工智能開發(fā)實例 課件 2.1 總體設計與Linux驅動開發(fā)_第3頁
Linux人工智能開發(fā)實例 課件 2.1 總體設計與Linux驅動開發(fā)_第4頁
Linux人工智能開發(fā)實例 課件 2.1 總體設計與Linux驅動開發(fā)_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第2章音頻分析系統(tǒng)Linux開發(fā)案例音頻分析系統(tǒng)Linux開發(fā)案例本章分析Linux技術在音頻分析系統(tǒng)中的應用,共分2個模塊:1.系統(tǒng)總體設計與Linux驅動開發(fā):先進行系統(tǒng)總體設計分析,分析點陣屏和OLED的Linux驅動開發(fā),并實現(xiàn)顯示模塊驅動開發(fā)與測試。2.

音頻分析系統(tǒng)開發(fā):分析音頻頻譜分析和功能開發(fā),音頻處理功能開發(fā)和上位機控制應用開發(fā),并實現(xiàn)音頻分析顯示。第2章音頻分析系統(tǒng)Linux開發(fā)案例

2.1總體設計與Linux驅動開發(fā)音頻分析系統(tǒng)Linux開發(fā)案例聲音頻譜分析是考慮人耳對不同頻率成分的聲音的感受的不同,進而通過傅里葉變換等獲得其準確頻譜特性的技術。聲壓頻譜分析是后續(xù)聲學分析的基礎,同時在聲學測量,噪聲污染,健康醫(yī)療,降噪減噪,故障診斷,國防建設等中都具有重要的應用。本項目從理論分析到硬件及算法設計,分別介紹了基于嵌入式系統(tǒng)的音頻分析系統(tǒng)的實現(xiàn)過程。提出了一套精度較高,運算量較小,實時性較好,可操作性較強的聲學頻譜分析方案。本系統(tǒng)對基于嵌入式系統(tǒng)的聲壓頻率計權、頻譜分析進行了簡單的分析,首先介紹了基于卷積的頻率計權實現(xiàn)及基于傅里葉變換、快速傅里葉變換的聲音頻譜分析方法。2.1.1系統(tǒng)總體設計分析2.1.1.1系統(tǒng)需求分析功能功能說明音頻采集功能通過邊緣計算網(wǎng)關上的麥可風實時采集音頻數(shù)據(jù)音頻頻譜分析功能對采集音頻數(shù)據(jù)進行頻譜分析頻譜實時動態(tài)顯示功能通過擴展板的點陣屏與OLED屏動態(tài)顯示頻率變化Android應用控制功能通過Android應用程序對系統(tǒng)功能進行切換與硬件測試音頻分析系統(tǒng)Linux開發(fā)案例音頻分析顯示系統(tǒng),其硬件主要由邊緣計算網(wǎng)關和Arm擴展模塊構成,通過邊緣計算網(wǎng)關上的麥可風實時采集音頻數(shù)據(jù),采集的數(shù)據(jù)分析處理后由Arm擴展模塊顯示頻譜變化,Android手機可以對設備進行相關的功能切換與控制,硬件結構框圖如圖所示。2.1.1系統(tǒng)總體設計分析2.1.1.2系統(tǒng)總體設計音頻分析系統(tǒng)Linux開發(fā)案例音頻分析顯示系統(tǒng),軟件結構框圖如圖所示。2.1.1系統(tǒng)總體設計分析2.1.1.2系統(tǒng)總體設計音頻分析系統(tǒng)Linux開發(fā)案例邊緣計算網(wǎng)關采用工業(yè)級鋁合金一體屏設計,AI嵌入式邊緣計算處理器RK3399,4G+16G內(nèi)存配置,10寸高清電容屏,運行ubuntu、android多操作系統(tǒng)系統(tǒng),如圖所示。2.1.2開發(fā)平臺音頻分析系統(tǒng)Linux開發(fā)案例邊緣計算網(wǎng)關提供豐富的外設接口,易于功能擴展,方便開發(fā)調(diào)試,如圖所示。2.1.2開發(fā)平臺智能邊緣計算網(wǎng)關系統(tǒng)啟動進入Ubuntu操作系統(tǒng)界面,如圖所示。音頻分析系統(tǒng)Linux開發(fā)案例本項目開發(fā)時需要連接ARM擴展模塊,首先從ARM擴展模塊上拆下STM32核心板,然后將ARM擴展模塊與網(wǎng)關的EXT接口連接。連接完成的示意如圖所示。2.1.2開發(fā)平臺音頻分析系統(tǒng)Linux開發(fā)案例擴展板上的點陣屏需要HT16K33驅動芯片進行控制驅動。HT16K33是一款存儲器映射和多功能LED控制驅動芯片。該芯片支持最大128點的顯示模式(16SEGs×8COMs)以及最大13×3的按鍵矩陣掃描電路。HT16K33的軟件配置特性使其適用于多種LED應用,包括LED模塊和顯示子系統(tǒng)。HT16K33通過雙向I2C接口可與大多數(shù)微控制器進行通信。2.1.3點陣屏Linux驅動開發(fā)2.1.3.1點陣屏硬件原理音頻分析系統(tǒng)Linux開發(fā)案例顯示存儲器–RAM結構●16×8位靜態(tài)RAM用于存儲LED顯示數(shù)據(jù)。對RAM中的某一個位寫“1”則相對應的LEDROW點亮,寫“0”則相對應的LEDROW熄滅。●RAM地址與行輸出一一對應,一個RAM字中的每個位與縱列輸出一一對應。RAM與LED的映射關系如表2.2所示。2.1.3點陣屏Linux驅動開發(fā)2.1.3.1點陣屏硬件原理COMROW0~ROW7ROW8~ROW15COM000H01HCOM102H03HCOM204H05HCOM306H07HCOM408H09HCOM50AH0BHCOM60CH0DHCOM70EH0FHi2c數(shù)據(jù)字節(jié)D7D6D5D4D3D2D1D0ROW7654321015141312111098音頻分析系統(tǒng)Linux開發(fā)案例linux內(nèi)核和芯片提供商為I2C設備的驅動程序提供了I2C驅動的框架,以及框架底層與硬件相關的代碼的實現(xiàn)(完整流程圖請查看文檔)。剩下的就是針對掛載在I2C兩線上的I2C設備了device,而編寫的即具體設備驅動了,這里的設備就是硬件接口外掛載的設備,而非硬件接口本身(soc硬件接口本身的驅動可以理解為總線驅動)2.1.3點陣屏Linux驅動開發(fā)2.1.3.2點陣屏Linux驅動程序音頻分析系統(tǒng)Linux開發(fā)案例從i2c驅動架構圖中可以看出,linux內(nèi)核對i2c架構抽象了一個叫核心層core的中間件,它分離了設備驅動devicedriver和硬件控制的實現(xiàn)細節(jié),core層不但為上面的設備驅動提供封裝后的內(nèi)核注冊函數(shù),而且還為小面的硬件事件提供注冊接口,core層起到了承上啟下的作用。開發(fā)I2C驅動時,有4個步驟,前2個步驟屬于I2C總線驅動,后面2個步驟屬于I2C設備驅動。過程如下:2.1.3點陣屏Linux驅動開發(fā)2.1.3.2點陣屏Linux驅動程序(1)提供I2C適配器的硬件驅動,探測,初始化I2C適配器,驅動CPU控制的I2C適配器從硬件上產(chǎn)生。(2)提供I2C控制的algorithm,用具體適配器的xxx_xfer()函數(shù)填充i2c_algorithm的master_xfer指針,并把i2c_algorithm指針賦給i2c_adapter的algo指針。(3)實現(xiàn)I2C設備驅動中的i2c_driver接口,用具體yyy的yyy_probe(),yyy_remove(),yyy_suspend(),yyy_resume()函數(shù)指針和i2c_device_id設備ID表賦給i2c_driver的probe,remove,suspend,resume和id_table指針。(4)實現(xiàn)I2C設備所對應類型的具體驅動,i2c_driver只是實現(xiàn)設備與總線的掛接。音頻分析系統(tǒng)Linux開發(fā)案例i2c設備注冊主要定義一些結構體和使用一些API函數(shù)。1)在Linux驅動中I2C系統(tǒng)中主要包含以下幾個成員:2.1.3點陣屏Linux驅動開發(fā)2.1.3.2點陣屏Linux驅動程序2)板級信息里應該包含I2C的地址和設備名:示例:#defineDEVICE_NAME "ht16k33"#ifDEVICE_RS#defineDEV_I2C_BUS2#defineDEV_I2C_ADDRESS(0xE0>>1)structi2c_board_infoinfo;memset(&info,0,sizeof(structi2c_board_info));info.addr=DEV_I2C_ADDRESS;strcpy(info.type,DEVICE_NAME);音頻分析系統(tǒng)Linux開發(fā)案例i2c設備注冊主要定義一些結構體和使用一些API函數(shù)。3)i2c_get_adapter函數(shù)說明:獲取adapter總線上的相應的I2C設備,參數(shù)是設備號,舉例如下:2.1.3點陣屏Linux驅動開發(fā)2.1.3.2點陣屏Linux驅動程序#defineDEV_I2C_BUS2adapter=i2c_get_adapter(DEV_I2C_BUS);if(adapter==NULL){return-ENODEV;}i2c_get_adapt、r和i2c_new_device配合使用:adapter=i2c_get_adapter(DEV_I2C_BUS);if(adapter==NULL){return-ENODEV;}client=i2c_new_device(adapter,&info);i2c_put_adapter(adapter);if(client==NULL){return-ENODEV;}音頻分析系統(tǒng)Linux開發(fā)案例i2c讀寫接口1)設備讀寫的實現(xiàn)設備讀寫分為兩類,一類是寫命令,一類是寫數(shù)據(jù),都是通過i2c_master_send函數(shù)來實現(xiàn)。2)i2c_master_send函數(shù)的使用2.1.3點陣屏Linux驅動開發(fā)2.1.3.2點陣屏Linux驅動程序3)寫命令函數(shù):其實也是調(diào)用i2c_master_send函數(shù),比如下面的這個:i2c_master_send(new_client,write_data,2);//向new_client發(fā)送write_data內(nèi)數(shù)據(jù)先發(fā)命令,后數(shù)據(jù),2表示發(fā)送的大小。staticintht16k33_write_command(charc){ returni2c_master_send(i2c_dev,&c,1);}

音頻分析系統(tǒng)Linux開發(fā)案例4)寫數(shù)據(jù)函數(shù):其實也是調(diào)用i2c_master_send函數(shù),比如下面的這個:2.1.3點陣屏Linux驅動開發(fā)2.1.3.2點陣屏Linux驅動程序staticintht16k33_write_cmd_data(charc,chard){ charv[]={c,d}; returni2c_master_send(i2c_dev,v,2);}staticintht16k33_flush(void){ intr; charbuf[17]; buf[0]=0; memcpy(buf+1,led_buf,16); r=i2c_master_send(i2c_dev,buf,17); printk(KERN_ERR"wr%d\n",r); returnr;}

(點陣驅動代碼詳細請查看文檔)音頻分析系統(tǒng)Linux開發(fā)案例點陣屏驅動主要實現(xiàn)對硬件設備的基本控制,具體的功能要由上層應用調(diào)用驅動提供的接口對設備進行控制。點陣屏應用功能函數(shù)說明如表所示。2.1.3點陣屏Linux驅動開發(fā)2.1.3.3點陣屏Linux應用程序函數(shù)名稱參數(shù)說明函數(shù)功能voidled8x8Init(void)無點陣屏初始化staticvoiddumRam(void)無點陣屏顯示Ram數(shù)組內(nèi)容voidled8x8Brightness(intb)b:亮度值點陣屏亮度控制voidled8x8Point(intx,inty,intst)x:行坐標y:列坐標點陣屏設置指定坐標數(shù)據(jù)voidled8x8Draw(char*buf)buf:顯示緩沖區(qū)點陣屏Ram數(shù)組從緩沖區(qū)取值voidled8x8Clear(void)無點陣屏清屏voidled8x8Flush(void)無點陣屏刷新顯示內(nèi)容(led8x8.c程序源碼詳細請查看文檔)音頻分析系統(tǒng)Linux開發(fā)案例點陣屏應用功能,流程分析:1)led8x8Init()初始化點陣屏硬件;2)led8x8Face(i)設置要顯示的第i類笑臉坐標數(shù)據(jù)3)led8x8Flush()點陣屏刷新顯示4)sleep(2)休眠2秒鐘5)i值在faces數(shù)組有效范圍內(nèi)加16)返回到2)步驟循環(huán)執(zhí)行2.1.3點陣屏Linux驅動開發(fā)2.1.3.3點陣屏Linux應用程序(Led8x8Test.c源碼詳細請查看文檔)音頻分析系統(tǒng)Linux開發(fā)案例1、基本結構

OLED器件由基板、陰極、陽極、空穴注入層(HIL)、電子注入層(EIL)、空穴傳輸層(HTL)、電子傳輸層(ETL)、電子阻擋層(EBL)、空穴阻擋層(EBL)、發(fā)光層(EML)等部分構成?;迨钦麄€器件的基礎,所有功能層都需要蒸鍍到器件的基板上;通常采用玻璃作為器件的基板。陽極與器件外加驅動電壓的正極相連,陽極中的空穴在外加驅動電壓的驅動下向器件中的發(fā)光層移動,陽極需要在器件工作時具有一定的透光性,使得器件內(nèi)部發(fā)出的光能夠被外界觀察到,陽極最常使用的材料是氧化銦錫ITO??昭ㄗ⑷雽涌梢允箒碜躁枠O的空穴順利地注入空穴傳輸層;空穴傳輸層負責將空穴傳輸?shù)桨l(fā)光層;電子阻擋層會把來自陰極的電子阻擋在器件的發(fā)光層界面處,從而增大器件發(fā)光層界面處電子的濃度。2.1.4OLEDLinux驅動開發(fā)2.1.4.1OLED的基本結構和發(fā)光原理音頻分析系統(tǒng)Linux開發(fā)案例1、基本結構OLED器件的結構可分為單層結構、雙層結構、三層結構和多層結構。單層結構只包含基板、陽極、陰極和發(fā)光層的結構,由于OLED器件中的材料對電子和空穴有不同的傳輸能力,該結構會使得電子和空穴在發(fā)光層界面處的濃度差別很大,導致OLED器件的發(fā)光效率較低。雙層結構是指發(fā)光層除了具有電子和空穴先通過再結合形成激子然后通過激子退激發(fā)光的作用,還具有傳輸電子或傳輸空穴的作用。

三層結構是指器件結構中一般包含有陰極、電子傳輸層、發(fā)光層、空穴傳輸層、陽極和基板的OLED器件;三層結構的OLED器件具有更高的電子和空穴傳輸能力,發(fā)光效率也更高。多層結構是指OLED器件除具了有三層結構所具有的功能層,還具有電子注入層、空穴注入層、電子阻擋層和空穴阻擋層;由于更多功能層的加入,OLED器件的發(fā)光效率更高,但由于器件的厚度增加,需要更高的驅動電壓才能正常工作。2.1.4OLEDLinux驅動開發(fā)2.1.4.1OLED的基本結構和發(fā)光原理音頻分析系統(tǒng)Linux開發(fā)案例2.發(fā)光原理OLED是一種在外加驅動電壓下可主動發(fā)光的器件,無須背光源。OLED基本驅動原理:OLED器件中的電子和空穴在外加驅動電壓的驅動下,從器件的兩極向中間的發(fā)光層移動,到達發(fā)光層后,在庫侖力的作用下,電子和空穴進行再結合形成激子,激子的產(chǎn)生會活化發(fā)光層的有機材料,進而使得有機分子最外層的電子突破最高占有分子軌道(HOMO)能級和最低未占有分子軌道(LUMO)能級之間的能級勢壘,從穩(wěn)定的基態(tài)躍遷到極不穩(wěn)定的激發(fā)態(tài),處于激發(fā)態(tài)的電子的狀態(tài)極不穩(wěn)定,會通過內(nèi)轉換回到LUMO能級。2.1.4OLEDLinux驅動開發(fā)2.1.4.1OLED的基本結構和發(fā)光原理音頻分析系統(tǒng)Linux開發(fā)案例

OLED器件的驅動方式分為主動式驅動(有源驅動)和被動式驅動(無源驅動)。1.無源驅動無源驅動分為靜態(tài)驅動和動態(tài)驅動。(1)靜態(tài)驅動:在靜態(tài)驅動的OLED器件上,一般采用共陰極連接方式,有機電致發(fā)光像素的陰極是連在一起引出,陽極是分立引出。若要驅動器件發(fā)光,只要讓恒流源的電壓與陰極的電壓之差大于驅動電壓,正向導通后將發(fā)光;若要器件不發(fā)光,將陽極接在一個負電壓上,反向截止后不能發(fā)光。如果圖像變化比較多時,會出現(xiàn)交叉效應,為了避免這種現(xiàn)象,需要采用交流的形式。靜態(tài)驅動一般用于段式顯示屏的驅動。(2)動態(tài)驅動:在動態(tài)驅動時,器件的兩個電極做成了矩陣結構,水平一組顯示像素的相同性質(zhì)的電極共用,縱向一組顯示像素的相同性質(zhì)的電極共用。如果器件可分為N行和M列,行和列分別對應發(fā)光像素的陰極和陽極。在實際驅動時,要逐行點亮或者要逐列點亮像素,一般采用逐行掃描的方式。2.1.4OLEDLinux驅動開發(fā)2.1.4.2OLED器件的驅動方式音頻分析系統(tǒng)Linux開發(fā)案例2.有源驅動有源驅動的每個像素都配備了具有開關功能的低溫多晶硅薄膜晶體管(TFT),而且每個像素都配備了一個電荷存儲電容,外圍驅動電路和顯示陣列集成在同一玻璃基板上。由于LCD采用電壓驅動,OLED卻依賴電流驅動,因此與LCD相同的TFT結構,無法用于OLED,需要能讓足夠電流通過導通阻抗較小的小型驅動TFT。有源驅動屬于靜態(tài)驅動,可進行100%的負載驅動,且不受掃描電極數(shù)的限制,可以獨立地對每個像素進行選擇性調(diào)節(jié)。有源驅動無占空比問題,易于實現(xiàn)高亮度和高分辨率,由于有源驅動可以對紅色像素和藍色像素獨立地進行灰度調(diào)節(jié),更有利于OLED彩色化實現(xiàn)。2.1.4OLEDLinux驅動開發(fā)2.1.4.2OLED器件的驅動方式音頻分析系統(tǒng)Linux開發(fā)案例

本項目采用了SSD1306OLED,是一個單片OLED/PLED驅動芯片,可以驅動有機/聚合發(fā)光二極管點陣圖形顯示系統(tǒng),由128列和64行組成,該芯片專為共陰極OLED面板設計。SSD1306中嵌入了對比度控制器、顯示RAM和晶振,從而減少了外部器件和功耗,有256級亮度控制。

數(shù)據(jù)/命令的發(fā)送有三種接口可選擇:6800/8000、I2C或SPI,本節(jié)采用I2C接口,驅動指令如表所示。2.1.4OLEDLinux驅動開發(fā)2.1.4.3OLED硬件音頻分析系統(tǒng)Linux開發(fā)案例

2.1.4OLEDLinux驅動開發(fā)2.1.4.3OLED硬件音頻分析系統(tǒng)Linux開發(fā)案例

2.1.4OLEDLinux驅動開發(fā)2.1.4.3OLED硬件音頻分析系統(tǒng)Linux開發(fā)案例

2.1.4OLEDLinux驅動開發(fā)2.1.4.3OLED硬件OLED顯示技術具有自發(fā)光的特性,采用非常薄的有機材料涂層和玻璃基板,當有電流通過時,這些有機材料就會發(fā)光,而且OLED顯示屏幕可視角度大,并且能夠節(jié)省電能,從2003年開始這種顯示設備在MP3播放器上得到了應用。0.96寸OLED顯示屏接口定義如表所示。引

腳符

號引

腳符

號引

腳符

號1GND2C2P3C2N4C1P5C1N6VDDB7NC8VSS9VDD10BS011BS112BS213CS#14RES#15D/C#16R/W#17E/RD#18D019D120D221D322D423D524D625D726IREF27VCOMH28VCC29VLSS30GND音頻分析系統(tǒng)Linux開發(fā)案例

2.1.4OLEDLinux驅動開發(fā)2.1.4.3OLED硬件OLED驅動方式:模塊的通信接口是通過BS0,BS1,BS2三個管腳來配置的。項目中使用i2c接口進行開發(fā),如表所示。通信方式BS0BS1BS2i2c0103線SPI1004線SPI0008-bit68XX并口0018-bit80XX并口011音頻分析系統(tǒng)Linux開發(fā)案例

2.1.4OLEDLinux驅動開發(fā)2.1.4.3OLED硬件OLED原理圖SCL,SDA對應的是I2C總線2,OLED起始地址0x39。主要是通過SDA,SCL引腳進行通信i2c通信,通過寫命令,寫數(shù)據(jù)對顯示器進行控制,如圖所示。音頻分析系統(tǒng)Linux開發(fā)案例

2.1.4OLEDLinux驅動開發(fā)2.1.4.4OLEDLinux驅動程序開發(fā)I2C驅動時,有4個步驟,前2個步驟屬于I2C總線驅動,后面2個步驟屬于I2C設備驅動。過程如下(具體步驟與LCD類似,請查看源文檔):(1)提供I2C適配器的硬件驅動,探測,初始化I2C適配器,驅動CPU控制的I2C適配器從硬件上產(chǎn)生。(2)提供I2C控制的algorithm,

用具體適配器的xxx_xfer()函數(shù)填充i2c_algorithm的master_xfer指針,并把i2c_algorithm指針賦給i2c_adapter的algo指針。(3)實現(xiàn)I2C設備驅動中的i2c_driver接口,用具體yyy的yyy_probe(),yyy_remove(),yyy_suspend(),yyy_resume()函數(shù)指針和i2c_device_id設備ID表賦給i2c_driver的probe,remove,suspend,resume和id_table指針。(4)實現(xiàn)I2C設備所對應類型的具體驅動,i2c_driver只是實現(xiàn)設備與總線的掛接。(OLED驅動源碼詳細請查看文檔)音頻分析系統(tǒng)Linux開發(fā)案例

2.1.4OLEDLinux驅動開發(fā)2.1.4.5OLEDLinux應用程序OLED屏驅動主要實現(xiàn)對硬件設備的基本控制,具體的功能要由上層應用調(diào)用驅動提供的接口對設備進行控制。OLED屏應用功能函數(shù)說明如表所示。(oled源碼源碼詳細請查看文檔)函數(shù)名稱參數(shù)說明函數(shù)功能voidoledInit(void)無OLED屏初始化staticvoiddumRam(void)無OLED屏顯示Ram數(shù)組內(nèi)容voidoledPoint(intx,inty,intst)x:行坐標y:列坐標OLED屏設置指定坐標數(shù)據(jù)voidoledDraw(char*buf)buf:顯示緩沖區(qū)OLED屏Ram數(shù)組從緩沖區(qū)取值voidoledClear(void)無OLED屏清屏voidoledFlush(void)無OLED屏刷新顯示內(nèi)容音頻分析系統(tǒng)Linux開發(fā)案例

2.1.4OLEDLinux驅動開發(fā)2.1.4.5OLEDLinux應用程序oled應用功能,流程分析:1)oledInit()初始化點陣屏硬件;2)fontShow16(16,8,"Welcome!",oledPoint)設置要顯示的坐標與字符數(shù)據(jù)3)oledFlush()刷新顯示(oled源碼源碼詳細請查看文檔)#include<unistd.h>#include<math.h>#include<stdlib.h>#include"oled.h"#include"utils.h"#include"font.h"intmain(intargc,char*argv[]){ oledInit(); fontShow16(16,8,"Welcome!",oledPoint); oledFlush(); return0;}音頻分析系統(tǒng)Linux開發(fā)案例

2.1.5開發(fā)實踐:顯示模塊驅動開發(fā)與測試1、ARM擴展模塊硬件連接從ARM擴展模塊上拆下STM32核心板,然后將ARM擴展模塊與網(wǎng)關連接,如圖2.4所示,框線內(nèi)為網(wǎng)關的ARM擴展模塊接口(EXT)。使用交叉網(wǎng)線連接邊緣計算網(wǎng)關(LAN口)和PC,使網(wǎng)關、PC、虛擬機處于統(tǒng)一網(wǎng)段。音頻分析系統(tǒng)Linux開發(fā)案例

2.1.5開發(fā)實踐:顯示模塊驅動開發(fā)與測試2、點陣屏驅動開發(fā)1)硬件原理圖音頻分析系統(tǒng)Linux開發(fā)案例

2.1.5開發(fā)實踐:顯示模塊驅動開發(fā)與測試2、點陣屏驅動開發(fā)2)硬件說明:點陣屏通過HTML6K33芯片進行驅動,使用i2c接口。3)首先建立交叉編譯開發(fā)環(huán)境,內(nèi)核必須是被編譯過的,如果已經(jīng)建立好了,就不需要再建立了。然后將“FFTDriver”目錄下的ht16k33Driver文件夾拷貝到Linux開發(fā)主機中當前用戶文件夾。4)打開終端,進行驅動源碼目錄,輸入make命令,進行編譯(Makefile文件中kernel源碼目錄要確認無誤,否則會編譯報錯)。編譯完成后會生成ht16k33.ko文件。5)通過Moba軟件將成生的驅動程序ht16k33.ko文件復制到邊緣計算網(wǎng)關。通過sudoinsmodht16k33.ko加載驅動。test@rk3399:~$lsht16k33.koht16k33.kotest@rk3399:~$sudoinsmodht16k33.ko6)如果驅動加載成功,可以在/sys目錄查看驅動信息。test@rk3399:~$ls/sys/bus/i2c/devices/i2c-2/2-0070/brightnessbufferdrivermodaliasnamepowersubsystemueventtest@rk3399:~$cat/sys/bus/i2c/devices/i2c-2/2-0070/modaliasi2c:ht16k33音頻分析系統(tǒng)Linux開發(fā)案例

2.1.5開發(fā)實踐:顯示模塊驅動開發(fā)與測試3、點陣屏應用開發(fā)與測試1)通過Moba軟件將“FFTDriver”目錄下的ht16k33App文件夾復制到邊緣計算網(wǎng)關。2)在應用程序源碼目錄進行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論