[問題] 請問一個在u boot上寫程式遇到的問題

看板LinuxDev作者 (路人甲)時間15年前 (2011/02/22 15:48), 編輯推噓5(5017)
留言22則, 3人參與, 最新討論串1/1
請問一下各位版友: 我在u boot上開發程式,增加屬於自己的指令,類似tftp從tftp server下載檔案到 device,我想做md5的驗證,所以把lib_generic/md5.c拿進來用,建立好image上傳 到device上執行,這時發生了在開機時實行到board.c中 i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);機器就死當了,只要不把MD5.c build 進來就不會發生死當,我知道這問題不好敘述,請問一下各位版友有可能是什麼情形 要如何解決我看了system.map兩者的不同如下,看是否可以看出端倪,謝謝各位 1.有md5.c: 8108044c t init_func_i2c 8109b9dc T i2c_init 2.無md5.c 8108044c t init_func_i2c 8109acdc T i2c_init -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.205.73

02/22 16:27, , 1F
我逐步加code的方式把md5.c的程式碼,慢慢搬進u-boot,發現中
02/22 16:27, 1F

02/22 16:30, , 2F
間過程,我順利開機後輸入指令就會出現問題,有可能在建立IMAG
02/22 16:30, 2F

02/22 16:31, , 3F
時,互相蓋到嗎?要怎樣驗證,或者有其它的想法呢?
02/22 16:31, 3F

02/22 20:05, , 4F
或許可以查一下map檔,看一下armboot_end這個值的位置
02/22 20:05, 4F

02/22 20:12, , 5F
是否真的是在最後面,uboot 將自己relocate到ram上時會用
02/22 20:12, 5F

02/22 20:13, , 6F
來當作結束的點;也可以反組譯start.s看一下armboot_end是
02/22 20:13, 6F

02/22 22:52, , 7F
我有點不太懂,不過我會去確認看看
02/22 22:52, 7F

02/22 22:53, , 8F
我朋友在同樣平台,在寫其他功能時也發生同樣的狀況,就是新的
02/22 22:53, 8F

02/22 22:55, , 9F
u-boot在輸入指令時,發生全部判斷成無效指令,之前寫PIC單晶
02/22 22:55, 9F

02/22 22:57, , 10F
片的經驗,程式碼有分page,沒有切換到對的page就會在jump時發
02/22 22:57, 10F

02/22 22:58, , 11F
生錯誤,不知道u-boot有沒有類似的設定
02/22 22:58, 11F

02/23 00:28, , 12F
我發現我的問題跟這個人是一樣的
02/23 00:28, 12F

02/23 00:30, , 14F
.html,不過沒有人回他@@!!,難道這不是問題嗎?
02/23 00:30, 14F

02/23 10:24, , 15F
我反組譯start.o沒有發現armboot_end類似的label
02/23 10:24, 15F

02/23 12:34, , 16F
您沒有FPGA可以設置中斷點? 通常是data fetch abort了吧
02/23 12:34, 16F

02/23 12:35, , 17F
sorry, 弄錯, 應該說是Debugger, ICE才對...
02/23 12:35, 17F

02/23 16:34, , 18F
目前是沒有JTAG可用的@@!!,看來問題要先跳過了
02/23 16:34, 18F

02/25 09:00, , 19F
查了一下新版的的u-boot,armboot_end已經被改掉了,可以確
02/25 09:00, 19F

02/25 09:10, , 20F
認System.map裡 _end是不是最後一個,如果這個_end的値有
02/25 09:10, 20F

02/25 09:11, , 21F
不是在最後一個的話,有些TEXT段的東西不會被載入,則當跑到
02/25 09:11, 21F

02/25 09:12, , 22F
沒被relocate到RAM上的function時就會死當了...
02/25 09:12, 22F
文章代碼(AID): #1DOsfJ5I (LinuxDev)