嵌入式系統框架----軟件篇

1.overview

                                                                                      圖1-1 嵌入式框架圖

嵌入式系統分爲硬件以及軟件兩大部分,大多數人蔘與的是嵌入式軟件設計,更多的是接觸的是上層軟件系統部分,可以分爲兩大類型嵌入式軟件應用工程師以及嵌入式驅動工程師。

前者主要負責 linux APP 設計,負責應用層業務開發,主要具備如下幾個專業技能:

       1.熟悉網絡編程、TCP/IP協議、IIC、SPI協議

       2.熟悉多線程管理、進程間通信、文件IO操作

       3.瞭解基本的shell編程

       4.熟悉數據庫操作

       5.瞭解QT或者Android

後者負責驅動開發,更加涉及底層。

       1.熟悉uboot和Linux內核,完成Linux內核裁剪定製以及系統的固件更新

       2.熟悉Linux驅動模型

       3.熟悉ARM架構

       4.熟悉基本的電路原理

歪了歪了,只是做一些基本介紹,明白嵌入式到底幹啥,才能更好的去了解嵌入式系統。

2.Uboot

Uboot(universal bootloader(通用的啓動代碼)),Uboot屬於一段裸機程序,最終的目的是啓動內核。歷史的發展Uboot的功能也越來越強大。如今的Uboot主要具備如下主要功能:

1.初始化硬件平臺,初始化處理器核心接口:時鐘、內存、中斷、串口...,初始化板級接口:網卡、USB、LCD...(不是說啓動內核嗎?爲什麼要初始化硬件呢?後面會說。)

2.提供命令行操作以及一些小工具

       爲什麼需要有命令行操作,因爲內核啓動可以傳遞一些參數,設計者可以在命令行中進行相關操作,同時Uboot還提供tftp、fastboot等小工具,tftp在我們下載文件時會用到,fastboot在刷機時可以用到。而這些小工具都需要硬件支持,所以Uboot中會具有硬件的驅動代碼。

3.啓動內核。

Uboot官網 <---

3.linux APP

linux APP主要是處於操作系統上層的應用層,通過各種系統調用實現業務要求。比如linux系統中的各種應用(瀏覽器、播放器、編輯器)都屬於linux APP

4.roofs

                                                                                 圖4-1 文件系統在系統中的層次關係

文件系統在嵌入式系統中非常重要,玩過STM32操作FLASH的同學就知道了,直接操作FLASH需要注意起始位置,長度,是否換頁,加入文件系統之後,我們就有了一種文件路徑的概念,更加形象方便。

應用程通過系統調用(SCI)操作虛擬文件系統(VFS),爲什麼需要VFS,因爲linux支持多種文件系統類型,接口個不一定兼容,VFS就是將這些接口進行又一層的封裝,消除差異。

說這麼多,roofs難道就是一個文件系統?當然不是,roofs稱爲根文件系統,既然能稱爲“根”,重要性不言而喻,根文件系統是內核加載後第一個掛載得稱爲根文件系統,其他文件系統只能掛在在這個文件系統得某個目錄(例如插入一個U盤,就會掛載到 /mnt/udisk/ 下)。根文件系統除了存儲文件之外,爲了系統更好得運行,還會包括一些shell命令工具應用程序運行所需要的動態庫系統環境變量配置信息以及系統工作信息等。

5.linux kernel

linux kernel(內核)是嵌入式的軟件大腦,地位十分重要,主要提供如下幾個功能:

1.內存管理

內存管理主要完成的是如何合理有效地管理整個系統的物理內存,同時快速響應內核各個子系統對內存的請求。linux內存管理支持虛擬內存,虛擬內存有助於實現進程內存的獨立性和安全性、有助於系統數據共享以及內存的“擴充”(通過SWAP分區實現)

理解linux虛擬內存

2.進程管理

進程管理主要是進程調度,所謂的進程調度,就是在多任務領域,操作系統合理分配單一的CPU資源的過程。進程管理決定了某個進程什麼時候等待CPU資源、利用CPU資源以及釋放CPU資源。(這些話語只是爲了更加明瞭表達,深入學習進程管理會遇到 單核以及多核處理器、時間片、進程狀態轉換等概念)

3.進程間通信

由於需要保證單個進程的獨立性和安全性,每個進程的內存在虛擬內存中的隔開的,但是由於進程之間的相互協作是不可缺少的(例如微信訪問相冊),相互協作的基礎是信息交流,linux設計基於這種需求,引入內核作爲中間交換信息的橋樑,內核提供多種接口提供給進程間通信。

1.無名管道、有名管道

2.消息隊列

3.信號量、共享內存

4.信號

5.套接字

4.虛擬文件系統(VFS)

linux支持多種文件系統(ext2、ext3、ext4、xfs、btsfs),各個文件系統的驅動程序各不相同,甚至向上開放給應用程序的接口也不相同,VFS就是爲了消除底層差異,將文件系統接口做了層封裝,抽象稱爲虛擬文件系統。

5.網絡接口

網絡知識深如海,但是卻不可或缺,linux內核提供各種常用的網絡接口,例如常見的TCP/IP,網絡接口提供了各種網絡通訊協議和網絡驅動設備,進而形成各種網絡通訊工具提供給應用層。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章