word的作用及uboot中 start的引用

2021-06-16 23:45:47 字數 1482 閱讀 6689

gnu彙編中.word偽指令的理解

分類: linux

在u-boot中遇到_armboot_start、_bss_start等這些變數,這些偽指令的用法涉及以下知識

1.彙編是「絕對引用」,即引用的就是位址

在start.s中

_text_base: 

.word text_base /*uboot映像在sdram中的重定位位址,我設定為0x33e00000 */ 

.globl _armboot_start 

_armboot_start: 

.word _start /*_start是程式入口,鏈結完 畢它的值是0x33e00000 =text_base*/ 

arm-linux-objdump -d u-boot > u-boot.s

在u-boot.s中找到以下語句

33e00000 <_start>:

33e00000: ea000013 b 33e00054

_start的值是33e00000,這個位址上儲存的指令是b reset

_armboot_start:

.word _start

對應反彙編結果

33e00048 <_armboot_start>:

46 33e00048: 33e00000 .word 0x33e0000047

這句話的意思是在_armboot_start標號處,儲存了

_start的值,也就是說,_armboot_start是存放

_start的位址, 即_armboot_start對應的儲存單元本身位址是

0x33e00048,內容是

0x33e00000

ldr r1, _armboot_start

ldr r2, _start

r1是33e00048,r2是0x33e00000---彙編中對標號的引用,是絕對引用,就是標號的位址本身

.globl _bss_start 

_bss_start:

.word __bss_start

按照上面的理解,__bss_start是uboot 的bss段起始位址,那麼u-boot映像的大小就是__bss_start - _start;在relocate**段中計算u-boot的大小時,也體現了這一點。 

2.c語言對變數/符號/常量的引用必須通過位址

間接定址

,即引用的是

標號的內容

,而非標號本身位址。

monitor_flash_len = _bss_start - _armboot_start

這句話中對_armboot_star的引用,實際上是把它用作了指標值,即0x33e00000,monitor_flash_len就得到u-boot的長度(包括**段,資料段)

簡單的可理解為

_armboot_start---c語言中引用的值是0x33e00000

_armboot_start---彙編中引用得到的值是b reset

ARM學習筆記 uboot的作用及主要工作 1

pc啟動 上電 bios 引導作業系統windows 識別c d盤 執行應用程式 嵌入式 上電 bootloader linux核心 掛接根檔案系統 執行應用程式 u boot打補丁 編譯 燒寫 1.解壓縮 2.打補丁patch命令 3.配置 4.編譯 uboot作用 主要作用 1.讀flash 2...

UBOOT學習 其一 uboot的作用是什麼

問題 在嵌入式linux中,uboot是很重要的乙個部分.那麼他具體的作用是什麼呢?我們先來看看嵌入式linux的啟動過程 我們看到,bootloader的作用就是載入linux核心.類似的我們看看我們常用pc機的啟動過程 我們看到,雖然系統不同,但原理是一樣的.問題 uboot的如何載入linux...

Word中分節符的作用

在建立新文件時,word 將整篇文件視為一節。為了便於對文件進行格式化,可以將文件分割成任意數量的節,然後就可以根據需要分別為每節設定不同的格式。1.word 中節的作用 如果整篇文件採用統一的格式,則不需要進行分節 如果想在文件的某一部分中間採用不同的格式設定,就必須建立乙個節。節可小至乙個段落,...