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

正文內(nèi)容

s3c2410的bootloader源代碼分析-資料下載頁(yè)

2025-06-29 07:34本頁(yè)面
  

【正文】 ase bl PrintWordendif mov pc, r10 ;vivi拷貝到SDRAM完成,函數(shù)返回*********************************/ @ jump to ram ldr r1, =on_the_ram add pc, r1, 0 nop nop1: b 1b @ infinite loopon_the_ram:endififdef CONFIG_DEBUG_LL ldr r1, SerBase ldr r0, STR_STACK bl PrintWord ldr r0, DW_STACK_START bl PrintHexWordendif @ get read to call C functions ldr sp, DW_STACK_START @ setup stack pointer mov fp, 0 @ no previous frame, so fp=0 mov a2, 0 @ set argv to NULL bl main @ call main mov pc, FLASH_BASE @ otherwise, reboot@@ End VIVI head@ vivi的第二階段vivi的第二階段是從main()函數(shù)開始,同一般的C語(yǔ)言程序一樣,該函數(shù)在/init/,總共可以分為8個(gè)步驟。(1) 函數(shù)開始,通過(guò)putstr(vivi_banner)打印出vivi的版本。Vivi_banner在/init/(2) 對(duì)開發(fā)板進(jìn)行初始化(board_init函數(shù)),board_init是與開發(fā)板緊密相關(guān)的,這個(gè)函數(shù)在/arch/s3c2410/。開發(fā)板初始化主要完成兩個(gè)功能,時(shí)鐘初始化(init_time())和通用IO口設(shè)置(set_gpios())。void set_gpios(void){GPACON = vGPACON。GPBCON = vGPBCON。GPBUP = vGPBUP。 GPCCON = vGPCCON。 GPCUP = vGPCUP。 GPDCON = vGPDCON。GPDUP = vGPDUP。 GPECON = vGPECON。GPEUP = vGPEUP。 GPFCON = vGPFCON。GPFUP = vGPFUP。 GPGCON = vGPGCON。GPGUP = vGPGUP。 GPHCON = vGPHCON。GPHUP = vGPHUP。 EXTINT0 = vEXTINT0。EXTINT1 = vEXTINT1。EXTINT2 = vEXTINT2。}其中,(\vivi\include\platform\目錄下)文件中定義。(3) 內(nèi)存映射初始化和內(nèi)存管理單元的初始化工作:mem_map_init()。mmu_init()。這兩個(gè)函數(shù)都在/arch/s3c2410/。void mem_map_init(void){ifdef CONFIG_S3C2410_NAND_BOOT mem_map_nand_boot()。else mem_map_nor()。endif cache_clean_invalidate()。 tlb_invalidate()。}如果配置vivi時(shí)使用了NAND作為啟動(dòng)設(shè)備,則執(zhí)行mem_map_nand_boot(),否則執(zhí)行mem_map_nor()。這里要注意的是,如果使用NOR啟動(dòng),則必須先把vivi代碼復(fù)制到RAM中。這個(gè)過(guò)程是由copy_vivi_to_ram()函數(shù)來(lái)完成的。代碼如下: static void copy_vivi_to_ram(void){ putstr_hex(Evacuating 1MB of Flash to DRAM at 0x, VIVI_RAM_BASE)。 memcpy((void *)VIVI_RAM_BASE, (void *)VIVI_ROM_BASE, VIVI_RAM_SIZE)。}VIVI_RAM_BASE、VIVI_ROM_BASE、并且這些值必須根據(jù)自己開發(fā)板的RAM實(shí)際大小修改。這也是在移植vivi的過(guò)程中需要注意的一個(gè)地方。mmu_init()函數(shù)中執(zhí)行了arm920_setup函數(shù)。這段代碼是用匯編語(yǔ)言實(shí)現(xiàn)的,針對(duì)arm920t核的處理器。(4) 初始化堆棧,heap_init()。(定義在\vivi\lib\)int heap_init(void){return mmalloc_init((unsigned char *)(HEAP_BASE), HEAP_SIZE)。 }(5) 初始化mtd設(shè)備,mtd_dev_init()。int mtd_init(void){ int ret。ifdef CONFIG_MTD_CFI ret = cfi_init()。endififdef CONFIG_MTD_SMC ret = smc_init()。endififdef CONFIG_S3C2410_AMD_BOOT ret = amd_init()。endif if (ret) { mymtd = NULL。 return ret。 } return 0。}這幾個(gè)函數(shù)可以在/drivers/mtd/maps/。(6) 初始化私有數(shù)據(jù),init_priv_data()。(定義在\vivi\lib\priv_data\)(7) 初始化內(nèi)置命令,init_builtin_cmds()。通過(guò)add_mand函數(shù),加載vivi內(nèi)置的幾個(gè)命令。(8) 啟動(dòng)boot_or_vivi()。啟動(dòng)成功后,將通過(guò)vivi_shell()啟動(dòng)一個(gè)shell(如果配置了CONFIG_SERIAL_TERM),此時(shí)vivi的任務(wù)完成。 啟動(dòng)代碼執(zhí)行流程圖(1) (2) vivi的配置文件Vivi的初始配置文件位置:/vivi/arch/defconfigs/smkd2410, 通過(guò)make menuconfig 修改后的配置保存在這個(gè)文件中,我們也可以載入一個(gè)自己的配置文件來(lái)進(jìn)行編譯。10 / 10
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1