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

正文內(nèi)容

第7課armlinux內(nèi)核-資料下載頁

2025-10-02 22:15本頁面

【導讀】ARM有7種運行狀態(tài):. ARM系統(tǒng)結(jié)構(gòu)中各個寄存器的使用方式。存儲管理是一個很大的范疇。操作系統(tǒng)內(nèi)核的復雜性相當程度上來自內(nèi)。MMU可以做在芯片中,也可以作為協(xié)處理。馮·諾依曼結(jié)構(gòu):程序只是一種數(shù)據(jù),對程。嵌入式系統(tǒng)中往往采用程序和數(shù)據(jù)兩個存。采用單層的段映射的時候,內(nèi)存中有個“段映射。標志,將這12位物理段地址和虛擬地址中的低20位拼接在一起,標,從表中找到相應的表項,每個表項指向一個二層映射表。的下標,進一步從相應表項中取得20位的物理頁面地址。ARM處理器中,MMU是作為協(xié)處理器CP15. MMU相關的最主要的寄存器有三個:。面映射表項中的2位的“訪問權限”AP為00,如果AP為10,則和S位R位無關,特權狀態(tài)??勺x可寫,用戶狀態(tài)只讀。ARM-Linux內(nèi)核也將這4GB虛擬地址空間分。ARM將I/O也放在內(nèi)存地址空間中,所以系。ARM處理器上的實現(xiàn)和x86的既相似又有很。Linux在啟動初始化的時候依次調(diào)用:。Linux虛擬內(nèi)存的實現(xiàn)需要6種機制的支持:

  

【正文】 __real_stubs_start + (vector_IRQ __stubs_start) b __real_stubs_start + (vector_FIQ __stubs_start) __stubs_start: vector_IRQ: … vector_data: … vector_prefetch: … vector_undefinestr: … vector_FIQ: … vector_addrexcptn: … .LCvswi: .word vector_swi .LCsirq: .word __temp_irq .LCsund: .word __temp_und .LCsabt: .word __temp_abt __stubs_end: 41 – trap_init()函數(shù)執(zhí)行完了以后,再執(zhí)行 init_IRQ()。通過函數(shù) init_IRQ()建立上面提及的 3個數(shù)據(jù)結(jié)構(gòu)及其相互聯(lián)系的框架。 42 ? 在進入中斷響應之前, CPU自動完成下列操作: – 將進入中斷響應前的內(nèi)容裝入 r14_irq,即中斷模式的 lr,使其指向中斷點。 – 將 cpsr原來的內(nèi)容裝入 spsr_irq,即中斷模式的spsr;同時改變 cpsr的內(nèi)容使 CPU運行于中斷模式,并關閉中斷。 – 將堆棧指針 sp切換成中斷模式的 sp_irq。 – 將 pc指向 0x18。 43 ? 中斷 流程圖 44 5 ARMLinux系統(tǒng)調(diào)用 ? 兩種機制:通過 LIBC調(diào)用,或直接 調(diào)用 ? X86有 INT 0x80 ? arm處理器有自陷指令 SWI ? cpu遇到自陷指令后,跳轉(zhuǎn)到內(nèi)核態(tài) ? 操作系統(tǒng)首先保存當前運行的信息,然后根據(jù)系統(tǒng)調(diào)用號查找相應的函數(shù)去執(zhí)行 ? 執(zhí)行完了以后恢復原先保存的運行信息返回 45 創(chuàng)建 和使用一個新的系統(tǒng)調(diào)用 (1) ? 在 arch/arm/kernel/目錄下創(chuàng)建一個新的文件 ? 在 arch/arm/kernel/ 中添加新的系統(tǒng)調(diào)用,新的系統(tǒng)調(diào)用號 0x900000+226 void hello(void) { printk(“hello world\n”)。 } .long SYMBOL_NAME(sys_gettid) .long SYMBOL_NAME(sys_readahead) .long SYMBOL_NAME(hello) __syscall_end: .rept NR_syscalls (__syscall_end __syscall_start) / 4 .long SYMBOL_NAME(sys_ni_syscall) .endr 46 創(chuàng)建 和使用一個新的系統(tǒng)調(diào)用 (2) ? 修改 arch/arm/kernel/目錄下的 Makefile文件,在 objy后面添加 objy := $(ENTRY_OBJ) \ \ $(O_OBJS_$(MACHINE)) 47 創(chuàng)建 和使用一個新的系統(tǒng)調(diào)用 (3) ? 寫一個測試程序來使用新的系統(tǒng)調(diào)用: : define sys_hello() {__asm__ __volatile__ (swi 0x900000+226\n\t)}while(0) : include include “” int main(void) { printf(start hello\n)。 sys_hello()。 printf(end hello\n)。 } 48 創(chuàng)建 和使用一個新的系統(tǒng)調(diào)用 (4) ? 然后執(zhí)行 ? 啟動開發(fā)板,將應用程序 test通過 zmodem協(xié)議下載到開發(fā)板的文件系統(tǒng)目錄下,在板子上運行 test程序所得結(jié)果如下: 注意,上面的例子是直接用匯編使用系統(tǒng)調(diào)用的,而不是使用 libc,因為 test應用程序使用的是新添加的系統(tǒng)調(diào)用,而 libc中并沒有,所以只能直接用匯編。 armlinuxgcc o test ./test start hello hello world end hello Thanks
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1