freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

系統(tǒng)引導(dǎo)程序的設(shè)計與實現(xiàn)-閱讀頁

2024-08-18 04:08本頁面
  

【正文】 式,這種區(qū)別對于開發(fā)人員才有意義。啟動加載模式:這種模式也稱為“自主”模式,即bootloader從目標(biāo)機(jī)上的某個固體存儲設(shè)備上將操作系統(tǒng)加載到RAM中運行,整個過程沒有用戶的介入。下載模式:在這種模式下,目標(biāo)機(jī)上的bootloader將通過串口或者網(wǎng)絡(luò)連接或者其它通信手段從主機(jī)下載文件,比如:下載內(nèi)核鏡像和根文件系統(tǒng)鏡像等。Bootloader的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時使用;此外,以后的系統(tǒng)更新也會使用bootloader的這種工作模式。 Bootloader的概念擴(kuò)展 Bootloader最主要的功能是引導(dǎo)加載內(nèi)核鏡像。從這個層面上看,功能擴(kuò)展后的bootloader可以虛擬地看成是一個微小的系統(tǒng)級的代碼包。另外,不同的操作系統(tǒng),可能對具體的bootloader還會有另外額外的要求。至于涉及到具體的設(shè)計與實現(xiàn),可以參看第5章的具體內(nèi)容,并根據(jù)自己的硬件系統(tǒng)進(jìn)行移植,也不是一件困難的事情。 對于一個ARM系統(tǒng)來說,本質(zhì)上,bootloader作為引導(dǎo)與加載內(nèi)核鏡像的“工具”,在實現(xiàn)上,必須提供以下幾個功能,更確切地說,必須做到以下幾點:(1)初始化RAM(必需):bootloader必須能夠初始化RAM,因為將來系統(tǒng)要通過它保存一些Volatile數(shù)據(jù),但具體地實現(xiàn)要依賴與具體的CPU以及硬件系統(tǒng)。(3)創(chuàng)建內(nèi)核參數(shù)列表(針對linux操作系統(tǒng),推薦)?!? CPU模式:關(guān)閉中斷; 屬于SVC模式; Bootloader中沒有必要支持中斷的實現(xiàn),這屬于內(nèi)核機(jī)制以及設(shè)備驅(qū)動管理的管理范疇;SVC模式是系統(tǒng)的一種保護(hù)模式,這樣就可以進(jìn)行一些只能在SVC模式下的操作,例如一些特定寄存器訪問操作。Bootloader主要是裝載內(nèi)核鏡像,鏡像數(shù)據(jù)必須真實寫回SDRAM中,所以數(shù)據(jù)cache必須關(guān)閉;而對于指令cache,不存在強(qiáng)制性的規(guī)定,但是一般情況下,推薦關(guān)閉指令cache。 5 Bootloader的設(shè)計與實現(xiàn) 課題研究的平臺環(huán)境 硬件平臺Booltoader是與硬件環(huán)境息息相關(guān)的,特別是與具體的處理器與具體硬件系統(tǒng)相關(guān)。 S3C2440A 模塊圖 S3C2440A是著名的半導(dǎo)體公司SAMSUNG推出的一款16/32位RISC微處理器,它為手持設(shè)備和一般類型的應(yīng)用提供了低價格、低功耗、高性能微控制器的解決方案。其低功耗,簡單,且全靜態(tài)設(shè)計特別適合于對成本和功率敏感型的應(yīng)用。S3C2440A的最大特點是其核心處理器(CPU)是一個由Advanced RISC Machines有限公司設(shè)計的16/32位ARM920T的RISC處理器。這一結(jié)構(gòu)具有獨立的16KB指令 Cache和16KB數(shù)據(jù)Cache。通過提供一套完整的通用系統(tǒng)外設(shè),S3C2440A減少整體系統(tǒng)成本和無需配置額外的組件。★ 16/32位RISC體系結(jié)構(gòu)和ARM920T內(nèi)核強(qiáng)大的指令集?!? 采用高速指令I(lǐng)Cache,高速數(shù)據(jù)DCache,寫緩沖器和物理地址TAG RAM 以減少主存帶寬和響應(yīng)速度帶來的影響?!? 內(nèi)部高級微控制總線(AMBA)體系結(jié)構(gòu)(,AHB/APB)。 (2)編程語言由于論文與芯片底層關(guān)系密切,甚至還涉及到相關(guān)協(xié)處理器,因此在與硬件芯片底層相關(guān)的部分使用匯編,這樣可以大大提高性能以及移植性;而在很多系統(tǒng)板級的支持上,則使用C語言,以提高代碼的可讀性以及層次性。其主要包括匯編器as、C編譯器gcc、C++編譯器g++、連接器ld和相關(guān)的二進(jìn)制轉(zhuǎn)換工具,而基于ARM平臺的工具分別為armlinuxas、armlinuxgcc、armlinuxg++、armlinuxld,這些也是平常所說的交叉編譯工具。一般地,GNU工具地開發(fā)流程如下:(1)編寫C、C++或者匯編源程序(2)用相關(guān)編譯器生成目標(biāo)文件(3)編寫連接腳本(4)用連接器生成最終文件(elf格式)(5)用二進(jìn)制轉(zhuǎn)換工具生成可下載的二進(jìn)制代碼。 Bootloader的總體設(shè)計 階段設(shè)計在前面的章節(jié)中,已經(jīng)介紹過bootloader的啟動可以是分階段的。分為兩個階段的原因是因為:(1)基于編程語言的考慮。(2)代碼具有更好的可讀性與移植性:若對于相同的CPU以及存儲設(shè)備,要增加外設(shè)支持,階段1的代碼可以維護(hù)不變,只對階段2的代碼進(jìn)行修改;若要支持不同的CPU,則基礎(chǔ)代碼只需在階段1中修改。對于本課題的硬件系統(tǒng),外接2M的FLASH,映射到物理地址的0x00000000處;對于64M的SDRAM,則對應(yīng)S3C2440A的SDRAM BANK0,映射到0x3000000處。而我們基于S3C2440A構(gòu)建的系統(tǒng)將固態(tài)存儲設(shè)備FLASH映射到這個地址上。本文所使用的內(nèi)核鏡像以及根文件系統(tǒng)鏡像都被加載到SDRAM中運行,這樣做是因為基于運行速度的考慮,盡管在嵌入式系統(tǒng)中內(nèi)核鏡像與根文件系統(tǒng)鏡像也可以直接在ROM或FLASH這樣的固態(tài)存儲設(shè)備中直接運行。下圖為具體的存儲布局圖: Uboot存儲映射圖 模式設(shè)計對于普通用戶來說只需要bootloader的啟動加載模式,但是對于開發(fā)者來說,則需要下載模式,因為他們需要時時刻刻地進(jìn)行一些鏡像的更新。模式的轉(zhuǎn)換設(shè)計主要在階段2中實現(xiàn)。 階段1的代碼實現(xiàn)。mrs r0,cpsr bic r0,r0,0x1f orr r0,r0,0xd3 msr cpsr,r0 (2)通過宏定義方式定義各寄存器。if defined(CONFIG_S3C2440) ldr r0, =pWTCON mov r1, 0x0 str r1, [r0] mov r1, 0xffffffff ldr r0, =INTMSK str r1, [r0]mov r0, 0 mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */ mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */ (4)關(guān)閉MMU,內(nèi)部指令/數(shù)據(jù)cache以及寫緩沖區(qū),ARM體系bootloader中都無需MMU的功能,所有的地址都直接使用物理地址;cache也都關(guān)閉,原因可參看上一章相關(guān)內(nèi)容 。(6)對SDRAM內(nèi)存初始化。stack_setup: ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */ sub r0, r0, CFG_MALLOC_LEN /* malloc area */ sub r0, r0, CFG_GBL_DATA_SIZE /* bdinfo */ifdef CONFIG_USE_IRQ sub r0, r0, (CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)endif sub sp, r0, 12 /* leave 3 words for abortstack */ bl clock_initifndef CONFIG_SKIP_RELOCATE_UBOOT(8)拷貝Uboot鏡像到SDRAM中。t reloc during debug */ beq clear_bss ldr r2, _armboot_start ldr r3, _bss_start sub r2, r3, r2 /* r2 size of armboot */if 1 bl CopyCode2Ram /* r0: source, r1: dest, r2: size */else add r2, r0, r2 /* r2 source end address */ 階段2的代碼實現(xiàn) ,通過“l(fā)dr pc, _start_armboot ”這條語句進(jìn)入C文件中,即進(jìn)入階段2代碼中。init_fnc_t *init_sequence[] = { cpu_init, /* basic cpu dependent setup */ board_init, /* basic board dependent setup */ interrupt_init, /* set up exceptions */ env_init, /* initialize environment */ init_baudrate, /* initialze baudrate settings */ serial_init, /* serial munications setup */ console_init_f, /* stage 1 init of console */ display_banner, /* say that we are here */if defined(CONFIG_DISPLAY_CPUINFO) print_cpuinfo, /* display cpu info (and speed) */endifif defined(CONFIG_DISPLAY_BOARDINFO) checkboard, /* display board info */endif dram_init, /* configure available RAM banks */ display_dram_config, NULL,}。void mem_malloc_init (ulong dest_addr){ mem_malloc_start = dest_addr。 mem_malloc_brk = mem_malloc_start。}(3) 條件編譯初始化NAND Flash設(shè)備。 CFG_CMD_NAND)// puts (NAND: )。 /* go init the NAND */endif(4) 條件編譯初始化顯示設(shè)備。 ~(PAGE_SIZE 1)。 gdfb_base = addr。ifdef CONFIG_VFD /* must do this after the framebuffer is allocated */ drv_vfd_init()。 /* MAC Address */ { int i。 char *s, *e。 i = getenv_r (ethaddr, tmp, sizeof (tmp))。 for (reg = 0。 ++reg) { gdbdbi_enetaddr[reg] = s ? simple_strtoul (s, amp。 if (s) s = (*e) ? e + 1 : e。 s = (i 0) ? tmp : NULL。 reg 6。e, 16) : 0。 }endif } devices_init ()。/* main_loop() can return to retry autoboot, if so just run it again. */ for (。 } /* NOTREACHED no way out of mand loop except booting */ 代碼的編譯(1) ,把編寫好的代碼打包壓縮成“”,并將其復(fù)制到“/opt/EmbedSky/”目錄下,然后進(jìn)入該目錄,運行“tar xvfj C /”命令解壓這個壓縮包。6 總結(jié)與展望 本文主要介紹的是基于ARM嵌入式系統(tǒng)通用bootloader的設(shè)計與實現(xiàn)。而對于ARM系統(tǒng)的通用bootloader,則從理論上來闡述對于一個ARM系統(tǒng)bootloader所要實現(xiàn)的功能以及在實現(xiàn)bootloader時的一些軟硬件上的規(guī)定,并且結(jié)合實現(xiàn)的bootloder進(jìn)一步的說明如何通過已實現(xiàn)的bootloader來進(jìn)行簡單的移植以適合其它的ARM系統(tǒng)。一個嵌入式系統(tǒng)賦予bootloader的職能是引導(dǎo)與加載內(nèi)核鏡像,但是為了給更多的開發(fā)者提供便利的開發(fā)手段,bootloader越來越不局限于其基本功能,它不斷地增加對硬件電路板具體功能模塊的支持,甚至是支持一些簡單的網(wǎng)絡(luò)協(xié)議。實現(xiàn)bootloader,就基于以上原因,在擴(kuò)展功能上進(jìn)行了更多的支持。但是,一個真正的通用bootloader,應(yīng)該有更多的擴(kuò)展功能來適應(yīng)更多的應(yīng)用。以后,應(yīng)該能夠有更多的支持,例如:簡單的tftp協(xié)議;支持一些擴(kuò)展存儲卡(例如MMC卡,CF卡)的支持;以及對應(yīng)的一些文件系統(tǒng)的支持(TFS,F(xiàn)AT等)。L inux嵌入式系統(tǒng)BootLoader的研究與設(shè)計[J]. 計算機(jī)應(yīng)用與軟件, ~99[9] 齊欣,張家棟,[J].微型機(jī)與應(yīng)用, ~60[10] 馮進(jìn)文,[J].中國測試技術(shù),~103[11] amp。四年的求學(xué)生涯在師長、親友的大力支持下,走得辛苦卻也收獲滿囊,在論文即將付梓之際,思緒萬千,心情久久不能平靜。我不是您最出色的學(xué)生,而您卻是我最尊敬的老師
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1