資源描述:
《操作系統(tǒng)雛形設(shè)計》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、嵌入式操作系統(tǒng)雛形(代碼)001版說明:基于ARM920內(nèi)核的CPU,開發(fā)一個嵌入式操作系統(tǒng)的雛形。主要包括:鏈接腳本、系統(tǒng)初始化及C語言運(yùn)行環(huán)境的準(zhǔn)備、MMU、打印函數(shù)printf、定時器中斷嵌套、簡單內(nèi)存管理(Buddy算法、slab算法、malloc函數(shù))、驅(qū)動程序框架、RomFs文件系統(tǒng)、執(zhí)行elf格式的應(yīng)用程序文件、系統(tǒng)調(diào)用框架、進(jìn)程調(diào)度函數(shù)fork、網(wǎng)卡DM9000驅(qū)動。Makefile文件OBJECTS:=start.oOBJECTS+=main.oOBJECTS+=led.oOBJECTS+=mmu.oOB
2、JECTS+=interrupt.oOBJECTS+=button.oOBJECTS+=nand.oOBJECTS+=drv_func.oOBJECTS+=uart.oOBJECTS+=drv_print.oOBJECTS+=drv_interrupt.oOBJECTS+=drv_timer.oOBJECTS+=drv_list.oOBJECTS+=drv_memory.oOBJECTS+=drv_slab.oOBJECTS+=drv_kmalloc.oOBJECTS+=drv_RamDisk.oOBJECTS+=drv_
3、DriveFramework.oOBJECTS+=drv_string.oOBJECTS+=drv_fs.oOBJECTS+=drv_romfs.oOBJECTS+=drv_elfFile.oOBJECTS+=os_systemcall.oOBJECTS+=os_fork.oOBJECTS+=drv_DM9000.oall:${OBJECTS}arm-linux-ld-Tgboot.lds-ogboot.elf$^-L/usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4
4、.3.2/-lgcc#arm-linux-ld-Tgboot.lds-ogboot.elf$^arm-linux-objcopy-Obinarygboot.elfgboot.bin%.o:%.Sarm-linux-gcc-g-c$^%.o:%.carm-linux-gcc-g-c$^1嵌入式操作系統(tǒng)雛形(代碼)001版.PHONY:cleanclean:rm-rf*.ogboot.bingboot.elf鏈接腳本OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{.=0x30008000;.=ALI
5、GN(4);.text:{start.o(.text)*(.text)}.=ALIGN(4);.data:{*(.bss)}.=ALIGN(4);bss_start=.;.bss:{*(.bss)}bss_end=.;}/**File:start.S*Brief:異常向量表、時鐘、MMU、中斷、內(nèi)存初始化、??臻g分配、bss清除等*/.text.global_start_start:breset2嵌入式操作系統(tǒng)雛形(代碼)001版ldrpc,_undefined_instructionldrpc,_software_int
6、erruptldrpc,_prefetch_abortldrpc,_data_abortldrpc,_not_usedldrpc,_irqldrpc,_fiq_undefined_instruction:.wordundefined_instruction_software_interrupt:.wordsoftware_interrupt_prefetch_abort:.wordprefetch_abort_data_abort:.worddata_abort_not_used:.wordnot_used_irq:.wo
7、rdirq_fiq:.wordfiq_reset:.wordresetundefined_instruction:nop.macroCHANGE_TO_SYS_MODmsrcpsr,#0xdf.endm@系統(tǒng)由用戶模式通過調(diào)用SWI指令切換到管理模式(見os_systemcall.h文件的OS_SYSTEM_CALL宏)software_interrupt:strlr,[sp,#-0xc]mrsr14,spsrstrr14,[sp,#-0x8]strr0,[sp,#-0x4]movr0,sp@把管理模式的棧指針sp_svc
8、存入r0寄存器,以方便后面在系統(tǒng)模式下對管理模式的棧進(jìn)行操作CHANGE_TO_SYS_MODstrr14,[sp,#-0x8]!@把系統(tǒng)模式的lr保存起來,同時把系統(tǒng)模式的棧指針更新ldrr14,[r0,#-0xc]strr14,[sp,#4]ldrr14,[r0,#-0x8]ldrr0,[r0,#-