嵌入式學習筆記 -- 入門與軟件框架(1)

一.GPIO及基本打通原理

 

1.每個(GPIO)口均有12個寄存器,分別是:

       數據輸入寄存器,數據輸出寄存器,數據方向寄存器,上下拉使能寄存器,驅動選擇寄存器,功能同變化寄存器,中斷標誌寄存器,中斷邊沿選擇寄存器,中斷向量寄存器,終端使能寄存器,複用選擇寄存器。

 

2.  GPIO的模塊的編程結構 -- 基本編程步驟

   1.引腳功能定義:通過複用選擇寄存器定義引腳爲GPIO功能。

   2.設置引腳方向:設置數據方向寄存器, “0”對應輸入, “1”對應輸出。

   3.輸出功能:通過數據輸出寄存器輸出高電平或低電平。

   4.輸入功能:通過數據輸入寄存器讀取 引 腳狀態 “0”對應低電平 “1”對應高電平。

   注:實際編程時爲防止輸出電壓抖動,引腳作爲輸出功能時可先進行數據輸出寄存器的設置再設置數據方向寄存器。

 

 3.構件封裝的必要性

初學入門GPIO編程過程只是爲了理解GPIO的基本編程方法,實際並不實用。芯片引腳較多,不可能一一對應編程。 將對底層硬件的操作以構件的形式封裝起來,給出函數名與接口參數,供實際編程時使用,將會提高開發效率與穩定性。
 

二.程序的基本調試方法

1.單步調試:在調試位置設置斷點,到達斷點位置之後,逐句 單步跟蹤調試瞭解與硬件打交道的寄存器值的變化。 單步跟蹤調試也用於底層驅動構件設計階段。不 進入子函數內部執行的單步跟蹤調試,可用於整體功 能跟蹤。 

2.打樁調試:在程序中需要停住的位置加上for(;;);無限循環, 若運行效果和預期一致說明無限循環之前的語句正確 ,否則需要在此之前查找問題。 打樁調試常常用於斷點單步調試不適用的場景, 輔助定位問題語句,如系統長時間運行後出現問題, 單步跟蹤調試花費大量精力而不方便實現的情況。

3.Printf調試:在程序中使用printf構件,通過串口格式化輸出 程序編寫者想要知道的運行信息,如變量值、寄存器 值、任務或函數執行信息等。 例如,可以在一些關鍵的代碼或子函數調用語句 的前後可以加入兩條printf語句,標誌關鍵語句的執 行情況。

 

三.GPIO封裝方法與驅動構件封裝規範

建議:按底層硬件操作功能封裝構件,給出函數名與接口函數,以供實際編程使用。

必要性:利用軟件構件技術,可以有效提高編程人員的開發效率並且 使得程序更加規範。將底層驅動封裝成構件,可以減少重複勞動,使應用程序開發者能夠更多關注軟件優化與穩定性。

 

 

移植:考慮使用與移植方便。要對構件的共性與 個性進行分析,抽取出構件的屬性和對外 接口函數。
複用:使用同一芯片的應用系統,構件不更改,直接 使用;同系列芯片的同功能底層驅動複用時, 僅改動頭文件;不同芯片的同功能底層驅動復 用時,頭文件與源程序文件改動儘可能少。

交流:方便不同驅動構件使用者相互之間的交流,減少因函數封裝不同帶來的麻煩。

 

規範概要

1.每個構件由頭文件(.h)和源文件(.c)兩個獨立文件組成,放 在以構件命名的文件夾中,驅動頭文件(.h)中僅僅包含了對外接 口函數的聲明,相當於使用指南。
2.需滿足設計構件的最基本要求。
(1)考慮使用與移植方便。 (2)要有統一、規範的編碼風格與註釋。 (3)宏的使用限制。 (4)不使用全局變量。

 

工程文件組織框架

 嵌入式系統工程包含若干文件,包括程序文件、頭文件、與 編譯調試相關的文件、工程說明文件、開發環境生成文件等

 合理組織這些文件,規範工程組織,可以提高項目的開發效率、提高閱讀清晰度、提高可維護性、降低維護難度。

 這個工程框架也可被稱爲軟件最小系統框架,因爲它包含的工程的最基本要素。

 軟件最小系統框架是一個能夠點亮一個發光二管的,甚至帶 有串口調試構件的,包含工程規範完整要素的可移植與可複用的工程模板。

 

Mian函數之前的執行過程

 

四.嵌入式硬件構件

嵌入式硬件構件:是指將一個或多個硬件功能模塊、支撐電路及其功能描述封裝成一個可重用的硬件實體,並提供一系列規範的輸入/輸出接口。

核心構件:只有供給接口,沒有需求接口,即只爲 其他硬件構件提供服務而不接受服務, 如芯片的硬件最小系統。

中間構件:既有需求接口,又有供給接口,即不僅能接受其他構件提供的服務,也能爲其他構件提供服務,如電源驅動構件,232電平轉換構件

終端構件:只有需求接口,即只接受其他構件提供的服務,如LCD構件,LED構件,鍵盤構件

 

發佈了52 篇原創文章 · 獲贊 548 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章