版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Klinux基礎(chǔ)培訓(xùn)多業(yè)務(wù)承載深圳軟件開發(fā)二部OSS科蔣彥波目錄第一部分Linux概述第二部分Klinux簡介第三部分嵌入式Linux開發(fā)第四部分Klinux開發(fā)指南第五部分KIDE集成開發(fā)環(huán)境第六部分KIDE調(diào)試第一部分Linux概述Linux之父Linus
TorvaldsLinux的標(biāo)志Linux發(fā)展史前身---Minix1991年9月Linux0.01版本由Linus
Torvalds開發(fā)。1991年底,Linus
Torvalds首次在internet上發(fā)布基于i386體系結(jié)構(gòu)的Linux源代碼。Linux的商品應(yīng)用逐漸增多。1998年7月,Linux贏得了包括許多大型數(shù)據(jù)庫公司包括:Oracle、Informix、Ingres的支持。進(jìn)入大、中型企業(yè)的信息系統(tǒng)。2000年,發(fā)布內(nèi)核穩(wěn)定版本2.2.10,由150萬行代碼組成,估計擁有1000萬用戶。目前采用比較多的是基于Linux2.4內(nèi)核最新的是2.6內(nèi)核。選擇Linux的緣由免費可靠的系統(tǒng)安全多任務(wù)移植性強大的網(wǎng)絡(luò)功能多用戶開源Linux發(fā)行版本嵌入式LinuxRT-Linux實時性強,把標(biāo)準(zhǔn)的Linux核心作為實時核心的一個進(jìn)程,同用戶的實時進(jìn)程一起調(diào)度υCLinux體積小型化,可以控制在幾百K,主要針對NoMMU.紅旗嵌入式Linux->EEOS重點支持p-Java。系統(tǒng)目標(biāo)一方面是小型化,另一方面能重用Linux的驅(qū)動和其它模塊KLinux中興成研所主打產(chǎn)品之一,強實時內(nèi)核,可裁減性強,另有一套嵌入式集成開發(fā)環(huán)境可與之完美結(jié)合。第二部分Klinux簡介什么是KLinux?成都研究所在標(biāo)準(zhǔn)linux的基礎(chǔ)上增加了強實時性能的嵌入式操作系統(tǒng)。KLinux特色之處實時0(1)調(diào)度基于優(yōu)先級的可搶占調(diào)度內(nèi)核支持在內(nèi)核線程上的移植KLinux簡介—解決方案Linux強實時內(nèi)核解決方案Linux修改內(nèi)核KTH庫KLibc、KCplus庫X86PPCARM上層應(yīng)用調(diào)試代理調(diào)試器MIPSOSS支撐VxWorks適配內(nèi)核態(tài)KLinux簡介—體系結(jié)構(gòu)相關(guān)硬件開發(fā)板與評估版網(wǎng)絡(luò)協(xié)議棧
Linux支持包(最小系統(tǒng)和設(shè)備驅(qū)動)Embsys
KLinux
內(nèi)核
標(biāo)準(zhǔn)Linux與VxWorks適配接口ZTEEmbsys第三方軟硬件上層應(yīng)用程序KLinux簡介—關(guān)鍵特性KLinux關(guān)鍵特性強實時性支持在內(nèi)核線程上的移植支持多種硬件體系X86體系(支持所有IA32的CPU、虛擬機)PPC體系(8240/8241/8245、860、852、8260、755)ARM-NOMMU(ARM7TDMI)ARM(ARM9TDMI、IXP1200)MIPS(R4000)KLinux簡介—版本狀況KLinux2.0基于Linux2.4的內(nèi)核KTH、KLibc、KShellKLinux2.2完善KTH、KLibc、Shell,增加了KCplus模塊增加了調(diào)試器功能LSP,KBoot的開發(fā)完整的用戶文檔KLinux3.0基于Linux2.6的內(nèi)核增加用戶態(tài)KLinux簡介—應(yīng)用現(xiàn)狀成研所Linux產(chǎn)品應(yīng)用情況2005年10月開始在網(wǎng)絡(luò)事業(yè)部A10和DSL產(chǎn)品線進(jìn)行應(yīng)用2006年3月DSLA8000core板泉州試驗局測試通過2006年4月開始在中心研究院MSCe所有單板上進(jìn)行內(nèi)核替換驗證,完成了Boot、內(nèi)核、驅(qū)動的替換驗證,獲得了評測數(shù)據(jù);2006.12開始與本部北研合作在M720上基于KLinux和KIDE進(jìn)行研發(fā),其他產(chǎn)品如M600的CCSM單板也正在做移植工作,進(jìn)展順利;2006.12開始與數(shù)據(jù)南研合作在5126/5124/29XX/2826等產(chǎn)品型號上進(jìn)行基于KLinux的研發(fā)工作,目前進(jìn)展較順利;與網(wǎng)絡(luò)上研繼續(xù)在DSLAM、GPON等產(chǎn)品上進(jìn)行合作;探討與中研ATCA、IMS等產(chǎn)品進(jìn)行合作研發(fā);第三部分嵌入式Linux開發(fā)交叉開發(fā)環(huán)境(主機—目標(biāo)機工作方式)LinuxHostWindowsRedhatLinux9.0TFTP/DHCP/NFSserverCrossCompiletoolsTargetBoard應(yīng)用程序Linux內(nèi)核啟動程序網(wǎng)口串口KLinux開發(fā)環(huán)境Linux下開發(fā)Windows下開發(fā)CygwinVmware(虛擬機)+LinuxKIDE命令行開發(fā)命令行開發(fā)命令行開發(fā)集成開發(fā)環(huán)境嵌入式Linux軟件組成嵌入式Linux系統(tǒng)軟件由以下部分組成:嵌入式Linux啟動裝載器:BootLoaderBootLoader驅(qū)動程序嵌入式Linux操作系統(tǒng)內(nèi)核Linux設(shè)備驅(qū)動程序最小支持文件系統(tǒng)應(yīng)用程序嵌入式Linux組成—BootLoader啟動裝載器完成Linux操作系統(tǒng)內(nèi)核的啟動加載。系統(tǒng)上電后執(zhí)行,初始化硬件。提供基本的交互操作界面,如內(nèi)存查看與修改,設(shè)備查詢等功能。提供下載(讀取)Linux內(nèi)核的功能。提供從裝載器到Linux內(nèi)核傳送參數(shù)的功能。裝載Linux操作系統(tǒng)到內(nèi)存中,并將控制轉(zhuǎn)移到Linux內(nèi)核起始執(zhí)行處。完成Linux內(nèi)核的啟動。嵌入式Linux組成—Linux內(nèi)核嵌入式Linux內(nèi)核(Kernel)是整個嵌入式操作系統(tǒng)的核心,它直接管理硬件,并通過系統(tǒng)調(diào)用為上層應(yīng)用提供服務(wù)。為了適應(yīng)嵌入式環(huán)境,需要對內(nèi)核進(jìn)行裁減與配置。提供支持特定硬件平臺的內(nèi)核啟動代碼去除多余功能,減小體積增加實時功能添加特殊的系統(tǒng)調(diào)用配置途徑一Cygwin下進(jìn)入內(nèi)核源碼目錄<linux2.4.20>輸入命令“makemenuconfig”配置途徑二KIDE下新建LSP工程點右鍵,選擇“kernelconfigure”進(jìn)入內(nèi)核配置界面嵌入式Linux組成—Linux設(shè)備驅(qū)動Linux硬件驅(qū)動提供目標(biāo)系統(tǒng)硬件在Linux操作系統(tǒng)下的驅(qū)動程序,供系統(tǒng)以及之上的應(yīng)用存取硬件使用。Linux下的設(shè)備劃分為3類:字符設(shè)備char(如鍵盤、串口等)、塊設(shè)備block(如磁盤等)、網(wǎng)絡(luò)設(shè)備一般列為單獨的一類設(shè)備由于Linux運行時候劃分內(nèi)核空間與用戶空間,而驅(qū)動程序一般運行在內(nèi)核空間中。對于運行在用戶空間的應(yīng)用程序而言,從相應(yīng)硬件中獲取數(shù)據(jù)需要經(jīng)過一個內(nèi)核空間到用戶空間拷貝的過程。嵌入式Linux組成—最小文件系統(tǒng)嵌入式Linux必須要有文件系統(tǒng)支持才能運行嵌入式系統(tǒng)中一般采用MTD的物理設(shè)備作為文件系統(tǒng)駐留空間:如RAM、Flash等。文件系統(tǒng)中必須包含的內(nèi)容系統(tǒng)init程序;Shell;應(yīng)用程序;應(yīng)用程序函數(shù)庫。必須采取措施,減小文件系統(tǒng)的體積,以適應(yīng)嵌入式應(yīng)用的需求。具體措施在“小型化”中介紹。嵌入式Linux組成—應(yīng)用程序應(yīng)用程序應(yīng)用程序完成整個嵌入式系統(tǒng)的對外功能需求與功能接口。應(yīng)用程序一般運行在Linux的用戶空間,作為一個用戶進(jìn)程在運行。應(yīng)用程序通過系統(tǒng)調(diào)用進(jìn)入內(nèi)核,訪問內(nèi)核提供的服務(wù)。存取硬件。可以有多個應(yīng)用程序同時運行。應(yīng)用程序崩潰一般不會導(dǎo)致系統(tǒng)崩潰。Linux支持Posix線程:pthread。嵌入式Linux開發(fā)的五個階段根據(jù)整個嵌入式Linux應(yīng)用開發(fā)過程的時間先后可以分為以下5個開發(fā)階段Boot程序(含Boot驅(qū)動)開發(fā)Linux內(nèi)核開發(fā)Linux驅(qū)動程序開發(fā)應(yīng)用程序開發(fā)
Linux目標(biāo)系統(tǒng)集成每個開發(fā)階段相應(yīng)對一個完整嵌入式Linux系統(tǒng)的一些組成部分的開發(fā)工作Boot及驅(qū)動程序開發(fā)開發(fā)目標(biāo)啟動嵌入式目標(biāo)系統(tǒng),使系統(tǒng)具有加載并啟動Linux內(nèi)核的能力。工作重點
CPU初始化;RAM初始化;串口、網(wǎng)卡、以及FLASH驅(qū)動;基本的TCP/IP協(xié)議棧支持。工作產(chǎn)品目標(biāo)系統(tǒng)的啟動ROM??梢詥幽繕?biāo)系統(tǒng)的BootLoader。Linux內(nèi)核開發(fā)開發(fā)目標(biāo)獲得一個滿足目標(biāo)系統(tǒng)功能與性能需求,可以啟動的Linux內(nèi)核。工作重點啟動最小系統(tǒng)(內(nèi)核配置和生成)開發(fā)、外圍設(shè)備驅(qū)動的開發(fā)。工作產(chǎn)品可以啟動系統(tǒng)的Linux內(nèi)核(bzImage、pImage等)Linux設(shè)備驅(qū)動程序開發(fā)開發(fā)目標(biāo)驅(qū)動目標(biāo)系統(tǒng)上的相關(guān)設(shè)備,為上層應(yīng)用提供存取硬件的能力。工作重點關(guān)注設(shè)備身的特性,采用合適的驅(qū)動方式。工作產(chǎn)品可以是內(nèi)核的一部分,也可以是模塊化的驅(qū)動程序(內(nèi)核可裝載模塊LKM)的目標(biāo)文件(*.o)。Linux應(yīng)用程序開發(fā)開發(fā)目標(biāo)實現(xiàn)單板需要實現(xiàn)的產(chǎn)品功能與接口。提供相應(yīng)的單板服務(wù)與響應(yīng)。工作重點關(guān)注應(yīng)用本身。如果在封裝過的操作系統(tǒng)平臺上開發(fā),需要關(guān)注所封裝的接口。工作產(chǎn)品可以執(zhí)行的應(yīng)用程序,一般為ELF格式,采用動態(tài)或者靜態(tài)連接,可以在目標(biāo)系統(tǒng)上運行。Linux目標(biāo)系統(tǒng)集成開發(fā)目標(biāo)提供產(chǎn)品化的嵌入式Linux系統(tǒng)。工作重點關(guān)注系統(tǒng)占用的存儲空間,文件系統(tǒng)選擇。系統(tǒng)啟動腳本。工作產(chǎn)品無需開發(fā)主機配合就可以獨立運行的產(chǎn)品化的嵌入式Linux系統(tǒng)。第四部分Klinux開發(fā)指南運行環(huán)境構(gòu)建連接目標(biāo)板與開發(fā)主機運行環(huán)境構(gòu)建安裝配置相關(guān)工具串口工具Tftp工具運行環(huán)境構(gòu)建制作根文件系統(tǒng)(ramdisktool)獲取免費的ramdisk_tool把ramdisk_tool整個目錄copy到Linux下面Linux下執(zhí)行“sh
腳本文件名”,生成相應(yīng)的鏡像文件
若需添加文件或目錄到文件系統(tǒng),將要添加的文件或目錄copy到ramdisk_tool\ram_fs中指定的路徑中。運行環(huán)境構(gòu)建啟動目標(biāo)板(方法一)自主模式啟動將開發(fā)的啟動程序燒入固態(tài)設(shè)備自動將操作系統(tǒng)加載到RAM中運行正常的工作模式,嵌入式產(chǎn)品必需用這種方式啟動運行環(huán)境構(gòu)建啟動目標(biāo)板(方法二)下載模式啟動從主機下載內(nèi)核映像和根文件系統(tǒng)映像提供簡單的命令行接口??蓪⑾螺d命令寫成腳本文件。以arm的啟動腳本為例:procmaintransmit"setenv
ipaddr6;"transmit"tftp400000zImage;"transmit"tftpc00000smdk2410ramdisk.image.gz;"transmit"go400000c00000^M"endproc開發(fā)初期調(diào)試時采用此方法應(yīng)用構(gòu)建(1)—編輯源程序開發(fā)語言:C、匯編、C++編輯工具:UltraEdit、vi…編輯原則:在KLinux代碼包的usrapp目錄中添加應(yīng)用程序語法原則參照關(guān)資料應(yīng)用構(gòu)建(2)—編譯構(gòu)建編譯工具gcc:完成預(yù)處理、編譯、匯編、連接整個過程。As:將用匯編語言編寫的源程序轉(zhuǎn)換成二進(jìn)制形式的目標(biāo)代碼。ld:把一個或多個目標(biāo)文件(程序庫)轉(zhuǎn)變?yōu)橐粋€可執(zhí)行程序。Make:自動編譯管理器,通過讀入makefile內(nèi)容完成編譯工作。
單個或少數(shù)幾個文件編譯用gcc;多個文件的編譯用make。KLinux開發(fā)需要用make構(gòu)建工程!應(yīng)用構(gòu)建(2)—編譯構(gòu)建構(gòu)建工程Makefile:定義了編譯規(guī)則。構(gòu)造出需要編譯的源文件列表分別編譯鏈接目標(biāo)代碼,形成二進(jìn)制文件Makefile基本語法:目標(biāo)文件源文件
make需要執(zhí)行的命令target…:prerequisites…command應(yīng)用構(gòu)建(2)—編譯構(gòu)建構(gòu)建工程makefile中的變量版本信息:VERSION、PATCHLEVEL、SUBLEVEL等cpu體系結(jié)構(gòu):ARCH路徑信息:TOPDIR內(nèi)核組成信息:CORE_FILES,NETWORKS,DRIVERS等編譯信息:CPPCC,AS,LD,AR,CFLAGS,LINKFLAGSmakefile相關(guān)文件:.config
,rules.make.config:配置文件rules.make:公共的規(guī)則文件KShell簡介類似于MS-DOS的命令行操作界面KShell提供兩部分功能提供豐富的Shell命令(如i、tt、ts等),方便用戶查看KLinux系統(tǒng)信息;提供簡單的C語言語法解析機制(c語法分析器)。KShell使用模式進(jìn)入KShell的兩種方式:超級終端或者其他的串口工具命令行工具或其他的遠(yuǎn)程登陸工具,且端口號為9023。命令為:
TelnetIP地址9023
KShell界面KShell命令簡介任務(wù)及信號量相關(guān)checkStack、i、msgQShow、objshow文件及文件系統(tǒng)相關(guān)cat、cd、df、du、ls、rm網(wǎng)絡(luò)設(shè)備相關(guān)ifShow、ipstatShow、ping設(shè)備及驅(qū)動相關(guān)tcpstatShowKShell命令簡介調(diào)試相關(guān)bdall、c、cret
內(nèi)存管理d、m、memShow日志管理closelog
、disablelog
、enablelog
其他help、IkAddr、moduleShow、printErrno第五部分KIDE開發(fā)環(huán)境KIDE發(fā)布版Linux標(biāo)準(zhǔn)LinuxKLinux上層應(yīng)用內(nèi)核驅(qū)動應(yīng)用LSPDownloadableBootableKIDE體系結(jié)構(gòu)網(wǎng)線串行線WindowsEclipse工程管理調(diào)試器第3方工具主機BootLoaderKLinux標(biāo)準(zhǔn)Linux發(fā)布版Linux目標(biāo)機編輯器底層命令行工具內(nèi)核態(tài)應(yīng)用內(nèi)核內(nèi)核用戶態(tài)應(yīng)用用戶態(tài)應(yīng)用工程向?qū)Linux工程LSPDownloadableBootable用戶態(tài)工程交叉構(gòu)建本地構(gòu)建內(nèi)核態(tài)工程內(nèi)核工程模塊工程編輯器支持中文注釋標(biāo)簽,點擊切換目標(biāo)視圖調(diào)試配置通過調(diào)試配置,我們可以實現(xiàn)多板調(diào)試,多種調(diào)試類型,符號表選擇,源路徑選擇。3種調(diào)試類型切換目標(biāo)板配置符號表調(diào)試視圖線程表查看,堆棧查看線程運行、暫停、恢復(fù)雙態(tài)調(diào)試Attach/Detach單步調(diào)試查看視圖6大查看窗口:變量、表達(dá)式、寄存器、反匯編、內(nèi)存、斷點第六部分KIDE調(diào)試開發(fā)版的構(gòu)建選項(KIDE默認(rèn))調(diào)試選項:–g開啟代碼優(yōu)化:無Release版的構(gòu)建選項調(diào)試選項:-g關(guān)閉代碼優(yōu)化:-O2工程右鍵菜單->屬性工程屬性開發(fā)版本Release版本開發(fā)版本Release版本建立調(diào)試連接虛擬機同LSP工程,只是生成的bzImage不僅包含了LSP部分,還包含了應(yīng)用部分。新建調(diào)試配置同Downloadable工程啟動調(diào)試同LSP工程進(jìn)入調(diào)試Attach調(diào)試視圖,當(dāng)前是在內(nèi)核任務(wù)級調(diào)試狀態(tài),我們現(xiàn)在對usrAppint這個線程進(jìn)行調(diào)試首先對其點右鍵->AttachAttach成功!usrAppint暫停,自動列表顯示它的堆棧信息。此時可以雙擊我們需要的某個堆棧,打開源文件,對它設(shè)置斷點。進(jìn)入調(diào)試雙態(tài)切換內(nèi)核調(diào)試的兩種方式前面已經(jīng)介紹過,實際調(diào)試過程中,我們可能都會用到。KIDE為此提供了雙態(tài)切換功能,前面LSP調(diào)試配置我們是建立的任務(wù)級調(diào)試,其實也可以建系統(tǒng)級調(diào)試,區(qū)別只在于進(jìn)入調(diào)試時的初始狀態(tài)。任務(wù)級切到系統(tǒng)級:對SystemThread點右鍵->系統(tǒng)級調(diào)試系統(tǒng)級切任務(wù)級:對TaskThread點右鍵->任務(wù)級調(diào)試切換回任務(wù)級調(diào)試查找源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 素描室內(nèi)寫生課程設(shè)計
- 相機掛件課程設(shè)計
- 英語語言學(xué)課程設(shè)計
- 航空專業(yè)票務(wù)課程設(shè)計
- (中職中專)貿(mào)法律與案例教學(xué)設(shè)計全書電子教案整本書教案1-6章全
- 電信課程設(shè)計論文
- 糖化鍋課程設(shè)計選型
- 給水廠課程設(shè)計總結(jié)心得
- 游戲觀察課程設(shè)計
- 聯(lián)考素描課程設(shè)計考什么
- 2025年初級會計職稱《經(jīng)濟法基礎(chǔ)》全真模擬及答案(解析3套)
- 《健康社區(qū)評價標(biāo)準(zhǔn)》
- 戶外市場研究報告-魔鏡洞察-202412
- 浙江省金華市金東區(qū)2023-2024學(xué)年九年級上學(xué)期語文期末試卷
- 【7地星球期末】安徽省合肥市包河區(qū)智育聯(lián)盟校2023-2024學(xué)年七年級上學(xué)期期末地理試題(含解析)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之2:“1至3章:范圍、術(shù)語和定義”(雷澤佳編制-2025B0)
- (2021)最高法民申5114號凱某建設(shè)工程合同糾紛案 指導(dǎo)
- 【9物(人)期末】安慶市宿松縣2023-2024學(xué)年九年級上學(xué)期期末考試物理試題
- 導(dǎo)航通信一體化考核試卷
- 甘肅省會寧二中2025屆高考仿真模擬數(shù)學(xué)試卷含解析
- 2024年未成年子女房產(chǎn)贈與協(xié)議
評論
0/150
提交評論