這一節主要討論1個問題:點燈。點燈是實際開發中,特別是裸板開發中常見的調試手段,至關於主機開發中漫天飛舞的printf/printk。爲了追蹤程序的現場執行狀況,不少時候咱們都使用點一個燈的方法來進行初步的判斷。若是你把剛纔編譯的程序燒錄到SoC,你又怎麼知道這個Uboot有沒有工做呢?因此,咱們在這裏就要完成這樣一個程序的改造。
雖然說只是點一個燈, 但麻雀雖小五臟俱全, 也算是對uboot源碼進行修改, 我總結了一點改造uboot的流程, 這一篇就按下面的改造流程來組織:調試
咱們但願板子在uboot的運行的時候就點燈示意, 因此應該在啓動過程當中儘量考前的位置編寫點燈代碼, 根據上一篇對啓動流程的敘述, 顯然咱們須要修改的文件就是"arch/arm/cpu/armv7/start.S ", 咱們在啓動代碼以後添加咱們的代碼, 即"134行"後code
根據個人電路板。個人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 /*
這段代碼不須要額外的配置便可工做開發
無源碼
改寫完程序,從新編譯uboot(強烈建議寫腳本,我這裏就不貼了),若是沒有問題,咱們的燈就能夠亮了編譯