compile assembly source in eclipseSDCC

Posted by: 邱小新 at 上午10:38 in

在 eclipseSDCC 內要編譯 c source 是完全沒問題的,但是要編譯 assembly source 卻產生一個小小的 bug,很多人都有在問解決方法,但原作者似乎沒有要修改的意願,還好有一個熱心的使用者提供一個解決方法,可以完美的解決。

在最原始的設定下,直接編譯 asm 會出現下列錯誤。

Building file: ../source/test.asm Invoking: SDCC Assembler as51 -o"source/test.rel" "../source/test.asm" C:\Temp\make34404.sh: command not found: as51 [1] make: *** [source/test.rel] Error 1

為什麼找不到 as51?那是因為 SDCC 的 assembly compiler 應該 asx8051 才對,換成 asx8051 後,再次編譯 asm 則出現下列錯誤。

Building file: ../source/test.asm Invoking: SDCC Assembler asx8051 -o"source/test.rel" "../source/test.asm" removing ASxxxx Assembler V01.70 + NoICE + SDCC mods + Flat24 Feb-1999 (Intel 8051) Usage: [-dqxjgalopsf][ -I<dir> ] file1 [file2 file3 ...] d decimal listing q octal listing x hex listing (default) j add line number and debug information to file g undefined symbols made global a all user symbols made global l create list output file1[LST] o create object output file1[REL] s create symbol output file1[SYM] c generate sdcdb debug information p disable listing pagination f flag relocatable references by ` in listing file ff flag relocatable references by mode in listing file -I<dir> Add the named directory to the include file search path. This option may be used more than once. Directories are searched in the order given. make: *** [source/test.rel] Error 1

為啥會錯呢?那是因為 -o 還沒有支援路徑功能,在那編譯,就在那產生 rel,不能更改路徑。最後使用 domning 所提供的 SDCCAsmWrapper 才得以正確的編譯成功。

Building file: ../source/test.asm Invoking: SDCC Assembler SDCCAsmWrapper -o"source/test.rel" "../source/test.asm" Wrapping SDCCAsmWrapper.EXE to > asx8051.exe -lo ../source/test.asm Finished building: ../source/test.asm

安裝 SDCCAsmWrapper

  1. 下載 SDCCAsmWrapper
  2. 解壓縮到 C:\Program Files\SDCC\bin。
  3. 修改 SDCC Assembler Command 為 SDCCAsmWrapper 即可。
  4. SDCCAsmWrapper 會去呼叫 asx8051 做編譯,再 copy rel 到 output 目錄。

7 意見

您好!!小弟是路過看到大大文章,最近剛好在學習eclipse+SDCC 針對某8051 mcu作實驗,有個問題想請教您,小弟現在在eclipse建立c project再加入c+asm檔案,參考您的方法 compile 都可以成功,可是小弟再建立新的c porject裡面只有一個asm檔案,compile msg出現"Nothing to build for project DEMO_ASM",我有去上網找資料都沒找到問題所在,是小弟疏忽了哪邊的設定出現這個問題,煩請大大賜教提點一下小弟該往哪邊下手,感謝您!!

"Nothing to build for project DEMO_ASM" 表示之前已經編譯完成,無須再次編譯,你可以改用 "Clean Project" 再次編譯。

大大感謝您的回應,不過小弟出現此msg時候eclipse沒有產生Makefile和ihx,"好像"在該project底下一定要加個C的檔案,compile才會認到有檔案才build的過去。

我剛試了一下,新建project只有一個asm檔案,編譯正常,ihx也有產生。你要不要加我的msn,丟檔案給我看看??

感謝大大願意幫小弟解答,小弟經過幾次實驗已經找到原因了,因為keil a51和SDCC asm程式起始段的宣告不同,導致compiler無法順利找到程式起始段,小弟先用C寫個空的main function先compile一次,再利用compile出來的asm程式導入project,問題就解決了,一開始小弟沒有明確敘述自己的問題,真是對您深感抱歉!!

再次感謝大大非常熱心的解惑,真希望有機會能和大大交流彼此的技術和經驗。

你好:
我最近在Vista上安裝Eclipse及SDCC成為8051的開發環境,看了一些文章都需要裝MinGW,我也裝了。但是New一個新的C Project後,都會產生error。"sh.exe" has stopped working, 請問您是否知道原因呢?

Jeff

有關開發環境建立, 請參考這個文章 http://jyhshin3.blogspot.tw/2009/03/sdcc-for-eclipse-install.html

張貼留言