Re: [問題] 請問S3C6410與OMAP3530

看板LinuxDev作者 (C.C.)時間13年前 (2011/04/17 21:24), 編輯推噓4(403)
留言7則, 4人參與, 最新討論串6/6 (看更多)
※ 引述《JFTU (QQ)》之銘言: : 剛進入linux世界裡,有太多不了解地方 : 第一我已經買了devkit8000開發板,天漠開發的板子, : 當然買回了就是先看了手冊,按照步驟,大部分都可以成功執行, : 只不過對於詳細運作方式當然就不知, : 所以花錢去上第一門課 嵌入式linux系統設計-ARM架構與軟體設計 : 目前VM-ubontu下做交叉編譯,把它的LED範例程式跑在目標板上是OK的 : 現在有一個問題(喝喝上面囉唆一堆)在目標板上都是命令模式 : (kernel 2.6.28 & rootfs,為什麼rootfs檔案會比kernel大?) : 我要如何將執行LED範例程式改成視窗模式, : 查了網站,因該就是使用QT來開發,但是這對新手來講很超過了, : 請教我第一步該怎麼做 : 有使用devkit8000的同好可以加入好友嗎?或者有開放論壇 (問問題@@) : 希望能夠共同開發產品的同好(這是重點),也可以付小額指導費用 : 謝謝(我住台北) : PS. 因為找不到如何發表文章,所以寄生在此文章,請見諒 小弟因為實驗室需要,所以從初學者到現在也有一點小心得,在這邊分享一下。 個人跟原PO一樣,一開始也只是看別人建立好得使用手冊,一步一步的建立開發環境, 然後跑跑已經準備好的demo程式,看看會有怎樣的變化,然後Download Kernel和rootfs 之類的,經過一連串Google的指導,大致上對於嵌入式系統開發分為下列兩大項以及 開發環境的建立。 一、系統層面開發: 這邊泛指bootstrap(大部分都用u-boot),Linux Kernel(拿到一個開發版怎樣將Linux porting上去)以及週邊驅動。這部份大致上需要相當的精神去了解OS基礎運作以及驅動 撰寫等等,進入起來相對花功夫。需要了解就是上述的三項: u-boot: 當按下開關之後會發生的事情,像是從Flash讀取bootloader(u-boot)然後 bootloader開始載入Linux Kernel到Memory接著將權限轉到Linux Kernel進行系統 啟動。 Linux Kernel: 指整個作業系統的核心,包含週邊裝置、程序管理等等,這部份參考一般大學 作業系統(恐龍書)就會有基本的了解。 Rootfs: 這部份指的就是開機完之後,Linux Kernel會掛載「磁區」上去,進行系統操作 像是裡面會包含基本的linux指令,如ls, cp, mv等等,這部份可以參考busybox, 所想fs應該都是透過busybox來製作。 整個系統啟動流程大致為: 開機→u-boot→載入Kernel至Memory,移交權限給Kernel→系統初始化或載入必要週邊 驅動→進入檔案系統。 其實我後來認為,只要有OS的嵌入式系統,大致上就跟一般電腦沒兩樣,差別在於大小 、速度、耗能等等。 個人認為可能會需要的基礎知識: 1. 作業系統 2. Linux Kernel 3. Linux Driver 4. 啟動程序 至於原PO有提到的為什麼大部分都是Command Line方式呈現,那是因為某些"板子" 可能不支援螢幕輸出,甚至只有COM Port,所以一般來說Command Line最適合各種 情況。接著要有GUI首先要先有x-window,這部份參考Linux作業系統的圖形化介面 的啟動流程可以得到一點概念。最後一點就是x-window會吃一點資源,所以也是有 效能上的考量,但是就跟上面所說得一樣,現在板子越來越威,也有人在beagle上 跑ubuntu,也能在上面玩以前的game,這真的很厲害。beaglebroad和pandabroad都 有ubuntu support的Project(沒有記錯的話)。 二、應用層面開發: 以已經架構好得Embedded Linux(指基於別人開發好得系統層面進行加值)舉例來說, Android的應用程式開發,就是一個,只是他提供的工具以及開發環境較高階,所以寫 起來就跟一般在PC寫程式一樣。在這邊應用開發,通常會根據不同的"板子"的不同而 會有不同的。那這邊為什麼要選擇Qt?其實有很大的一點是「跨平台」的關係,何謂 「跨平台」?簡單的說就是:「我只想要寫一次Code,就可以跑在各種平台上」, 這邊Qt提供的是一個跨平台的Framework,何謂Framework?就是在OS上面在加上一層 應用,讓使用者透過該層去跟OS溝通。想像win32有win32的API,Linux有Linux的API 在寫code的時候,同樣程式就會有兩種寫法。那透過Qt Framework只要寫一次,也就是 呼叫Qt Framework所提供的API來實現你的程式,這樣只Linux有裝Qt Framework那 你的程式碼可以原封不動的轉到Linux重新編譯然後就可以動了,簡單說就是這樣, Android也是一種Framework。 根據原PO的問題,想要寫一隻GUI程式然後控制LED,可以分為兩個步驟: 一、先利用Qt寫好視窗,然後有按鈕代表燈號。這樣算完成圖形介面 二、從範例找到控制燈號的方法,這部份就要Trace Code,先找到main function 開始尋找他的流程,可以找到控制燈號的實現方式,把這方式抽取出來,分別 實現在GUI程式中。大致上是這樣。 最後,開發環境: 這部份因人而異,像我就不太喜歡在Windows掛VM裡面裝Linux因為這樣在跑NFS 就需要再設定一下,個人覺得不太喜歡,再者,既然都要學好Linux那乾脆灌 雙系統會比較能強迫學習。 為什麼環境需要Linux?這部份牽扯會比較廣闊,但主要的原因在於,板子的環境 是「Linux」。在開發環境部份,主要注意的就是: Cross Compiler: Target端的資料(板子): 一、u-boot 二、linux kernel 三、root file system(rootfs) 傳輸方式: (Download u-boot) 一、JTAG Download(在板子u-boot掛掉的情況下需要,通常用於剛出廠或u-boot搞壞) 二、TFTP Download(在板子有u-boot的情況才有辦法,通常用於更新) (Download linux kernel) 一、JTAG Download(理由同上,畢竟可以直接指定要存的位址) 二、TFTP Download(理由同上) (Download rootfs) 一、TFTP Download(通常用於開發完成後,需on-board測試,或是出去DEMO或出廠) 二、NFS 掛載(通常用於快速驗證用,因為不用重新打包,直接利用網路掛載 等到程式開發好,可以直接放在掛載的目錄,這樣板子可以直接看到,所 新增的檔案) 以上是一點心得淺見,也可互相交流一下心得,如有錯誤煩請糾正,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.88.241

04/17 22:30, , 1F
用心推
04/17 22:30, 1F

04/17 22:31, , 2F
NFS掛載真的很方便
04/17 22:31, 2F

04/19 10:50, , 3F
用心,但我挑個錯字是 "X Window" 不是 X Window"s"
04/19 10:50, 3F

04/19 12:29, , 4F
你貫起來了,不愧是113的,接下來就看你要不通了。
04/19 12:29, 4F

04/19 12:37, , 5F
對了,X Window還真的有很多開發商,其中還要收費的!
04/19 12:37, 5F

04/19 12:39, , 6F
04/19 12:39, 6F
謝謝指教。m(_ _)m ※ 編輯: chiang0823 來自: 140.113.55.238 (04/19 22:09)

04/30 20:50, , 7F
感謝分享
04/30 20:50, 7F
文章代碼(AID): #1DgkdxOY (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #1DgkdxOY (LinuxDev)