娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

在前面介紹exynos4412芯片啟動過程時,我們知道:一上電,exynos4412首先執行固化在iROM中的代碼,iROM首先設置程序運行環境(比如關看門狗、關中斷、關MMU、設置棧、設置棧、啟動PLL等),然后根據OM引腳確定啟動設備(NAND Flash/SD卡/其他),把BL1從里面讀出存入iRAM的0x02021400地址處,然后開始啟動BL1;BL1從SD卡適當的位置讀入14K字節的數據,存在iRAM地址0x02023400處,所以BL2不能大于(14K–4) 字節,這里引出了為什么寫這一節的原因:如果我們的程序很大,大于14K怎么辦?


運行地址和鏈接地址:


運行地址是程序當前所處的地址,即程序在運行時,所處的當前地址。

鏈接地址是程序的鏈接地址,即程序運行時應該位于的運行地址。編譯程序時,可以在鏈接腳本中指定程序的鏈接地址。


對于tiny4412而言,前面我們已經說過:啟動時BL1只會從sd等啟動設備中拷貝14K的代碼到iRAM中,那么當我們的程序超過14K怎么辦?那就需要我們在前14K的代碼中將整個程序完完整整地拷貝到LPDDR等其他更大存儲空間,然后再跳轉到LPDDR中繼續運行我們的代碼,這個拷貝然后跳轉的過程就叫重定位。


本章中講解學習如何重定位,但是并不會涉如何使用到LPDDR,而是簡單地將代碼從iRAM的0x02023400處拷貝到iRAM的0x02026400處,然后跳轉到0x02026400處繼續運行我們的代碼。


程序文件介紹:


1.start.S文件內容介紹:


.text

.global _start

_start:

//關閉看門狗;關于看門狗的設置可以查看Spec 1357頁

ldr r0, =0x10060000 //將0x10060000數字保存到R0寄存器

mov r1, #0x0 //將0x0數字保存到R1寄存器中

str r1, [r0] //將R1寄存器中的數字(0)保存到R0寄存器數字表示的地址中

 

//重定位整個代碼到0x0202_6400地址處;這個地址位于iRAM里面

adr r0, _start //將_start標號(程序的開始地址)位于iRAM里的實際地址保存到R0寄存器中;也是開始拷貝程序的地址

 

ldr r1, =_start //獲取鏈接地址;也就是想將程序運行的地址;將拷貝的程序從這個地址開始保存

 

ldr r2, =bss_start //將鏈接地址中的bss_start標識地址保存到R1寄存器中;也是拷貝程序結束的地址;R1-R2的大小也就是要

//重定位代碼的大小

 

cmp r1, r2 //比較兩個地址是否相等,如果相等在直接去清除bss段即可;

beq clear_bss //跳轉到清零bss處

 

reload_loop:

ldr r3, [r0], #4 //將R0數字表示地址處的數據加載到R3寄存器中;并將R0+4

str r3, [r1], #4 //將R3中的數據保存到R1寄存器數字表示的地址中,并將R1+4

cmp r1, r2

bne reload_loop //循環拷貝

 

clear_bss: //將bss段清零

ldr r0, =bss_start //將bss段的開始地址保存到R0寄存器

ldr r1, =bss_end //將bss段的結束地址保存到R1寄存器

mov r2 ,#0x0 //將0數字保存到R2寄存器中

cmp r0, r1 //如果相等則表示bss清零完畢,跳轉執行點亮LED

beq run_address

 

clear_loop:

str r2, [r0], #4 //將0保存到R0寄存器地址,并將R0+4

cmp r0, r1

bne clear_loop //如果不相等則表示沒有清零完成

 

run_address: //點亮LED燈

ldr sp, =0x02027400 //設置棧

ldr pc, =main //使用絕對跳轉指令

//bl main

halt_loop: //死循環

b halt_loop

程序中已經做了詳細的注釋,這里就不再詳細介紹。


2.main.c文件詳細介紹:


