ARMware StrongARM 模擬器 0.4 版 發佈

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

版主: chester

ARMware StrongARM 模擬器 0.4 版 發佈

文章wei » 週二 5月 31, 2005 12:32 am

ARMware StrongARM 模擬器 0.4 版 發佈
胡岳偉

===========================================================
計畫網址 :
http://www.csie.ntu.edu.tw/~r88052/ARMware/tw/index.php
===========================================================

這個版本跟之前版本最大的不同之處有 2:

1. 內建一個 dynamic compiler, 大幅的增加執行時期效能.
2. 可以從 serial console 輸入命令.

開機動畫 (divx4 檔案, 4.3 MB) :

http://www.csie.ntu.edu.tw/~r88052/ARMw ... /start.avi

輸入命令動畫 (divx4 檔案, 2.1 MB) :

http://www.csie.ntu.edu.tw/~r88052/ARMw ... /input.avi

Debian 套件下載 (deb 檔案, 1.1 MB):

http://www.csie.ntu.edu.tw/~r88052/ARMw ... 1_i386.deb

rpm 套件下載 (rpm 檔案, 1.1 MB):

http://www.csie.ntu.edu.tw/~r88052/ARMw ... 2.i386.rpm

===========================================================
* 0.4.0 版:
- 可以從 serial console 輸入.
- 新增 UTF-8 繁體中文翻譯.

* 0.3.0 版:
- 加上 dynamic compiler 技術.

* 0.2.0 版:
- 加上 threaded code 最佳化技術.

* 0.1.0 版:
- 最原始的版本, 純粹的 interpreter 架構.

ARMware 是個 ARM 微處理器的模擬器, 目前所能模擬的核心為
Intel StrongARM SA-1110. 並且 ARMware 以 Compaq iPaq H3600
為對象, 提供了一個軟體模擬 H3600 的環境.

目前 ARMware 所模擬的元件包括:

1. ARM architecture version 4 core
2. ARM standard system coprocessor (CP15)
3. Memory Management Unit (MMU)
4. Translation Lookaside Buffer (TLB)
5. LCD Controller
6. DMA Controller
7. EGPIO
8. Operation System Timer
9. Reset Controller
10. Real Time Clock (RTC)
11. GPIO Controll Block
12. Interrupt Controller
13. Power Management
14. Serial Port 1
15. Serial Port 3
16. Intel StrataFlash J3 Flash ROM
17. Atmel micro-controller
18. LCD screen
19. Touch panel

ARMware 的優點有:

1. 內建 threaded code engine, 會把 ARM machine code 給 cache 起來,
因此可以加快執行的速度.

2. 內建 dynamic compiler, 這個 compiler 會動態的把 ARM 的 machine code
編譯成 x86 的 machine code, 因此可以加快執行的速度.
目前實作的最佳化有:

3. 除此之外, 我也以 assembly codes 重寫了某些部份, 希望能夠更加快
執行的速度. 比方說, 我完全以 MMX 及 SSE2 的指令集來完成 LCD
旋轉 270 度的動作 (這也就是說, 你必須在一台具備 SSE2 指令集的
x86 CPU 上來執行 ARMware, 例如 Pentium M 以及 Pentium 4), 以及
condition codes 的 assembly 化等等.

4. 內建一個記憶體管理子系統, 並且經過冗常的測試, ARMware 幾乎
沒有 memory leak 的情況.

5. 具有 Qt (螢幕快照) 或 Gtk (螢幕快照) 的使用者介面, 但由於 Qt 的
license 問題, 所以目前我只釋放出以 Gtk 為使用者介面的 ARMware.

6. 具備一個 serial console 視窗 (螢幕動畫), 因此可以從該視窗中看到
ARMware 的 serial console 輸出, 同時也可以從該視窗中輸入使用者
命令.

7. 可以使用 GNU dbm (螢幕快照) 或 xml (螢幕快照) 為機器資料的資料庫.
但同樣的, 由於 GNU dbm 的 license 問題, 所以我目前只釋放出以 xml
為機器資料庫的 ARMware.

8. 符合 i18n 標準的繁體中文化介面, 目前的繁體中文翻譯有 Big5 以及
UTF-8.

9. 具備一個完整的模擬燒錄 Flash ROM 工具(螢幕快照),
可用來模擬真實世界中的燒錄 Flash 動作, 並且使用燒錄出來的
Flash ROM 檔案來啟動 ARMware.

