在學習linux的過程中,ubuntu無疑是初學者的最佳選擇。下面來列舉給Windows系統安裝ubuntu雙系統的三種方法。一、虛擬機器安裝(不推薦)使用工具:Vmware如果不是因為迫不得已,比如Mac
本文將直接了當的帶你進入linux的模組編譯。當然在介紹的過程當中,我也會添加一些必要的注釋,以便初學者能夠看懂。之所以要寫這篇文章,主要是因為從書本上學的話,可能要花更長的時間才能學會整個過程,因為看書的話是一個學習過程,而我這篇文章更像是一個培訓。所以實踐性和總結性更強。通過本文你將會學到編譯一個模組和模組makefile的基本知識。以及載入(卸載)模組,查看系統訊息的一些知識;聲明:本文為初學者所寫,如果你已經是一個linux模組編譯高手,還請指正我文章中的錯誤和不足,謝謝第一步:準備原始
最早接觸DMA的時候是大三的微機原理,當時不是很理解,什麼DMA模式啊,只知道是傳輸速度快,不經過CPU,但是到底是怎麼樣的不經過CPU呢?還是不理解。這次I2C控制器裡面帶了DMA的模式,所以有機會去接觸下了。 而具體的DMA的意思是什麼http://baike.baidu.com/view/32471.htm,百度百科裡還是不錯的。 DMA的工作過程:
經常在linux核心中看到list head這個鏈表頭,有時候看著也不是很懂,很早就打算拎出來好好理解理解了。這次趁著編寫SDK後有點小空閑,就拿出來晒晒吧。 簡單的鏈表實現#include <stdio.h>#include <stdlib.h>#include <string.h>struct list_head{ struct list_head *next, *prev;}; #define
首先看下經常用到的linux下的命令吧,用以以後方便查閱。具體用法直接在終端man命令就可以了。以下都是基於ubuntu的操作的。 1、cp和scp cp: 當前的電腦下的拷貝 scp:當前電腦和遠端電腦之間的拷貝 2、mv mv: 剪下,也可以當作重新命名來使用 3、rm rm: 刪除檔案 4、mkdir mkdir: 建立檔案夾 5、cd
現在什麼東西都用上了USB了,聽著名字覺得怪怪的,拆開來看看,U,SB,貌似是罵人的話了,開個玩笑。不過這個傢伙確實給我們帶來很多的方便啊,什麼USB滑鼠啊,隨身碟啊,USB wifi啊,USB網路攝影機啊,什麼電子裝置都貌似可以用USB來替換掉,足見這個東西的好處和通用了。不過一直都不是很清楚這個東西,上次公司讓做USB的device裝置,由於硬體的匯流排有問題,從而沒有繼續下去,只是簡單地看了下協議和驅動,真是有種萬花叢中過,片葉不沾身呢。最近又關注了下USB,把自己看的總結下吧。
還記得第一次用spi裝置的時候是大三暑假了,那時和隊友一起買了無線模組,然後用單片機來無線傳輸,不過代碼都不是自己寫的,雖然實現了這個功能,但是當時還不知道什麼spi的。大四了,學弟問我怎麼用spi flash,頓感慚愧。後來他送我了一塊flash,然後我用51參考網上的實現了下,才知道有這麼個東西。之後公司裡也漸漸用了些spi的裝置,flash,codec,ads7843等,漸漸地也熟悉了這個東東。 其實,匯流排協議只是為了減少io口,人為定義的。我們也可以定義協議,
耳邊依舊是單曲迴圈,不知何時開始,音樂開始觸動於我。一直以來,聽歌都是只享受其中的旋律,而慢慢地,歌詞很多事情讓我微微一顫的感覺。繼續迴圈著,繼續這種微妙的感覺。 吃完飯了,那就繼續USB吧,接下來那便是USB的裝置描述符了。
上一篇文章中,對於USB是什麼東東,想必都清楚了,她的串連方法也清楚了,那麼接著學習下USB的系統結構吧。先看一下系統的拓撲結構吧。 主機host控制器和一個根hub,然後下面可以接很多的裝置,也可以繼續接hub,然後hub下面還可以接裝置,接下一個hub,一直往下。對於USB匯流排,最多隻能接127個裝置。 USB的主控制器主要負責處理主機和裝置之間的電氣和協議層的互聯。主要有OHCI、UHCI(usb1.0)、HCI(usb2.0)。
既然知道了協議了,那麼就可以開始去瞧瞧linux kenerl中的spi的驅動代碼了,代碼中有很多的結構體,還是對主要的結構體先做個瞭解吧,那樣才可以很好的理解驅動。主要是include/linux/spi.h 首先是SPI的主機和從機通訊介面,也就是SPI匯流排,extern struct bus_type spi_bus_type; bus_type定義在linux/device.h中 struct bus_type { const char
周末又快要過去了,一周又一周的迴圈往複,不知道何時才是盡頭,每天除了工作學習就是睡覺。也許這樣的日子很充實吧,但是並不是非常喜歡這樣的生活。不知何時才可以跳出這樣的怪圈。重歸現實吧,還是繼續看看USB吧,講了USB的裝置描述符,那接下去就是USB的資料轉送了。 USB規範中規定了4種不同的資料轉送方式,她們分別為:1、等時傳輸,2、中斷傳輸、3控制傳輸、4批量傳輸。 控制傳輸主要用來傳輸裝置控制指令、裝置狀態查詢及確認命令。當USB裝置收到這些資料和命令後,
公司的i2c和spi匯流排的所有東西都要交給我負責了,下午開始看了i2c的代碼,發現了個container_of的宏,甚是不解,網上找了點資料看看,自己寫了些小測試程式,終於明白了,看來以前學演算法沒有學好c的基礎就是現在這個下場啊,看這些東西要半天,進度都沒有了。還是記錄下來吧,以後看著就知道了。 #define container_of(ptr, type, member) ({ \ const typeof( ((type
就這麼稀裡糊塗地過了兩天,都在公司裡。為了不是我的工作的工作,是對,還是錯。自己定的計劃都沒有實現,要看的書也沒看,要玩的板子也沒玩。不過終於體驗到了,加班,其實對於IT業來說,太平常不過了。目前的部門還好,基本不用加班,布置的小任務,還是可以提前完成的,也有點時間用來記錄所學的過程,慢慢成長。昨天,和我們子公司的工程師趕項目到9點半才回去,今天他說,他是淩晨3點回去的。不容易啊,工作4年後,我也要這樣嗎?他們公司就他一個人做軟體,andriod上層應用到底層驅動都是他做的。
小日本可惡的暫時搶走了釣魚島,但是,相信憑藉全國人民的齊心協力,釣魚島是逃不掉的。至於要不要武力解決,這個不是我們說了算的。最好還是不能動武,到時候受害者還是老闆姓。相信時間會解釋一切,在此只能默默祈禱,釣魚島早日回到祖國大陸的懷抱。 好了,釣魚島的事,關心是需要的,但是也幫不上什麼忙,與其這麼瞎折騰,還是多學點東西,為祖國的建設做貢獻吧。
和spi一樣,瞭解了協議後,還是看看具體的linux kernel中的i2c的一些資料結構吧。在include/linux/i2c.h中主要是以下這些資料結構:struct i2c_msg;struct i2c_algorithm;struct i2c_adapter;struct i2c_client;struct i2c_driver;union i2c_smbus_data;struct i2c_board_info; I2C的driver struct
最近要寫SDK,smartcard又沒有什麼進展,事情還真是多啊,對於一個本科應屆畢業生,是不是要求高了點,哈哈,就喜歡嚴,那樣提高才快,不過很多時候,忙得自己連思考的時間也沒有多少了,也沒有實行自己的計劃,很多很多沒有做。想想確實應該放棄一些事情了,那樣的話,至少可以再某些方面做得很好,恩,加油就行。趁著周末之際,把所有模組的SDK都小整理了下,還是把上次沒有分析完的USB的枚舉給分析下吧。
學東西還是從實際的物體開始吧,先看下我們常用的觸點式IC卡的管腳定義。 介面裝置應通過觸點VCC向卡提供下列標稱電源:—— A類:5V——
最近網上很流行一句話,那就是,元芳,你怎麼看呢?那麼對於那個linux核心中的宏定義中用的do{…}while(0),元芳,你怎麼看呢? 實踐出真知,還是寫幾行代碼,來調試調試吧。Linux核心中有著太多太多的奇妙的用法。人類積聚著的財富啊,不像windows,linux是可以讓我看到,學習的。而對於windows,那就只能是寫寫他們準備好了的API,調用下函數,殊不知其中做了什麼。還是先看下代碼吧: #include <stdio.h> void