sep4020上移植的ucos,norflash啟動,拷貝到sdram中執行(基本解決)
存在的問題:時鐘中斷經常執行不了,有時候卻能正常執行,學習ucos的可以研究一下原因
[attach]490[/attach]
[attach]491[/attach]
原因:
設置sdram中的中斷向量時,sdram還沒有初始化,初始化sdram后再設置中斷向量即可
為什么說基本解決呢,是因為上電時有時仍然無法執行,按復位鍵就能執行,要么是上電復位這塊硬件電路有點問題,要么就是某個地方需要加延時
[[i] 本帖最后由 zchong 于 2009-7-30 07:49 編輯 [/i]]
yulutong 發表于 2009-7-28 11:23
這個方案有例子的啊。zchong 發表于 2009-7-28 11:24
例子好亂,看暈了也沒有詳細一點的說明
shixq 發表于 2009-7-28 12:01
你的SDRAM是多大的?在你的start.s文件中有這么幾句話:
; Setup IRQ handler
LDR
LDR
STR
通過對比.bin,你的HandleIRQ匯編出來是0x01FFFF18,是一個接近32M處的地址,而你在下面的SDRAM配置中:
LDR
LDR
STR
這樣配置出來的SDRAM是8M的,上下明顯不符,請核實你的硬件。
另外,你的REMAP是在什么地方做的?這一塊我沒有仔細看,你先把上面這個問題解決一下。
zchong 發表于 2009-7-28 12:33
我用的是UB4020MBT(V1.0),32M的sdramEMI_SDCONF1寄存器中有些地方不懂,如何設置成32M呢
zchong 發表于 2009-7-28 12:50
這樣可以了吧,就是把行列地址重新設置一下LDR
LDR
STR
晚上下班回家測試一下,以后每個寄存器都要認真看一下了,尤其自己不熟悉的地方更應該搞懂
謝謝史工!:lol
[[i] 本帖最后由 zchong 于 2009-7-28 12:52 編輯 [/i]]
shixq 發表于 2009-7-28 12:56
呵呵,不客氣!zchong 發表于 2009-7-29 07:51
救命啊,還是不行啊
還是不能正常執行,偶爾可以,很納悶如果ZI段沒有初始化成0,會有什么后果?
[[i] 本帖最后由 zchong 于 2009-7-29 09:01 編輯 [/i]]
shixq 發表于 2009-7-29 09:18
如果ZI段沒有初始化為零,可能帶來程序運行錯誤,究竟會出什么錯誤...天知道在使用某些全局變量的時候,考慮得不太周全的代碼會以為某個變量的值“應該”是零,但卻是一個隨機的值,而程序又把它當零來用,結果就不知道會變成什么了。比如以下代碼
int i=0;(假設該變量為全局變量,且被分配到ZI段)
在使用這個變量的時候:
for(;i<10;i++)a[i]=0;
i初始應該為零的,結果卻是一個類似于0x26756432的隨機值,原來這個循環應該被執行10次,但由于ZI段沒有被清零,這個循環卻沒有被執行(i初始值遠大于10)。
類似的問題還有很多,我在做UBOOT移植的時候就遇到過,導致Malloc函數無法分配內存。
zchong 發表于 2009-7-30 08:18
解決,原因在頂樓