今天剛安裝好fedora9後,馬上要來開始測試上網連線是否沒問題。
但隨即就發現,不能上網,也不能更新軟體。
於是,馬上就來Ping看看是哪裡的問題,ping lan裡面的其他電腦沒問題,ping router沒問題,ping DNS也沒問題。
= =?怪了,是哪的問題都可以ping到DNS了,後來GOOGLE找了ㄧ下,在經過測試後發現ping網址無效。
找到的資料是說,跟network meanager有關,建議是關閉就可以。
但看了ㄧ下(系統 -> 管理 -> 網路 -> 編輯),它裡面的controlled by NetworkManager的選項並未選取。
還好,找到的解決辦法裡面有說明,這好像是fc9的ㄧ個BUG。
剛安裝完系統的情況下,Controlled by NetworkManager不打勾代表著值為"NO"。
而在/etc/sysconfig/network-scripts/ifcfg-eth0 對應的選項上"NM_CONTROLLED=",留空的預設值代表"YES"。
這樣能不出問題嗎?因此只要將他們這兩個都改成同樣的設定值即可解決。
我的作法是將這兩個選項都設置為"NO"。
另外,如果開機啟動後網路卡並沒有啟動,那可以在/etc/rc.d/rc.local 增加/sbin/ifup eth0
參考資料:
http://hi.baidu.com/thelamb/blog/item/8b2c09d914194fee39012f95.html
http://www.linuxdiyf.com/viewarticle.php?id=105676
flykof 發表在 痞客邦 留言(0) 人氣(785)
Fedora 9在架設samba時比之前的版本還多了些問題,按照以前的方式設定好之後還是會有問題,顯示的錯誤訊息在"setroubleshoot browser"。
flykof 發表在 痞客邦 留言(0) 人氣(561)
flykof 發表在 痞客邦 留言(0) 人氣(10,897)
大概的總結一下程式/函式庫移植的流程
本文引用自
koukaipan - [概論] 嵌入式系統軟體移植流程1. 取得程式原始碼(也許是函式庫、應用程式)
2. 建立開發環境
2.1 root filesystem資料夾:
這個資料夾到時候會整個打包成root filesystem,打包方式有很多,不贅述
可參考
編輯Ramdisk image 或
如何製作Kernel -- 以Andes ADP-AG101為例2.2 cross-lib資料夾:
這個資料夾用來放移植上去的函式庫檔案、開發相關程式需要的.h,
因為編譯的時候會需要.h, 連結的時候需要.a .so
通常你可以選擇跟cross compiler的include, lib放一起 (
通常建議建立一個資料夾 例如 ~/nds32/)
3. 編譯程式
3.1 組態設定:
最簡單的部份是將compiler修改成cross-compiler,再來可能需要針對目標板的架構,
進行一些調整,例如有些沒有浮點運算器..
.通常可以把config.sub蓋過去 並寫 shell script 進行cross compile 設定安裝目錄,這部份很重要,千萬不要安裝到host的目錄去了,不然會很亂,檔案很多不好殺
3.2 編譯&安裝
祝你好運! (
通常不會太順利~"~)
3.3
安裝完成之後,記得要把lib檔(.a不需要)也複製一份到root filesystem裡面的資料夾
4. 相關程式開發
4.1 修改Makefile讓compiler為cross-compiler
4.2 修改CFLAGS如果你的.h放在別的地方記得要列進來-I/a/b/c/include
4.3 修改LDFLAGS如果你的lib檔在別的地方也要列進來-L/a/b/c/lib
flykof 發表在 痞客邦 留言(0) 人氣(869)
flykof 發表在 痞客邦 留言(0) 人氣(1,512)
在linux中如何讀取並修改系統時間?
[root@linux ~]# date MMDDhhmmYYYY
flykof 發表在 痞客邦 留言(0) 人氣(30,388)
http://www.wretch.cc/blog/cdpda/17819849
嵌入式Linux的圖形使用者介面(GUI)設計
(寄信給作者) 2007/04/09
(林宗輝/DIGITIMES)前言:作業系統從純文字界面一路進展到光鮮亮麗的圖形外表,其中包含了無數的設計師的創意,當然,也有許多截他人之長補自己之短的案例出現。在嵌入式系統方面,由於Linux已經是主流嵌入式架構之一,針對這個架構所開發出來的嵌入式產品自然也要在圖形使用者介面花費相當大的心力。
兼顧硬體的特殊性、功能的易用性、視覺美感等要素,這些皆是嵌入式系統GUI設計的重點,但是過去的圖形介面設計並沒有專門的設計人員來負責,而多由程式設計人員或者是美工人員兼差扛起,這些人沒有接受過專業的人機介面設計,或者是想法太過一廂情願,無法真正切合使用者需求。甚至,部分廠商乾脆就直接抄襲國外大廠的介面設計,如此不尊重專業的結果,就是導致台灣在圖形介面設計的經驗累積與發展遠遠不及國外大廠。大陸方面其實也在走過去台灣走過的老路,從抄襲,轉而代工,自有設計少之又少。
設計圖形使用者介面的必要概念
在 PC上的各類圖形使用者界面的共同特點是以視窗管理系統為核心,使用鍵盤和滑鼠作為輸入設備。視窗管理系統除基於可重疊多視窗管理技術外,廣泛採用的另一核心技術是事件驅動(Event-Driven)技術。圖形使用者界面和人機交互過程極端依賴視覺和手動控制的參與,因此具有強烈的直接操作特點。而在嵌入式系統上,不同規模的硬體架構對於圖形介面的需求也各有不同,但基本理念仍然一致,那就是作為使用者與機器的有效溝通管道。
由於目前多媒體的概念正風行,作業系統與使用者溝通的方式從過去的純文字、圖形、到了現代,已經轉變成動畫、聲音甚至3D影像的結合產物。這些結合多媒體概念的人機介面設計,在現代資訊產品中扮演著極為重要的角色,由於人類對於訊息的感受最直接的就是視覺與聽覺,結合了兩大感官能力,可以進一步豐富資訊內容與使用者進行的交互作用。至於在操作應用方面,電視遊樂器Wii所帶來的嶄新操作方式,也可以提供我們對將來下一代作業系統使用者介面操作方式的另1層省思,擺脫過去滑鼠與螢幕在操作上相對缺乏直覺的印象,可以利用動作感應與螢幕進行最直接的互動,將來甚至也可能透過腦波控制,直接利用腦波對作業系統進行操控。
使用者與機器溝通的管道與方式隨著科技的進步而增加,但基本上,人類在使用系統所提供的操作介面時,大多依靠的事日常生活所提供的經驗來做判斷,操作介面符合人性,越能達到直覺的目標,使用者花在與機器溝通的訓練時間就可以相對縮短,但是親易近人之後,也要注意依照此方式所設計出來的操作介面是否擁有足夠的深度,能夠充分發揮硬體設備本身的能力,因為一致性是非常重要的設計原則,為了要使用到更進階的硬體機能就必須呼叫出不同的使用者介面的話,那麼這樣的設計就無法維持其一致性,雖然可以應用到更完整的系統能力,但基本上並不能稱為1款成功的使用者圖形介面。
作業系統的使用者介面發展
嚴格來說,真正將圖形化使用者介面帶入一般資訊應用的,乃是Apple公司,諸如收拉式選單、圖示、拖拉操作以及點擊執行等概念,都是早在1980年代時就由該公司所開發構思出來的,其後Apple公司也持續在圖形操作領域有非常多的進展,諸如微軟、Linux等都只不過是這股風潮之下的追隨者,其中微軟算是在作業系統操作介面中,參考Apple公司最徹底的1家,從早先的Windows 3.x,到目前最新的Vista,處處都可以看到Apple公司作業系統的影子在。
隨著嵌入式系統的發展,使用者也越來越注重裝置上的操作簡易性,在消費型行動設備上,美觀更是成為視覺操作介面的設計要點之一,各家行動設備廠商在美感的發揮程度上各有不同,但是基本上都還是依循的既有的模式,比如說在手機介面設計上,常見的9宮格甚至12宮格操作模式就成為各主流手機介面的標準樣版,收放式選單、圖示以及超連結的概念也被徹底的實行。
台灣的代工思維 無法創造出像Apple公司產品的使用者介面
要在嵌入式系統的有限資源中做繁複的圖形介面設計是一件非常不容易的事情,有時開發者為了省時省事,就只能建議專案領導者以實用為主,避免太多花俏的設計。不過創意依然是使用者介面設計上的最重要元素之一,就以Apple公司的iPhone及過去的iPod為例,其實在技術層面上非常的簡易,都只是現有技術的整合而已,但是為何台灣設計者辦不到?為何台灣著名的手機產業及相關手持式裝置也都只能沿用公版介面或只能沿襲舊有操作習慣?教育是問題之一,但主事者的態度也是關鍵,台灣並不缺乏這方面的設計人才,缺乏的只是宏觀的態度以及長久的遠見。
由於硬體不斷的發展與更新,因此未來的嵌入式系統在使用者介面的設計上還是有非常大的發展空間,國內廠商若能好好的把握這塊市場機會,積極培養人才,並且尊重專業,台灣便有機會可以脫離代工產業流血砍價拼規模的惡性循環,衝出紅海的陰影,另闢一番藍海新天地。
嵌入式Linux的應用方興未艾
嵌入式系統正以它體積小、專用性等特點深入社會應用的各個層次。在此領域中,嵌入式Linux在開發活力上,以及技術深度,可以說是目前嵌入式技術領域的領導者之一,除了有各大半導體、伺服器端、終端硬體設備廠商的支援以外,在開發難易度上,也因為具備了非常豐富的支援文件及社團資源,且作業系統本身不需授權費用,或授權費用相對低廉(端視不同廠商的授權方式),成本更顯低廉,因此被嵌入式硬體廠商廣泛採用。
在特定嵌入式應用領域中,比如PDA、智慧型手機、UMPC、工控電腦等嵌入式架構中,嵌入式Linux的圖形使用者界面的性能將直接影響整個系統的操作感受與流暢度,因此產品製造商和最終使用者。如何針對使用者的需求,在已有的圖形使用者界面上,訂製和改進出具有特定功能的圖形使用者界面,是嵌入式系統開發者共同關注的問題。
嵌入式Linux圖形使用者界面的分類
嵌入式系統往往是非常特化的硬體設備,針對不同的應用,因此對圖形使用者界面的需求也會有所不同。有的系統只要求簡單的圖形功能,而有些系統要求完備的 GUI能力支援。因此很多嵌入式系統需要自行定製的嵌入式圖形使用者界面。以下是幾種常用的嵌入式圖形使用者界面及技術特性:
■MiniGUI
圖說:利用MiniGUI所設計出來的手機操作介面。(資料來源:www.linuxdevices.com)
MiniGUI 是在Linux控制台上執行基於SVGALib和LinuxThread6函式庫的多視窗圖形使用者界面支援系統。MiniGUI 採用了類似Win32的API,實現了簡化的類似微軟視窗風格的圖形使用者界面。 MiniGUI也是1個視窗系統,它的主要組成元素是視窗,在這個基礎上MiniGUI中的視窗可以基本分四類,分別為主視窗、對話框、控制元件和主視窗中的片段。
MiniGUI中的主視窗和Windows應用程式的主視窗概念類似,MiniGUI中的每個主視窗對應於一個單獨的執行緒,通過函式庫存取可建立主視窗以及對應的執行緒。每個執行緒有一個訊息佇列,主視窗從這一訊息佇列中獲取消息並由視窗過程(回調函數)進行處理。MiniGUI的目標是保持現有體積小巧的前提下,在Linux控制台上提供1個迷你視窗系統支援。〝輕薄短小〞是MiniGUI的最大特色。同時MiniGUI又將盡力與微軟的 MSWindows API保持相容。這麼定位是希望MiniGUI可以在未來以Linux 為基礎的應用平台上,提供一個簡單可行的 GUI 支援系統,讓MiniGUI 可以應用在Windows CE系統可以應用的任何場合。
■Microwindows/Nano-X Windows System
圖說:利用Microwindows所設計出來的GUI介面。(資料來源:www.devdrv.co.jp)
Microwindows (已改名為Nano-X Windows System)是1個開放原始碼的自由軟體項目,最初是由台灣人所發展,支援多種平台。該項目的開發相當活躍,大陸也有人參與了其中的開發,並增加了 GB2312等字元編碼的支援。Microwindows的主要特色在於提供了相當完善的圖形功能,包括如 Alpha 混合,3D支援,TrueType 字體支援等高級的功能。使得那些只有在具有大容量硬碟和記憶體配置的高階Windows系統才能實現的視窗環境,如Microsoft Windows和X2Windows,可以在嵌入式設備上順利運作。
Microwindows從原理上採用分層設計的方法,每層次完成特定的功能,並且能夠在不影響其它層次的基礎上針對不同的應用進行改編或者重寫。在最底層方面,顯示螢幕、滑鼠、觸控螢幕等的驅動程式提供了與交互相關的硬體設備的存取;中間層是1個精簡的圖形引擎,提供了劃線、區塊填充、多邊形等多種基本的圖形功能;最上層為圖形應用程式提供了豐富的介面函式庫(API),透過這些函式庫可以自訂桌面和視窗的外觀。目前Microwindows提供2套API,以便能夠更好地適應不同平台應用程序的移植,即 與Win32/Win CE基本兼容的API以及採用X體系的Nano-X API。
設備驅動程序的介面定義在device.h文件中。中間層所提供與設備無關的圖形引擎就是透過存取設備驅動程式跟硬體設備進行溝通。這就保證了當平台硬體設備發生變化的時候,只需要改寫相對應的驅動程式,而無需修改上層程式碼,簡化了開發的流程。icrowindows提供基於Linux2.4.X內核的 FrameBuffer設備驅動程式。FrameBuffer在Linux系統中透過/dev/fb0設備檔案進行工作,利用mmap()系統函式將顯示換衝記憶體映射至系統記憶體中。
Microwindows 能夠在沒有任何作業系統或其他圖形系統的支援下運行,並且具有對無顯示設備進行直接操作的能力。雖然擁有WIN32相容API,便於熟悉Windows開發的使用者進行開發,不過介面仍不夠完善。
■OpenGUI
圖說:OpenGUI的系統架構。(資料來源:www.tutok.sk)
OpenGUI 基於使用組合語言實現的x86圖形核心,提供了一個高階的C/C++圖形/視窗介面。它和MiniGUI一樣,也是使用LGPL授權方式。OpenGUI 提供了2D繪圖架構,訊息驅動的API、BMP檔案格式支援。OpenGUI功能強大、使用方便。使用者甚至可以實現Borland BGI風格的應用程式,或者是QT風格的視窗。OpenGUI支援滑鼠和鍵盤的事件。在Linux上基於Framebuffer3或者SVGALib4實現繪圖。Linux下OpenGUI也支援Mesa3D,支援真實的3D成像效果。在顏色數量方面,OpenGUI已經支援8、16、32位元色深。
由於其基於組合語言實現的核心架構,並利用多媒體加速指令集進行最佳化,因此OpenGUI運行速度非常快,除了可以支援32位元的機器,能夠在MS- DOS,QNX5和Linux下執行,目前OpenGUI主要用來在這些系統中開發圖形應用程式和遊戲。雖然OpenGUI非常穩定,但可移植性因為其核心乃是使用組合語言實作的關係,而會受到影響。
■QT/Embedded(已改名為Qtopia Core)
圖說:QT/Embedded的系統架構。(資料來源:www.tutok.sk)
Qt/Embedded 是Trolltech公司的另一個產品,Qt也是流行的Linux桌面環境KDE 的基礎,KDE是所有主要的Linux發行版的一個標準組件。自從1996年起,Qt開始進入商業應用領域,並且成為全世界數千種成功的應用程式的視覺外觀基礎。雖然走Open Source開發路線,採用GPL授權,但商業應用的話就必需要支付授權費。2005年年初,Trolltech 在大陸北京成立研發據點,在亞洲語系方面的支援會有相當大的突破,Trolltech 還是秉持雙授權(dual-licensing)與社團推廣(community-promoting) 的機制,持續以 GPL/QPL 釋出最新的Qt技術,並且累積加值服務,算是業界相當優秀的長久經營典範。Qt/Embedded是Qt的嵌入式Linux介面,是完整內建C++GUI 和基於 Linux的嵌入式平台開發工具。
由於Qt/Embedded 並不是只針對嵌入式裝置而設計的,Qt/Embedded是來自桌上版本 (UNIX/X11、Windows,與 MacOS X 等平台)Qt圖形介面的簡化與移植。因此,開發者可以持續利用開發桌面應用程式的經驗,來進行嵌入式應用程式開發,開發者不必重新學習一套新的 API,也不需要適應新的程式設計技巧。不過這並不是說原本桌面應用程式可以直接套用到到相對精簡的嵌入式裝置上。事實上,手持式裝置對於螢幕尺寸、圖示的拖放執行,與記憶體資源都與桌上行系統有著相當程度的需求差異。不過,Qt 與Qt/Embedded 在基本的 API 上都是一致的。
由於針對大範圍的應用,Qt/Embedded API的設備開發非常廣泛。Qt/Embedded可以開發市場上多種類型的產品和設備,從消費性電子(智慧型手機、網路終端和set-top box)到工業控制設備(如醫學成像設備、行動訊息系統等)等等,都在其支援之列。這套環境提供的API和Qt/Windows與Qt/X11相同,但不需要使用到X11,取而代之的提供從硬體介面、繪圖函式庫以及完整的GUI工具。Qt/Embedded對儲存記憶體的需求約在800kB到 3MB(x86處理器環境下)左右。其另一個特點就是跨平台,用Qt API開發出來的應用程式,可以在不同的作業系統和視窗系統上執行。
隨著嵌入式處理器運算能力的不斷提高,對外接設備的支援的不斷發展,嵌入式Linux系統的應用也逐漸增多。Qt/Embedded延續了Qt在桌面系統的所有功能以外,豐富的API函式庫支援以及完整的程式編譯模型使得嵌入式Linux系統中的應用程序開發更加便捷。不過由於Qt/Embedded過於完整,在記憶體佔用空間方面就很難下降,因此對於嵌入式裝置的硬體要求也會更高。
flykof 發表在 痞客邦 留言(0) 人氣(8,916)
./mkimage -A arm -O linux -T kernel -C none -a
30008000 -e 30008000 -n linux-2.6.14.1_cs8900 -d zImage uImage
mkimage在製作映像文件的時候,是在原來的可執行映像文件的前面加上一個0x40字節的頭,記錄參數所指定的信息,這樣uboot才能識別這個映像是針對哪個CPU體系架構,哪種OS,哪種類型,載入記憶體中的哪個位置, 入口點在記憶體的那個位置以及映像名是什麼
root@zychip:/home/uboot/tools# ./mkimage
Usage: ./mkimage -l image
-l ==> list image header information
./mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image
-A ==> set architecture to 'arch'
-O ==> set operating system to 'os'
-T ==> set image type to 'type'
-C ==> set compression type 'comp'
-a ==> set load address to 'addr' (hex)
-e ==> set entry point to 'ep' (hex)
-n ==> set image name to 'name'
-d ==> use image data from 'datafile'
-x ==> set XIP (execute in place)
參數說明:
-A 指定CPU的體系結構:
參數表示的CPU體系結構
alpha Alpha
arm A RM
x86 Intel x86
ia64 IA64
mips MIPS
mips64 MIPS 64 Bit
ppc PowerPC
s390 IBM S390
sh SuperH
sparc SPARC
sparc64 SPARC 64 Bit
m68k MC68000
-O 指定操作系統類型,可以取以下值:
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos
-T 指定映像類型,可以取以下值:
standalone、kernel、ramdisk、multi、firmware、script、filesystem
-C 指定映像壓縮方式,可以取以下值:
none 不壓縮
gzip 用gzip的壓縮方式
bzip2 用bzip2的壓縮方式
-a 指定映像在記憶體中的載入地址,映像下載到記憶體時,要按照用mkimage製作映像時,這個參數所指定的地址值來下載
-e 指定映像運行的入口點地址
-n 指定映像檔名
-d 指定製作映像的源文件
其中指定參數 "-a 0x30008000 -e 0x30008000" 指定值不會隨軟體版本有所更改,這個值是根據CPU的記憶體配置而指定的。
flykof 發表在 痞客邦 留言(0) 人氣(10,487)
最近有在使用U-boot所以特地GOOGLE一下找了些U-boot的指令
Printenv 列印環境變數
Uboot> printenv
baudrate=115200
ipaddr=192.168.1.1
ethaddr=12:34:56:78:9A:BC
serverip=192.168.1.5
Environment size: 80/8188 bytes
Setenv 設定新的變數
Uboot> setenv myboard AT91RM9200DK
Uboot> printenv
baudrate=115200
ipaddr=192.168.1.1
ethaddr=12:34:56:78:9A:BC
serverip=192.168.1.5
myboard=AT91RM9200DK
Environment size: 102/8188 bytes
Saveenv 儲存變數
命令將當前定義的所有的變數及其值存入flash中。用來存儲變數及其值的空間只有8k位元組,應不要超過。
Loadb 透過串口Kermit協議下載二進製數據。
Tftp 透過網路下載程式,需要先設定好網路配置
Uboot> setenv ethaddr 12:34:56:78:9A:BC
Uboot> setenv ipaddr 192.168.1.1
Uboot> setenv serverip 192.168.1.254 (tftp伺服器的位址)
下載bin檔案到位址0x20000000處。
Uboot> tftp 20000000 application.bin (application.bin應位於tftp服務程式的目錄)
Uboot> tftp 32000000 vmlinux
把server(IP=環境變數中設定的serverip)中/tftpdroot/ 下的vmlinux透過TFTP讀入到物理內存32000000處。
Md 顯示Memory 的內容。
Mm 修改Memory ,位址自動遞增。
Nm 修改Memory ,位址不自動遞增。
Mw 用模型填充Memory
mw 32000000 ff 10000(把Memory 0x32000000開始的0x10000位元組設為0xFF)
Cp 拷貝一塊Memory 到另一塊
Cmp 比較兩塊Memory 區
這些Memory 操作命令後都可加一個後綴表示操作數據的大小,比如cp.b表示按位元組拷貝。
Protect 寫保護操作
protect on 1:0-3(就是對第一塊FLASH的0-3扇區進行保護)
protect off 1:0-3取消寫保護
Erase 清除扇區。
erase: 刪除FLASH的扇區
erase 1:0-2(就是對每一塊FLASH的0-2扇區進行刪除)
對DataFlash的操作
U-Boot在引導時如果發現NPCS0和NPCS3上連有DataFlash,就會分發虛擬的位址給它,具體為 ︰
0xC0000000---NPCS0
0xD0000000---NPCS3
run 執行設定好的腳本
Uboot> setenv flashit tftp 20000000 mycode.bin\; erase 10020000 1002FFFF\;
cp.b 20000000 10020000 8000
Uboot> saveenv
Uboot> run flashit
bootcmd 保留的環境變數,也是一種腳本
如果定義了該變數,在autoboot模式下,將會執行該腳本的內容。
Go 執行Memory 中的二進製代碼,一個簡單的跳轉到指定位址
Bootm 執行Memory 中的二進製代碼
要求二進製代碼為製定格式的。通常為mkimage處理過的二進製檔案。
起動UBOOT TOOLS製作的壓縮LINUX內核, bootm 3200000
Bootp 透過網路啟動,需要提前設定好硬體位址。
? 得到所有命令清單
help help usb, 列出USB功能的使用說明
ping 注︰只能開發板PING別的機器
usb
usb start: 起動usb 功能
usb info: 列出設備
usb scan: 掃描usb storage(u 盤)設備
kgo 起動沒有壓縮的linux內核
kgo 32000000
fatls 列出DOS FAT檔案系統
fatls usb 0列出第一塊U盤中的檔案
fatload 讀入FAT中的一個檔案
fatload usb 0:0 32000000 aa.txt 把USB中的aa.txt 讀到物理Memory 0x32000000處﹗
flinfo 列出flash的訊息
nfs
nfs 32000000 192.168.0.2:aa.txt
把192.168.0.2(LINUX 的NFS檔案系統)中的NFS檔案系統中的aa.txt 讀入Memory 0x32000000處。
flykof 發表在 痞客邦 留言(3) 人氣(34,241)
zlib-1.2.3.tar.gz:檔案壓縮函示庫
環境變數:
flykof 發表在 痞客邦 留言(1) 人氣(1,991)