星期三, 2月 13, 2008

Cosmos 與 .NET Micro Framework 的比較

Cosmos 是利用DotNet 語言產生 IL code, 再依不同平台編譯成平台原生碼,所以你在執行平台看到的是編譯後的系統 + 原生碼程式

而利用 .NET Micro Framework 開發的程式則是以 IL Code存在,執行時由 .NET Micro Framework 的 VM 載入執行,所以在執行平台看到的是 OS + VM + IL 程式

由此可知採 Cosmos 方式開發的系統可能可以比較小比較快,程式碼也比較安全,但開發程度就會比較依賴 Cosmos 相關轉譯程式庫的成熟程度(目前是0.01版,還相當不成熟)
官方網站提及
We are working on PCI enumeration, Ethernet, TCP/IP, extended file system support and more! Once we have TCP/IP, we will also be using the C# version of Indy in Cosmos.

等 TCP/IP 的轉譯程式庫完成後,應該就可用來開發一些網路小設備

而使用 .NET Micro Framework來開發的話,只要有 .NET Micro Framework 的平台就可以使用
,這對於已經有開發出 .NET Micro Framework VM的平台相對的就比較有利,但硬體設備需求的可能就比Cosmos來的大一點,而程式碼也是比較不安全

如果要用DotNet來開發的 Embeded System 是大型設備、體積及記憶體都比較不是問題的話,或許就會比較方便,因為可以直接用 Mono 或 XPE 來開發,而且可用的程式庫也比較完整
所以如果應用到 CarPC 的話,應該拿 Pico-ITX + SSD(固態硬碟) + 觸控式螢幕 + GPS + 3G 來當平台,再用 MONO 來開發,或許是比較好的應用
Cosmos (C# Open Source Managed Operating System)
http://www.gocosmos.org/

很不錯的一個 Open Source 專案
目的是利用熟悉且開發工具齊全的C#來開發 "Managed Operating System"
由此衍生出的應用可以有很多
而我是想拿來開發 Embeded System 做儀器控制

How does Cosmos work?
Cosmos includes a compiler (IL2CPU, which is part of Cosmos) that reads the input file (usually the shell) and Cosmos libraries and compiles the resulting IL to x86 code. IL2CPU has a layer for cross platform and we plan to support other processors and platforms, including x64. IL2CPU also supports certain extension methods which allow C# code to interact directly with the CPU, registers, and ports in the kernel. IL2CPU contains some inline assembler, but there are no ASM files that need to be linked in.

運作原理是將C#編譯成IL碼,然後依選定的執行平台配合相關平台的程式庫將 IL 編譯成 Native 機械碼,目前還在起步階段,只初步完成 IL to x86 ,所以只能在 x86 平台上執行,模擬部分可以用 VMWare、Virtual PC或 Qemu 來觀察程式執行的結果,實驗版目前則比較適合拿 EPIA系列的 Mini-ITX、Pico-ITX 或 Nano-ITX來玩

而 Cosmos 的程式庫也只完成雛形,大部分的功能都還沒完成,所以目前編寫 C# 的指令不能呼叫大多數的 DotNet framework程式庫,只能利用純C#語言的指令及呼叫一些 Console Mode 的輸出。

目前此專案進展蠻快的,好像有點想和另一 Open Source 專案 - SharpOS(http://www.sharpos.org/) 一別苗頭的意思,也許有一天兩組人馬會合作或合併也不一定

目前我期待的是能儘早推出 8051 跟 ARM 的 IL Compiler,那麼實驗版的選擇就多很多了,然後DotNet Framework 功能相對照的相關程式庫越完整越好,這樣就可以很輕鬆的將很多桌上型的程式應用轉移到這些小型裝置上


創意無限,希望無限