中興嵌入式klinux培訓(xùn)_第1頁(yè)
中興嵌入式klinux培訓(xùn)_第2頁(yè)
中興嵌入式klinux培訓(xùn)_第3頁(yè)
中興嵌入式klinux培訓(xùn)_第4頁(yè)
中興嵌入式klinux培訓(xùn)_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Klinux基礎(chǔ)培訓(xùn)多業(yè)務(wù)承載深圳軟件開發(fā)二部OSS科蔣彥波目錄第一部分Linux概述第二部分Klinux簡(jiǎn)介第三部分嵌入式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ù)庫(kù)公司包括:Oracle、Informix、Ingres的支持。進(jìn)入大、中型企業(yè)的信息系統(tǒng)。2000年,發(fā)布內(nèi)核穩(wěn)定版本2.2.10,由150萬(wàn)行代碼組成,估計(jì)擁有1000萬(wàn)用戶。目前采用比較多的是基于Linux2.4內(nèi)核最新的是2.6內(nèi)核。選擇Linux的緣由免費(fèi)可靠的系統(tǒng)安全多任務(wù)移植性強(qiáng)大的網(wǎng)絡(luò)功能多用戶開源Linux發(fā)行版本嵌入式LinuxRT-Linux實(shí)時(shí)性強(qiáng),把標(biāo)準(zhǔn)的Linux核心作為實(shí)時(shí)核心的一個(gè)進(jìn)程,同用戶的實(shí)時(shí)進(jìn)程一起調(diào)度υCLinux體積小型化,可以控制在幾百K,主要針對(duì)NoMMU.紅旗嵌入式Linux->EEOS重點(diǎn)支持p-Java。系統(tǒng)目標(biāo)一方面是小型化,另一方面能重用Linux的驅(qū)動(dòng)和其它模塊KLinux中興成研所主打產(chǎn)品之一,強(qiáng)實(shí)時(shí)內(nèi)核,可裁減性強(qiáng),另有一套嵌入式集成開發(fā)環(huán)境可與之完美結(jié)合。第二部分Klinux簡(jiǎn)介什么是KLinux?成都研究所在標(biāo)準(zhǔn)linux的基礎(chǔ)上增加了強(qiáng)實(shí)時(shí)性能的嵌入式操作系統(tǒng)。KLinux特色之處實(shí)時(shí)0(1)調(diào)度基于優(yōu)先級(jí)的可搶占調(diào)度內(nèi)核支持在內(nèi)核線程上的移植KLinux簡(jiǎn)介—解決方案Linux強(qiáng)實(shí)時(shí)內(nèi)核解決方案Linux修改內(nèi)核KTH庫(kù)KLibc、KCplus庫(kù)X86PPCARM上層應(yīng)用調(diào)試代理調(diào)試器MIPSOSS支撐VxWorks適配內(nèi)核態(tài)KLinux簡(jiǎn)介—體系結(jié)構(gòu)相關(guān)硬件開發(fā)板與評(píng)估版網(wǎng)絡(luò)協(xié)議棧

Linux支持包(最小系統(tǒng)和設(shè)備驅(qū)動(dòng))Embsys

KLinux

內(nèi)核

