在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM Linux啟動過程學(xué)習(xí)

            ARM Linux啟動過程學(xué)習(xí)

            作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
            linux根目錄中的vmlinux.o為arm-linux-ld link得到的一個elf格式的文件,這個文件包含kernel下的head.o+driver+MM+FS+net等其他

            o文件。

            本文引用地址:http://www.biyoush.com/article/201611/318007.htm

            使用kernel目錄下的vmlinux.lds link腳本生成vmlinux elf格式的可執(zhí)行文件

            Vmlinux使用arm-linux-objcopy生成bin格式的文件image。僅僅包含指令和數(shù)據(jù)。

            可以load到sdram的0x30008000地址運行。為什么非要load到這個地址呢?通過跟蹤

            Head.S執(zhí)行,發(fā)現(xiàn)在__lookup_machine_type函數(shù)中,如果load地址不是0x30008000,

            Ldmia r3, {r4, r5, r6}會出現(xiàn)錯誤,r4的內(nèi)容出現(xiàn)錯誤

            為了分析linux啟動過程,生成一個最小的kernel,然后使用AXD+JTAG來進行單步跟蹤

            生成一個tiny kernel使用axd跟蹤500+K的bin文件,load到0x30008000地址進行跟蹤

            首先執(zhí)行的代碼為compressed head.S中的start.S unzip了一些代碼,重新放入0x30008000,然后再次從0x30008000地址重新執(zhí)行新的代碼

            問了得到kernel中的函數(shù)虛擬地址,需要生成system.map文件。

            下面的命令可以得到system.map

            NM=arm-linux-nm/bin/sh /hdd/linux-2.6.28/scripts/mksysmap vmlinux System.map

            ARM Linux啟動過程:

            在CPU執(zhí)行kernel中的第一個指令之前,bootloader必須完成一些工作:

            1初始化CPU進入SVC模式關(guān)閉IRQ/FIQ disable

            2初始化一個串口kernel會輸出調(diào)試信息

            Kernel中的head.S流程:

            確保ARM CPU運行在SVC模式并且IRQ disable

            從協(xié)處理器中得到CPU的ID

            Bl指令調(diào)用__lookup_processor_type函數(shù)查找proc info lds link腳本根據(jù)autoconf.h中配置的CPU類型,把proc-arm920.S文件中的信息存放到__proc_info_begin和__proc_info_end之間,根據(jù)CPU的ID查找CPU類型是否支持

            Bl調(diào)用__lookup_machine_type,根據(jù)arch number查找。方式類似proc的查找。使用MACHINE_START來把mach info通過lds腳本存放在.arch.info.init。mach-smdk2440.c中的內(nèi)容

            Bl調(diào)用__vet_atags查找bootloader傳入的tags地址

            Bl調(diào)用__create_page_tables建立pagetable

            返回地址設(shè)置為__enable_mmu

            執(zhí)行__arm920_setup



            關(guān)鍵詞: ARMLinux啟動過

            評論


            技術(shù)專區(qū)

            關(guān)閉