//定義兩個宏,方便操作使用到的寄存器

#define GPM4_CON (*(volatile int *)0x110002E0)

#define GPM4_DAT (*(volatile int *)0x110002E4)

 

int main()

{

//設置GPM4_0引腳為輸出

GPM4_CON &= ~0xFF; //GPM4CON寄存器的低8位清零

GPM4_CON |= 0x11; //GPM4CON寄存器的bit0/4置1,設置為輸出引腳

//設置GPM4_0引腳為低電平

GPM4_DAT &= ~0x3; //GPM4DAT寄存器bit0/1清零,輸出低電平

return 0;

}

程序中已經做了詳細的介紹,這里不再介紹。


3.鏈接腳本:


SECTIONS {

. = 0x02026400; /* 鏈接地址 */

. = ALIGN(4);

.text : 

*(.text) 

}

. = ALIGN(4);

.rodata : 

{

*(.rodata)

}

. = ALIGN(4);

.data : 

*(.data) 

}

. = ALIGN(4);

bss_start = .; /* bss段的開始位置 */

.bss : 

*(.bss) *(.COMMON) 

}

bss_end = .; /* bss段的結束位置 */

}

鏈接腳本的內容很簡單,起始地址是0x02026400,并獲取了bss段的起始和結束地址。


按照前面文章講解的編譯和燒寫命令,將程序燒寫到SD卡中,設置SD卡啟動,觀察現象,發現LED1/2被點亮。說明程序重定位成功。


完畢!

關鍵字:tiny4412  裸機程序  代碼重定位 引用地址:tiny4412裸機程序——代碼重定位

上一篇:tiny4412裸機程序之位置無關碼
下一篇:tiny4412開發板的串口介紹與操作

推薦閱讀

2018中國科技機器人企業排行榜TOP501新松機器人自動化股份有限公司2富士康科技集團3大疆創新科技有限公司4寧波均勝電子股份有限公司5深圳市匯川技術股份有限公司6上海機電股份有限公司7湖北華昌達智能裝備股份有限公司8南京埃斯頓自動化股份有限公司9廣東拓斯達科技股份有限公司10湖北三豐智能輸送設備股份有限公司11上海新時達機器人有限公司12哈爾濱博實...
“打造工業互聯網平臺,拓展‘智能+’,為制造業轉型升級賦能。”3月5日,全國兩會政府工作報告首次提到“智能+”。從2016年智能制造元年的開啟,到2018年“智能制造”出現在政府工作報告中,再到今年的“智能+”,智能制造正不斷被賦予新的涵義,被投以新的期待。 總部位于德國慕尼黑附近的OPEN MIND公司——世界領先的五軸加工專業CAM解決方案供應商,...
德國媒體winfuture今晚曝光了華為P40和P40 Pro的詳細參數,一起來看一下。 報道稱,盡管P40和P40 Pro在某些地區提供純LTE版本,但在歐洲,華為僅提供搭載麒麟990 5G Octacore SoC的版本,該芯片通常包括5G調制解調器,價格分別為799歐元和999歐元起。 華為P40 Pro具有6.58英寸AMOLED曲面屏幕,華為試圖在該機上實現近乎無邊界的外觀,其屏幕分辨率...
業界對自動駕駛汽車何時開始商用化的預測從未停止。是2021年?2025年?還是2030年…事實上,L4級自動駕駛汽車已經出現。在美國亞利桑那州鳳凰城的路上,數十輛Waymo One旗下自動駕駛汽車已經投入試運行。為了安全起見,車內配有一名備用司機。但隨著技術的優化和升級,司機、方向盤、剎車和油門等控制裝置將不復存在。當然,目前自動駕駛汽車尚處于測試階...

史海拾趣

問答坊 | AI 解惑

請教一個自動電平控制的問題

