(1)整個嵌入式linux核心課程包括5個點,按照學習順序依次是:裸機、c高階、uboot和系統移植、linux應用程式設計和網路程式設計、驅動。
(2)典型的嵌入式產品就是基於嵌入式linux作業系統來工作的。典型的嵌入式產品的研發過程就是;第一步讓linux系統在硬體上跑起來(系統移植工作),第二步基於linux系統來開發應用程式實現產品功能。
(3)基於linux去做應用程式設計,其實就是通過呼叫linux的系統api來實現應用需要完成的任務。
(1)api是一些函式,這些函式是由linux系統提供支援的,由應用層程式來使用。
(2)應用層程式通過呼叫api來呼叫作業系統中的各種功能,來幹活。
(3)學習乙個作業系統,其實就是學習使用這個作業系統的api。
(4)linux常用檔案io介面:open、close、write、read、lseek
(1)在linux系統中要操作乙個檔案,一般是先open開啟乙個檔案,得到乙個檔案描述符,然後對檔案進行讀寫操作(或其他操作),最後close關閉檔案即可
(2)強調一點:我們對檔案進行操作時,一定要先開啟檔案,開啟成功後才能去操作(如果開啟本身失敗,後面就不用操作了);最後讀寫完成之後一定要close關閉檔案,否則可能會造成檔案損壞。
(3)檔案平時是存在塊裝置中的檔案系統中的,我們把這種檔案叫靜態檔案。當我們去open開啟乙個檔案時,linux核心做的操作包括:核心在程序中建立了乙個開啟檔案的資料結構,記錄下我們開啟的這個檔案;核心在記憶體中申請一段記憶體,並且將靜態檔案的內容從塊裝置中讀取到記憶體中特定位址管理存放(叫動態檔案)。
(4)開啟檔案後,以後對這個檔案的讀寫操作,都是針對記憶體中這乙份動態檔案的,而並不是針對靜態檔案的。當我們對動態檔案進行讀寫後,此時記憶體中的動態檔案和塊裝置中的靜態檔案就不同步了,當我們close關閉動態檔案時,close內部核心將記憶體中的動態檔案的內容去更新(同步)塊裝置中的靜態檔案。
(5)常見的一些現象:
第乙個:開啟乙個大檔案時比較慢
第二個:我們寫了一半的檔案,如果沒有點儲存直接關機/斷電,重啟後檔案內容丟失。
(6)為什麼要這麼設計?
以為塊裝置本身有讀寫限制(回憶nnadflash、sd等塊裝置的讀寫特徵),本身對塊裝置進行操作非常不靈活。而記憶體可以按位元組為單位來操作,而且可以隨機操作(記憶體就叫ram,random),很靈活。所以核心設計檔案操作時就這麼設計了。
(1)檔案描述符其實實質是乙個數字,這個數字在乙個程序中表示乙個特定的含義,當我們open開啟乙個檔案時,作業系統在記憶體中構建了一些資料結構來表示這個動態檔案,然後返回給應用程式乙個數字作為檔案描述符,這個數字就和我們記憶體中維護這個動態檔案的這些資料結構掛鉤繫結上了,以後我們應用程式如果要操作這乙個動態檔案,只需要用這個檔案描述符進行區分。
(2)一句話講清楚檔案描述符:檔案描述符就是用來區分乙個程式開啟的多個檔案的。
(3)檔案描述符的作用域就是當前程序,出了當前程序這個檔案描述符就沒有意義了
3 1 Linux中的檔案IO 4節
1 linux中檔案有讀寫許可權,我們在open開啟檔案時也可以附帶一定的許可權說明 譬如o rdonly就表示以唯讀方式開啟,o wronly表示以只寫方式開啟,o rdwr表示以可讀可寫方式開啟 2 當我們附帶了許可權後,開啟的檔案就只能按照這種許可權來操作。1 當我們程式在前面步驟操作失敗導致...
3 1Linux核心的配置和編譯
linux核心的配置和編譯 之所以要對核心進行配置,這是很多都是硬體的需求,和軟體的需求。就是選擇自己需要的,去掉自己不要的。配置核心的方法 make config 基於文字模式的互動式配置。make menuconfig 基於文字模式的選單型配置。上面有兩種配置方法,但是make config是幾...
3 1 Linux核心的發展與演變
這一塊感覺知道一點常識就可以了 首先linux作業系統是一種類unix作業系統,作者是linus torvalds 至今不知道這個名字怎麼讀,linux 託瓦斯?linux五大支柱 1 unix作業系統 2 minix作業系統,也是unix的轉殖系統,linux剛開始就是參照minix系統的 3 g...