<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        sep4020上移植的ucos,norflash啟動,拷貝到sdram中執行(基本解決)

        作者:未知   來源:布冬冬 的空間   點擊數:  更新時間:2014年08月16日   【字體:

        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        R0,=HandleIRQ               ;This routine is needed
        LDR        R1,=OS_CPU_IRQ_ISR
        STR        R1,[R0]
        通過對比.bin,你的HandleIRQ匯編出來是0x01FFFF18,是一個接近32M處的地址,而你在下面的SDRAM配置中:
        LDR            R4,    =EMI_SDCONF1     ; SDRAM參數配置1
        LDR            R5,    =0x1d004177                 
        STR            R5,    [ R4 ]
        這樣配置出來的SDRAM是8M的,上下明顯不符,請核實你的硬件。

        另外,你的REMAP是在什么地方做的?這一塊我沒有仔細看,你先把上面這個問題解決一下。

        zchong 發表于 2009-7-28 12:33

        我用的是UB4020MBT(V1.0),32M的sdram
        EMI_SDCONF1寄存器中有些地方不懂,如何設置成32M呢

        zchong 發表于 2009-7-28 12:50

        這樣可以了吧,就是把行列地址重新設置一下
        LDR            R4,    =EMI_SDCONF1     ; SDRAM參數配置1
        LDR            R5,    =0x1E104177                 
        STR            R5,    [ R4 ]

        晚上下班回家測試一下,以后每個寄存器都要認真看一下了,尤其自己不熟悉的地方更應該搞懂

        謝謝史工!: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

        解決,原因在頂樓
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