2008-12-14 97 views
10

看起來,像DirectFBMiniGui這樣的任何一種圖形庫都需要某種底層操作系統,比如Linux或uClinux。沒有Linux的嵌入式系統的圖形庫?

我挑戰寫一個軟件的微控制器只有512KB閃存,LCD顯示器和觸摸屏顯示和處理一些圖片和GUI部分。

你知道這只是需要一個指向視頻內存也可以處理線條,圖像和字體任何圖書館?

+0

您沒有指定它是否必須是空閒的(如$$$中)。如果免費是不是一個要求,只要我的手臂從以前的項目發送給你,我有一個列表。順便說一下,它是PIC32還是ARM uC? – Dan 2008-12-14 14:58:41

+0

你說得對,但這個任務似乎沒有免費軟件(免費發言)。一個很好的開源項目。:)讓我們知道,如果你發現任何項目,旁邊是免費的。 uC是ARM。 – about 2008-12-16 17:55:55

+0

您的平臺是否支持C++? – 2009-03-05 14:27:19

回答

3

到時候你納入你可以只寫它自己的一些第三方解決方案。

對於大部分(如果不是全部)環境,屏幕只是像素的二維陣列。有時托盤化有時不會,但沒關係,不管你想要寫什麼,你都可以寫。

有噸的免費代碼在那裏繪製直線和圓弧等

兇手可能是字體,但我想你會發現,第三方應用程序將咀嚼你所有的記憶只是做字體,您的資源有限,因此您需要預先計算字體並將其複製。

創建一個二維數據數組,首先在您最喜歡的主機上完成所有工作,如果您想要查看您正在繪製的內容並保存一系列文件,那麼保存.bmp文件很簡單。如果你想觀看一些動作,將bmp文件轉換爲視頻。

如果您使用通用C語言,並且沒有libc調用(編寫您自己的memcpy,memset等),此代碼將運行在開發主機和目標上的任何位置。

字體將成爲你的殺手,你必須預先計算它們,但設法將信息壓縮到儘可能小,並在運行時提取數據並將每個字母的位複製到虛擬屏幕中儘可能快。

或者只是購買衆多液晶顯示器解決方案中的一種,爲您完成所有這些工作,並且只需將其發送給繪圖「Hello World!」即可。在某些(x,y)使用藍色作爲前景,白色作爲背景。

基本上我認爲非os解決方案仍然會使用太多的庫,並且對於您的特定應用程序來說太大了。二維字節或像素數組很容易管理你自己。即使您正在爲桌面平臺編寫應用程序,我也會這樣做,並在最後一分鐘將完全修改屏幕的屏幕更新複製到某個操作系統相關的庫(允許從一個操作系統到另一個操作系統的最大可移植性)。

-1

512kb很小。祝你好運!

你可能想嘗試一個dslmplayer結合。後者不需要GUI來顯示電影。我想它也可以顯示圖像。

儘管如此,我擔心它會對你的閃存太多。也許這些鏈接的來源將有所幫助。

+0

那些不適合 – 2011-10-18 17:17:04

2

如果您的交互性和圖形用戶界面部件的要求是非常溫和的(或者你和設計自己的小部件OK),看看LibGD。使用庫函數在屏幕上繪製想要顯示的圖像,然後使用gdImagePngToSink()將其寫入幀緩衝區。

2

您應該關注的重要事情是LCD和觸摸屏的控制器。這個任務有大量的C庫(不是免費的)。快速谷歌給了我這些結果:Simplify TechnologiesRamtex

如果你想找到的東西開源,然後從你的控制器的類型開始和搜索嵌入設備論壇(即使它不是手臂,你可以輕鬆地移植C代碼)。幾點建議:

此外,一些製造商套件提供一個SDK(既沒有Linux的)與他們的董事會。購買電路板通常會爲您提供使用該代碼的許可證。使用相同的LCD控制器搜索開發板。

0

我的猜測是像FreeDOS,DJGPP作爲工具鏈,和Allegro作爲圖形庫可能會適合512k的閃存,仍然做一個合理的工作(我假設你有一個x86有幾個RAM這裏)

的MB但這些東西都是非常具體的x86(快板並不雖然)。

這是棘手的Linux內核和用戶空間軟件的內部512k的一個有用的金額(但有可能得到的東西)

