正點原子 IMX6ULL學習

2021-10-17 00:27:39 字數 1139 閱讀 8423

啟動檔案
.global _start  		/* 全域性標號 */

/* * 描述: _start函式,程式從此函式開始執行,此函式主要功能是設定c

* 執行環境。

*/_start:

/* 進入svc模式 */

mrs r0, cpsr

bic r0, r0, #0x1f

/* 將r0暫存器中的低5位清零,也就是cpsr的m0~m4 */

orr r0, r0, #0x13

/* r0或上0x13,表示使用svc模式 */

msr cpsr, r0 /* 將r0 的資料寫入到cpsr_c中 */

/*清除bss段*/

ldr r0,_bss_start

ldr r1, _bss_end

mov r2, #0

bss_loop:

stmia r0!

,/*比較r0和r1裡面的值* /

cmp r0, r1 /*如果r0位址小於等於r1,繼續清除bss段*/

ble bss_loop

/* 設定棧指標,

* 注意:imx6ul的堆疊是向下增長的!

* 堆疊指標位址一定要是4位元組位址對齊的!!!

* ddr範圍:0x80000000~0x9fffffff

*/ldr sp,

=0x80200000

/* 設定使用者模式下的棧首位址為0x80200000,大小為2mb */

b main /* 跳轉到main函式 */

鏈結檔案
sections

.rodata align(4

):.data align(4

):/* 由於imx6ull是32位soc,在處理資料的時候都是4位元組進行訪問

因此bss段起始位址要是能被4整除的位址,如果不是的話會出現不能訪問的現象。

*/.=align(4

);__bss_start =.;

.bss align(4

):__bss_end =.;

}

IMX6ULL學習筆記(一)

imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。bin檔案前面要新增頭部 ivt boot data dcd資料 由官方手冊可知要燒寫到sd卡中的load.imx檔案在sd卡中的起始位址是0x400,也就是1...

IMX6ULL學習筆記(三)

imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。鏈結指令碼的例子 sections rodata align 4 data align 4 bss start bss align 4 bss end bss ...

IMX6ULL學習筆記(六)

imx6ull裸機開發學習 以下內容是我在學習正點原子imx6ull開發板alpha中記錄的筆記,部分摘錄自正點原子imx6ull開發手冊。首先使用預設配置檔案,編譯下測試linux能否在板子上執行。配置檔案所在路徑arch arm configs imx v7 mfg defconfig 通過修改...