第一篇:嵌入式Linux系統開發教程實驗報告
嵌入式Linux系統開發教程實驗報告
組員:武易 金鵬飛 周長升
實驗一 熟悉嵌入式系統開發環境
一實驗目的
1.熟悉嵌入式系統硬件實驗平臺 2.掌握超級終端配置方法。
3.掌握嵌入式系統開發環境配置,ARM-Linux下NFS服務器的配置方法 4.掌握常用的 Linux下shell命令
二實驗設備及工具
硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。
軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境
三實驗內容
(1)掌握嵌入式系統實驗平臺上的各類借接口的位置;
(2)配置windows的超級終端,熟悉vivi的命令行,bootload、kernel、root和用戶程序的介紹;
(3)配置linux的終端,配置網絡服、Ip地址,開發目錄共享,掛載等。
四實驗結果
實驗二嵌入式Linux程序設計
一實驗目的
1.掌握嵌入式Linux軟件設計方法原理 2.掌握Makefile文件設計方法。
3.熟悉Linux下靜態庫和共享庫的設計
二實驗設備及工具
硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。
軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境
三實驗內容
(1)編寫一個帶輸入、輸出的由5個文件組成的嵌入式軟件;(2)寫好makefile文件,并上機調試;(3)用變量指明兩種編譯器。
四實驗結果
實驗三
kernel與root的設計和燒寫
一實驗目的
1.掌握Linux內核配置與裁剪的方法 2.理解根文件系統配置。
3.掌握嵌入式系統內核和根文件系統的燒寫的過程
二實驗設備及工具
硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。
軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境
三實驗內容
對嵌入式Linux系統進行裁剪、配置和編譯,生成自己需要的操作系統映像文件,并將其燒寫到flash中。
四實驗結果
實驗四搭建嵌入式系統開發環境
一實驗目的
1.掌握嵌入式開發環境的配置 2.掌握開發工具鏈的安裝與配置。
3.掌握嵌入式系統內核和根文件系統的燒寫的過程
二實驗設備及工具
硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。
軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境
三實驗內容
(1)安裝配置嵌入式開發環境;(2)安裝與配置工具鏈;(3)內核和根文件系統的燒寫
四實驗結果
實驗五嵌入式驅動程序設計
一實驗目的
1.學習在LINUX 下進行驅動設計的原理
2.掌握使用模塊方式進行驅動開發調試的過程
二實驗設備及工具
硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。
軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境
三實驗內容
在PC 機上編寫簡單的虛擬硬件驅動程序并進調試,實驗驅動的各個接口函數的實現,分析并理解驅動與應用程序的交互過程。
四實驗結果
實驗六
S3C2410處理器硬件電路設計
一實驗目的
1.熟悉硬件電路設計
2.掌握簡單的S3c2410處理器的電路設計。3.掌握protel軟件的使用
二實驗設備及工具
硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。
軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境
三實驗內容
使用protel 99se 做s3c2410處理器最小系統電路設計,A/D數據采集模塊電路設計。
四實驗結果
第二篇:嵌入式Linux系統開發教程實驗報告
嵌入式實驗報告
姓名: 學號: 學院: 日期:
實驗一 熟悉嵌入式系統開發環境
一、實驗目的
熟悉 Linux 開發環境,學會基于S3C2410 的Linux 開發環境的配置和使用。使用Linux的armv4l-unknown-linux-gcc 編譯,使用基于NFS 方式的下載調試,了解嵌入式開發的基本過程。
二、實驗內容
本次實驗使用 Redhat Linux 9.0 操作系統環境,安裝ARM-Linux 的開發庫及編譯器。創建一個新目錄,并在其中編寫hello.c 和Makefile 文件。學習在Linux 下的編程和編譯過程,以及ARM 開發板的使用和開發環境的設置。下載已經編譯好的文件到目標開發板上運行。
三、實驗設備及工具
硬件::UP-TECH S2410/P270 DVP 嵌入式實驗平臺、PC 機Pentium 500 以上, 硬盤10G 以上。
軟件:PC 機操作系統REDHAT LINUX 9.0+超級終端(或X-shell)+AMR-LINUX 開發環境。
四、實驗步驟
1、建立工作目錄
[root@localhost root]# mkdir hello [root@localhost root]# cd hello
2、編寫程序源代碼
我們可以是用下面的命令來編寫hello.c的源代碼,進入hello目錄使用vi命令來編輯代碼:
[root@localhost hello]# vi hello.c 按“i”或者“a”進入編輯模式,將上面的代碼錄入進去,完成后按Esc 鍵進入命令狀態,再用命令“:wq!”保存并退出。這樣我們便在當前目錄下建立了一個名為hello.c的文件。hello.c源程序: #include
3、編寫Makefile
要使上面的hello.c程序能夠運行,我們必須要編寫一個Makefile文件,Makefile文件定義了一系列的規則,它指明了哪些文件需要編譯,哪些文件需要先編譯,哪些文件需要重新編譯等等更為復雜的命令。使用它帶來的好處就是自動編譯,你只需要敲一個“make”命令整個工程就可以實現自動編譯。Makefile源程序:
CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+= –static all: $(EXEC)$(EXEC): $(OBJS)$(CC)$(LDFLAGS)-o $@ $(OBJS)clean:-rm-f $(EXEC)*.elf *.gdb *.o 下面我們來簡單介紹這個Makefile 文件的幾個主要部分: CC 指明編譯器
EXEC 表示編譯后生成的執行文件名稱 OBJS 目標文件列表 CFLAGS 編譯參數 LDFLAGS 連接參數 all: 編譯主入口
clean: 清除編譯結果
注意:“$(CC)$(LDFLAGS)-o $@ $(OBJS)”和“-rm-f $(EXEC)*.elf *.gdb *.o”前空白由一個Tab 制表符生成,不能單純由空格來代替。
與上面編寫 hello.c的過程類似,用vi來創建一個Makefile文件并將代碼錄入其中。
[root@localhost hello]# vi Makefile
4、編譯應用程序
在上面的步驟完成后,我們就可以在hello 目錄下運行“make”來編譯我們的程序了。如果進行了修改,重新編譯則運行: [root@localhost hello]# make clean//編譯應用程序 [root@localhost hello]# make//下載調試
注意:編譯、修改程序都是在宿主機(本地PC 機)上進行,不能在超級終端下進行。
5、下載調試
在宿主PC計算機上啟動NFS服務,并設置好共享的目錄,(這里將剛生成的根目錄/arm2410cl作為共享目錄,以下實驗同理)具體配置請參照前面第一章第四節中關于嵌入式Linux 環境開發環境的建立。在建立好NFS共享目錄以后,我們就可以進入超級終端中建立開發板與宿主PC機之間的通訊了。
[/mnt/yaffs] mount-t nfs-o nolock 192.168.0.56:/arm2410cl /host //超級終端中執行
如果不想使用我們提供的源碼的話,可以再建立一個NFS 共享文件夾。如/root/share,我們把我們自己編譯生成的可執行文件復制到該文件夾下,并通過超級終端掛載到開發板上。
[root@localhost hello]# cp hello /root/share //虛擬機中
[/mnt/yaffs] mount-t nfs-o nolock 192.168.0.56:/root/share /host //超級終端中 再進入/host目錄運行剛剛編譯好的hello程序,查看運行結果。[/mnt/yaffs] cd /host //超級終端中 [/host]./hello hello world(1)在PC計算機上啟動NFS 服務,并設置好共享的目錄。
啟動 Red Hat Linux –>點擊“主菜單”->選擇“系統設置”->“服務器設置”->“NFS服務器”->“增加”->“基本”下:點擊“瀏覽”選擇“/”下的“arm2410cl/”;“確定”;“主機:192.168.0.* ”;“基本權限”選擇“讀/寫”;“確定”。->“常規選項”下:選擇:“允許來自高于1024的端口的連接”,其他不選;確定。(2)在建立好NFS共享目錄以后,進入minicom 中建立開發板與宿主PC機之間的通訊
新建終端
[root@localhost root]# minicom//服務器 新建終端
[root@localhost root]#ifconfig eth0 192.168.0.10 //設置主機地址 [root@localhost root]#ifconfig //查看地址 在服務器下:
[/mnt/yaffs] mount-t nfs –o nolock 192.168.0.56:/arm2410cl /var 注意:開發板掛接宿主計算機目錄只需要掛接一次便可,只要開發板沒有重起,就可以一直保持連接。這樣可以反復修改、編譯、調試,不需要下載到開發板。
6、實驗截圖
7、測試結果
測試掛載成功,用mplayer xyz.avi命令播放視頻 [root@localhost /]#cd /mnt/yaffs/mm [root@localhost /]#mplayer xyz.avi
五、實驗心得
本次實驗比較簡單,旨在讓我們熟悉Linux開發環境,學會基于S3C2410的Linux開發環境的配置和使用。實驗中我們創建了一個新目錄,并在其中編寫hello.c和Makefile文件。我們學習在Linux下的編程和編譯過程,以及ARM開發板的使用和開發環境的設置,下載已經編譯好的文件到目標開發板上運行。學會使用Linux的armv4l-unknown-linux-gcc編譯和基于NFS方式的下載調試,了解嵌入式開發的基本過程。實驗二 S3C2410處理器A/D模塊硬件設計
一、實驗目的
1.熟悉硬件電路設計
2.掌握簡單的S3c2410處理器的電路設計。3.掌握protel軟件的使用。
二、實驗內容
使用protel 99se 做s3c2410處理器最小系統電路設計,A/D數據采集模塊電路設計。
三、實驗設備及工具
硬件:UP-TECH S2410/P270 DVP 嵌入式實驗平臺、PC 機Pentium 500 以上, 硬盤10G以上。
軟件:PC 機操作系統REDHAT LINUX 9.0、超級終端(或X-shell)、ARM-LINUX 開發環境
五、實驗原理
1、A/D 轉換器
A/D 轉換器是模擬信號源和CPU 之間聯系的接口,它的任務是將連續變化的模擬信號轉換為數字信號,以便計算機和數字系統進行處理、存儲、控制和顯示。在工業控制和數據采集及許多其他領域中,A/D 轉換是不可缺少的。
A/D 轉換器有以下類型:逐位比較型、積分型、計數型、并行比較型、電壓-頻率型,主要應根據使用場合的具體要求,按照轉換速度、精度、價格、功能以及接口條件等因素來決定選擇何種類型。常用的有以下兩種:(1)雙積分型的 A/D 轉換器;(2)逐次逼近型的 A/D 轉換器。
2、A/D 轉換的重要指標(1)分辨率(Resolution)
(2)精度(Accuracy)
(3)ARM 自帶的十位A/D 轉換器(4)A/D 轉換器在擴展板的連接(A/D 轉換器在擴展板的接法如圖2.4.2 所示,前三路通過電位器接到3.3v 電源上。)
圖 2.4.2 A/D 轉換器在擴展板上的接法
六、實驗步驟
1、閱讀理解源碼
進入/arm2410cl/exp/basic/04_ad 目錄,使用vi 編輯器或其他編輯器閱讀理解源代碼。
2、編譯應用程序
運行make產生ad可執行文件
[root@localhost /]# cd /arm2410cl/exp/basic/04_ad/ [root@localhost 04_ad]# make armv4l-unknown-linux-gcc-c-o main.o main.c armv4l-unknown-linux-gcc-o../bin/ad main.o-lpthread armv4l-unknown-linux-gcc-o ad main.o-lpthread [root@localhost 04_ad]# ls ad hardware.h main.o Makefile.bak s3c2410-adc.h bin main.c Makefile readme.txt src
3、下載調試
到超級終端窗口,使用 NFS mount 開發主機的/arm2410cl 到/host 目錄。[/mnt/yaffs] mount-t nfs-o nolock 192.168.0.56:/arm2410cl /host [/mnt/yaffs]insmod ad/s3c2410-adc.o [/mnt/yaffs]cd /host/exp/basic/04_ad [/host/exp/basic/04_ad]./ad Press Enter key exit!a0= 0.0032 a1= 3.2968 a2= 3.2968 我們可以通過調節開發板上的三個黃色的電位器,來查看a0、a1、a2 的變化。
4、原理圖
5、實驗截圖
七、實驗心得
通過本次試驗,我學會了A/D接口原理,了解實現A/D系統對于硬件要求。閱讀ARM芯片文檔,掌握ARM的A/D相關寄存器的功能,熟悉ARM系統硬件的A/D相關接口,還了解在Linux環境下對S3C2410芯片的8通道10位A/D模塊的硬件設計。實驗三
Kernel與root的設計和燒寫
一、實驗目的
1.掌握Linux內核配置與裁剪的方法 2.理解根文件系統配置。
3.掌握嵌入式系統內核和根文件系統的燒寫的過程。
二、實驗內容
對嵌入式Linux系統進行裁剪、配置和編譯,生成自己需要的操作系統映像文件,并將其燒寫到flash中。
三、實驗設備及工具
硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。
軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境.四、實驗步驟
1、設計過程:
2、燒寫過程:
(一)、超級終端設置
1、運行Windows 系統下開始→所有程序→附件→通訊→超級終端(HyperTerminal),新建一個通信終端。如果要求輸入區號、電話號碼等信息請隨意輸入,出現如圖1.5.1 所示對話框時,為所建超級終端取名為arm,可以為其選一個圖標。單擊“確定”按鈕。
2、在接下來的對話框中選擇ARM 開發平臺實際連接的PC 機串口(如COM1),按確定后出現如圖1.5.2 所示的屬性對話框,設置通信的格式和協議。這里波特率為115200,數據位8,無奇偶校驗,停止位1,無數據流控制。按確定完成設置。
3、完成新建超級終端的設置以后,可以選擇超級終端文件菜單中的另存為,把設置好的超級終端保存在桌面上,以備后用。用串口線將PC 機串口和平臺UART0 正確連接后,就可以在超級終端上看到程序輸出的信息了。
(二)、串口下載燒寫
在 Windows xp平臺下通過超級終端燒寫vivi(bootloader)、內核(Kernel)、根文件系
統(root)的步驟如下:
1、格式化flash 打開超級終端,先按住PC 機鍵盤的Back Space 鍵,然后啟動2410-S,進入vivi,按照以下命令格式化flash,重新分區。
vivi>bon part 0 128k 192k 1216k 4288k:m 64704k 回車
2、燒寫vivi 這時已格式化flash,運行的是SDRAM 中的vivi.vivi>load flash vivi x 回車 此時超級終端提示:
Ready for downloading using xmodem...Waiting...點擊超級終端任務欄上“傳送”下拉菜單中的“發送文件”,選擇協議為Xmodem,選擇
鏡像文件vivi,點擊“發送”,10 秒左右vivi 就燒寫到flash 里了.這時要復位2410-S,重新進入vivi>來燒寫kernel,root.3、燒寫內核映象zImage vivi>load flash kernel x 回車 出現提示:
Ready for downloading using xmodem...Waiting...點擊超級終端任務欄上“傳送”下拉菜單中的“發送文件”,選擇鏡像文件zImage,協議
為Xmodem,點擊“發送”,4 分鐘左右zImage 傳輸完畢,zImage先傳輸到SDRAM中,再把數據從SDRAM 復制到flash 里,請等待這一過程結束到出現vivi>,再燒寫root,否則會導致燒寫kernel 失敗。
4、燒寫根文件系統(root)vivi>load flash root x 回車
Ready for downloading using xmodem...Waiting...點擊超級終端任務欄上“傳送”下拉菜單中的“發送文件”,選擇鏡像文件root.cramfs,協議為Xmodem,點擊“發送”,8 分鐘左右root.cramfs 燒寫完畢;
5、燒寫應用程序
用2410-S 實驗箱配套網線連接好2410-S 的NIC-1 網口和PC 機的網口,重啟2410-S 進
入linux 操作系統的[/mnt/yaffs]下,注意配置IP 在同一網段,執行以下指令: [/mnt/yaffs]ifconfig --查看IP [/mnt/yaffs]ifconfig eth0 192.168.0.111 --配置eth0 IP [/mnt/yaffs]inetd --啟動ftp
打開ftp 軟件FlashFXP(在光盤中/img/flashvivi 目錄中提供),點擊界面中上部黃色閃
電符號,建立快速連接,輸入地址192.168.0.111,用戶名:root,密碼:無。連接進入ftp 服務,上傳“yaffs.tar.bz2”到2410-S 的/var 文件夾下,3 分鐘左右上傳完畢。
這時不能重啟2410-S,否則上傳過程白費。接下來在超級終端中輸入: [/mnt/yaffs]cd..--轉換到/mnt 下 [/mnt]rm-rf /yaffs/* --刪除/yaffs 下文件 [/mnt]cd /var --轉到var 目錄下
[/var]tar xjvf yaffs.tar.bz2 –C /mnt/yaffs --解壓yaffs.tar.bz2 到mnt/yaffs 目錄下
如圖1.5.9 所示,注意大小寫(C 為大寫),需5 分鐘左右
解壓縮結束,整個燒寫實驗就完成了。
五、實驗心得
了解了Linux內核與root的知識,能夠利用串口通訊下載方式完成它們的燒寫過程。實驗四 嵌入式軟件設計與交叉編譯
一、實驗目的
1.掌握嵌入式Linux軟件設計方法原理 2.掌握Makefile文件設計方法。
3.熟悉Linux下靜態庫和共享庫的設計。
二、實驗內容
(1)編寫一個帶輸入、輸出的由5個文件組成的嵌入式軟件;(2)寫好makefile文件,并上機調試;(3)用變量指明兩種編譯器。
三、實驗設備及工具
硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。
軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境.四、程序分析
input.h: #define N 10 void input(char *s);
input.c:
#include CC=armv4l-unknown-linux-gcc EXEC=zc OBJS=main.o input.o output.o $(EXEC):$(OBJS)$(CC)-o $(EXEC)$(OBJS)install: $(EXP_INSTALL)$(EXEC)$(INSTALL_DIR)clean:-rm-f $(EXEC)&.o 五、實驗結果 pc機上執行時 # make //若已執行過,則用# make clean 清除后再執行# make #./zc 結果: [/mnt/yaffs]cd /host/exp/basic/zc/ [/host/exp/basic/zc]./zc input your name,please:zc hello zc!hello zc!hello zc!hello zc!hello zc! 六、實驗心得 初步了解了交叉編譯原理,GUN開發套件包括一系列開發測試工具,主要組件為Gcc。實驗詳細說明了基于ARM和Linux的嵌入式系統的交叉編譯環境的建立方法,并給出了具體的步驟。實驗結果表明,可以在x86平臺編譯調試ARM平臺上運行的程序。并通過實驗認識嵌入式系統上C語言編程與普通PC機上C語言編程的不同點,掌握使用交叉編譯環境編譯嵌入式系統程序的方法。實驗五 嵌入式驅動程序設計 一、實驗目的 1.學習在LINUX下進行驅動設計的原理。 2.掌握使用模塊方式進行驅動開發調試的過程。 二、實驗內容 在PC 機上編寫簡單的虛擬硬件驅動程序并進調試,實驗驅動的各個接口函數的實現,分析并理解驅動與應用程序的交互過程。 三、實驗設備及工具 硬件:UP-NETARM2410-S嵌入式實驗儀、PC機pentumn500以上、硬盤40G以上、內存大于256M。 軟件:PC機操作系統REDHAT LINUX 9.0、MINICOM、AMRLINUX開發環境 四、實驗步驟 1、在PC(宿主機)上編譯調試驅動程序。(1)閱讀和理解源代碼 進入/arm2410cl/exp/drivers/01_demo,使用vi 編輯器或其他編輯器閱讀理解源代碼。 (2)編譯驅動模塊及測試程序 上面介紹了在Makefile 中有兩種編譯方法,可以在本機上使用gcc 也可以使用交叉編 ? 確定 ? # KERNELDIR = /arm2410cl/kernel/linux-2.4.18-2410cl ? KERNELDIR = /usr/src/linux(3)測試驅動程序 如果使用gcc 編譯的話,需要通過下面的命令來建立設備節點,如果使用交叉編譯器的話,不需要建立設備節點。#mknod /dev/demo c 254 0 首先要插入驅動模塊demo.o,然后可以用lsmod 命令來查看模塊是否已經被插入,在不使用該模塊的時候還可以用rmmod 命令來將模塊卸載。? insmod demo.o ? lsmod demo.o ?./test_demo 2、使用arm編譯器在實驗箱調試驅動程序。 五、實驗結果分析 1.編譯demo.c 為demo.o;編譯test_demo.c 為test_demo。 gcc-c demo.c gcc-o test_demo test_demo.c 2.若編譯器選擇的是gcc(請查看Makefile文件),需要用以下命令建立節點: #mknod /dev/demo c 254 0 若編譯器選擇的是armv4l-unknown-linux-gcc 則不需要mknod命令建立節 點。 3.使用insmod demo.o插入模塊,使用lsmod 列出所有插入的模塊。查看demo的插入情況: #insmod demo.o 6.運行test程序測試驅動的各個接口運行情況。 #./test_demo 結果: PC機上的運行結果: 實驗箱上的運行結果: 7.運行ad程序測試驅動的各個接口運行情況 六、實驗心得 掌握了在Linux下常用編譯器的使用,進一步掌握了Makefile的編寫和使用以及Linux下的程序編譯與交叉編譯的過程。實驗六 觸摸屏驅動程序設計 一、實驗目的 1、了解在 UP-TECH S2410/P270 DVP平臺上實現觸摸屏Linux 驅動程序的基本原理。 2、了解 Linux 驅動開發的基本過程。 二、實驗內容 以一個簡單字符設備驅動程序為原型,剖析其基本結構。進行部分改寫之后并編譯實現其相應功能。 三、預備知識 1、掌握在 Linux 集成開發環境中編寫和調試程序的基本過程。 2、了解 ARM 芯片(本實驗是針對ARMS3C2410 系列)的基本結構。 3、了解 Linux 內核中關于設備控制的基本原理。 四、實驗設備及工具 硬件:UP-NETARM2410-S嵌入式實驗儀,PC機pentumn500以上, 硬盤40G以上,內存大于128M。軟件::PC 機操作系統REDHAT LINUX 9.0 +超級終端(或X-shell)+ AMRLINUX 開發環境 五、實驗原理 1、Linux 設備驅動概述 Linux 設備驅動程序屬于Linux 內核的一部分,并在Linux 內核中扮演著十分重要的角色。它們像一個個“黑盒子”使某個特定的硬件響應一個定義良好的內部編程接口,同時完全隱蔽了設備的工作細節。用戶通過一組標準化的調用來完成相關操作,這些標準化的調用是和具體設備驅動無關的,而驅動程序的任務就是把這些調用映射到具體設備對于實際硬件的特定操作上。 我們可以把設備驅動作為內核的一部分,直接編譯到內核中,即靜態編譯,也可以單獨作為一個模塊(module)編譯,在需要它的時候再動態的把它插入到內核中。在不需要時也可把它從內核中刪除,即動態連接。顯然動態連接比靜態連接有更多的好處,但在嵌入式開發領域往往要求進行靜態連接,尤其是像S3C44B0 這種不帶MMU 的芯片。但在S3C2410等帶MMU 的ARM 芯片中我們依然可以使用動態連接。目前Linux 支持的設備驅動可分為三種:字符設備(character device),塊設備(blockdevice),網絡接口設備(network interface)。當然它們之間的也并不是要嚴格的加以區分。 2、Linux 關于字符設備的管理 驅動程序在 Linux 內核中往往是以模塊形式出現的。與應用程序的執行過程不同,模塊通常只是預先向內核注冊自己,當內核需要時響應請求。模塊中包含兩個重要的函數:init_module 和cleanup_module。前者是模塊的入口,它為模塊調用做好準備工作,而后者則是在模塊即將卸載時被調用,做一些清掃工作。 驅動程序模塊通過函數: int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);來完成向內核注冊的。其中unsigned int major 為主設備號,const char *name 為設備名,至于結構指針struct file_operations *fops 它在驅動程序中十分重要。 在我們編寫好一個驅動程序模塊后,按傳統的主次設備號的方法來進行設備管理,則我們應手工為該模塊建立一個設備節點。命令: mknod /dev/ts c 254 0 其中/dev/ts 表示我們的設備名是ts,“C”說明它是字符設備,“254”是主設備號,“0”是次設備號。一旦通過mknod 創建了設備文件,它就一直保留下來,除非我們手工刪除它。 3、觸摸屏的控制 本系統觸摸屏的控制是使用的 S3c2410 處理器自帶的觸摸屏控制器,這部分的開發主要參考S3c2410 處理器的芯片手冊的第416 頁到第419 頁,具體詳見流程圖。這部分的控制主要是設置觸摸屏的采樣模式,處理器提供的模式: 1.正常的轉換模式 2.手動的x/y 位置轉換模式 3.自動的x/y 位置轉換模式 我們這里使用的是第3 種轉換模式。需要注意的是在完成一次x/y 坐標采樣的過程中需要一次模式轉換即在點擊觸摸屏之前是等待中斷模式,當有觸摸動作產生觸摸屏中斷以后,在x/y 的坐標采集驅動中設置成自動的x/y 位置轉換模式,在完成采集以后再轉換回等待中斷。ADC控制寄存器 ADC觸摸屏控制寄存器 注意:在自動模式,ADC觸摸屏控制寄存器要在開始讀之前重新配置ADC開始延遲寄存器 ADC轉換數據寄存器(ADCDAT1) 4.觸摸屏相關電路圖 六、實驗步驟 1、改寫該驅動程序,在其基礎上實現一些你想要的簡單功能。由于驅動程序的復雜性,不容易上手且又容易出問題,所以建議你先只對其中的調試信息做一些改動,在運行該驅動程序時看看其在屏幕上的打印信息。在你對整個過程及相關硬件有較多的一些了解之后再動手做一些功能上的調整。 2、結合 ARM-Linux 的移植實驗中的相關內容,把改動的驅動程序編譯進內核,并下載內核驗證結果。你只要把該驅動在必要地方修改后(注意修改前的代碼一定要做備份)保存代碼,回到內核目錄,make bzImage 編譯內核,然后下載編譯好的內核。 進入expbasic
主站蜘蛛池模板:
在线观看国产成人av片|
国产精品午夜片在线观看|
美女啪啪网站又黄又免费|
搡女人真爽免费视频大全|
日本精品巨爆乳无码大乳巨|
亚洲的天堂av无码|
午夜dv内射一区二区|
国产午夜福利不卡在线观看|
久久99久久99精品免视看动漫|
亚洲乱码中文字幕在线|
人妻人人澡人人添人人爽人人玩|
久久午夜夜伦鲁鲁片免费无码|
色婷婷综合久久久久中文|
东北少妇不带套对白|
亚洲av无码国产精品永久一区|
欧美疯狂xxxx乱大交|
狠狠色噜噜狠狠色综合久|
成人片无码免费播放|
国产欧美日韩精品a在线观看|
亚洲精品自产拍在线观看动漫|
天堂在线中文|
免费国产在线精品一区不卡|
美女脱了内裤张开腿让男人桶网站|
99精品久久毛片a片|
国产成人av无码精品|
日本少妇寂寞少妇aaa|
中文字幕亚洲中文字幕无码码|
国产精品人妻一区夜夜爱|
乱中年女人伦av|
综合 欧美 亚洲日本|
五月激激激综合网色播|
国产亚洲精品一区在线播放|
国产成年女人毛片80s网站|
久久久综合亚洲色一区二区三区|
国产真实乱子伦清晰对白|
奇米四色7777中文字幕|
日韩吃奶摸下aa片免费观看|
亚洲欧美一区久久牛牛|
极品少妇被啪到呻吟喷水|
亚洲精品你懂的在线观看|
成人区人妻精品一区二区不卡|