我最近在一個18MHZ的正弦波振蕩器,采用6M晶體振蕩器鎖相倍頻的方法,但要求輸出幅度恒定,即自動電平控制電路,請各位大蝦指點下怎么設計,謝了另外,還想問下,我這個倍頻方案行不?我是第一次做這方面的項目,呵呵,請指教…

查看全部問答∨

熱釋電運放電路請教!!!!!!!!!!!!!!

請教各位,我 利用附件中的LM324搭建的熱釋電放大電路,可檢測距離超短,不知是為何阿?? 請各位多多指正阿,謝謝!…

查看全部問答∨

(2)倒車雷達方案------——LED 數碼管、LCD 液晶、語音、可視攝像、無線等方案

我們可以為客戶提供整套解決方案設計的原理圖、PCB 圖、BOM 單、生產調試說明、單個功能電路等,提供針對不同產品形態軟件服務方案。 客戶可以直接進入試產,避免長時間的技術研發、調試生產的風險。 2. 產品形態 2.1 數碼管顯示倒車雷達 ...…

查看全部問答∨

ATMEL 串口下載線

請問 有什么可以轉換并口的 東東嗎(是不是用PCI的并口卡 可以當并口下載程序)?? 或者是 ATMEL 系列單片機的串口下載線 (宇宙的串口 下載線 不明確) 我的電腦沒有并口 只有串口 現在用STC系列單片機燒程序   發現極不穩定 以至于現在 ...…

查看全部問答∨

請教這個低通濾波器的問題

我用AD8030運放做了下面這個低通濾波器,焊接好板后接上芯片,發現芯片很燙手。電源輸入,電路焊接都沒有問題,芯片引腳也接對了。我認為是電流輸入過大。可是實在找不出問題出在哪里。請各位看看,幫我分析分析。 由于不懂直接發圖片,只能做個下 ...…

查看全部問答∨

求助 FPGA管腳設定問題

我只知道有關jtag的那個bank的vccio是要接電源的 內核也要加電,但是不是那個bank的呢 要加電么,內核也喲加電么,這個一直沒弄懂,還要不用的userio 怎么辦呢 弱弱的問下。。。…

查看全部問答∨

求嵌入式ARM學習群,特別是s3c2410學習板的QQ群或個人前輩

本人正在做關于三星arm9 s3c2410學習板的實驗,但發現很困難,在搭建linux平臺時不知道如何入手,出錯也無從查起,求前輩指點,感激萬分,或者如果有學習小組的Q群的更好,謝謝…

查看全部問答∨

wince 電源管理

我在做wince電源管理。是catalog下加:power management(full)。是不是這樣就可以了?怎么看是不是成功了?希望大家指導,謝謝 …

查看全部問答∨

【上海招聘】【應屆畢業生,一年經驗者】代發招聘信息

www.z2comm.com 招聘軟件工程師,目標人群為應屆畢業生或有一年到兩年編碼經驗的程序員 基本要求: 軟件基礎扎實 熟悉C語言 有一定的開發能力,能開發千行代碼數量級的軟件模塊 有志于做嵌入式軟件開發 具備以下能力更好: 具備硬件 ...…

查看全部問答∨

求教:如何縮短VXWORKS啟動時間

請各位幫幫忙: PENTIUM的CPU,從系統加電,到VXWORKS初始化完成,也就是進入usrAppInit入口的時間需兩分鐘左右,實在太長了。如何縮短這部分時間呢? 萬分感謝!…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 佛冈县| 玉田县| 平顺县| 石景山区| 乐至县| 永福县| 黑河市| 濉溪县| 本溪| 墨脱县| 杭锦旗| 老河口市| 西乡县| 内乡县| 遵义市| 同心县| 偏关县| 磐石市| 祁门县| 上杭县| 广水市| 湄潭县| 会东县| 北川| 通河县| 茌平县| 新郑市| 林州市| 兴宁市| 阳江市| 沅江市| 祁东县| 竹山县| 随州市| 呼玛县| 通化县| 吴忠市| 城口县| 上思县| 海宁市| 孝义市|