2013年12月24日 星期二

Beaglebone Black I/O library 開發歷程(一)

10月時我從網路上看到以下的文章,是由一名外國網友Shabaz 發表在element14上,有關於Beaglebone black I/O library。


BBB - BeagleBone Black I/O (GPIO) Library for C :
http://www.element14.com/community/community/knode/single-board_computers/next-gen_beaglebone/blog/2013/10/10/bbb--beaglebone-black-io-library-for-c


當下看到文章其實滿興奮的,因為我一直想透過Beaglebone black學習linux I/O的方法,但是在driver方面的學習,有點略餘緩慢,花了約1個禮拜,仍舊還處在翻閱書籍的時期。


看到這篇文章時,他的library得使用方法實在讓我非常驚艷,透過mamory map的方式來進行I/O的存取,Yes,學校OS課程有教過mamory mappd I/O的方法,但是僅提到理論的東西,實做連邊都沒碰到,手動也沒動一下,現在看到這個library,實在讓我心中無限感動,原來阿! 原來memory mapped I/O 可以這樣做阿! 實在太奧妙,太有趣了。


雖然一個大學畢業生講這些話實在是很慚愧阿....但接觸這個Library之後,讓我心中的熱血整個爆發開來!!!


當我點亮第一個LED的時候,心中可以說是無限的喜悅,靠這股動力,我學會了看CPU spec的一些基礎,也學習到了基本GPIO的應用。


天阿,現在CPU的設計,大概不能用奧妙來形容了,簡直是有趣到的一個不可思議的境界。
我一頭栽進這個library的開發,而我也大言不慚的跟原作者Shabaz請求了一份程式碼授權,開始著手開發自己的BBBio library。


嵌入式領域實在非常得有趣,很遺憾我念完大學四年,研究所休學之後才找到自己喜歡的東西,我喜歡純軟體,但我更愛嵌入式領域的知識。


我將我擴展過的BBBio library 放在 github上:



這是一套為Beaglebone black打造的User space I/O library,目前實做了GPIO / PWM / SPI的功能,而我也加入了一些Demo和電路,來做為使用的範例,雖然PWM 和McSPI沒有將完整的功能全部打開(沒有中斷跟DMA),但我想基本的實做應該都已經展示出來了,雖然遺憾,但我仍在努力。

希望有緣看到此網誌的各位,若有興趣的話,歡迎試用看看這個Library,也給我批評與指教,謝謝。

這系列文章我打算分成以下進行 :
一、簡介
二、AM335x GPIO module 介紹-I
三、AM335x GPIO module 介紹-II
四、AM335x EPWMSS module 介紹
五、AM335x McSPI module 介紹

I2C / UARY / DMA 之類的,不知道在我當兵有沒有機會做完整,大概只能推延了。

沒有留言:

張貼留言