標(biāo)準(zhǔn)Linux與VxWorks適配接口ZTEEmbsys第三方軟硬件上層應(yīng)用程序KLinux簡(jiǎn)介—關(guān)鍵特性KLinux關(guān)鍵特性強(qiáng)實(shí)時(shí)性支持在內(nèi)核線程上的移植支持多種硬件體系X86體系(支持所有IA32的CPU、虛擬機(jī))PPC體系(8240/8241/8245、860、852、8260、755)ARM-NOMMU(ARM7TDMI)ARM(ARM9TDMI、IXP1200)MIPS(R4000)KLinux簡(jiǎn)介—版本狀況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簡(jiǎn)介—應(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板泉州試驗(yàn)局測(cè)試通過(guò)2006年4月開始在中心研究院MSCe所有單板上進(jìn)行內(nèi)核替換驗(yàn)證,完成了Boot、內(nèi)核、驅(qū)動(dòng)的替換驗(yàn)證,獲得了評(píng)測(cè)數(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)品型號(hào)上進(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)境(主機(jī)—目標(biāo)機(jī)工作方式)LinuxHostWindowsRedhatLinux9.0TFTP/DHCP/NFSserverCrossCompiletoolsTargetBoard應(yīng)用程序Linux內(nèi)核啟動(dòng)程序網(wǎng)口串口KLinux開發(fā)環(huán)境Linux下開發(fā)Windows下開發(fā)CygwinVmware(虛擬機(jī))+LinuxKIDE命令行開發(fā)命令行開發(fā)命令行開發(fā)集成開發(fā)環(huán)境嵌入式Linux軟件組成嵌入式Linux系統(tǒng)軟件由以下部分組成:嵌入式Linux啟動(dòng)裝載器:BootLoaderBootLoader驅(qū)動(dòng)程序嵌入式Linux操作系統(tǒng)內(nèi)核Linux設(shè)備驅(qū)動(dòng)程序最小支持文件系統(tǒng)應(yīng)用程序嵌入式Linux組成—BootLoader啟動(dòng)裝載器完成Linux操作系統(tǒng)內(nèi)核的啟動(dòng)加載。系統(tǒng)上電后執(zhí)行,初始化硬件。提供基本的交互操作界面,如內(nèi)存查看與修改,設(shè)備查詢等功能。提供下載(讀?。㎜inux內(nèi)核的功能。提供從裝載器到Linux內(nèi)核傳送參數(shù)的功能。裝載Linux操作系統(tǒng)到內(nèi)存中,并將控制轉(zhuǎn)移到Linux內(nèi)核起始執(zhí)行處。完成Linux內(nèi)核的啟動(dòng)。嵌入式Linux組成—Linux內(nèi)核嵌入式Linux內(nèi)核(Kernel)是整個(gè)嵌入式操作系統(tǒng)的核心,它直接管理硬件,并通過(guò)系統(tǒng)調(diào)用為上層應(yīng)用提供服務(wù)。為了適應(yīng)嵌入式環(huán)境,需要對(duì)內(nèi)核進(jìn)行裁減與配置。提供支持特定硬件平臺(tái)的內(nèi)核啟動(dòng)代碼去除多余功能,減小體積增加實(shí)時(shí)功能添加特殊的系統(tǒng)調(diào)用配置途徑一Cygwin下進(jìn)入內(nèi)核源碼目錄<linux2.4.20>輸入命令“makemenuconfig”配置途徑二KIDE下新建LSP工程點(diǎn)右鍵,選擇“kernelconfigure”進(jìn)入內(nèi)核配置界面嵌入式Linux組成—Linux設(shè)備驅(qū)動(dòng)Linux硬件驅(qū)動(dòng)提供目標(biāo)系統(tǒng)硬件在Linux操作系統(tǒng)下的驅(qū)動(dòng)程序,供系統(tǒng)以及之上的應(yīng)用存取硬件使用。Linux下的設(shè)備劃分為3類:字符設(shè)備char(如鍵盤、串口等)、塊設(shè)備block(如磁盤等)、網(wǎng)絡(luò)設(shè)備一般列為單獨(dú)的一類設(shè)備由于Linux運(yùn)行時(shí)候劃分內(nèi)核空間與用戶空間,而驅(qū)動(dòng)程序一般運(yùn)行在內(nèi)核空間中。對(duì)于運(yùn)行在用戶空間的應(yīng)用程序而言,從相應(yīng)硬件中獲取數(shù)據(jù)需要經(jīng)過(guò)一個(gè)內(nèi)核空間到用戶空間拷貝的過(guò)程。嵌入式Linux組成—最小文件系統(tǒng)嵌入式Linux必須要有文件系統(tǒng)支持才能運(yùn)行嵌入式系統(tǒng)中一般采用MTD的物理設(shè)備作為文件系統(tǒng)駐留空間:如RAM、Flash等。文件系統(tǒng)中必須包含的內(nèi)容系統(tǒng)init程序;Shell;應(yīng)用程序;應(yīng)用程序函數(shù)庫(kù)。必須采取措施,減小文件系統(tǒng)的體積,以適應(yīng)嵌入式應(yīng)用的需求。具體措施在“小型化”中介紹。嵌入式Linux組成—應(yīng)用程序應(yīng)用程序應(yīng)用程序完成整個(gè)嵌入式系統(tǒng)的對(duì)外功能需求與功能接口。應(yīng)用程序一般運(yùn)行在Linux的用戶空間,作為一個(gè)用戶進(jìn)程在運(yùn)行。應(yīng)用程序通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核,訪問(wèn)內(nèi)核提供的服務(wù)。存取硬件。可以有多個(gè)應(yīng)用程序同時(shí)運(yùn)行。應(yīng)用程序崩潰一般不會(huì)導(dǎo)致系統(tǒng)崩潰。Linux支持Posix線程:pthread。嵌入式Linux開發(fā)的五個(gè)階段根據(jù)整個(gè)嵌入式Linux應(yīng)用開發(fā)過(guò)程的時(shí)間先后可以分為以下5個(gè)開發(fā)階段Boot程序(含Boot驅(qū)動(dòng))開發(fā)Linux內(nèi)核開發(fā)Linux驅(qū)動(dòng)程序開發(fā)應(yīng)用程序開發(fā)

Linux目標(biāo)系統(tǒng)集成每個(gè)開發(fā)階段相應(yīng)對(duì)一個(gè)完整嵌入式Linux系統(tǒng)的一些組成部分的開發(fā)工作Boot及驅(qū)動(dòng)程序開發(fā)開發(fā)目標(biāo)啟動(dòng)嵌入式目標(biāo)系統(tǒng),使系統(tǒng)具有加載并啟動(dòng)Linux內(nèi)核的能力。工作重點(diǎn)

CPU初始化;RAM初始化;串口、網(wǎng)卡、以及FLASH驅(qū)動(dòng);基本的TCP/IP協(xié)議棧支持。工作產(chǎn)品目標(biāo)系統(tǒng)的啟動(dòng)ROM??梢詥?dòng)目標(biāo)系統(tǒng)的BootLoader。Linux內(nèi)核開發(fā)開發(fā)目標(biāo)獲得一個(gè)滿足目標(biāo)系統(tǒng)功能與性能需求,可以啟動(dòng)的Linux內(nèi)核。工作重點(diǎn)啟動(dòng)最小系統(tǒng)(內(nèi)核配置和生成)開發(fā)、外圍設(shè)備驅(qū)動(dòng)的開發(fā)。工作產(chǎn)品可以啟動(dòng)系統(tǒng)的Linux內(nèi)核(bzImage、pImage等)Linux設(shè)備驅(qū)動(dòng)程序開發(fā)開發(fā)目標(biāo)驅(qū)動(dòng)目標(biāo)系統(tǒng)上的相關(guān)設(shè)備,為上層應(yīng)用提供存取硬件的能力。工作重點(diǎn)關(guān)注設(shè)備身的特性,采用合適的驅(qū)動(dòng)方式。工作產(chǎn)品可以是內(nèi)核的一部分,也可以是模塊化的驅(qū)動(dòng)程序(內(nèi)核可裝載模塊LKM)的目標(biāo)文件(*.o)。Linux應(yīng)用程序開發(fā)開發(fā)目標(biāo)實(shí)現(xiàn)單板需要實(shí)現(xiàn)的產(chǎn)品功能與接口。提供相應(yīng)的單板服務(wù)與響應(yīng)。工作重點(diǎn)關(guān)注應(yīng)用本身。如果在封裝過(guò)的操作系統(tǒng)平臺(tái)上開發(fā),需要關(guān)注所封裝的接口。工作產(chǎn)品可以執(zhí)行的應(yīng)用程序,一般為ELF格式,采用動(dòng)態(tài)或者靜態(tài)連接,可以在目標(biāo)系統(tǒng)上運(yùn)行。Linux目標(biāo)系統(tǒng)集成開發(fā)目標(biāo)提供產(chǎn)品化的嵌入式Linux系統(tǒng)。工作重點(diǎn)關(guān)注系統(tǒng)占用的存儲(chǔ)空間,文件系統(tǒng)選擇。系統(tǒng)啟動(dòng)腳本。工作產(chǎn)品無(wú)需開發(fā)主機(jī)配合就可以獨(dú)立運(yùn)行的產(chǎn)品化的嵌入式Linux系統(tǒng)。第四部分Klinux開發(fā)指南運(yùn)行環(huán)境構(gòu)建連接目標(biāo)板與開發(fā)主機(jī)運(yùn)行環(huán)境構(gòu)建安裝配置相關(guān)工具串口工具Tftp工具運(yùn)行環(huán)境構(gòu)建制作根文件系統(tǒng)(ramdisktool)獲取免費(fèi)的ramdisk_tool把ramdisk_tool整個(gè)目錄copy到Linux下面Linux下執(zhí)行“sh

腳本文件名”,生成相應(yīng)的鏡像文件

若需添加文件或目錄到文件系統(tǒng),將要添加的文件或目錄copy到ramdisk_tool\ram_fs中指定的路徑中。運(yùn)行環(huán)境構(gòu)建啟動(dòng)目標(biāo)板(方法一)自主模式啟動(dòng)將開發(fā)的啟動(dòng)程序燒入固態(tài)設(shè)備自動(dòng)將操作系統(tǒng)加載到RAM中運(yùn)行正常的工作模式,嵌入式產(chǎn)品必需用這種方式啟動(dòng)運(yùn)行環(huán)境構(gòu)建啟動(dòng)目標(biāo)板(方法二)下載模式啟動(dòng)從主機(jī)下載內(nèi)核映像和根文件系統(tǒng)映像提供簡(jiǎn)單的命令行接口??蓪⑾螺d命令寫成腳本文件。以arm的啟動(dòng)腳本為例:procmaintransmit"setenv

ipaddr6;"transmit"tftp400000zImage;"transmit"tftpc00000smdk2410ramdisk.image.gz;"transmit"go400000c00000^M"endproc開發(fā)初期調(diào)試時(shí)采用此方法應(yīng)用構(gòu)建(1)—編輯源程序開發(fā)語(yǔ)言:C、匯編、C++編輯工具:UltraEdit、vi…編輯原則:在KLinux代碼包的usrapp目錄中添加應(yīng)用程序語(yǔ)法原則參照關(guān)資料應(yīng)用構(gòu)建(2)—編譯構(gòu)建編譯工具gcc:完成預(yù)處理、編譯、匯編、連接整個(gè)過(guò)程。As:將用匯編語(yǔ)言編寫的源程序轉(zhuǎn)換成二進(jìn)制形式的目標(biāo)代碼。ld:把一個(gè)或多個(gè)目標(biāo)文件(程序庫(kù))轉(zhuǎn)變?yōu)橐粋€(gè)可執(zhí)行程序。Make:自動(dòng)編譯管理器,通過(guò)讀入makefile內(nèi)容完成編譯工作。

單個(gè)或少數(shù)幾個(gè)文件編譯用gcc;多個(gè)文件的編譯用make。KLinux開發(fā)需要用make構(gòu)建工程!應(yīng)用構(gòu)建(2)—編譯構(gòu)建構(gòu)建工程Makefile:定義了編譯規(guī)則。構(gòu)造出需要編譯的源文件列表分別編譯鏈接目標(biāo)代碼,形成二進(jìn)制文件Makefile基本語(yǔ)法:目標(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簡(jiǎn)介類似于MS-DOS的命令行操作界面KShell提供兩部分功能提供豐富的Shell命令(如i、tt、ts等),方便用戶查看KLinux系統(tǒng)信息;提供簡(jiǎn)單的C語(yǔ)言語(yǔ)法解析機(jī)制(c語(yǔ)法分析器)。KShell使用模式進(jìn)入KShell的兩種方式:超級(jí)終端或者其他的串口工具命令行工具或其他的遠(yuǎn)程登陸工具,且端口號(hào)為9023。命令為:

TelnetIP地址9023

KShell界面KShell命令簡(jiǎn)介任務(wù)及信號(hào)量相關(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ū)動(dòng)相關(guān)tcpstatShowKShell命令簡(jiǎn)介調(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ū)動(dòng)應(yīng)用LSPDownloadableBootableKIDE體系結(jié)構(gòu)網(wǎng)線串行線WindowsEclipse工程管理調(diào)試器第3方工具主機(jī)BootLoaderKLinux標(biāo)準(zhǔn)Linux發(fā)布版Linux目標(biāo)機(jī)編輯器底層命令行工具內(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)簽,點(diǎn)擊切換目標(biāo)視圖調(diào)試配置通過(guò)調(diào)試配置,我們可以實(shí)現(xiàn)多板調(diào)試,多種調(diào)試類型,符號(hào)表選擇,源路徑選擇。3種調(diào)試類型切換目標(biāo)板配置符號(hào)表調(diào)試視圖線程表查看,堆棧查看線程運(yùn)行、暫停、恢復(fù)雙態(tài)調(diào)試Attach/Detach單步調(diào)試查看視圖6大查看窗口:變量、表達(dá)式、寄存器、反匯編、內(nèi)存、斷點(diǎn)第六部分KIDE調(diào)試開發(fā)版的構(gòu)建選項(xiàng)(KIDE默認(rèn))調(diào)試選項(xiàng):–g開啟代碼優(yōu)化:無(wú)Release版的構(gòu)建選項(xiàng)調(diào)試選項(xiàng):-g關(guān)閉代碼優(yōu)化:-O2工程右鍵菜單->屬性工程屬性開發(fā)版本Release版本開發(fā)版本Release版本建立調(diào)試連接虛擬機(jī)同LSP工程,只是生成的bzImage不僅包含了LSP部分,還包含了應(yīng)用部分。新建調(diào)試配置同Downloadable工程啟動(dòng)調(diào)試同LSP工程進(jìn)入調(diào)試Attach調(diào)試視圖,當(dāng)前是在內(nèi)核任務(wù)級(jí)調(diào)試狀態(tài),我們現(xiàn)在對(duì)usrAppint這個(gè)線程進(jìn)行調(diào)試首先對(duì)其點(diǎn)右鍵->AttachAttach成功!usrAppint暫停,自動(dòng)列表顯示它的堆棧信息。此時(shí)可以雙擊我們需要的某個(gè)堆棧,打開源文件,對(duì)它設(shè)置斷點(diǎn)。進(jìn)入調(diào)試雙態(tài)切換內(nèi)核調(diào)試的兩種方式前面已經(jīng)介紹過(guò),實(shí)際調(diào)試過(guò)程中,我們可能都會(huì)用到。KIDE為此提供了雙態(tài)切換功能,前面LSP調(diào)試配置我們是建立的任務(wù)級(jí)調(diào)試,其實(shí)也可以建系統(tǒng)級(jí)調(diào)試,區(qū)別只在于進(jìn)入調(diào)試時(shí)的初始狀態(tài)。任務(wù)級(jí)切到系統(tǒng)級(jí):對(duì)SystemThread點(diǎn)右鍵->系統(tǒng)級(jí)調(diào)試系統(tǒng)級(jí)切任務(wù)級(jí):對(duì)TaskThread點(diǎn)右鍵->任務(wù)級(jí)調(diào)試切換回任務(wù)級(jí)調(diào)試查找源

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論