本篇總結學驅動的抽象思維,作為寫指導寫驅動的思想,水平有限,持續更新:
看了cortext m3的驅動編寫,覺得主要作的工作是:
1.獲取準確的時鐘——用於延時。然後,可以根據基準時鐘,例如獲取了系統時鐘,用數學公式,衍化成自己想要的延時。
2.暫存器——每個暫存器對應著管腳/具體功能。每當想到乙個功能和管腳,第一反應應該是找datasheet,查詢對應的暫存器和應該設定的值。有的程式是用enum列舉每個管腳的值的,而有的是用0x000000h這樣的方式,定義值。關於管腳暫存器,在底層的機器**中,其實就是做了位址對映,規定好哪個實體地址可以控制哪個管腳。如果具備數位電路知識,應該能理解為啥0x000ffffe 就代表了某個gpio腳。 我覺得這也是我們需要理解的,不要死記。
3.協議——高低電平。暫存器都是分散的資源,即使你把幾十頁,上百頁的暫存器背下來,也無助於你寫驅動。寫驅動要以協議為準,高屋建瓴,協議規定了什麼時候哪個埠該高電平,什麼時候低電平,什麼時候應該切換電平。然後,根據這些資訊,去找管腳對應的暫存器(一般gpio.h會define對應的管腳),然後我們根據功能重新define管腳巨集名,方便理解記憶,本質上還是操作暫存器。所以,重點還是把協議的時序搞懂,知道多少毫秒或微秒需要拉高電平,知道要持續多長時間,等。
4.控制器——這是個好東西,如果有了針對某種協議如spi和i2c的控制器,就不需要自己寫控制時序函式了,轉而只需要寫控制器對應的暫存器,讓控制器去控制時序,這樣可以省掉很多功夫。所以,我們看到別人寫驅動,有時候很注重時序,有時候不管時序。
成功三要訣
url size medium 每個人都追求成功,好像大部分人又與成功無緣。成功真有那麼難嗎?追求成功的道路上有沒有規律可循?工作關係,我天天跟各種成功者打交道,觀察研究的結果,是成功的邏輯實在太簡單,簡單到只有三句話,小孩子都能聽得懂的程度 更令人驚訝的是,不但成功的邏輯很簡單,認真按照這個邏輯做...
程式設計要訣 心態
最近忙的有些過分了,各種各樣的事情,各種各樣的感受隨之而來。所以想寫一些不是程式設計能力,卻屬於程式設計的一些內容。希望能在以後遇到各種問題時,保持正確的心態,進而能做到臨危不亂,條理分明。1.keep calm。當你遇到了許多你不擅長,或發現了成為大神需要更多方面的努力,不管你是苦惱著,還是興奮著...
成功的要訣如下
成功的要訣如下 如果,乙個人感覺自己什麼也不會,那,抓緊準備,用每乙個今天,去把自己的明天點綴。如果,乙個人感覺活得太累,那,提前準備,提公升自己的能力,就能提公升自己生活的品味。如果,乙個人感覺心情不對,那,馬上準備,穿上禮服盛裝,到友人的圈子裡尋找遠離孤獨的快慰。如果,乙個人感覺時光在浪費,那,...