uboot-step 10 C言語環境初期化
629 ワード
uboot-step 10 C言語環境初期化
主に2つの作業を完了する必要があります. 1.スタック の設定 2.清BSSセグメント 3.C関数の入り口にジャンプして を実行します.
1.スタックの設定
ARMプロセッサにはSPレジスタというレジスタがあります.スタックポインタのアドレスが格納されています.設定したアドレスを割り当てるだけでいいです.
2.クリアBSSセグメント
BSSセグメントは、プログラムコードで定義された初期化されたグローバルデータが存在するセグメントであり、Cプログラムで参照されるグローバル変数に正当な値があることを保証するために、ここではすべて0をクリアする.
3.Cエントリにジャンプして実行
コード実装
主に2つの作業を完了する必要があります.
1.スタックの設定
ARMプロセッサにはSPレジスタというレジスタがあります.スタックポインタのアドレスが格納されています.設定したアドレスを割り当てるだけでいいです.
2.クリアBSSセグメント
BSSセグメントは、プログラムコードで定義された初期化されたグローバルデータが存在するセグメントであり、Cプログラムで参照されるグローバル変数に正当な値があることを保証するために、ここではすべて0をクリアする.
3.Cエントリにジャンプして実行
ldr pc,=main
コード実装
init_stack:
ldr sp, =0x54000000
mov pc ,lr
clean_bss:
ldr r0, =bss_start
ldr r1, =bss_end
cmp r0, r1
moveq pc, lr
clean_loop:
mov r2, #0
str r2, [r0], #4
cmp r0, r1
bne clean_loop
mov pc, lr