接觸嵌入式linux接近三年了,從剛開始的逐步摸索到現在基本已經算是Linux的老鳥了,身邊有不少同事或朋友也在學習Linux,總是不得要領,為了記錄一下自己這些年的心得,同時也協助初學者更快的踏入 Linux的世界,在這裡分享一下自己的經驗。
嵌入式linux中文站發現很多LINUX初學者在學習linux圖形方面的知識時會遇到一些概念,如:X、X11、 Xfree86、WM、KDE、GNOME、QT、QT/E、Qtopia、DirectFB、Framebuffer、顯卡加速驅動等等。理解它們之間
轉自:http://blog.csdn.net/cb_121/archive/2008/10/28/3167901.aspx基本使用SVN是CVS的下一個版本,主要用來進資料列版本設定,可以對程式碼,音頻,視頻以及影像檔等,做版本控制。目錄以及檔案是Subversion中可以記錄版本的對象。其主要工作原理如: _ _ _ _ _ _ _ _ _ _ / /
一、環境平台介紹 1、核心kernel環境:vivilinux-2.6.34 交叉編譯器arm-cross4.3.2-EABI(軟浮點運算) 2、yaffs檔案系統源碼包 二、編譯過程 0、從lwww.kernel.org下載linux2.6.34核心,解壓linux-2.6.34.tar.gz2源碼包1、修改vivi/Makefile檔案,在makefile中找到以下兩條資訊並做修改 ARCH ? =arm CROSS_COMPILE
一、linux核心模組簡介 linux核心整體結構非常龐大,其包含的組件也非常多。我們怎麼把需要的部分都包含在核心中呢? 一種辦法是把所有的需要的功能都編譯到核心中。這會導致兩個問題,一是產生的核心會很大,二是如果我們要在現有的核心中新增或刪除功能,不得不重新編譯核心,工作效率會非常的低,同時如果編譯的模組不是很完善,很有可能會造成核心崩潰。
在 Linux中我們經常用到隨身碟、SD卡的掛載問題,每次都手動掛載或卸載非常麻煩,我們可以採取以下方法實現自動掛載或卸載隨身碟、SD卡1、首先在/etc/init.d/rsC中加入以下語句echo /sbin/mdev > /proc/sys/kernel/hotplug2、在/etc/下簡曆medv.conf的檔案,包含以下內容sd[a-z][0-9] 0:0 666 @(/etc/hotplug/insert.sh $MDEV $SUBSYSTEM)sd[a-
Linux和uClinux比較分析 標準Linux是針對有MMU的處理器設計的。在這種處理器上,虛擬位址被送到MMU,把虛擬位址映射為物理地址。通過賦予每個任務不同的虛擬-物理地址轉換映射,支援不同任務之間的保護。 uClinux是針對控制領域的嵌入式linux作業系統,它從Linux 2.0/2.4核心派生而來,沿襲了主流Linux的絕大部分特性。適合不具備記憶體管理單元(MMU)的微處理器/微控制器。沒有MMU支援是uClinux與主流Linux的基本差異。
對uCLinux來說,其設計針對沒有MMU的處理器,不能使用處理器的虛擬記憶體管理技術。uCLinux仍然採用儲存空間的分頁管理,系統在啟動時把實際儲存空間進行分頁。在載入應用程式時程式分頁載入。但是由於沒有MMU管理,所以實際上uCLinux採用實儲存空間管理原則。uCLinux系統對於記憶體的訪問是直接的,所有程式中訪問的地址都是實際的物理地址。作業系統對記憶體空間沒有保護,各個進程實際上共用一個Runspace。一個進程在執行前,系統必須為進程分配足夠的連續地址空間,然後全部載入主儲存空間
file_operations 不可能被拋棄。它是字元裝置的基礎結構,各種裝置模型或者說匯流排,只是對字元裝置進行了封裝。 驅動一定是核心模組 核心模組不一定是驅動 裝置模型的初衷 是省電 建立一條 掛有 所有裝置的樹 全域裝置樹 與使用者空間的通訊:裝置間的通訊 都是通過 sysfs檔案系統實現的 把裝置模型的介面以檔案的形式 暴露給使用者可以通過 讀寫檔案的方式 配置裝置裝置模型的經濟基礎決定了裝置模型的上層建築kobject是構成裝置模型的最小單元 是構成裝置模型的核心結構 把一些
目前,Linux軟體工程師大致可分為兩個層次: (1)Linux應用軟體工程師(Application Software Engineer): 主要利用C庫函數和Linux API進行應用軟體的編寫; 從事這方面的開發工作,主要需要學習:符合linux posix標準的API函數及系統調用,linux的多任務編程技巧:多進程、多線程、處理序間通訊、多任務之間的同步互斥等,嵌入式資料庫的學習,UI編程:QT、miniGUI等。 (2)Linux韌體工程師(Firmware
struct super_operation new_super{ .read=new_read; .write=new_write; // 更多的這樣的語句};另外還有一種文法是下面這個樣子的:struct super_operation new_super{ read: new_read; write: new_write; // 更多的這樣的語句}; 第一種吧,在核心中為結構體變數賦值,這樣賦值不用關係結構體變數中元素的順序的問題。而第二種,是C中的位段。 有些資訊在儲存時,
bootloader-u-boot移植 u-boot-2010.06在unsp2440上的移植1 (NOR 啟動) u-boot-2010.06在unsp2440上的移植2(NAND啟動) u-boot-2010.06在unsp2440上的移植3(網路功能配置) u-boot-2010.06在unsp2440上的移植4 (yaffs根檔案系統)Linux2.6核心移植Linux
總覺的在驅動的read,write,ioctl裡面進行大的記憶體申請會有問題。我看到的一些別人的驅動都不是這麼做的。都是在probe的時候,定義個結構體,申請個足夠大的記憶體,和其中有指標和裝置有關係。這樣你在read。write,ioctl的時候,都可以通過檔案標識符得到裝置,裝置通過和結構體的關係得到結構體指標,從而得到申請的記憶體指標,你就可以使用已經申請好的記憶體,而不是在read裡面定義個大數組。
echo要變換顏色的時候,要使用參數-e格式: echo -e "\033[字背景顏色;字型顏色m字串\033[0m"例如: echo -e "\033[41;36m something here \033[0m"其中41的位置代表底色, 36的位置是代表字的顏色註:1、字背景顏色和文字顏色之間是英文的“""”2、文字顏色後面有個m3、字串前後可以沒有空格,如果有的話,輸出也是同樣有空格那些ascii code 是對顏色調用的始末. \033[ ; m ……
如何修改Linux命令提示字元 2011-02-10 14:01:23 www.hackbase.com 來源:互連網 Linux修改環境變數PS1(命令列提示符),可以使用vi編輯/etc/profile檔案,在最後加上:export PS1=’[u@h W]$ ‘即可,其中u顯示目前使用者帳號,h顯示當前主機名稱,W顯示當前路徑,$顯示’$'符號 Linux修改環境變數PS1(命令列提示符),可以使用vi編輯/etc/profile檔案,在最後加上:export
在核心2.4中堆棧是這麼定義的: union task_union { struct task_struct task; unsigned long
剛剛 開始研究 嵌入式Linux 感覺 比較難 接下來的日子裡 我會與大家 一起分享我的學習成果 也作為我的學習筆記吧“學習貴在堅持,別畏難”首先是 Linux 的基礎Linux 的特點:1.免費 開源2.可移植性,裝置平台無關性3.強大的網路功能4.POSIX(可移植作業系統介面)標準5.多任務,多使用者作業系統也這是由於這些優點 所以常被應用於 企業服務應用(sina,baidu...) 嵌入式系統(ARM,MIPS,PowerPC...)以及個人桌面應用(redhat Ubuntu ...
嵌入式Linux作業系統學習規劃ARM+LINUX路線,主攻嵌入式Linux作業系統及其上應用軟體開發目標: (1) 掌握主流嵌入式微處理器的結構與原理(初步定為arm9) (2) 必須掌握一個嵌入式作業系統 (初步定為uclinux或linux,版本待定) (3) 必須熟悉嵌入式軟體開發流程並至少做一個嵌入式軟體項目。 從事嵌入式軟體開發的好處是:
終於可以清閑下來打理一下我的blog了,台資企業真的事情很多很煩……前幾篇文章對字元裝置有個簡單介紹,並以簡單的一個字元裝置驅動作結尾,其實linux上大部分驅動程式都是字元裝置程式,Linux源碼中也可以看到很多的字元裝置驅動,所以供學習的代碼還是很多的。這一節本想說一下如何測試裝置驅動,但是因為最近看了看核心鏈表,所以趁還記的比較清楚趕緊記錄下來。有不到位的地方煩請指正。Linux
Linux