黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

uboot Stage1閱讀的一些心得

系統 2211 0

?

?

感覺一定要理解一些基本的概念,然后在看懂匯編的基礎上,再分析uboot的流程。

1.關于匯編的語法

這里有兩套匯編的語法:分為ARM公司的標準ARM匯編語言和GNU對ARM支持的GNU ARM匯編。ARM標準匯編語言即ARM公司的開發工具ADS里用的匯編語言;GNU匯編即在LINUX下用GCC編譯的匯編。兩者語法有少許差異。因此,通常我們下載的LINUX下的ARM接口代碼放到ADS下是不能編譯通過的,需要進行少許修改。

GNU AS語法即AT&T匯編語法,uboot用到的語法。

2.標簽的含義

?

    .globl _start

_start:	b       reset
  
?

標簽就是在某行程序代碼前作一個標記,標簽代表的是這行代碼的地址。

?

    .globl _armboot_start

_armboot_start:
	
.word _start
  
?

.word expression就是在當前位置放一個word型的值,這個值就是expression ,此處的含義就是建立一個全局標簽_armboot_start,在這個位置上放置_start的值(可以這樣理解,_armboot_start是一個地址,這個地址中的內容是_start),則下面的語句會把地址_armboot_start處的內容(_start)裝載到r2中。

?

    ldr	r2, _armboot_start
  
?

這樣做的目的是因為LDR指令的格式為:LDR{條件} ? ?Rd, <地址>。

3..word 0x0badc0de

含義:保留一個字,初始化一下。實際的值應該在運行時計算出來。(badcode嗎,呵呵)。

4.關于判斷是否拷貝到ram

如果是debug下,uboot直接運行在ram中,從而得到的_start值和TEXT_BASE是相等的,不需要拷貝。如果從flash啟動,_start為0x0,TEXT_BASE是sdram的地址,二者是不相等的,需要拷貝。(TQ2440的SDRAM為64M,bank6,地址空間為0x30000000-0x34000000,TEXT_BASE設置為0x33D000000,即0x33D00000-0x34000000為uboot使用的空間+bss和其他的空間)。

見映射圖

uboot Stage1閱讀的一些心得

5.匯編中調用c函數

遵循ATPCS(ARM-THUMB procedure call standard)標準。

?

uboot Stage1閱讀的一些心得


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論