第一篇:嵌入式Linux學習筆記(四)-內(nèi)存管理單元mmu
嵌入式Linux學習筆記
(四)-內(nèi)存管理單元mmu
一、內(nèi)存管理單元MMU介紹內(nèi)存管理單元簡稱MMU,它負責虛擬地址到物理地址的映射,并提供硬件機制的內(nèi)存訪問權限檢查。MMU使得每個用戶進程擁有自己獨立的地址空間,并通過內(nèi)存訪問權限的檢查保護每個進程所用的內(nèi)存不被其他進程破壞。
重點就在于地址映射:頁表的結(jié)構與建立、映射的過程。
1、S3C2440 MMU地址變換過程
1)地址的分類
一個程序在運行之前,沒有必要全部裝入內(nèi)存,僅需要將那些要運行的部分先裝入內(nèi)存,其余部分在用到時從磁盤載入,當內(nèi)存不足時,再將暫時不用的部分調(diào)出到磁盤。
這使得大程序可以在較小的內(nèi)存空間中運行,也使得內(nèi)存中可以同時裝入更多的程序并發(fā)執(zhí)行,這樣的存儲器一般稱為虛擬存儲器。
虛擬地址最終需要轉(zhuǎn)換為物理地址才能讀寫實際的數(shù)據(jù),通過將虛擬地址空間和物理空間劃分為同樣大小的空間(段或頁),然后兩個空間建立映射關系。
由于虛擬地址空間遠大于物理地址,可能多塊虛擬地址空間映射到同一塊物理地址空間,或者有些虛擬地址空間沒有映射到具體的物理地址空間上去(使用到時再映射)。
ARM cpu地址轉(zhuǎn)換涉及三種地址:虛擬地址(VA,Virtual Address)、變換后的虛擬地址(MVA,Modified Virtual Address)、物理地址(PA,Physical Address)
沒有啟動MMU時,CPU核心,cache,MMU,外設等所有部件使用的都是物理地址。
啟動MMU后,CPU核心對外發(fā)出虛擬地址VA;VA被轉(zhuǎn)換為MVA供cache,MMU使用,在這里MVA被轉(zhuǎn)換成PA;最后使用PA讀取實際設備
①CPU核心看到和用到的只是虛擬地址VA,至于VA如果去對應物理地址PA,CPU核心不理會 ②caches和MMU看不到VA,他們利用MVA轉(zhuǎn)換得到PA ③實際設備看不到VA、MVA,讀寫它們使用的是物理地址PA
MVA是除CPU核心外的其他部分看到的虛擬地址,VA與MVA的變化關系
如果VA<32M,需要使用進程標識號PID(通過讀CP15的C13獲得)來轉(zhuǎn)換為MVA
if(VA < 32M)then
MVA = VA |(PID << 25)else
MVA = VA
使用MVA,而不使用VA的目的是,當有重疊的VA時,轉(zhuǎn)換為MVA地址并不重疊,減小轉(zhuǎn)換為PA的代價
比如兩個進程1、2,VA都是0-(32M-1),則MVA分別為0x02000000-0x03ffffff,0x04000000-0x05ffffff。下文說到虛擬地址,如果沒有特別指出,就是指MVA
2)虛擬地址到物理地址的轉(zhuǎn)換過程
arm cpu使用頁表來進行轉(zhuǎn)換,頁表由一個個條目組成,每個條目存儲一段虛擬地址對應的物理地址及訪問權限,或者下一級頁表的地址 S3C2440最多會用到兩級頁表,以段(Section,1M)的方式進行轉(zhuǎn)換時只用到一級頁表,以頁(Page)的方式進行轉(zhuǎn)換時用到兩級頁表。
頁的大小有3種:大頁(64KB),小頁(4KB),極小頁(1KB)。條目也稱為描述符,有:段描述符、大頁描述符、小頁描述符、極小頁描述符-保存段、大頁、小頁、極小頁的起始物理地址;粗頁表描述符、細頁表描述符,它們保存二級頁表的物理地址。
下圖為S3C2440的地址轉(zhuǎn)換圖
TTB base代表一級頁表的地址,將它寫入?yún)f(xié)處理器CP15的寄存器C2(稱為頁表基址寄存器)即可,一級頁表的地址是16K對齊,使用[31:14]存儲頁表基址,[13:0]為0 一級頁表使用4096個描述符來表示4GB空間,每個描述符對應1MB的虛擬地址,存儲它對應的1MB物理空間的起始地址,或者存儲下一級頁表的地址。使用MVA[31:20]來索引一級頁表(20-31一共12位,2^12=4096,所以是4096個描述符),得到一個描述符,每個描述符占4個字節(jié)。一級頁表描述符格式如下:
一級頁表描述符
最低兩位: 0b00:無效
0b01:粗頁表(Coarse page table)
[31:10]為粗頁表基址,此描述符低10位填充0后就是一個二級頁表的物理地址,二級頁表含256個條目(使用[9:2],2^8=256個),稱為粗頁表(Coarse page table)。其中每個條目表示4KB大小的物理地址空間,一個粗頁表表示1MB物理地址
0b10:段(Section)
[31:20]為段基址,、此描述符低20位填充0后就是一塊1MB物理地址空間的起始地址。MVA[19:0],用來在這1MB空間中尋址。描述符的位[31:20]和MVA[19:0]構成了這個虛擬地址MVA對應的物理地址
以段的方式進行映射時,虛擬地址MVA到物理地址PA的轉(zhuǎn)換過程如下:
①頁表基址寄存器位[31:14]和MVA[31:20]組成一個低兩位為0的32位地址,MMU利用這個地址找到段描述符
②取出段描述符的位[31:20](段基址),它和MVA[19:0]組成一個32位的物理地址(這就是MVA對應的PA)
段地址轉(zhuǎn)換過程
0b11:細頁表(Fine page table)
[31:12]為細頁表基址(Fine page table base address),此描述符的低12位填充0后,就是一個二級頁表的物理地址。此二級頁表含1024個條目(使用[11:2],10位),其中每個條目表示大小1kb的物理地址空間,一個細頁表表示1MB物理地址空間
以大頁(64KB),小頁(4KB)或極小頁(1KB)進行地址映射時,需要用到二級頁表,二級頁表有粗頁表、細頁表兩種,二級頁表描述符格式如下:
二級頁表描述符
最低兩位: 0b00:無效
0b01:大頁描述符
位[31:16]為大頁基址,此描述符的低16位填充0后就是一塊64KB物理地址空間的起始地址粗頁表中的每個條目只能表示4KB物理空間,如果大頁描述符保存在粗頁表中,則連續(xù)16個條目都保存同一個大頁描述符。類似的,細頁表中每個條目只能表示1KB的物理空間,如果大頁描述符保存在細頁表中,則連續(xù)64個條目都保存同一個大頁描述符。
下面以保存在粗頁表中的大頁描述符為例,說明地址轉(zhuǎn)化那過程
①頁表基址寄存器[31:14]和MVA[31:20]組成一個低兩位為0的32位地址,MMU利用這個地址找到粗頁表描述符
②取出粗頁表描述符的[31:10](即粗頁表基址),它和MVA[19:12]組成一個低兩位為0的32位物理地址,通過這個地址找到大頁描述符
③取出大頁描述符的[31:16](即大頁基址),它和MVA[15:0]組成一個32位的物理地址,即MVA對應的PA 步驟②和③中,用于在粗頁表中索引的MVA[19:12]、用于在大頁內(nèi)尋址的MVA[15:0]有重合的位[15:12],當位[15:12]從0b0000變化到0b1111時,步驟②得到的大頁描述符相同,所以粗頁表中有連續(xù)16個條目保存同一個大頁描述符
大頁的地址轉(zhuǎn)換過程(大頁描述符保存在粗頁表中)
0b10:小頁描述符
[31:12]為小頁基址(Small page base address),此描述符的低12位填充0后就是一塊4kb([11:0],一共12位,2^12=4096)物理地址空間的起始地址。粗頁表中每個條目表示4kb的物理空間,如果小頁描述符保存在粗頁表中,則只需要用一個條目來保存一個小頁描述符。類似的,細頁表中每個條目只能表示1kb的物理空間,如果小頁保存在細頁表中,則連續(xù)4個條目都保存同一個小頁描述符。下面以保存在粗頁表中的小頁描述符為例,說明地址轉(zhuǎn)換過程:
①頁表基址[31:14]和MVA[31:20]組成一個低兩位為0的32位地址,MMU利用這個地址找到粗頁表描述符
②取出粗頁表描述符[31:10](即粗頁表基址),它和MVA[19:12]組成一個低兩位為0的32位物理地址,用這個地址找到小頁描述符
③取出小頁描述符的位[31:12](即小頁基址),它和MVA[11:0]組成一個32位物理地址(即MVA對應的PA)
小頁描述符保存在細頁表中,地址轉(zhuǎn)換過程和上面類似。
小頁的地址轉(zhuǎn)換過程(小頁描述符保存在粗頁表中)
0b11:極小頁描述符
[31:10]為極小頁基址(Tiny page base address),此描述符的低10位填充0后就是一塊1KB物理地址空間的起始地址。極小頁描述符只能保存在細頁表中,用一個條目來保存一耳光極小頁描述符 下面是極小頁的地址轉(zhuǎn)換過程:
①頁表基址寄存器[31:14]和MVA[31:20]組成一個低兩位為0的32位地址,MMU通過這個地址找到細頁表描述符
②取出細頁表描述符[31:12](即細頁表基址),它和MVA[19:10]組成一個低兩位為0的32位物理地址,通過這個地址即可找到極小頁描述符
③取出極小頁描述符[31:10](即極小頁基址),它和MVA[9:0]組成一個32位的物理地址(即MVA對應的PA)
極小頁的地址轉(zhuǎn)換過程(極小頁描述符保存在粗頁表中)
從段、大頁、小頁、極小頁的地址轉(zhuǎn)換過程可知
①以段進行映射時,通過MVA[31:20]結(jié)合頁表得到一段(1MB)的起始物理地址,MVA[19:0]用來在段中尋址
②以大頁進行映射時,通過MVA[31:16]結(jié)合頁表得到一個大頁(64KB)的起始物理地址,MVA[15:0]用來在小頁中尋址
③以小頁進行映射時,通過MVA[31:12]結(jié)合頁表得到一個小頁(4KB)的起始物理地址,MVA[11:0]用來在小頁中尋址
④以極小頁進行映射時,通過MVA[31:10]結(jié)合頁表得到一個極小頁(1KB)的起始物理地址,MVA[9:0]用來在極小頁中尋址
第二篇:mmu學習筆記之-----段式轉(zhuǎn)換
ARM中MMU之地址轉(zhuǎn)換
第一次發(fā)帖略微有點激動,有不足的地方還請各位大神指教。
最近看了看mmu,找了好多資料,看了好多博文終于稍微清楚了一點,現(xiàn)在我把自己理解的內(nèi)容總結(jié)一下:
首先我來說一下MMU的作用,MMU就是負責虛擬地址(virtual address)轉(zhuǎn)化成物理地址(physical address)。下面我來說一下ARM CPU上的地址轉(zhuǎn)換過程涉及三個概念:虛擬地址(VA)(CPU內(nèi)核對外發(fā)出VA),變換后的虛擬地址(MVA)(VA被轉(zhuǎn)換為MVA供cache和MMU使用,在此將MVA轉(zhuǎn)換為PA),物理地址(PA)(最后使用PA讀寫實際設備)。
(1)CPU看到的用到的只是VA,CPU不管VA最終是怎樣到PA的;
(2)而cache、MMU也是看不到VA的,它們使用的是MVA(VA到MVA的轉(zhuǎn)換是由硬件自動完成的);
(3)實際設備看不到VA、MVA,讀寫設備使用的是PA物理地址。
前期的鋪墊基本完成,接下來進入重點。
在此過程中要用到以下兩個必備的東西:
1、cp15協(xié)處理器的c2寄存器(這個里面的東西需要程序員自己裝載)
2、虛擬地址MVA。
接下來我說以下mmu對虛擬地址到物理地址的轉(zhuǎn)化過程。
1、無論進行那種有效轉(zhuǎn)換都必須進行一級頁表的轉(zhuǎn)換,所以我們先去產(chǎn)生一級頁表。
產(chǎn)生一級頁表經(jīng)過以下步驟
a)由協(xié)處理器CP15中的寄存器C2(高18位,即[31:14]為轉(zhuǎn)換表基地址,低
14位為0)為一級轉(zhuǎn)換表基地址,即TTB該地址指向了一個2^14=16KB大
小的存儲區(qū),即一級轉(zhuǎn)換表。
b)將MVA的高12位,即位[31:20]作為一級轉(zhuǎn)換表的地址索引,因此一級轉(zhuǎn)換
表具有2^12=4096項,這4096項的地址為32位,最高的18位[31:14]為
寄存器C2的高18位,中間12位為MVA的高12位[31:20],最低2位為0b00。
這4096項中的內(nèi)容稱為一級描述符。至此一級頁表產(chǎn)生完畢。
2、mmu拿到一級描述符首先看它的后兩位也就是bits[1:0],根據(jù)這兩位的取值mmu
會進入不同的轉(zhuǎn)換模式,這兩位會出現(xiàn)下面四種取值。其中這四種取值分別對應四種模式,下面我一一解釋。
a)00無效不進行轉(zhuǎn)換
b)01進行粗頁式轉(zhuǎn)換
c)10進行段式轉(zhuǎn)換
d)11進行細頁式轉(zhuǎn)換
3、接下來對于不同的轉(zhuǎn)換模式,就要進行不同的轉(zhuǎn)換。我下面將對三種轉(zhuǎn)換模式進行
一一分析。
a)0b10(段式轉(zhuǎn)換),把段式轉(zhuǎn)換放在第一個說的原因是在ARM中大量用到了
段式 和細頁式轉(zhuǎn)換。
段式轉(zhuǎn)換是最簡單的一種轉(zhuǎn)換方式,它是將我們剛才產(chǎn)生的一級描述符
(即4096項中的內(nèi)容)的高12位作為段的基地址,用MVA的低20位作為每個段的偏移量,由此我們可以輕松的推出每個段的大小為2^20=1MB,至此我們就得到了一個物理地址PA。
b)0b11(細頁式轉(zhuǎn)換)
細頁式轉(zhuǎn)換,它是將我們剛才產(chǎn)生的一級描述符的高20位bits[31:12],再加上MVA的bits[19:10](第二級表索引)合體,bits[1:0]補0,獲取第二級描述符的地址,至此其一級轉(zhuǎn)換結(jié)束,因為其二級轉(zhuǎn)換方式和粗頁式的二級轉(zhuǎn)換方式相同所以我下面一塊分析。
c)0b01(粗頁式轉(zhuǎn)換)
粗頁式轉(zhuǎn)換,它是將我們剛才產(chǎn)生的一級描述符的高22位bits[31:10],再加上MVA的bits[19:12](第二級表索引)合體,最后兩位補0,獲取
第二級描述符的地址(32位),至此其一級轉(zhuǎn)換結(jié)束。
4、下面我們將進入二級轉(zhuǎn)換,對于二級轉(zhuǎn)換只針對細頁式和粗頁式,沒有段式轉(zhuǎn)換。
a)經(jīng)過一級轉(zhuǎn)換我們得到了二級描述符的地址,我們通過此地址可以得到二級描
述符,我們根據(jù)二級描述符的低兩位bits[1:0]同樣可以分為四種轉(zhuǎn)換模式:
i.00無效不進行轉(zhuǎn)換
ii.01大頁描述符
iii.10小頁描述符
iv.11極小頁描述符
b)接下來我將對各個模式進行分析。
i.01(大頁描述符)
此時我們?nèi)〕龆壝枋龇械腷its[31:16]——大頁基址,它和MVA的bits[15:0]組成一個32位的物理地址,這就是MVA對應的PA。
ii.10(小頁描述符)
此時我們?nèi)〕龆壝枋龇械腷its[31:12]與MVA的bits[11:0]組成一個32
位的地址,這就是MVA對應的PA。
iii.11(極小頁描述符)
此時我們?nèi)〕龆壝枋龇械腷its[31:10]與MVA的bits[9:0]組成一個32
位的地址,這就是MVA對應的PA。
以上就是MMU對虛擬地址轉(zhuǎn)換到物理地址的過程,本人第一次寫學習筆記,還有很多不足之處還請各位前輩指教,謝謝各位。
第三篇:《四風之害》學習筆記
學習時間:
學習內(nèi)容:觀看專題片《四風之害》
一、“工作作風上的問題絕對不是小事,如果不堅決糾正不良風氣,任其發(fā)展下去,就會像一座無形的墻把我們黨和人民群眾隔開,我們黨就會失去根基、失去血脈、失去力量。”
二、所謂作風,是在思想、工作和生活等方面一貫表現(xiàn)出來的態(tài)度或行為。理論聯(lián)系實際、密切聯(lián)系群眾、批評與自我批評以及艱苦奮斗、求真務實,是我們黨一貫堅持的優(yōu)良作風。但隨著世情、國情、黨情的深刻變化,形式主義、官僚主義、享樂主義、奢靡之風等一些不良風氣在黨內(nèi)大量存在,正在對黨的肌膚造成致命的傷害。
三、黨與群眾的血肉聯(lián)系是立黨之本、執(zhí)政之基、力量之源。執(zhí)政黨的作風問題關系到人心向背、關系到黨的生死存亡。
四、有些專家學者把群體事件的頻發(fā)歸結(jié)為仇富、仇官、仇警的社會心理。其實,真正的根源在于我們一些黨員干部丟掉了黨的優(yōu)良傳統(tǒng)作風,淡化了黨的宗旨,忘記了群眾路線,脫離群眾的現(xiàn)象大量存在,形式主義、官僚主義、享樂主義和奢靡之風盛行。歸根到底,是“四風”之害引發(fā)了“三
1仇”之病。
五、水可載舟,亦可覆舟。如果說脫離群眾是我們黨執(zhí)政后的最大危險,那么可以說,危險已經(jīng)顯現(xiàn),危機就在眼前。消除危險、化解危機的良藥,就是按照中央“照鏡子、正衣冠、洗洗澡、治治病”的要求,對作風之弊、行為之垢來一次大排查、大檢修、大掃除,讓黨的優(yōu)良作風發(fā)揚光大,把為民務實清廉的價值追求深深根植于黨員干部的思想和行動中,以作風建設的新成效凝心聚力、取信于民,永葆黨的生機和活力!
第四篇:學習嵌入式Linux系統(tǒng)的筆記和體會
學習嵌入式Linux系統(tǒng)的筆記和體會
一個典型的桌面Linux系統(tǒng)包括3個主要的軟件層---linux內(nèi)核、C庫和應用程序代碼。
內(nèi)核是唯一可以完全控制硬件的層,內(nèi)核驅(qū)動程序代表應用程序與硬件之間進行會話。內(nèi)核之上是C庫,負責把POSIX API轉(zhuǎn)換為內(nèi)核可以識別的形式,然后調(diào)用內(nèi)核,從應用程序向內(nèi)核傳遞參數(shù)。應用程序依靠驅(qū)動內(nèi)核來完成特定的任務。
在設計嵌入式應用的時候,可以不按照這種層次,應用程序越過C庫直接和內(nèi)核會話,或者把應用和內(nèi)核捆綁在一起,甚至可以把應用寫為內(nèi)核的一個線程,在內(nèi)核中運行,雖然這樣在移植上帶來了困難,但考慮嵌入式系統(tǒng)對尺寸要求小的特點,是完全可行的。不過我們使用三層軟件結(jié)構的模式來學習嵌入式linux將會是我們認識更清晰,簡單可行并使應用具有彈性。
快速入門
最簡單的建立嵌入式Linux應用的方法就是從我們使用的桌面Linux入手,安裝一個喜愛的版本,把我們的某個應用作為初始化的一部分,框架就算完成了。
當然,嵌入式linux應用遠比我們的桌面版本功能簡單專一,它也許就是一個用于足彩的終端機,或是一個數(shù)碼音頻播放器,這些系統(tǒng)除了使用嵌入式CPU外,僅僅再需要一個串口,網(wǎng)口等少量的輸入輸出接口就可以完成它們特定的應用了。
在軟件上,它可以按照三層的概念由內(nèi)核裝載器,定制的內(nèi)核和較少的為特定任務設計的靜態(tài)連接的應用程序組成。之所以使用靜態(tài)連接的應用程序,是因為少量的靜態(tài)連接程序所要的存儲空間,比同樣數(shù)量的動態(tài)連接的程序所占的空間小,這個平衡點需要我們在實際開發(fā)中去獲取。也許你正在設計的是個PDA,它的應用程序較多,那么你很可能就要使用動態(tài)連接程序來減少存儲空間。在你的/bin或者/sbin目錄下,用廠列表看看bash,ifconfig,vi...,也許只用幾十K,當你運行 ldd /bin/bash 時,你會看到它們都和好幾個庫文件相連。好了,這樣看來,我們得把PC想像成一個嵌入式硬件平臺,再重新制作一個特定功能的嵌入式linux。
基礎知識
再進行實際操作之前,先來搞清楚幾個基礎知識。
內(nèi)核裝載器Loader,它的作用是把內(nèi)核從外部存儲器,移動到內(nèi)存中。它只作這個事情,一旦完成了調(diào)入內(nèi)核的工作,Loader就跳轉(zhuǎn)到內(nèi)核位置開始執(zhí)行。不同架構有不同的 Loader,在x86結(jié)構的PC上,通常使用的loader有LILO,GRUB,syslinux,syslinux在嵌入式linux中也同樣工作。其他非x86架構的應用中,你必須使用專門的loader,或者自己編寫loader來裝入內(nèi)核。也有不使用loader的情況,系統(tǒng)加電以后,內(nèi)核直接從燒錄有映象的Flash上開始執(zhí)行。
內(nèi)核,一旦內(nèi)核開始執(zhí)行,它將通過驅(qū)動程序初始化所有硬件,這可以從我們的pc機監(jiān)視器的輸出看出來,每個驅(qū)動程序都打印一些有關它的信息。初始化完成后,計算機就準備運行嵌入式應用。也許一個,也許是多個應用程序組成了嵌入式應用,但通常首先調(diào)用的是init(通過loader 向核心傳入init=/program 可以定制首先運行的程序)。桌面linux中,init會讀取/etc/inittab文件,來決定執(zhí)行級別和哪些腳本和命令。嵌入式應用中,可以根據(jù)實際的情況決定是否使用標準的init執(zhí)行方式,也許這個init是個靜態(tài)程序,它能夠完成我們的嵌入應用的特定任務,那完全不用考慮inittab了。
initrd文件系統(tǒng),initrd以一種把內(nèi)核從存儲介質(zhì)裝入到內(nèi)存的相同的機制來裝入一個小型文件系統(tǒng)。這個文件系統(tǒng)最好是以壓縮的方式存儲在介質(zhì)上的,解壓縮到RAM盤上。通過使用initrd,包含有核心驅(qū)動和啟動腳本的小文件系統(tǒng),就可以直接從介質(zhì)上和內(nèi)核一起啟動起來,內(nèi)核屆壓縮這個文件系統(tǒng),并執(zhí)行這個文件系統(tǒng)上叫做/linuxrc的腳本文件,這個腳本通常會把啟動過程中所需要的驅(qū)動程序裝入。腳本退出以后,initrd文件系統(tǒng)也卸下了,啟動過程進入真正初始化過程。對于嵌入式來講,可以將需要的應用軟件都運行在這個initrd文件系統(tǒng)上,只要/linxrc文件不結(jié)束,內(nèi)核啟動過程的其他部分就不會繼續(xù)。
做個試驗:
cp /boot/initrd-2.4.20.img /tmp
cd /tmp
mv initrd-2.4.2-.img initrd.img.gz
gunzip initrd.img.gz
mount-o loop initrd.img /mnt
cd /mnt
ls
cat linuxrc 可以看到里面執(zhí)行了加載了兩個模塊的操作,你在啟動linxu的時候會看見屏幕打印信息。
入門試驗,制作一個簡單的應用
我們使用一張軟盤啟動一臺假象的只有一個串口,鍵盤輸入,顯示輸出的x86架構的linux系統(tǒng),執(zhí)行的特定應用就是運行minicom,通過串口撥號。需要軟件: minicom-xx.src.tar.gz 和 syslinux-xx.tar.gz,xx代表版本號,開始之前,在主目錄建立一個目錄,來釋放這兩個軟件包:
cd
mkdir-p project/minilinux
cd project/minilinux
tar zxvf minicom-xx.src.tar.gz
tar zxvf syslinux-xx.tar.gz1、裁減linux內(nèi)核(需要系統(tǒng)安裝內(nèi)核文件包)
配置內(nèi)核的時候,我們需要選擇這些:摸塊編入內(nèi)核,386處理器、物理內(nèi)存off、支持ELF、標準PC軟盤、支持RAM盤(4096)、支持 initial RAM disk(initrd)、虛你終端、虛擬終端控制臺、標準串口、ext2文件系統(tǒng)、控制臺驅(qū)動,VGA text console、DOS FAT、MSDOS文件系統(tǒng),其他的都可以不要,這樣內(nèi)核編出來較小。
步驟:
cd /usr/src/linux
make mrproper
make xconfig
make dep && make bzImage
得到 /usr/src/linux/arch/i386/boot/目錄的內(nèi)核文件bzIamge。
2、編譯一個靜態(tài)的minicom,把它作為將來的linuxrc
cd minicom-xx/src
vi Makefile
修改下面這行
minicom: $(minicom_OBJECTS)$(minicom_DEPENDENCIES)
rm-f minicom 下面的行加上-static,連接為靜態(tài)程序
(LINK)-static $(minicom_LDFLAGS)$(minicom_OBJECTS)$(minicom_LDADD)$(LIBS)
vi minicom.c
找到 if(real_uid==0 && dosetup==0)刪除這個判斷條件語句,主要是用于權限判斷的,因為這個嵌入應用不關注權限問題,否則會出錯。
make
得到可執(zhí)行程序,用ldd 檢查一下是不是靜態(tài)程序。
3、準備initrd壓縮文件image.gz
dd if=/dev/zero of=image bs=1k count=4096
losetup /dev/loop0 image
mke2fs-m 0 /dev/loop0
mounmt-t ext2 /dev/loop0 /mnt/
mkdir-p /mnt/dev
mkdir-p /mnt/usr/share/terminfo/l/
cd /dev
cp-a consle null tty tty0 zero mem /mnt/dev
cp-P /usr/share/terminfo/l/linux /mnt/usr/share/terminfo/l/linux
cp ~/project/minilinux/mincom/src/minicom /mnt/linuxrc
umount /mnt
losetup-d /dev/loop0
sync
gzip-9 image4、制作軟盤引導,并拷貝文件 bzimage image.gz 到軟盤
A.使用grub
fdformat /dev/fd0
mke2fs /dev/fd0
mount /mnt/fd0 /mnt/floppy
mkdir-p /mnt/floppy/boot/grub
cp /boot/grub/stage1 /boot/grub/stage2 /mnt/floppy/boot/grub
執(zhí)行 grub,在軟盤上創(chuàng)建引導
grub > root(fd0)
grub > setup(fd0)
grub > quit
cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
cp ~/porject/minilinux/image.gz /mnt/floppy
編輯 /mnt/floppy/boot/grub/grub.conf
default =0
timeout-=10
title minilinux
root(fd0)
kernel /bzImage
initrd /image.gz
卸下軟盤
umount /mnt/floppy
B.使用syslinux
fdformat /dev/fd0
mkfs.msdos /dev/fd0
mount-t msdos /dev/fd0 /mnt/floppy
cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
cp ~/porject/minilinux/image.gz /mnt/floppy
cp syslinux-xx/ldlinxu.sys /mnt/floppy
cat > /mnt/floppy/syslinux.cfg
LABEL linux
KERNEL bzimage
APPEND initrd=image.gz
umont /mnt/floppy
syslinux-xx/syslinux /dev/fd0
sync5、用軟盤啟動計算機,如果幸運,minicom的運行畫面出現(xiàn)在屏幕上。
到此,我們的單應用嵌入式linux做好了,但它還很簡陋,沒有什么實際用途,但通過這個實驗,可以了解嵌入式系統(tǒng)的大致結(jié)構和開發(fā)過程。在進行實際的嵌入式開發(fā)時,通常要在PC機上借助嵌入式linux開發(fā)工具包,如:uclinux,bluecat等,對相應的硬件平臺(目標機)進行軟件編寫編譯,調(diào)試成功后,將內(nèi)核及應用程序?qū)懭氲侥繕藱C的存儲器中,從而完成整個應用。
第五篇:溝通管理學習筆記
溝通管理學習筆記
溝通管理計劃應包括發(fā)布結(jié)構(這個結(jié)構顯示了用于發(fā)布不同類別信息的方法,以及信息所分發(fā)給的個人或組織);生成的進度,該進度說明每類信息將于何時生成;在各排定的溝通間獲取信息的方法。還應包括針對隨著需求變更將如何更新并修訂計劃的討論。溝通管理計劃是項目管理計劃的一個組成部分。其內(nèi)容的詳盡程度應與項目的規(guī)模和復雜程度相匹配。【規(guī)劃】 ____項目管理協(xié)會,《項目管理知識體系指南》,2008年,第257頁
溝通管理計劃應確定負責發(fā)布信息的團隊成員。其他屬性包括要溝通的信息及其溝通方式,溝通的目的、頻率和時間范圍,以及傳遞信息的方法。【規(guī)劃】 ____項目管理協(xié)會,《項目管理知識體系指南》,第257頁
攻擊者具有破壞性,因為攻擊者批評他人并企圖貶低他人的地位。具有破壞性的其他團隊角色有阻礙者、退縮者、尋求認同者、游離主題者、統(tǒng)治者,有時候還包括吹毛求疵者。若任之發(fā)展,破壞性行為會危及為團隊建設所付出的努力。
項目經(jīng)理應該在溝通計劃中記錄與干系人進行有效率和有效果的溝通的方法
有效果的溝通(Effective communication)是指用正確的格式、在正確的時間提供信息,并且使信息產(chǎn)生正確的影響。
有效率的溝通(Efficient communication)是指只提供所需要的信息。
行動導向的人,喜歡行動,不喜歡花太多時間溝通,所以與其溝通要簡短。
項目環(huán)境中有效率的會議、“作戰(zhàn)室”和緊密的矩陣可以提高溝通效率。
規(guī)劃溝通:工具與技術”,“溝通技術”。可能影響項目溝通技術的因素包括: ·信息需求的緊迫性。·可用技術。·預期的項目人員配備。·項目的持續(xù)時間。·項目環(huán)境。
績效測量基準是一個經(jīng)過批準的項目工作計劃,用來與項目執(zhí)行情況比較(compared),以測量偏差(deviations),進行管理控制(control)。通常,績效測量基準是項目的范圍(scope)、進度(schedule)和成本參數(shù)(cost,parameters)的整合,有時也可包括技術和質(zhì)量參數(shù)。
扣留信息、傲慢專橫和噪聲都是溝通障礙,都會帶來溝通中信息的選擇接收,而對內(nèi)容不熟悉則可以通過積極傾聽等方式來使得溝通得以順利進行。
項目溝通只能針對那些有利于項目成功或不溝通會導致項目失敗的信息。
有效的溝通是成功談判的關鍵。誤解是最常見的溝通問題。項目經(jīng)理應主動傾聽、告知收到他人所述信息,并且要帶有目的地表述。【執(zhí)行】 ____Fisher等人,1991年,第32~34頁;Verma,1996年,第1_65頁
通過溝通需求分析,確定項目干系人的信息需求,包括信息的類型和格式以及信息對干系人的價值。·項目資源只能用來溝通有利于成功的信息,或者那些因缺乏溝通會造成失敗的信息。·在規(guī)劃項目溝通時,需要做的一件重要工作就是,確定(determine)和限制(limit)誰應該與誰溝通,以及誰將接受何種信息。·項目經(jīng)理還應該使用潛在溝通渠道或路徑的數(shù)量,來反映項目溝通的復雜程度。從上面第二點看到,衡量是否應該收集和溝通某信息的最好方法是看信息對項目成功與否的關系如何。該主要項目干系人所要求的信息將占用很多項目時間卻沒有意義。
項目經(jīng)理往往利用四種基本決策風格:命令、商議、一致同意,以及擲硬幣或抽簽。若驗收和質(zhì)量二者都重要,則更傾向于商議的風格。商議允許團隊成員在一定程度上的參與,但項目經(jīng)理仍保持對最終決策的控制。在采用這種風格的情況下,團隊成員自由表述其觀點,但項目經(jīng)理做出最終決策。
溝通方式:
交互式溝通,就是互動式溝通,如你一言我一語的會談。推式溝通適合于溝通對象不多的情況,如發(fā)送郵件。
拉式溝通適用于溝通對象很多或者要溝通的信息很多的情況。建立電子網(wǎng)站,屬于拉式溝通
溝通規(guī)劃通常帶來更新項目文件的需求,其中包括項目進度計劃、干系人登記冊,以及干系人管理策略。【規(guī)劃】 ____項目管理協(xié)會,《項目管理知識體系指南》,2008年,第258頁
下行溝通為項目團隊成員和其他員工提供了指導和控制。它包括與工作相關的信息,例如,所需行動、標準、應執(zhí)行的各項活動的時間、要完成的各項活動,以及進度測量結(jié)果。
支持性行為以關系為導向,它表示領導者在多大程度上參與雙向溝通、傾聽,提供支持與鼓勵,促進相互影響,以及使下屬參與決策制定。建立結(jié)構意味著一定程度的剛性和不變性,它不是與支持性行為相關的術語。
溝通被視做項目成敗的最有力的單一指標之一。有效的溝通包括知曉可能會妨礙或過度使用溝通的所有類型的過濾器。傾聽對于良好的溝通至關重要。