6

我們已經使用了「PEG」,C++版本,從Swellsoftware多年。它是商業軟件,不是免費的,但底層的屏幕驅動程序只能使用指向圖形內存的指針,並且它們爲不同類型的圖形硬件提供了許多示例驅動程序。我們使用示例驅動程序作爲參考編寫了我們自己的專用硬件的自定義驅動程序。我們一直有某種RTOS,但我相信PEG +也可以在沒有操作系統的情況下運行。

看看這裏:http://www.swellsoftware.com/

好運,

2

不是免費的,但在低資源系統:http://www.tat.se和他們的產品Kastor和Cascades良好。它只需要一個指向視頻內存的指針,malloc和看起來像文件系統的東西。最後兩項要求也不是絕對必要的。不需要操作系統。

1

您可能需要使用運行長度編碼(RLE)來壓縮字體。儘管最好設計一個自定義RLE,但請參閱.pcx文件格式的示例。您沒有指定LCD的位深度,但如果不需要抗鋸齒功能,字體需要每像素一位,或者最多使用三個具有抗鋸齒功能的BPP。每個角色都必須擁有自己的寬度,因爲等寬文本不好。您應該使用優化的例程直接從RLE壓縮字體渲染到屏幕。

SDL是一個非常便攜的圖形庫。它用於嵌入式Linux系統,但我認爲它可以在沒有操作系統的情況下使用。關於SDL的好處是您可以使用Windows/Linux開發和測試您的用戶界面,並在以後針對您的嵌入式系統。不需要更改應用程序代碼!

您也可以在SDL之上使用Anti-Grain Geometry庫(http://www.antigrain.com/about/index.html)。使用16或24位LCD可以產生出色的圖形。對於你的環境來說,它可能有點太大,因爲我在ARM/Linux系統上的可執行文件大約有一兆字節。它包含用於字體渲染的SDL,AGG和libfreetype2。 AGG也有點慢,但產生了很好的結果。

0

您應該試試easyGUI

easyGUI是專爲在小型嵌入式系統上工作而設計的GUI圖形軟件/庫。

無需操作系統。一個基本的循環執行就足夠了。 Flash的512kb應該不止是OK。 easyGUI提供的庫可以非常靈活地幫助您最大限度地減少所需的Flash數量。

支持字體,圖形,位圖,觸摸屏和一堆開箱即用的視頻控制器。

加上它真的很便宜(沒有授權費,每座只是一個平量),並配有電腦程序設計的屏幕和生成代碼。 PC程序需要一段時間才能習慣,但最終在PC上嘗試某些事情然後生成並觀察它運行在目標上是非常好的。

他們在他們的網站上有一個演示程序。值得檢查一下。

2

對於儘可能小的佔地面積,您應該真正考慮RamTEX。我已經在使用8位PICS的兩個項目中使用了它。在我的應用程序中,ROM空間約爲35K,RAM大約1K(數量取決於是否需要對顯示器進行RAM緩衝)。 ROM空間取決於您想要或需要的圖形功能。

他們提供完整的源代碼和一次性的價格是相當不錯的,少於$ 1000(注意,在其網站上列出的價格已經轉換爲美元,或任何你的貨幣)。沒有版稅或每個產品的限制。

它們提供了許多不同尺寸和樣式的字體以及基本的繪圖調用(線條,像素,框等)。它沒有任何定義的「對象」,如按鈕或菜單,但我能夠實現一個彈出式菜單,沒有太多的麻煩。它確實支持可用於定義文本框,菜單等的「視口」,每個視圖都有自己的屬性。

它還帶有一個在PC上運行的模擬器,因此您可以在移植到嵌入式系統之前在桌面上開發顯示代碼。

1

(老問題,但我想我的後關於這個問題的調查結果)

對於高品質的圖形,反穀物幾何是一個不錯的選擇。它編譯爲大約50kB,可定製寫入各種幀緩衝區和渲染設備: http://www.antigrain.com/

對於用戶界面,Gwen似乎是一個不錯的選擇。它是便於攜帶和可定製,以呈現位圖剝皮控制或只是矩形/圓/線形態: https://github.com/garrynewman/GWEN

然後,如果你也選擇RTOS,NuttX有它自己的圖形子系統和部件工具箱: http://nuttx.sourceforge.net/