ARM-S3C2410

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

ARM-S3C2410

文章訪客 » 週五 3月 31, 2006 1:17 am

請問各位高手們,我是剛進入嵌入式的菜鳥,所以有很多不懂的地方
有很多問題想請教各位,如果問題太白痴,請多多包函,多多指教
我想RUN一些課本上的範例,但範例上是用C語言寫的,所以我用ADS軟體去COMPILE,結果有31個錯誤,該INCLUDE檔我都INCLUDE進去了,這些檔案都是光碟所附的,為什麼會有錯誤,如果不用ADS這軟體,我還能用什麼方法去把C語言MAKE成*.AXF檔??還是我這C語言是GNU的C語言??
訪客
 

文章訪客 » 週一 4月 10, 2006 10:41 pm

你的系統有跑linux os請用arm-linux-gcc compile,沒有跑os 用ADS compile
訪客
 

文章iknowfish39 » 週一 5月 01, 2006 2:39 pm

回原po
ADS是可以compiler C語言沒錯,但用這個compiler出來的會變成組合語言,是給ARM直接執行的

GNU compiler出來是給你板子上的OS執行的

兩者是有差的,一個是直接指揮ARM動作

另一個是透過OS指揮ARM動作
iknowfish39
 

文章aprotoss » 週一 5月 01, 2006 4:19 pm

請問,為什麼有沒有OS跟用什麼compiler有這樣的差別呢?

是不是說GNU compiler所compile出來的程式,
就不能直接跑在板子上?
這樣有點怪呢?
外面的世界很精彩,我出去一定會失敗!

Orz....

-jac
頭像
aprotoss
懵懂的國中生
懵懂的國中生
 
文章: 224
註冊時間: 週一 12月 01, 2003 2:11 am

文章iknowfish39 » 週一 5月 01, 2006 5:38 pm

GNU應該是指裝在host linux的cross compiler tool chain
當然你用這個去compiler 你的c code,是給你的target linux OS執行的
簡單的說,你若是想控制板子上的硬體,使用的位址是虛擬位址

ADX是ARM的compiler,你若是想控制板子上的硬體,使用的是實體位址

一個是實體位址,一個是虛擬位址,當然不一樣

同樣都是compiler但是,卻是兩碼子的事

如果你有玩DSP板子的話,都是用AXD去compiler

因為DSP沒有OS

那嵌入式板子可不可以當成DSP板子用?答案是可以的

只是效能很差

即然你玩嵌入式系統,就應該有OS的概念

看來,你還搞不清楚AXD跟crsoos compiler的差別
iknowfish39
 

文章iknowfish39 » 週一 5月 01, 2006 5:42 pm

筆誤,是ADS不是AXD(ADS debug用)
iknowfish39
 

文章aprotoss » 週一 5月 01, 2006 10:09 pm

iknowfish39 寫:GNU應該是指裝在host linux的cross compiler tool chain
當然你用這個去compiler 你的c code,是給你的target linux OS執行的
簡單的說,你若是想控制板子上的硬體,使用的位址是虛擬位址

ADX是ARM的compiler,你若是想控制板子上的硬體,使用的是實體位址

一個是實體位址,一個是虛擬位址,當然不一樣

同樣都是compiler但是,卻是兩碼子的事

恕刪...


照你這樣說就是Toolchain只能compile出使用虛擬位址的程式,
而ADS是可以compile出使用實體位址的程式!
那就你所說的話,
bootloader是否不能使用toolchain 來compile了呢?

小弟剛入門不久,尚有許多不明白之處,還請見諒!
外面的世界很精彩,我出去一定會失敗!

Orz....

-jac
頭像
aprotoss
懵懂的國中生
懵懂的國中生
 
文章: 224
註冊時間: 週一 12月 01, 2003 2:11 am

文章checko » 週二 5月 02, 2006 8:45 am

GNU 也可以 compile program成standalone mode。
只要配合適當的library 就可以。

toolchain 包含 compiler 和binary tools。
compiler+assembler 的target是virtual memory 沒錯。
但是配合binary tools可以relocate成固定位址。(例如,用elf2flt)。

GNU make出來的檔案是可以在板子上跑的,
但是 這就要看你 如何把這個檔案"放"到板子上:
有bootloader download ? 還是直接燒到flash ?
這會決定你make時,relcate的位址。

ADS ? 記得以前的ADS是可以compiler出binary檔的,IDE的版本在"target" 的部份 要填上類似elf2flt這樣的progam名稱,他會把AXD (ADS的debug program format) 轉成binary 格式。
checko
可愛的小學生
可愛的小學生
 
文章: 56
註冊時間: 週一 8月 02, 2004 1:52 pm

文章訪客 » 週一 5月 08, 2006 8:39 pm

感謝幾位前輩的回覆
真的是感激不盡
訪客
 

文章訪客 » 週二 5月 09, 2006 12:36 am

UC i, mask, huhu;
UC key;
UC digit0, digit1, digit2, digit3;

digit0 = 4;
digit1 = 3;
digit2 = 2;
digit3 = 1;
while(KEYPAD_get_key(&key) != OK) {
mask = DIPSW_get_sw();
huhu = 1;
for(i=0; i<3; i++) {
HUHU_put_led( (UC)(~huhu) & mask );
huhu <<= 1;
Delay(1);
}
_7SEG_put_led(0, (digit0++)%4);
_7SEG_put_led(0, (digit1++)%4);
_7SEG_put_led(0, (digit2++)%4);
_7SEG_put_led(0, (digit3++)%4);
}

版子上面led顯示數字為9012 但不懂怎來的 另請指教
訪客
 


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron