從0移植uboot (四) _點亮調試LED

這一節主要討論1個問題:點燈。點燈是實際開發中,特別是裸板開發中常見的調試手段,至關於主機開發中漫天飛舞的printf/printk。爲了追蹤程序的現場執行狀況,不少時候咱們都使用點一個燈的方法來進行初步的判斷。若是你把剛纔編譯的程序燒錄到SoC,你又怎麼知道這個Uboot有沒有工做呢?因此,咱們在這裏就要完成這樣一個程序的改造。
雖然說只是點一個燈, 但麻雀雖小五臟俱全, 也算是對uboot源碼進行修改, 我總結了一點改造uboot的流程, 這一篇就按下面的改造流程來組織:調試

  1. 找運行邏輯,即插入代碼的位置。
  2. 根據運行邏輯編寫功能代碼。
  3. 找配置邏輯,即修改哪些文件使配置生效。
  4. 根據配置邏輯修改配置使功能代碼生效。
  5. 從新編譯燒寫uboot。

1. 找運行邏輯

咱們但願板子在uboot的運行的時候就點燈示意, 因此應該在啓動過程當中儘量考前的位置編寫點燈代碼, 根據上一篇對啓動流程的敘述, 顯然咱們須要修改的文件就是"arch/arm/cpu/armv7/start.S ", 咱們在啓動代碼以後添加咱們的代碼, 即"134行"code

2. 編寫功能代碼

根據個人電路板。個人LED最終接在了GPF3_5接口,因此我配置相應的寄存器,點亮一個燈,並將這部分代碼添加到"arch/arm/cpu/armv7/start.S +134"接口

135         msr     cpsr,r0
136     
137 #if 1
138         ldr r0, =0x114001E0             @load GPF3CON address to register
139         ldr r1, [r0]                    @load data in GPF3_5CON 
140         bic r1, r1,#0xff0000            @output 0x110000
141         orr r1, r1,#0x110000
142         str r1, [r0]
143 
144         ldr r0, =0x114001E4             @load GPF3_5DAT address to register
145         mov r1, #0x20                   @10 0000
146         str r1, [r0]
147 #endif
148 /*

3. 找配置邏輯。

這段代碼不須要額外的配置便可工做開發

4. 修改配置

源碼

5. 從新編譯燒寫

改寫完程序,從新編譯uboot(強烈建議寫腳本,我這裏就不貼了),若是沒有問題,咱們的燈就能夠亮了編譯

相關文章
相關標籤/搜索