10. 每個使用者的機器資料庫分別存放在使用者個家目錄中,
因此不同使用者可以擁有各自的機器資料庫而不會衝突.

===========================================================

胡岳偉
http://www.csie.ntu.edu.tw/~r88052/
wei
可愛的小學生
可愛的小學生
 
文章: 7
註冊時間: 週一 8月 09, 2004 1:10 pm

文章訪客 » 週二 6月 14, 2005 2:21 am

下載後發現滿多 library 都沒有在 Debian unstable 裡面.請問 libc6 2.3.5-1 和 libxml2 2.6.17 要去那找啊?

多謝
訪客
 

文章岳偉 » 週二 6月 14, 2005 9:58 am

Anonymous 寫:下載後發現滿多 library 都沒有在 Debian unstable 裡面.請問 libc6 2.3.5-1 和 libxml2 2.6.17 要去那找啊?

多謝


應該都在 debian 的 experimental 裡,
另外我也有混合 ubuntu 的 source
所以在 ubuntu hoary 或 breezy 裏面找找看

這邊要提的一點是
由於 g++ 3.4 以後版本跟 3.3 以前版本的 C++ ABI 不一致
所以 ARMware 所用的所有 C++ library 都要用 3.4 以後的版本來編譯
( C library 就不管了 )

而 ARMware 所用到的 C++ library 有4個
libgtkmm
libglibmm
libxml++
libsigc++

我記得 fedora core 4 已經全部用 g++ 4.0 來編譯了 (嗎?)
不過我很確定 ubuntu breezy 已經全部改用 g++ 4.0 了
所以不是抓 breezy 的套件來裝
就是自己拿 source 來編譯
都可以

NOTE: 下一版本的 ARMware 將會重新回歸到功能性的增加,
支援 xscale 處理器
請期待
岳偉
 

文章jserv » 週二 6月 14, 2005 5:23 pm

岳偉 寫:這邊要提的一點是
由於 g++ 3.4 以後版本跟 3.3 以前版本的 C++ ABI 不一致
所以 ARMware 所用的所有 C++ library 都要用 3.4 以後的版本來編譯 ( C library 就不管了 )


wei 兄您好,

可否直接 -lsupc++ 來重新編譯 ARMware 呢?這樣可以克服一些 C++ ABI issues,或許對您有幫助。

岳偉 寫:NOTE: 下一版本的 ARMware 將會重新回歸到功能性的增加,
支援 xscale 處理器
請期待


真期待!希望能早日使用到大作,謝謝您的付出。

Sincerely,
Jim Huang (jserv)
http://jserv.sayya.org/
jserv
懵懂的國中生
懵懂的國中生
 
文章: 116
註冊時間: 週六 5月 08, 2004 7:36 pm

文章wei » 週三 6月 15, 2005 10:57 am

jserv 寫:
wei 兄您好,

可否直接 -lsupc++ 來重新編譯 ARMware 呢?這樣可以克服一些 C++ ABI issues,或許對您有幫助。



jserv 兄

請問這樣做對 C++ ABI 相容性的幫助是?
libsupc++ 不是只是包含對 C++ language 的 support 嗎?
4.0 的 libsupc++ 應該還是跟 3.3 的 libsupc++ 在 ABI 上不相容才對.
wei
可愛的小學生
可愛的小學生
 
文章: 7
註冊時間: 週一 8月 09, 2004 1:10 pm

文章jserv » 週三 6月 15, 2005 12:53 pm

wei 寫:請問這樣做對 C++ ABI 相容性的幫助是?
libsupc++ 不是只是包含對 C++ language 的 support 嗎?
4.0 的 libsupc++ 應該還是跟 3.3 的 libsupc++ 在 ABI 上不相容才對.


我沒有仔細去試驗 gtkmm with libsupc++,不過或許您可以參考以下這篇 wiki:
http://www.mega-tokyo.com/osfaq2/index. ... 20in%20C++
[Doing a kernel in C++]

IIRC, libsupc++ 會 statically-linked 到你的專案,這樣就不會 refer to libstdc++,這樣就可以 deploy 一個沒有 C++ Runtime dependency 的 binary release,至少我在 Konqueror/Embedded 與 Mini Mozilla 上都是這麼作。當然,如果有機會 open source,肯定有一群熱心的開發者在不同平台或環境上 rebuild :-)

