我的硬件團隊計劃在將來的項目中使用Atmel AVR 8位微控制器。
據我所知,它必須使用C語言進行編程。我發現了 JVM用於AVR,儘管它比Atmel的本地C庫更受限制。
您能建議我一個支持Java的8位微控制器嗎?
PS。我不懂C,而且我對微處理器編程沒有經驗。
我的硬件團隊計劃在將來的項目中使用Atmel AVR 8位微控制器。
據我所知,它必須使用C語言進行編程。我發現了 JVM用於AVR,儘管它比Atmel的本地C庫更受限制。
您能建議我一個支持Java的8位微控制器嗎?
PS。我不懂C,而且我對微處理器編程沒有經驗。
如果您對微處理器/微控制器編程領域沒有經驗,那麼您可能應該首先學習C,以便您了解何時以及為什麼Java對大多數微控制器項目來說是一個糟糕的選擇。
您是否閱讀了對鏈接的JVM的限制?它包括以下問題:
如果您不熟悉這些限制的含義,請確定您有計劃B,如果事實證明您不能由於篇幅和速度的限制,實際上使用Java進行項目。
如果您仍然想使用Java,也許是因為您希望該設備由許多只懂Java的人編程,所以我強烈建議您購買更大的硬件,可能是運行嵌入式Linux的硬件。 。請參閱 Oracle的此頁面以獲取運行嵌入式JVM所需的一些規格,在他們討論的FAQ中,他們建議至少32MB的RAM和32MB的Flash。大約是您要查看的AVR的RAM的32,000倍和Flash的1,000倍。 Oracle的 Java Embedded Intro頁面詳細介紹了JVM的限制。您可能會猜到,他們的語氣比我的Java更友好。請注意,這種硬件比8位AVR更加難以設計。
我是一名計算機工程專業的學生,計算機科學專業的未成年人。我大學的CS系喝醉了Java Kool-aid,因此工程程序中的許多學生都只知道Java(這對程序員來說是一種可悲的狀況,如果您不這樣做,至少要學習一些Python或C ++)想學習C ...),所以我的一位教授為擁有一年Java經驗的學生髮布了 C作弊表。只有75頁;我建議您在決定之前先閱讀或略讀。在我看來,C是開發嵌入式項目的最有效,持久和專業的語言。
另一個值得考慮的替代方法是 Arduino框架。它使用 Wiring語言的精簡版本,就像沒有對像或標頭的C ++。它可以在許多AVR芯片上運行,絕對不限於它們的硬件。
總而言之,
替代文本:我花了五次嘗試找到合適的方法,但我設法最後挽救我們的夜晚-甚至不是船。
Atmel AVR最受歡迎的編程環境是 Arduino。 Arduino語言是C ++的子集。
Arduino“草圖” /程序在語法上看起來與Java非常相似。 Arduino衍生的接線語言具有C ++( Arduino),Java( Processing)和Javascript( processing.js)。
這兩種語言都具有相同的聲明樣式,循環結構和算術運算符,這是由於它們在Algol68中具有相同的血統。通常,Arduino中的所有對像都在全局或堆棧上聲明,因此像Java一樣,成員函數使用。
運算符(例如, LED.flash()
)調用。
Java程序員會非常熟悉該語言-但是,重要的是,Arduino草圖被編譯成本機代碼,可以在全硬件訪問下全速運行。這對於從微控制器中獲得最大收益至關重要。
這裡是 API。
Arduino提供了開發所需的一切:低成本硬件,免費的集成開發環境和引導加載程序(因此您可以通過USB /串行加載代碼)。
我想明確地說,我以前從未使用過標槍,但一年前曾經有一個標槍。視差可能已經獲得了它們或某些東西,因為現在出現的唯一一個是“標槍印章”。幾年前,曾經有一家名為Velocity Semiconductor的公司,該公司(據說)直接替代了Rabbit Semiconductor的核心模塊,並且它具有硬件上的JVM,但該公司顯然已經消失了。祝您搜索順利!
Sun Microsystems曾經製造過一個稱為Sun Spot的平台,該平台基本上是嵌入式Java平台。現在顯然Sun Microsystems已經不在了(Oracle購買了它們),但是看來您仍然可以購買Sun Spots- http://www.sunspotworld.com/products/。我對在嵌入式環境中使用Java的想法並不抱有太大的想法(工作恕我直言的抽象級別錯誤),但這似乎是Java最自然的嵌入式平台。請注意這些東西的規格-它們是重型180MHz / 512k RAM,並且對於入門工具包來說價格不便宜,為400美元。
所以我將成為Arduino倡導者的第二或第三名這個問題。如果您需要幫助,有一個社區的地獄可以為您提供支持。而且,如果您需要外圍硬件,請在Google上查找“ Arduino Shields”,並感到驚訝-您可以執行任何操作,從控制伺服電機到使用正確的屏蔽組合跳至802.11無線網絡。沒有一些練習時間來學習C(指針說什麼!?)是不切實際的,但是您可以在很短的時間內開始編寫Arduino草圖。您還可以在30美元左右獲得“真正的” Arduino平台並進行克隆(例如RBBB或DorkBoard)的價格不到15美元。
Ajile系統製造各種本地嵌入式,實時Java芯片和評估板。
它們運行裸機Java。
www.ajile.com製造芯片和評估板。
www.systronix.com銷售各種嵌入式Java硬件。
我使用ajile的AJ-100進行苛刻的工作,它們非常好用。不,它們不像avr便宜,但它們像低端奔騰處理器一樣處理數據。 > Ajiles的芯片可在1微秒內響應中斷(中斷等待時間)。
我的個人經驗是,使用AVR進行編程和入門非常容易,我也是來自Java的多年開發者。在使用arduino草圖大約2個月之後,我放棄了環境並開始使用avr-在gcc中,像avrfreaks這樣的網站可以輕鬆找到常見問題的答案。 (我仍然在值得信賴的Arduino Duemillenove上完成所有工作)
使用eclipse進行編譯和“部署”(即寫入芯片),這也很好,因為我不必處理另一個IDE
與編程語言本身相比,我認為實際上更難理解寄存器,16位寄存器並以適當的順序(中斷,計時器,硬件PWM)讀取它們。
雖然我通常屬於“學習C語言並了解處理器實際做什麼”的陣營,而這與嵌入式工作有關,但值得指出的是,小型手臂芯片並不比AVR貴那麼多,而且在在jvm上處理簡單任務的合理位置。
NanoVM是一種Java虛擬機,旨在在8位AVR上運行
(從主頁開始)
它不是功能齊全的Java VM,而且永遠不會。它將始終限於Java語言和標準Java庫的一小部分,以及一些特定於應用程序的方法。此外,這並不意味著取代C作為對微控制器進行編程的標準方法。與C或彙編程序相比,它的靈活性較差且性能較低。
NanoVM是一種為基於微控制器的設備提供有限但可控制的編程接口的方法。由於大多數特定於硬件的代碼都是NanoVM本身的一部分,因此用戶可以專注於應用程序本身。如果為用戶提供了配備NanoVM的設備,則無需考慮硬件本身。此外,他不需要任何特定於目標的編譯器等。他只需要一個標準的Java編譯器和NanoVMTool,它本身就是用Java編寫的。因此,整個開發鏈可以在具有Java編譯器並可以運行Java代碼的任何設備上工作。通過NanoVM提供的硬件抽象,用戶甚至不必關心目標所基於的微控制器類型。相同的java編譯器和相同的NanoVMTool可以與在任何類型的microontroller上運行的任何基於NanoVM的系統一起使用。
它不是完全Java或8位,但是有一個Java解釋器可用於低功耗ARM微控制器,稱為 Espruino。