色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > s3c2440之ADS移植keil

          s3c2440之ADS移植keil

          作者: 時間:2016-11-21 來源:網(wǎng)絡 收藏
          最近把ADS1.2工程轉(zhuǎn)到MDK4.03出現(xiàn)一些error,羅列了可能出現(xiàn)的error,并給予相關(guān)的辦法,讓大家在以后的轉(zhuǎn)換中盡快搞定

          1:error:Nosectionmatchesselector–nosectiontobeFIRST/LAST.
          把原來的Init代碼段名修改成RESET:
          ;AREAInit,CODE,READONLY
          AREARESET,CODE,READONLY

          2:errorUndefinedsymbolMain(referredfrom2440init.o).
          error:scatter-loadfiledeclaresnoheaporstackregionsand__user_initial_stackheapisnotdefined
          一般完成上一步修改就不會出現(xiàn)這個error;

          如果代碼中使用了main則加入部分代碼
          EXPORT__user_initial_stackheap
          __user_initial_stackheap

          LDRR0,=Heap_Mem
          LDRR1,=(Stack_Mem+USR_Stack_Size)
          LDRR2,=(Heap_Mem+Heap_Size)
          LDRR3,=Stack_Mem
          BXLR


          3:UndefinedsymbolImage$$RW$$Limit(referredfrom*.o)
          UndefinedsymbolIm.............

          把Image$$RO$$Base,Image$$RO$$Limit,Image$$RW$$Base,Image$$ZI$$Base,Image$$ZI$$Limit
          改成:
          Image$$ER_ROM1$$RO$$Base,Image$$ER_ROM1$$RO$$Limit,Image$$RW_RAM1$$RW$$Base,Image$$RW_RAM1$$ZI$$Base,Image$$RW_RAM1$$ZI$$Limit

          4:errorcontainsinvalidcallfrom~PRES8functiontoREQ8function*
          匯編文件的開頭,添加“PRESERVE8”指令。


          5:error:L6235E:Morethanonesectionmatchesselector-cannotallbeFIRST/LAST.
          建立realview工程時,不要導入realview的S3C2440.s,否則當把Init代碼段名改成RESET時,會存在兩個RESET段。

          本文引用地址:http://cafeforensic.com/article/201611/319301.htm

          6.error: A1355U: A Label was found which was in no AREA

          在KEIL工程中,我使用另一個工程中正確的分散加載文件到一個新工程中,竟然就出現(xiàn)這樣的提示。

          到網(wǎng)上搜索,有很多內(nèi)容是關(guān)于這個問題的,但是卻沒有幾個很好解決問題的。

          其實出現(xiàn)這個問題有兩種情況,一種是出現(xiàn)在.s的匯編文件中,另一種是出現(xiàn)在.scf (或者.scat)等的分散加載文件中。

          原來很多人在匯編文件(多數(shù)為.s的啟動代碼)中出現(xiàn)這個問題的,基本上是因為使用匯編的格式不對,

          關(guān)于這個錯誤,ARM官網(wǎng)有相關(guān)的說明:

          A1355U: A Label was found which was in no AREA
          Example:
          This can occur where no white-space precedes an assembler directive.
          Assembler directives must be indented with white-space, for example:
          use:
          IF :DEF: FOO
          ; code
          ENDIF
          not:
          IF :DEF: FOO
          ; code
          ENDIF
          Symbols in the left hand column 1 are assumed to be labels, hence the error message.

          意思是在編寫匯編文件時,標號要頂格寫,而其他的代碼都要用空格或者TAB鍵來使代碼進行縮進,這樣,就不會出現(xiàn)編譯的問題了。

          如果問題是出現(xiàn)在分散加載文件中,那么很可能你是把分散加載文件一起加入到了KEIL的工程中,類似這樣:

          這時候,就可能會出現(xiàn)

          error: A1355U: A Label was found which was in no AREA這樣的報錯,不管你用多么正確的SCATTER文件格式,它始終都會報錯。為什么呢?

          原來我們通常加到KEIL工程中的.c ,.s, .h等文件是供ARMCC,ARMASM等編譯器處理的,而分散加載文件 .scf ,.scat等文件是供ARMLINKER等連接器處理的,當我們把分散加載文件加入到工程中后,KEIL會調(diào)用ARMASM編譯器將分散加載文件做為匯編文件去處理,因為分散加載文件本來就不是合法的匯編文件,所以在編譯的時候就出現(xiàn)了編譯錯誤的提示。

          解決方法:在工程中刪除分散加載文件,在option->linker->scatter file路徑中指定即可



          關(guān)鍵詞: s3c2440ADS移植kei

          評論


          技術(shù)專區(qū)

          關(guān)閉