start S檔案分析1

2021-10-23 21:40:54 字數 2544 閱讀 1080

#config.**件是配置的時候生成的,它裡面的內容是configs/x210_sd.h裡的內容

#include

#version.h是配置過程生成的,他裡面是uboot的版本好(在makefile裡面生成的)

#include

#if defined(config_enable_mmu)

#asm/proc/domain.h是配置的時候生成的符號鏈結,它實際指向的是asm-arm/proc-armv/domain.**件

#include

#endif

#regs.**件的內容實際上是x210_sd.h裡面的內容

#include

#ifndef config_enable_mmu

#ifndef cfg_phy_uboot_base

#define cfg_phy_uboot_base cfg_uboot_base

#endif

#endif

#這裡只是留下16個位元組的空間,沒有進行填充,當我們是sd卡啟動的時候,mkvimage.c會填充16位元組的校驗頭

#if defined(config_evt1) && !defined(config_fused)

#.word可以看成unsigned int的型別,0x2000可以看成乙個值

.word 0x2000

.word 0x0

.word 0x0

.word 0x0

#endif

ldr	pc, _undefined_instruction

ldr pc, _software_interrupt

ldr pc, _prefetch_abort

ldr pc, _data_abort

ldr pc, _not_used

ldr pc, _irq

ldr pc, _fiq

_undefined_instruction:

.word undefined_instruction

_software_interrupt:

.word software_interrupt

_prefetch_abort:

.word prefetch_abort

_data_abort:

.word data_abort

_not_used:

.word not_used

_irq:

.word irq

_fiq:

.word fiq

_pad:

.word 0x123456

#balignl是記憶體對齊,16代表16個位元組,如果沒對齊用0xdeadbeef填充

.balignl 16,0xdeadbeef

#text_base是配置是生成的檔案,裡面存放了乙個位址,_text_base相當於乙個指標,當要使用時用來指向位址

_text_base:

.word text_base

#cpsr是程式狀態暫存器,_c代表是bit0-bit7,#0xd3 的含義是:禁止fiq和 irq,狀態是arm狀態,svc模式

reset:

msr cpsr_c, #0xd3 @ i & f disable, mode: 0x13 - svc

#禁止l2cache

bl disable_l2cache

#初始化l2cache

bl set_l2cache_auxctrl_cycle

#開啟l2cache

bl enable_l2cache

#開啟l1的icache和dcache

mov r0, #0 @ set up for mcr

mcr p15, 0, r0, c8, c7, 0 @ invalidate tlbs

mcr p15, 0, r0, c7, c5, 0 @ invalidate icache

#這三句是用來得到啟動的值r2

ldr r0, =pro_id_base

ldr r1, [r0,#omr_offset]

bic r2, r1, #0xffffffc1

#判斷r2是否等於0xc,等於是sd卡啟動

cmp r2, #0xc

#將#boot_mmcsd裡的值賦給r3

moveq r3, #boot_mmcsd

#將棧設定到0xd0036000處

ldr sp, =0xd0036000 /* end of sram dedicated to u-boot /

sub sp, sp, #12 / set stack */

mov fp, #0

(這裡設定棧是因為程式會二次呼叫函式。lr只有乙個,當我們呼叫函式是會將返回位址存放在lr中,如果二次呼叫函式會使第一次呼叫函式的返回位址丟失,所以要將第一次的返回位址放入棧中)

#跳轉到lowlevel_init中

bl lowlevel_init

ARM常用彙編及start s初步分析

這個位址undefined instruction到底有多遠就難說了,也許和標號 undefined instruction在同乙個 頁面,也許在很遠的地方。不過除了reset,其他的異常是mmu開始工作之後才可能發生的,因此 undefined instruction 的位址也經過了mmu的對映。...

需求分析 1

dfd erd和use case。這是3種常用的需求建模,它們各有其側重點 它們的共同點是 使用圖形化的手段進行描述。圖形化的好處就是元素之間的關係一目了然,避免自然語言描述上的混沌和零散。不要用專業詞彙限制使用者的思維。在座談調研時,乙個很容易發生的情況是 需求調研人員在努力地向客戶解釋 比劃乙個...

需求分析 1

需求分析做得好,才能夠使設計的產品滿足市場需求,有了明確的需求才能夠確定產品的id設計方案 結構設計方案 硬體設計方案和軟體方案。1.1功能需求 硬體系統常見的功能需求有 供電方式及防護 輸入與輸出訊號類別及處理 無線通訊功能。明確了功能就可以對要完成的功能選擇不同廠家的晶元來實現所需功能。1.2整...