最近在自己開發基於nuttx的四軸飛行器控制系統。慢慢的對nuttx有了自己的理解。
virtual file system(虛擬檔案系統)
upper half drivers(上層驅動)
lower half drivers(下層驅動)
microcontroller + peripherals(外設)
virtual file system。這一層比較容易理解,也就是乙個檔案系統,這個虛擬檔案系統符合linux系統的思想。即這一層主要的作用是,將裝置的操作,轉化為對於虛擬檔案的操作。比如我們的nsh輸出,就可以虛擬成/dev/console
這個檔案。通過open開啟裝置,write進行資料傳輸,read進行資料讀取。檔案在很多地方和裝置有共性,畢竟都視作資源。
upper half drivers 上層驅動,這一層的驅動實現的是對於各種裝置的操作介面的定義,比如pwm,network, graphics等等。這一層也就是可以認為是系統的api。應用程式中你可以用這一層提供給你的函式操作pwm裝置。這一層的驅動位於nuttx/include/drivers
中。
lower half drivers 下層驅動,這一層驅動是對於上層驅動的具體實現。這一層的驅動提供的api直接操作各種晶元,也就是說不同的晶元這部分的驅動將是不同的。stm32有stm32對應的驅動,intel也有有其對應的。
microcontroller + peripherals, 這層就是各種硬體了。這一層的驅動位於nuttx/arch/*
內。
首先是configs//include/board.h
這個檔案。這個檔案中定義了,你所用的開發版的外設和晶元的有關引數。晶振配置,sd卡,dma的配置等等。這一層是粘合硬體與lower half drivers 下層驅動的。
其次,configs//src/*
這個目錄下的各種nuttx啟動外設初始化c檔案。比如我移植時編寫的stm32_pwm.c
就負責通過呼叫裝置註冊函式,來建立pwm裝置。stm32_sdio.c
負責建立和初始化sd卡裝置。
nuttx系統的設計還是十分簡潔的,分層較為清晰。一般的開發步驟如下。
分析你的應用程式需要哪些裝置,並在configs//src/*
下的c檔案中編寫,建立並初始化你所需要的裝置。
收銀管理系統開發簡析
其實現有的收銀系統有很多,我為什麼還要做收銀系統是希望能將收銀系統做的越來越強大,我會堅持定期更新,同時把較新的技術應用進來,系統的重點在於優化操作方式,讓操作更簡單一些。1 mysql資料庫 小巧 免費 最開始沒有選擇是因為覺得mysql資料庫安裝比較麻煩。2 sqllite資料庫 小巧 免費 受...
嵌入式系統設計與開發的生命週期簡析
在實際開發產品的過程中,我們往往都會遵循一定的規則去進行開發,就如工人在砌牆之前,先畫好圖紙,然後評審,修改,再去建立整個樓房的框架,等整個框架都建立好了,那麼就開始砌牆了,這個時候,工人只需要按照框架把磚給堆砌上去即可,不需要在砌牆的過程中還要去考慮如何去布局空間的問題,既提高了工作的效率,同時也...
Linux核心分析之簡析載入和啟動乙個可執行程式
linux 核心分析 mooc課程 實驗內容 實驗要求 關鍵實驗截圖 圖一 exec 圖二 設定斷點 圖三 檢視具體執行流程 載入和啟動乙個可執行程式 可執行檔案的建立 c檔案經過預處理,生成.cpp預處理的中間檔案 經過編譯生成彙編 asm檔案 再通過彙編器生成目標 o檔案 再通過聯結器,鏈結成可...