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エントリにジャンプして実行
    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