天天看點

資訊安全系統設計基礎實驗四:外設驅動程式設計

北京電子科技學院(BESTI)

實驗報告

課程:資訊安全系統設計基礎 班級:1353

姓名:蘆暢 傅冬菁

學号:20135308 20135311

成績: 指導教師:婁家鵬 實驗日期:2015.11.24

實驗密級: 預習程度: 實驗時間:15:30~18:00

儀器組次: 必修/選修: 實驗序号:4

實驗名稱:實驗四:外設驅動程式設計

實驗目的與要求:

1.掌握實時系統應用和驅動程式的編寫

2.選擇某個接口電路

實驗儀器:

名稱 型号 數量
嵌入式開發平台 UP-NETARM2410-CL 1
PC機 DELL

 實驗内容、步驟與體會:

1、前期準備,開發環境的配置同實驗一,運作./install.sh

資訊安全系統設計基礎實驗四:外設驅動程式設計

編譯代碼,挂載調試,成功運作:

資訊安全系統設計基礎實驗四:外設驅動程式設計

2、閱讀和了解源代碼,進入/bc/01_demo,使用vi 編輯器或其他編輯器閱讀了解源代碼。

資訊安全系統設計基礎實驗四:外設驅動程式設計

2、編譯驅動子產品及測試程式

在 Makefile 中有兩種編譯方法,可以在本機上使用gcc 也可以使用交叉編譯器進行編譯,這裡我們使用交叉編譯器進行編譯的結果。

因為手動編譯代碼太為繁瑣,我們選擇了用make的方法,将Makefile稍微修改後就可以使用。Makefile修改後如上圖所示。

之後輸入make指令,看到如下圖指令:

資訊安全系統設計基礎實驗四:外設驅動程式設計

如果編譯的時候出現問題,可能是在/usr/src 下沒有建立一個linux 連接配接,可以使用下面的指令:

[root@zxt 01_demo]# cd /usr/src/
[root@zxt src]# ln -sf linux-2.4.20-8 linux
[root@zxt src]# ls      
資訊安全系統設計基礎實驗四:外設驅動程式設計

如果使用 gcc 編譯的話,需要通過下面的指令來建立裝置節點,如果使用交叉編譯器

的話,不需要建立裝置節點。

#mknod /dev/demo c 254 0      

首先要插入驅動子產品demo.o,然後可以用lsmod 指令來檢視子產品是否已經被插入,在

不使用該子產品的時候還可以用rmmod 指令來将子產品解除安裝。

編譯成功,出現如下結果:

[root@BC 01_demo]# ./test_demo
write 32 bytes data to /dev/demo
0:   0   1   2   3
1:   4   5   6   7
2:   8   9   10  11
3:   12  13  14  15
4:   16  17  18  19
5:   20  21  22  23
6:   24  25  26  27
7:   28  29  30  31
*****************************************************
Read 32 bytes data from /dev/demo
0:   31  30  29  28
1:   27  26  25  24
2:   23  22  21  11
3:   12  13  14  15
4:   16  17  18  19
5:   20  10   9   8
6:   7    6   5   4
7:   3    2   1   0
*****************************************************      

遇到的問題及解決辦法:

1.我們起初運作make沒有成功,我們先選擇了手動編譯代碼,然而後來還是沒有運作成功,出現

[root@zxt 01_demo]# ./test_demo
####DEMO  device open fail####       

失敗提示。

後來我們問了同學,将Mekefile修改了,再次make,可以成功運作。

2.

[root@zxt src]# ln -sf linux-2.4.20-8 linux      

- ln指令的用法是連接配接,使用格式是ln [options] source dist,這裡我們用到的sf參數的含義是:

-f:連結時先将與dist同檔名的檔案删除

-s:進行軟連結。(軟連結,又稱符号連結,這個檔案包含了另一個檔案的路徑名,特點是可以連結不同檔案系統的檔案,甚至可以連結不存在的檔案。)