無論如何,感謝 ARMware 這個偉大的計畫。

-jserv
jserv
懵懂的國中生
懵懂的國中生
 
文章: 116
註冊時間: 週六 5月 08, 2004 7:36 pm

文章wei » 週三 6月 15, 2005 1:55 pm

jserv 寫:我沒有仔細去試驗 gtkmm with libsupc++,不過或許您可以參考以下這篇 wiki:
http://www.mega-tokyo.com/osfaq2/index. ... 20in%20C++
[Doing a kernel in C++]

IIRC, libsupc++ 會 statically-linked 到你的專案,這樣就不會 refer to libstdc++,這樣就可以 deploy 一個沒有 C++ Runtime dependency 的 binary release,至少我在 Konqueror/Embedded 與 Mini Mozilla 上都是這麼作。當然,如果有機會 open source,肯定有一群熱心的開發者在不同平台或環境上 rebuild :-)

無論如何,感謝 ARMware 這個偉大的計畫。

-jserv


原來是 static link 的意思
不過由於 ARMware 使用了一陀的 c++ stl container 及 algorithm, 所以真要這樣搞, 就要連 libstdc++ 也給 static link, 本來的就很肥了~~~

而且把 LGPL 的東西 static link 進來對目前來說好像也不太適合...

Wei
wei
可愛的小學生
可愛的小學生
 
文章: 7
註冊時間: 週一 8月 09, 2004 1:10 pm

文章訪客 » 週三 6月 15, 2005 6:24 pm

wei 寫:原來是 static link 的意思
不過由於 ARMware 使用了一陀的 c++ stl container 及 algorithm, 所以真要這樣搞, 就要連 libstdc++ 也給 static link, 本來的就很肥了~~~
Wei

咦,請問一下,stl不是本來就會跟程式本身綁在一起了嗎,應該跟libstdc++沒關係吧
印象中是這樣,如果有錯請指正
訪客
 

文章wei » 週四 6月 16, 2005 10:22 am

Anonymous 寫:咦,請問一下,stl不是本來就會跟程式本身綁在一起了嗎,應該跟libstdc++沒關係吧
印象中是這樣,如果有錯請指正


right... 後來想想,我承認這句話是錯的

Wei.
wei
可愛的小學生
可愛的小學生
 
文章: 7
註冊時間: 週一 8月 09, 2004 1:10 pm

文章enlightened_j » 週六 6月 18, 2005 2:41 am

啟動後看到了下列錯誤

armware: Symbol `_ZTIN3Gtk8ComboBoxE' has different size in shared object, consider re-linking
armware: Symbol `_ZTIN3Gtk6WidgetE' has different size in shared object, consider re-linking

請問是否有原始碼來 compile?
enlightened_j
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週二 6月 14, 2005 2:10 am

文章訪客 » 週一 6月 20, 2005 3:06 pm

按http://www.csie.ntu.edu.tw/~r88052/ARMware/zh/#usage

成功燒錄flash(好慢哦)後啓動失敗,只能在consol下kill
訪客
 

文章訪客 » 週一 1月 09, 2006 11:34 am

岳偉 寫:
Anonymous 寫:下載後發現滿多 library 都沒有在 Debian unstable 裡面.請問 libc6 2.3.5-1 和 libxml2 2.6.17 要去那找啊?

多謝


應該都在 debian 的 experimental 裡,
另外我也有混合 ubuntu 的 source
所以在 ubuntu hoary 或 breezy 裏面找找看

這邊要提的一點是
由於 g++ 3.4 以後版本跟 3.3 以前版本的 C++ ABI 不一致
所以 ARMware 所用的所有 C++ library 都要用 3.4 以後的版本來編譯
( C library 就不管了 )

而 ARMware 所用到的 C++ library 有4個
libgtkmm
libglibmm
libxml++
libsigc++

我記得 fedora core 4 已經全部用 g++ 4.0 來編譯了 (嗎?)
不過我很確定 ubuntu breezy 已經全部改用 g++ 4.0 了
所以不是抓 breezy 的套件來裝
就是自己拿 source 來編譯
都可以

NOTE: 下一版本的 ARMware 將會重新回歸到功能性的增加,
支援 xscale 處理器
請期待
訪客
 


回到 embedded system

誰在線上

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

cron