zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...
作者:Commanderfranz,編譯: kenshin
通過前面兩篇文章我們不僅創(chuàng)建的自定義IP模塊還移植了Linux操作系統(tǒng),今天這篇文章的內(nèi)容是將這兩部分聯(lián)系起來,其實(shí)我們創(chuàng)建的myLed IP相對于Linux操作系統(tǒng)可以是它的一個(gè)底層設(shè)備,因?yàn)镻S總線為myLed IP分配了尋址地址,這樣我們就可以創(chuàng)建myLed IP模塊的硬件驅(qū)動(dòng),然后搭建應(yīng)用程序,實(shí)現(xiàn)軟硬件協(xié)同設(shè)計(jì)。
當(dāng)然開始之前還需要大家了解一下Linux驅(qū)動(dòng)的基礎(chǔ)知識,以及Makefile的用法。
步驟一:設(shè)置工作目錄,創(chuàng)建Makefile
我們先建立drivers的工作目錄,并在此目錄下編寫好Makefile文件(如上圖)。Makefile文件定義了編譯規(guī)則,只需要使用make命令就可以實(shí)現(xiàn)整個(gè)工程的自動(dòng)化編譯。
步驟二:編寫myLed模塊驅(qū)動(dòng)源文件
我們的要求是當(dāng)這個(gè)模塊加載后會(huì)在linux的/proc/目錄創(chuàng)建一個(gè)可操作的文件myled,通過向這個(gè)文件寫入數(shù)據(jù)可以控制zybo板卡上led燈的亮滅狀態(tài)(根據(jù)myLed IP功能邏輯相關(guān))。
步驟三:編譯驅(qū)動(dòng)程序,生成驅(qū)動(dòng)模塊
直接使用make命令即可,但是注意make命令之前確保已經(jīng)配置了交叉編譯環(huán)境。生成的myLed.ko文件就是我們需要的驅(qū)動(dòng)模塊。
步驟四:修改設(shè)備樹文件
從上圖我們可以看到myLed模塊的尋址空間為0x43c30000—0x43c3FFFF,因此我們要在設(shè)備數(shù)源碼文件中加入這個(gè)設(shè)備節(jié)點(diǎn)。
源碼修改完成后我們要重新編譯生成devicetree.dtb文件
步驟五:測試驅(qū)動(dòng)模塊
我們將驅(qū)動(dòng)模塊myLed.ko文件和修改后的devicetree.dtb文件拷貝到SD卡,重新讓zybo以SD卡模式啟動(dòng)。
通過insmod和rmmod命令我們可以加載和卸載驅(qū)動(dòng)模塊,加載myled.ko模塊后我們可以看到在/proc/目錄下可以看到myled文件,并且支持?jǐn)?shù)據(jù)的讀寫操作,說明驅(qū)動(dòng)程序一切正常。
步驟六:創(chuàng)建應(yīng)用程序led_blink.c
在目錄內(nèi)創(chuàng)建user_app文件夾,然后創(chuàng)建led_blink.c程序。這個(gè)應(yīng)用程序通過向/proc/myled文件分別寫入0x0F和0x00數(shù)據(jù)實(shí)現(xiàn)四個(gè)Led燈的亮滅,達(dá)到閃爍的效果。
步驟七:編譯應(yīng)用程序
編譯方式我們同樣采用Makefile方式,編譯規(guī)則如上圖所示,修改makefile。
通過make命令生成了可執(zhí)行應(yīng)用程序led_blink。
步驟八:功能測試
我們需要將上一步中生成的led_blink拷貝到SD卡,然后zybo重新上電以SD卡模式啟動(dòng)
啟動(dòng)完畢后我們手動(dòng)掛載SD卡到/mnt/目錄下,然后通過insmod myled.ko命令安裝驅(qū)動(dòng)模塊,最后執(zhí)行我們的應(yīng)用程序(./led_blink),我們會(huì)看到zybo板卡上的四個(gè)led燈的閃爍狀態(tài)。
至此zybo全棧開發(fā)入門教程也告一段落,Zynq開發(fā)方式不同于傳統(tǒng)的FPGA或者ARM開發(fā),它將兩者友好的進(jìn)行了結(jié)合,實(shí)現(xiàn)了軟硬件協(xié)同設(shè)計(jì)。當(dāng)然在實(shí)際的項(xiàng)目中工程量比較大也是需要進(jìn)行任務(wù)分工的,本系列入門教程只是讓大家對zynq全面的開發(fā)模式具有了一個(gè)了解,當(dāng)然更深入的內(nèi)容還需要各位親自動(dòng)手來體會(huì)。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux rpm mysql mysq
- 下一篇: 苹果手机的声音很小是什么原因