s3c2410交叉編譯環境搭建
一、准備工作
a) 首先,你要有一台PC(這不廢話么^_^),裝好了Linux。
b) 安裝好GCC(這個指的是host gcc,用於編譯生成運行於pc機程序的)、make、ncurses等工具。
c) 下載一份純凈的Linux內核源碼包,並解壓好。
注意,如果你是為當前PC機編譯內核,最好使用相應的Linux發行版的源碼包。
不過這應該也不是必須的,因為我在我的Fedora 13上(其自帶的內核版本是2.6.33.3),就下載了一個標準的內核linux-2.6.32.65.tar.xz,並且順利的編譯安裝成功了,上電重啟都OK的。不過,我使用的.config配置文件,是Fedora 13自帶內核的配置文件,即/lib/moles/`uname -r`/build/.config
d) 如果你是移植Linux到嵌入式系統,則還要再下載安裝交叉編譯工具鏈。
例如,你的目標單板CPU可能是arm或mips等cpu,則安裝相應的交叉編譯工具鏈。安裝後,需要將工具鏈路徑添加到PATH環境變數中。例如,你安裝的是arm工具鏈,那麼你在shell中執行類似如下的命令,假如有類似的輸出,就說明安裝好了。
[root@localhost linux-2.6.33.i686]# arm-linux-gcc --version
arm-linux-gcc (Buildroot 2010.11) 4.3.5
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for ing conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
註:arm的工具鏈,可以從這里下載:回復「ARM」即可查看。
二、設置編譯目標
在配置或編譯內核之前,首先要確定目標CPU架構,以及編譯時採用什麼工具鏈。這是最最基礎的信息,首先要確定的。
如果你是為當前使用的PC機編譯內核,則無須設置。
否則的話,就要明確設置。
這里以arm為例,來說明。
有兩種設置方法():
a) 修改Makefile
打開內核源碼根目錄下的Makefile,修改如下兩個Makefile變數並保存。
ARCH := arm
CROSS_COMPILE := arm-linux-
注意,這里cross_compile的設置,是假定所用的交叉工具鏈的gcc程序名稱為arm-linux-gcc。如果實際使用的gcc名稱是some-thing-else-gcc,則這里照葫蘆畫瓢填some-thing-else-即可。總之,要省去名稱中最後的gcc那3個字母。
b) 每次執行make命令時,都通過命令行參數傳入這些信息。
這其實是通過make工具的命令行參數指定變數的值。
例如
配置內核時時,使用
make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
編譯內核時使用
make ARCH=arm CROSS_COMPILE=arm-linux-
注意,實際上,對於編譯PC機內核的情況,雖然用戶沒有明確設置,但並不是這兩項沒有配置。因為如果用戶沒有設置這兩項,內核源碼頂層Makefile(位於源碼根目錄下)會通過如下方式生成這兩個變數的值。
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
-e s/sh[234].*/sh/ )
ARCH?= $(SUBARCH)
CROSS_COMPILE ?=
經過上面的代碼,ARCH變成了PC編譯機的arch,即SUBARCH。因此,如果PC機上uname -m輸出的是ix86,則ARCH的值就成了i386。
而CROSS_COMPILE的值,如果沒配置,則為空字元串。這樣一來所使用的工具鏈程序的名稱,就不再有類似arm-linux-這樣的前綴,就相當於使用了PC機上的gcc。
最後再多說兩句,ARCH的值還需要再進一步做泛化。因為內核源碼的arch目錄下,不存在i386這個目錄,也沒有sparc64這樣的目錄。
因此頂層makefile中又構造了一個SRCARCH變數,通過如下代碼,生成他的值。這樣一來,SRCARCH變數,才最終匹配到內核源碼arch目錄中的某一個架構名。
SRCARCH := $(ARCH)
ifeq ($(ARCH),i386)
SRCARCH := x86
endif
ifeq ($(ARCH),x86_64)
SRCARCH := x86
endif
ifeq ($(ARCH),sparc64)
SRCARCH := sparc
endif
ifeq ($(ARCH),sh64)
SRCARCH := sh
endif
三、配置內核
內核的功能那麼多,我們需要哪些部分,每個部分編譯成什麼形式(編進內核還是編成模塊),每個部分的工作參數如何,這些都是可以配置的。因此,在開始編譯之前,我們需要構建出一份配置清單,放到內核源碼根目錄下,命名為.config文件,然後根據此.config文件,編譯出我們需要的內核。
但是,內核的配置項太多了,一個一個配,太麻煩了。而且,不同的CPU架構,所能配置的配置項集合,是不一樣的。例如,某種CPU的某個功能特性要不要支持的配置項,就是與CPU架構有關的配置項。所以,內核提供了一種簡單的配置方法。
以arm為例,具體做法如下。
a) 根據我們的目標CPU架構,從內核源碼arch/arm/configs目錄下,找一個與目標系統最接近的配置文件(例如s3c2410_defconfig),拷貝到內核源碼根目錄下,命名為.config。
注意,如果你是為當前PC機編譯內核,最好拷貝如下文件到內核源碼根目錄下,做為初始配置文件。這個文件,是PC機當前運行的內核編譯時使用的配置文件。
/lib/moles/`uname -r`/build/.config
這里順便多說兩句,PC機內核的配置文件,選擇的功能真是多。不編不知道,一編才知道。Linux發行方這樣做的目的,可能是想讓所發行的Linux能夠滿足用戶的各種需求吧。
b) 執行make menuconfig對此配置做一些需要的修改,退出時選擇保存,就將新的配置更新到.config文件中了。
注
2. 嵌入式系統原理與應用---簡答題
環境搭建
一、認識開發板
1,ARM開發板的硬體配置(以S3C2410為例)
CPU、SDRAM、FLASH、LCD(包括鍵盤LED驅動器,觸摸屏)、乙太網、USB、串口、調試介面(JTAG)、AD及擴展。
2,ARM體系結構與編程。
僅僅了解arm開發板的硬體構成顯然是不夠的,還需要由表及裡,了解ARM體系結構與編程。這部分內容有相應文檔,中文版有杜春雷編寫的《ARM體系結構與編程》。
註:SDRAM = Synchronous DRAM,同步動態隨機存取存儲器
這是一種與CPU實現外頻Clock同步的內存模式,一般都採用168Pin的內存模組,工作電壓為3.3V。所謂clock同步是將CPU與RAM通過一個相同的時鍾鎖在一起,使RAM和CPU能夠共享一個時鍾周期,以相同的速度同步工作,這樣可以取消等待周期,減少數據傳輸的延遲,因此可提升計算機的性能和效率。
二、開發板與宿主機直接通信
開發板與主機之間的通信有4種方式:
1.JTAG。
2.COM。傳輸協議通常是xmodem/ymodem/zmodem.
3.網口。TFTP協議。
4.SD卡口
三、宿主機之windows平台
開發環境:ADS1.2+超級終端
ADS1.2:學會使用ADS平台軟體,會用AXD進行調試。
超級終端:一般設置波特率115200,數據位8位,停止位1,無奇偶校驗,軟體硬體流控制設為無。
配置網路:主要是配置NFS,需關閉防火牆,簡化嵌入式網路調試環境設置過程。
四、宿主機之Linux平台
開發環境:Linux+minicom
Linux:定製或全部安裝。下載安裝交叉編譯器
minicom:初始化,配置,同windows下超級終端。
配置網路:主要是配置NFS,需關閉iptables。
五、文件燒寫
包括燒寫內核,根文件系統,應用程序等。
內核映像的燒寫有兩種方式:
1.vivi,xmodem協議下載,然後燒寫
2.linux系統啟動後,使用imagewrite工具燒寫imagewrite /dev/mtd/0 zImage:192k
3. 從底層硬體到上層應用,嵌入式軟體的開發可以分為哪幾類
從底層硬體到上層應用,嵌入式軟體的開發可以分為以下三類:
1、嵌入式操作系統開發
嵌入式操作系統EOS(Embedded Operating System)是一種被廣泛使用的系統軟體。過去,它主要用於工業控制和國防系統領域。 EOS負責分配和調度嵌入式系統的所有軟體和硬體資源,控制和協調並發活動。
它必須體現其所在系統的特徵,並能夠通過載入和卸載某些模塊來實現系統所需的功能。嵌入式操作系統通常以商業操作為主。自1980年代以來,商業嵌入式操作系統已開始蓬勃發展。
2、嵌入式支撐軟體開發
支撐軟體是用於幫助和支撐軟體開發的軟體,通常包括資料庫和開發工具,其中資料庫是最重要的。隨著移動通信技術的進步,人們對移動數據處理提出了更高的要求。嵌入式資料庫技術已受到學術,工業,軍事和民用領域的關注。
嵌入式移動資料庫或簡稱為移動資料庫(EMDBS)是支持移動計算或特定計算模型的資料庫管理系統。資料庫系統與操作系統和特定的應用程序集成在一起,並在各種智能嵌入式設備或移動設備上運行。
3、 嵌入式應用軟體開發
嵌入式應用軟體是針對特定應用領域,基於某一固定的硬體平台,用來達到用戶預期目標的計算機軟體。由於用戶任務可能有時間和精度上的要求,因此有些嵌入式應用軟體需要特定嵌入式操作系統的支持。
嵌入式應用軟體和普通應用軟體有一定的區別,它不僅要求其准確性、安全性和穩定性等方面能夠滿足實際應用的需要,而且還要盡可能地進行優化,以減少對系統資源的消耗,降低硬體成本。
(3)s3c2410交叉編譯環境搭建擴展閱讀:
嵌入式軟體開發的特點:
近年來,隨著計算機技術的迅猛發展,基於通信技術的信息技術以及Internet的廣泛應用,傳統的控制學科正在發生變化,並出現了許多新的增長點。
嵌入式系統涉及系統的最低層,晶元層的信息處理和控制。從某種意義上說,理解和控制這些「微觀」世界是控制的真正目的。就設計思想和總體架構而言,通常意義上的嵌入式系統和控制系統之間存在許多差異。
在嵌入式系統和開發環境方面,仍然存在許多仍在研究和開發中的問題,例如嵌入式系統的硬體和軟體協同設計方法;多目標、多任務微內核嵌入式操作系統;分布式嵌入式系統實時問題,分布式計算,分布式信息交互和綜合處理;嵌入式系統的多目標交叉編譯和調試工具的研究等。
4. Linux C編程從初學到精通的目 錄
第1部分 基礎篇
第1章 Linux系統概述 1
1.1 什麼是Linux 2
1.2 Linux系統特點及主要功能 2
1.2.1 Linux系統特點 3
1.2.2 Linux系統的主要功能 3
1.3 Linux的內核版本和發行版本 5
1.4 系統的安裝 6
1.4.1 系統安裝前的准備工作 6
1.4.2 從光碟安裝Linux 6
1.4.3 從硬碟安裝Linux 22
1.4.4 在虛擬機下安裝Linux 22
1.5 Shell的使用 27
1.5.1 Shell簡介 27
1.5.2 常見Shell的種類 28
1.5.3 Shell的簡單使用 29
1.5.4 通配符 30
1.5.5 引號 31
1.5.6 注釋符 33
1.6 Linux常用命令 33
1.6.1 與目錄相關的命令 33
1.6.2 與文件相關的命令 34
1.6.3 與網路服務相關的命令 35
1.7 本章小結 35
實戰演練 36
第2章 C語言編程基礎 37
2.1 C語言的歷史背景 38
2.2 C語言的特點 38
2.3 C語言的基本數據類型 39
2.3.1 整型 39
2.3.2 實型 40
2.3.3 字元型 41
2.4 運算符與表達式 43
2.4.1 算術運算符與算術表達式 43
2.4.2 賦值運算符與賦值表達式 44
2.4.3 逗號運算符與逗號表達式 45
2.5 C程序的3種基本結構 46
2.5.1 順序結構 46
2.5.2 選擇結構 47
2.5.3 循環結構 51
2.6 C語言中的數據輸入與輸出 54
2.6.1 字元輸出函數putchar 54
2.6.2 字元輸入函數getchar 54
2.6.3 格式輸出函數printf 54
2.6.4 格式輸入函數scanf 56
2.7 函數 57
2.7.1 函數的定義 57
2.7.2 函數的調用 58
2.7.3 變數的存儲類別 59
2.8 數組 62
2.8.1 一維數組的定義和使用 63
2.8.2 二維數組的定義和使用 64
2.8.3 字元數組和字元串 65
2.8.4 常用字元串處理函數 66
2.9 指針 69
2.9.1 地址和指針 69
2.9.2 指針的定義和使用 70
2.9.3 數組與指針 71
2.9.4 字元串與指針 72
2.9.5 指向函數的指針 72
2.10 結構體和共用體 73
2.10.1 定義和引用結構體 73
2.10.2 結構體數組 74
2.10.3 指向結構體的指針 74
2.10.4 共用體 75
2.10.5 使用typedef定義類型 77
2.11 鏈表 77
2.11.1 鏈表概述 77
2.11.2 建立動態單向鏈表 78
2.11.3 單向鏈表的輸出 80
2.11.4 對單向鏈表的刪除操作 80
2.11.5 對單向鏈表的插入操作 81
2.11.6 循環鏈表 82
2.11.7 雙向鏈表 82
2.12 位運算符和位運算 83
2.12.1 「按位與」運算符(&) 84
2.12.2 「按位或」運算符(|) 84
2.12.3 「取反」運算符(~) 84
2.12.4 「異或」運算符(^) 84
2.12.5 移位運算符(<<和>>) 85
2.12.6 位域 85
2.13 C語言預處理命令 86
2.13.1 宏定義 86
2.13.2 文件包含 87
2.13.3 條件編譯 88
2.13.4 #error等其他常用預處理命令 89
2.14 本章小結 89
實戰演練 89
第3章 vi與Emacs編輯器 91
3.1 vi的使用 92
3.1.1 啟動與退出vi 92
3.1.2 vi的命令行模式 93
3.1.3 vi的插入模式 96
3.1.4 vi的底行模式 96
3.2 vi使用實例 97
3.3 Emacs的使用 100
3.3.1 啟動與退出Emacs 101
3.3.2 Emacs下的基本操作 102
3.4 Emacs使用實例 107
3.5 本章小結 109
實戰演練 109
第4章 gcc編譯器與gdb調試器 110
4.1 gcc編譯器簡介 111
4.2 如何使用gcc 112
4.2.1 gcc編譯初步 112
4.2.2 警告提示功能 114
4.2.3 優化gcc 116
4.2.4 連接庫 119
4.2.5 同時編譯多個源程序 120
4.2.6 管道 120
4.2.7 調試選項 121
4.3 gdb調試器 122
4.3.1 gdb簡介 122
4.3.2 gdb常用命令 123
4.3.3 gdb調試初步 124
4.4 gdb的使用詳解 126
4.4.1 調用gdb 127
4.4.2 使用斷點 127
4.4.3 查看運行時數據 129
4.4.4 查看源程序 133
4.4.5 改變程序的執行 135
4.5 xxgdb調試器簡介 138
4.6 本章小結 139
實戰演練 139
第5章 make的使用和Makefile的編寫 141
5.1 什麼是make 142
5.1.1 make機制概述 142
5.1.2 make與Makefile的關系 144
5.2 Makefile的書寫規則 147
5.2.1 Makefile的基本語法規則 148
5.2.2 在規則中使用通配符 149
5.2.3 偽目標 149
5.2.4 多目標 151
5.2.5 自動生成依賴性 151
5.3 Makefile的命令 152
5.4 變數 154
5.4.1 變數的基礎 154
5.4.2 賦值變數 154
5.4.3 define關鍵字 156
5.4.4 override指示符 156
5.4.5 目標變數和模式變數 157
5.5 常用函數調用 158
5.5.1 字元串處理函數 158
5.5.2 文件名操作函數 162
5.5.3 循環函數 164
5.5.4 條件判斷函數 165
5.5.5 其他常用函數 166
5.6 隱式規則 168
5.6.1 隱式規則舉例 168
5.6.2 隱式規則中的變數 169
5.6.3 使用模式規則 170
5.7 本章小結 173
實戰演練 173
第2部分 提高篇
第6章 文件I/O操作 174
6.1 Linux文件系統簡介 175
6.1.1 Linux的文件系統結構 175
6.1.2 文件類型 176
6.1.3 文件訪問許可權 179
6.2 基於文件描述符的I/O操作 179
6.2.1 文件描述符 180
6.2.2 標准輸入、標准輸出和標准出錯 180
6.2.3 文件重定向 181
6.2.4 文件的創建、打開與關閉 182
6.2.5 文件的定位 186
6.2.6 文件的讀寫 188
6.3 文件的屬性操作 192
6.3.1 改變文件訪問許可權 192
6.3.2 改變文件所有者 193
6.3.3 重命名 193
6.3.4 修改文件長度 194
6.4 文件的其他操作 195
6.4.1 stat、fstat和lstat函數 195
6.4.2 p和p2函數 196
6.4.3 fcntl函數 197
6.4.4 sync和fsync函數 197
6.5 特殊文件的操作 198
6.5.1 目錄文件的操作 198
6.5.2 鏈接文件的操作 201
6.5.3 管道文件的操作 204
6.5.4 設備文件 204
6.6 本章小結 205
實戰演練 205
第7章 基於流的I/O操作 206
7.1 流與緩存 207
7.1.1 流和FILE對象 207
7.1.2 標准輸入、標准輸出和標准出錯 207
7.1.3 緩存 207
7.1.4 對緩存的操作 210
7.2 流的打開與關閉 212
7.2.1 流的打開 212
7.2.2 流的關閉 214
7.2.3 流關閉前的工作 216
7.3 流的讀寫 216
7.3.1 基於字元的I/O 217
7.3.2 基於行的I/O 220
7.3.3 直接I/O 222
7.3.4 格式化I/O 224
7.4 本章小結 226
實戰演練 227
第8章 進程式控制制 228
8.1 進程的基本概念 229
8.1.1 Linux進程簡介 229
8.1.2 進程與作業 230
8.1.3 進程標識 230
8.2 進程式控制制的相關函數 232
8.2.1 fork和vfork函數 232
8.2.2 exec函數 237
8.2.3 exit和_exit函數 242
8.2.4 wait和waitpid函數 245
8.2.5 進程的一生 251
8.2.6 用戶ID和組ID 251
8.2.7 system函數 253
8.3 多個進程間的關系 255
8.3.1 進程組 255
8.3.2 會話期 256
8.3.3 控制終端 257
8.4 本章小結 259
實戰演練 259
第9章 信號 260
9.1 Linux信號簡介 261
9.1.1 信號的基本概念 261
9.1.2 信號處理機制 265
9.2 信號操作的相關函數 267
9.2.1 信號的處理 267
9.2.2 信號的發送 274
9.2.3 信號的阻塞 282
9.2.4 計時器與信號 284
9.3 本章小結 286
實戰演練 287
第10章 進程間通信 288
10.1 進程間通信簡介 289
10.2 管道 290
10.2.1 管道的概念 290
10.2.2 管道的創建與關閉 291
10.2.3 管道的讀寫 292
10.3 命名管道 297
10.3.1 命名管道的概念 297
10.3.2 命名管道的創建 297
10.3.3 命名管道的讀寫 299
10.4 消息隊列 303
10.4.1 消息隊列的概念 303
10.4.2 消息隊列的創建與打開 305
10.4.3 消息隊列的讀寫 306
10.4.4 獲得或設置消息隊列屬性 308
10.5 共享內存 312
10.5.1 共享內存的概念 312
10.5.2 共享內存的相關操作 313
10.6 信號量 318
10.6.1 信號量的概念 319
10.6.2 信號量集的相關操作 320
10.7 本章小結 325
實戰演練 326
第11章 網路編程 327
11.1 網路編程的基礎知識 328
11.1.1 計算機網路體系結構 328
11.1.2 傳輸控制協議TCP 333
11.1.3 用戶數據報協議UDP 335
11.1.4 客戶機/伺服器模式 336
11.2 套介面編程基礎 336
11.2.1 什麼是套介面 337
11.2.2 埠號的概念 338
11.2.3 套介面的數據結構 338
11.2.4 基本函數 340
11.3 TCP套介面編程 343
11.3.1 TCP套介面通信工作流程 343
11.3.2 TCP套介面Client/Server程序實例 356
11.4 UDP套介面編程 360
11.4.1 UDP套介面通信工作流程 360
11.4.2 UDP套介面Client/Server程序實例 362
11.5 原始套介面編程 365
11.5.1 原始套介面的創建 365
11.5.2 原始套介面程序實例 365
11.6 本章小結 376
實戰演練 376
第12章 Linux圖形界面編程 377
12.1 Linux下的圖形界面編程簡介 378
12.1.1 Qt簡介 378
12.1.2 GTK+簡介 378
12.2 界面基本元件 381
12.2.1 一個簡單的例子 381
12.2.2 窗口 383
12.2.3 標簽 385
12.2.4 按鈕 386
12.2.5 文本框 387
12.3 界面布局元件 389
12.3.1 表格 390
12.3.2 框 393
12.3.3 窗格 395
12.4 其他常用元件 398
12.4.1 進度條、微調按鈕、組合框 398
12.4.2 單選按鈕、復選按鈕 402
12.4.3 下拉菜單 404
12.5 信號與回調函數 406
12.6 本章小結 409
實戰演練 409
第3部分 實戰篇
第13章 設計Linux下的計算器 411
13.1 軟體功能分析 412
13.2 程序模塊的劃分 413
13.3 軟體的具體實現 415
13.3.1 頭文件 415
13.3.2 十六進制界面顯示函數 416
13.3.3 十進制界面顯示函數 417
13.3.4 八進制界面顯示函數 418
13.3.5 二進制界面顯示函數 419
13.3.6 進制間轉換函數 420
13.3.7 信號處理模塊 423
13.3.8 主函數 432
13.4 軟體使用效果演示 438
13.5 本章小結 439
第14章 Linux平台下聊天軟體的設計 440
14.1 軟體功能概述 441
14.1.1 伺服器端功能需求 441
14.1.2 客戶端功能需求 442
14.1.3 錯誤處理需求 442
14.2 Glade集成開發工具簡介 443
14.3 軟體功能模塊劃分 444
14.3.1 伺服器功能模塊劃分 444
14.3.2 客戶端功能模塊劃分 445
14.3.3 消息標識的定義 445
14.3.4 消息結構體的設計 446
14.4 伺服器程序的具體實現 447
14.4.1 伺服器消息處理流程 447
14.4.2 伺服器主要函數和變數 448
14.4.3 伺服器消息處理模塊的設計與實現 449
14.4.4 伺服器數據存儲的方法 450
14.4.5 用戶注冊流程 450
14.5 客戶端程序的具體實現 451
14.5.1 客戶端操作流程 451
14.5.2 客戶端發送和接收消息流程 451
14.5.3 客戶端主要函數和變數 452
14.5.4 客戶端功能模塊的設計與實現 453
14.6 聊天軟體使用效果演示 455
14.7 本章小結 459
第15章 Linux遠程管理工具的設計 460
15.1 軟體功能概述 461
15.1.1 Webmin簡介 461
15.1.2 軟體總體設計 461
15.2 伺服器端程序設計 463
15.2.1 伺服器端工作流程 463
15.2.2 系統用戶管理操作 464
15.2.3 系統用戶組的管理操作 466
15.2.4 系統服務啟動管理 468
15.2.5 DNS管理操作 469
15.2.6 Apache服務管理操作 471
15.2.7 FTP服務管理操作 474
15.3 客戶端程序 475
15.3.1 連接界面 475
15.3.2 主界面 477
15.4 本章小結 479
第16章 Linux下簡易防火牆軟體的設計 480
16.1 Netfilter基礎 481
16.1.1 什麼是Netfilter 481
16.1.2 Netfilter的HOOK機制 482
16.1.3 HOOK的調用 485
16.1.4 HOOK的實現 486
16.1.5 IPTables簡介 488
16.1.6 Netfilter可以實現的控制功能 489
16.2 軟體設計概述 491
16.2.1 軟體整體框架 491
16.2.2 管理端的設計 492
16.2.3 控制端的設計 493
16.3 用Netfilter設計控制端功能模塊 495
16.3.1 ICMP管理控制模塊 495
16.3.2 FTP管理控制模塊 497
16.3.3 HTTP管理控制模塊 499
16.3.4 模塊的編譯、載入與卸載 499
16.4 軟體功能測試 501
16.5 本章小結 503
第17章 基於Linux的嵌入式家庭網關遠程交互操作平台的設計 504
17.1 嵌入式技術簡介 505
17.1.1 嵌入式系統的概念 505
17.1.2 嵌入式操作系統 506
17.1.3 嵌入式處理器 507
17.2 家庭網關的概念及其網路體系結構 509
17.2.1 智能家庭網路的概念 509
17.2.2 家庭網關的遠程交互操作技術簡介 510
17.2.3 嵌入式家庭網關的網路體系結構 510
17.3 嵌入式家庭網關的開發平台 511
17.3.1 S3C2410微處理器簡介 511
17.3.2 交叉編譯環境的建立 513
17.4 遠程交互平台的設計 515
17.4.1 應用軟體的開發模式 515
17.4.2 嵌入式Web伺服器 516
17.4.3 通用網關介面CGI 519
17.5 Linux下軟體模塊的具體實現 520
17.5.1 登錄驗證模塊 521
17.5.2 串口通信模塊 521
17.5.3 中央空調控制模塊 522
17.5.4 智能水表數據採集模塊 528
17.5.5 試驗結果 528
17.6 本章小結 529
5. 怎麼實現智能插座接入linux操作系統
基於Linux操作系統的 智能家居的設計
智能家居是當前社會一個新穎的話題,也是電子技術發展的方面,把電子技術充分應用在生活中。然而到目前為止,智能家居才做到智能小區這個地步,因為實現智能家居的費用比較高。智能家居也是物聯網的一個分支,把家庭中的相關家居通過一個控制平台,連接到網路上,在聯網的條件下,可以隨時查看家裡的情況和控制。
物聯網的興起,為智能家居提供了條件。如何通過簡化物聯網終端設備,最終開發出一套經濟實用的支持多終端應用的智能家居物聯網平台是非常有意義、有價值的工作。本系統基於Linux操作系統,開發了一套融合無線移動網路、射頻識別裝置的智能家居控制系統。此系統具有智能抄表、遠程開啟電器、射頻識別和遠程遙控等功能。
1系統概述
本系統採用S3C2410晶元作為主控制器,操作界面為3.2寸TFT觸摸顯示屏。上電後,顯示屏顯示整個家居系統網路內各設備,每個設備分別對應一個圖標,包括燈光控制、風扇、冰箱、空調、溫度、電飯煲、煙霧、燃氣流量採集等。點擊圖標進入該設備相應的詳細信息欄。進入燈光控制界面,可以方便地查看家中各房間亮燈情況,也可遠程通過簡訊方式控制各房間的燈的亮滅;燃氣使用情況可方便地發送至相關採集部門;坐在辦公室,一條簡訊可以將電飯煲電源接通。家居中各設備與主控平台間選擇了2.4 GHz的無線射頻收發晶元nRF2401,通過它可以實現各家居設備與主控平台間的無線通信。主控平台與外網的通信,採用的是ATK-SIM900A GSM/GPRS終端無線模塊。煙霧感測器採用MQ-2感測器來採集室內煙霧情況。
嵌入式ARM2410系統開發平台是整個智能家居系統的監控與管理中心,它主要集成了無線通信模塊、射頻識別模塊、紅外感應模塊、觸摸顯示屏。該總控平台一方面可以通過無線模塊接收到外部命令(例如:手機簡訊),並通過射頻識別,控制對應的家居設備按指示工作,例如,打開電飯煲、空調或洗衣機。另一方面,各家居設備運行信息可以通過射頻模塊接收採集(例如電表讀數等),處理後,可以將數據發送到嵌入式ARM2410系統開發平台,該平台將數據分類處理後,可選擇有用數據發送至對應公司伺服器(例如供電局、水廠等),實現自動抄表。
智能家居控制系統的中的每一個家居設備,都需要分別安裝一個射頻識別模塊,通過該模塊可以與嵌入式ARM2410系統開發平台實現短距離無線通信。
2射頻識別模塊
nRF2401是一款工作在2.4~2.5 GHz世界通用ISM頻段的單片射頻收發器件。該射頻識別模塊可以實現多機通信,多機通信採用頻分多址的方法,只需要在接收端對不同的通道配置地址即可。發送端使用相應的地址作為本機地址。接收數據時通過讀取STATUS中相關位即可得知接收的是哪個通道的數據。射頻識別模塊內包括:頻率發生器、增強型 SchockBurstTM模式控制器、功率放大器、晶體振盪器、調制器和解調器。輸出功率頻道的選擇和協議可以通過對應的SPI介面進行設置。射頻識別模塊功耗低,當工作在發射模式下發射功率為-6 dBm時,電流消耗為9.0 mA;接收模式時為12.3 mA,掉電模式和待機模式下電流消耗更低。
nRF2401在接收模式下可以接收6路不同通道的數據,nRF2401在星形網路中的結構如所示。每一個數據通道使用不同的地址,但是共用相同的頻道,也就是說6個不同的nRF2401設置為發送模式後可以與同一個設置為接收模式的nRF2401進行通信,而設置為接收模式的 nRF2401可以對這6個發射端進行識別。同一時刻,所有的數據通道都被搜索,但只能接?
收一路數據通道的數據。nRF2401在確認收到數據後記錄地址,並以此地址為目標地址發送應答信號,在發送端數據通道0被用作接收應答信號,因此數據通道0的接收地址要與發送端地址相等以確保接收到正確的應答信號。
3煙霧的檢測
煙霧檢測採用MQ-2 感測器模塊,模塊能檢測多種氣體,當氣體濃度超過程序中設定值的時候,模塊檢測出來並在相應引腳上產生信號,供單片機讀取。模塊有一下參數:
1、可以用於家庭和工廠的氣體泄漏監測裝置,適宜於液化氣,丁烷,丙烷,
? ?甲烷,酒精,煙霧等的探測;
2、靈敏度可調;
3、工作電壓 5V 使用前,供電至少預熱 2 分鍾以上,感測器稍微發燙屬於
? ?正常現象;
4、輸出形式 :a)模擬量電壓輸出? ?b)數字開關量輸出(0 和 1)
5、串口通信
主控晶元採用8051系列單片機晶元,單片機通過串口與感測器通信,可以方便地採集到瞬時流量和累積流量,可記錄自上電以來瞬時流量的最大值和最小值,具有超量程指示功能,程序模擬SPI介面,實現與NRF2401的通信。
4Linux移植及Qt應用程序開發
本系統在Friednly2410開發板上移植了Linux操作系統,並在此嵌入式操作系統平台上進行了簡易家居智能控制平台的開發。Linux移植及Qt應用程序開發步驟如所示。
首先是配置開發板所需要的環境軟體。在開發板環境建立中,要注意的是對於沒有串口的機器,一定要先安裝USB轉串口的驅動,而在安裝時務必注意將電腦與板載串口的波特率設置為一致。這個沒設置好,串口通信會有問題。除此之外,還需安裝好串口調試工具及程序燒錄下載工具。
其次是搭建Linux交叉編譯環境。一般的電腦上都是Windows操作系統,要開發Linux嵌入式操作系統,需要安裝虛擬機(例如VMware 等)、基於Linux內核的相關操作系統(例如Fedora)和交叉編譯器。虛擬機是用來承載Linux操作系統在Windows機器上運行而設置的,就像虛擬光碟一樣,是個虛擬的。交叉編譯器,是用來編譯和產生系統開發過程中各種鏡像文件。深圳、廣州、鄭州想系統學習嵌入式的朋友可聯系付老師QQ1841388306
接著進入移植過程。移植時一般順序為:編譯Uboot→編譯內核→構建文件系統。
最後是Qt應用程序開發。本系統是基於圖形界面開發的。Qt程序開發需要先建立Qtopia開發平台,然後進入編譯目錄,執行編譯腳本,無誤退出後,再編譯應用程序。編譯應用程序時,只需進入每個程序目錄,執行make命令。然後,將編譯好的程序的可執行文件拷貝到文件系統的鏡像目錄中,最後將編譯生成的.bin文件燒錄到開發板中即可。
6. 嵌入式系統、軟體開發環境、嵌入式處理器
呵呵,我做了嵌入式十年了,應該不算菜鳥吧。我來回答你的問題。
1:嵌入式系統有那些?
常用企業常用的有linux、wince、vxworks,還有一些手機的系統也算是嵌入式的系統android(google基於linux)、symbian、windows mobile,還有一些uC/OS、RTLinux、eCos、uclinux、QNX、LynxOS、EEOS。基本上常見我都列出來了。
2:嵌入式開發環境是什麼?
linux uclinux ecos uc/os android RTlinux這些都可以用GCC來編譯程序,具體是什麼GCC和你的處理器有關系,比如arm,就用arm-linux-gcc,mips的處理可能就是用mips-linux-gcc,名字不固定,但是一般都是基於gcc來開發和移植的。還有wince主要是用platform builder來開發的。
在企業的應用中,當然開發環境其實不是固定的,關鍵是看晶元廠商根據不同的嵌入式系統提供的不同的開發環境。
3:嵌入式處理器有那些?
主流的處理器,如arm,目前ARM處理器主要有6大系列:ARM7、ARM9、ARM9E、ARM10、ARM11,SecurCore。還有與Intel合作實現的StrongARM和XScale處理器。
還有其他的處理器。比如MIPS處理器、PowerPC處理器,這些是市場上主流的。
當然,國產也有一些晶元,比如龍芯,但是這些其實不算什麼分類,都是類MIPS的。
4:其實這些都是一些基本的介紹,如果你想深入了解這些東西,那需要一定的時間的。關於這些方面的知識,該怎麼學習呢?我剛才看到一篇很不錯的文章,是一個專科生介紹自己如何自學嵌入式,並找到嵌入式的工作,裡面介紹了他的學習方法和學習過程,希望對你有幫助。
專科生學嵌入式到找到工作的前前後後--學習的榜樣
先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻丑了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結著我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到嵌入式這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習嵌入式,然後給我介紹了一下嵌入式現在的火熱情況,告訴我學嵌入式多麼的有前景,給我了一份傳單,嵌入式培訓的廣告。聽了她的介紹,我心裡癢癢的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下嵌入式,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學嵌入式了。於是我去找嵌入式培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在網路知道看到一篇讓我很鼓舞的文章《如何學習嵌入式》,是一個嵌入式高手介紹沒有基礎的朋友怎麼自學入門學嵌入式,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索嵌入式的視頻,雖然零星找到一些嵌入式的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在嵌入式學習網推出的一份視頻《從零基礎開始學嵌入式》,網址:http://www.002r.com/embedvideo.htm
裡面的教程還不錯,很完整,可以讓我從基礎的開始學起。視頻不便宜啊,但是我也忍了,畢竟買幾本書都要幾百了,何況他們還有半年的技術咨詢和服務,算值了。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光碟後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的C語言視頻教程學起,話說簡單,其實我還是很多不懂的,我只好請教他們,他們還是很熱心的,都幫我解決了。C語言我差不多學了一個禮拜,接下來我就學了linux的基本命令,我在他們提供linux虛擬機上都有做練習,敲linux的基本命令,寫簡單的C語言代碼,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了C和linux的基本操作。
接下來我就去學習了人家的視頻的培訓教程,是整套的,和去參加培訓沒有多大的區別,這一看就是兩個月,學習了ARM的基本原理,學習嵌入式系統的概念,也掌握了嵌入式的環境的一些搭建,對linux也有更深層次的理解了,明白了嵌入式應用到底是怎麼做的,但是驅動我只是有一點點的了解,這個相對難一點,我想以後再慢慢啃。
這兩個月,除了吃飯睡覺,我幾乎都在學習。因為我知道幾乎沒有基礎,比別人差勁,我只能堅持努力著,我不能放棄,我必要要靠自己來養活自己,必須學好這門技術,同時我不懂的就問,這里真的很感謝他們的技術客服對我的任何問題都是耐心的解答,每天都我幾乎都有好幾個問題問他們,然後我就把不懂的問題總結記下來,這樣慢慢積累了一段時間,我發現自己真的有點入門了。
最後的一個月,我就去看關於實踐部分的內容,了解嵌入式項目具體的開發流程,需要什麼樣的知識,我就開始准備這方面的知識,也就是學習這方面的視頻,同時他們建議我去找了找一些嵌入式面試的題目,為自己以後找工作做准備。我就到網上找了很多嵌入式的題目,把他們理解的記下來,這樣差不多准備了20天左右
我覺得自己差不多入門了,會做一些簡單的東西了。我就想去找工作看看,於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了准備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是嵌入式linux應用開發,做安防產品的應用的。我想我也比較幸運,經理很看重我的努力,就決定錄用我,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。
最後祝願所有想學嵌入式的朋友更早的入門!
5:希望我的回答能幫到你,更希望你早日學好嵌入式。
7. 求嵌入式linux開發詳細流程(步驟)
1.首先,建立交叉編譯環境:交叉編譯是指:在PC機上編譯,在目標板上執行,我PC是linux+ arm-elf-gcc編譯器.扳子是ARM3000.板子上的系統是uclinux,這時一個剪裁的很小的實時嵌入式linux操作系統.推薦使用這個.
2.然後就是你寫程序嘍,不過注意可能有些庫函數不能用,因為哪個編譯器稍微受限一點,不是所由的c庫函數都支持,不過一般開發的都有.
3.連起你的主機和開發板,這個你會不?要連兩個:串口(用來控制板子)和以太口(用來下載程序),我們板子上這些外設都有,你要使沒有可以用其他的口代替傳程序,但串口可是該有的阿!
4.在你主機上編譯程序生成目標代碼,建議用makefile文件來組織你的聯編關系.
5.把生成代碼下載到目標板執行調試.我是用的主機的NFS(網落文件)服務,下載到目標板的.
6.注:目標板是怎麼控制的呢?是用串口控制的,可用minicom,設置好你要控制的串口,也應該是你連板子的那個.在命令行里敲上minicom,即進入minicom截面,開啟你的板子,應該就是板子uclinux系統解壓安裝的畫面了.然後用ifconfig eth0.....
配置ip,這個ip就是你板子的ip了,注意與主機一個網段.然後mount -t nfs 主機ip:/uclinux /板子上的一個目錄,就把主機的 uclinux目錄放到板子上了(這么說其實不合理,應該叫掛載). 然後找到你剛才一經編譯好的哪個目標代碼執行即可.
因不了解你的具體環境和配置,暫說這些,有問題可再聯系:)
8. 如何配置編譯在mini2440開發板上運行的linux內核
參考:http://www.it165.net/os/html/201409/9334.html
系統ubuntu12.04(非虛擬機下)
mini2440
CPU型號: S3C2440AL-40
Nanflash型號:K9F1G08
Norflash型號:SST39VF1601
LCD: 統寶 240 x 320
$: 普通賬戶
#:root賬戶
*當shell下輸入路徑時可使用tab鍵自動補全
(一)建立交叉編譯環境
1.將mini2440光碟中的linux文件夾拷貝到 /home/lianghuiyong 並改名為Linux_share
(其中兩個文檔為我後面添加進去的)
2.Ctrl+Alt+T打開shell
3.$ su - root (切換root許可權)
4.# cd /home/lianghuiyong/Linux_share
5.解壓安裝arm-linux-gcc編輯器
# tar xvzf arm-linux-gcc-4.4.3.tar.gz –C / //注意:C後面有個空格
執行該命令,將把 arm-linux-gcc 安裝到/usr/loca/arm/4.4.3 目錄。這句來自mini2440用戶手冊,我發現其實是安裝到 /opt/FriendlyARM/toolchain/4.4.3 目錄
6.# vim /root/.bashrc
7.在最後一行添加:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin //opt/FriendlyARM/toolschain/4.4.3/bin 為arm-linux-gcc 環境變數
:wq保存退出。
# source ~/.bashrc
8.# sudo gedit /etc/environment
games後面添加標記部分
9.# arm-linux-gcc -v //gcc後面有空格
測試hello.c(這是在安裝了第二部分的linux示常式序才有examples/hello目錄)
# cd /opt/FriendlyARM/mini2440/examples/hello
# arm-linux-gcc -o hello hello.c
# ./hello
(二)安裝源代碼及其他工具
創建工作目錄(以下都為root環境下):
# mkdir -p /opt/FriendlyARM/mini2440
1>>解壓安裝linux內核源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/linux-2.6.32.2-mini2440-20100106.tar.gz
2>>解壓安裝嵌入式圖形系統qtopia源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/x86-qtopia.tgz
# tar xvzf /home/lianghuiyong/Linux_share/arm-qtopia.tgz
3>>解壓安裝嵌入式圖形系統 QtE-4.6.1 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/arm-qte-4.6.3-20100802.tar.gz
4>>解壓安裝busybox 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/busybox-1.13.3-mini2440.tgz
5>>解壓安裝 Linux 示常式序
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/examples-20100108.tgz
6>>解壓安裝 vboot 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/vboot-src-20100106.tar.gz
7>>解壓安裝 bootloader 源代碼
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/bootloader.tgz
8>>解壓創建目標文件系統
# cd /opt/FriendlyARM/mini2440
#tar xvzf /home/lianghuiyong/Linux_share/rootfs_qtopia_qt4-20100816.tar.gz
9>>解壓安裝目標文件系統映象製作工具 mkyaffs2image
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/mkyaffs2image.tgz –C /
10>>解壓安裝LogoMaker
# cd /opt/FriendlyARM/mini2440
# tar xvzf /home/lianghuiyong/Linux_share/logomaker.tgz –C /
(三)定製linux內核及製作文件系統
config_mini2440_x35 – 適用於 Sony 3.5」 LCD 的內核配置文件
config_mini2440_t35 – 適用於統寶 3.5」 LCD 的內核配置文件
config_mini2440_l80 – 適用於 Sharp 8」 LCD(或兼容)的內核配置文件
config_mini2440_n35 – 適用於 NEC3.5」 LCD 的內核配置文件
config_mini2440_h43 – 適用於 4.3」 LCD 的內核配置文件
config_mini2440_a70 – 適用於群創 7」 LCD 的內核配置文件
config_mini2440_vga1024x768 – 適用於 VGA 顯示輸出(解析度 1024x768)模塊的內核
配置文件
1.配置預設文件config_t35 (統寶240x320)
# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# cp config_mini2440_t35 .config
# make menuconfig
出現界面
不做更改,exit退出。這樣做是為了生成相應配置(統寶240x320)的頭文件。
2.編譯內核
在/opt/FriendlyARM/mini2440/linux-2.6.32.2 目錄下編譯內核
#make zImage
編譯結束後,會在 arch/arm/boot 目錄下生成 linux 內核映象文件:zImage(zImage 可下載到開發板測試)
3.定製linux內核(根據用戶手冊來走一遍)
# cd /opt/FriendlyARM/mini2440/linux-2.6.32.2
# make menuconfig
出現配置選項:
3.1配置cpu
主菜單-->System --> Type S3C2400 Machines --> FriendlyARM Mini2440 development board
3.2配置lcd驅動
主菜單-->Device Drivers-->Graphics support-->Support for frame buffer devices-->Backlight-->LCD select-->3.5 inch 240x320 Toppoly LCD
3.3配置觸摸屏
主菜單-->Device Drivers-->Input device support-->Touchscreens-->Samsung s3c24410 touchscreen input driver
3.4配置usb滑鼠和鍵盤
主菜單-->Device Drivers-->hid devices-->USB Human interface Device
3.5 配置優盤
主菜單-->Device Drivers-->SCSI device support--> SCSI disk
3.6配置萬能驅動USB攝像頭
主菜單-->Device Drivers-->Multimedia devices-->Video capture adapters -->V4L USB devices-->GSPCA based webcams-->ALi USB m 5602 Camera Driver
3.7 配置CMOS攝像頭驅動
主菜單-->Device Drivers-->Multimedia devices-->Video capture adapters-->OV9650 on the s3c2440 driver
3.8配置網卡驅動
主菜單-->Netwoking support-->Networking options -->選擇Unix和TCP/IP
主菜單-->Device Drivers-->Network device support-->Ethernet (10 or 100Mbit)-->
選擇 <*> Generic Media Independent Interface device support
<*> DM9000 support
3.9 配置USB無線網卡驅動
主菜單-->Netwoking support-->wireless-->IEEE 802.11
主菜單-->Device Drivers-->Netwoking device support-->wireless LAN-->Wireless LAN(IEEE 802.11)-->Ralink driver support-->
3.10 配置音頻驅動
主菜單-->Device Drivers-->Sound card supprt-->OSS Mixer API -->ALSA for Soc audio support-->SoC Audio for the samsung S3Cxxxx Chips
3.11 配置SD/MMC卡驅動
主菜單-->Device Drivers-->MMC/SD/SDIO card-->samsung S3C SD/MMC card
3.12 配置看門狗驅動支持
主菜單-->Device Drivers-->Watchdog Timer-->s3c2440 Watchdog
3.13 配置LED驅動
主菜單-->Device Drivers-->Character devices-->LED support for Mini2440
3.14 配置按鍵驅動
主菜單-->Device Drivers-->Character devices-->Buttons driver
3.15 配置PWM控制蜂鳴器驅動
主菜單-->Device Drivers-->Character devices-->buzzer driver for
3.16 配置AD轉換驅動
主菜單-->Device Drivers-->Character devices-->ADC driver for
3.17 配置串口驅動
主菜單-->Device Drivers-->Character devices-->Serial drivers-->samsung S3C2440/S3C2442
3.18 如何配置RTC實時時鍾驅動
主菜單-->Device Drivers-->Real Time Clock-->samsung S3C series SoC RTC
3.19 配置I2C-EEPROM驅動支持
主菜單-->Device Drivers-->I2C support -->I2C Hardware Bus support-->S3C2410 I2C Driver
3.20 配置yaff2s文件系統的支持
主菜單-->Device Drivers-->MTD-->NAND Device Support -->NAND FLASH Support
主菜單-->File systems-->Miscellaneous filesystems -->YAFFS2 file system support
3.21 配置EXT2/VFAT/ NFS等文件系統
主菜單-->File systems-->Network File Systems -->root file system on NFS
為了支持FAT32 文件系統.
主菜單-->File systems-->DOS/FAT/NT Filesystems -->VFAT (windows-95) fs support
關於mini2440 linux內核裁剪到此為止,退出後有一個是否保存提示,選擇保存!
3.22 製作Linux logo
本來想使用Logomaker,結果生成的圖片都是無數據的,這可能和系統內一些參數有關
使用命令方式製作logo:
在圖片(open_show.png)目錄下
# pngtopnm open_show.png > temp.ppm
# ppmquant 224 temp.ppm >temp2.ppm
# pnmnoraw temp2.ppm > logo.ppm
將目錄下生成的logo.ppm改成linux_logo_clut224.ppm,替代linux2.6.32.2/drivers/video/logo 目錄下的同名文件