




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、遼寧工業(yè)大學 課程設計說明書(論文)遼寧工業(yè)大學單片機及接口技術(shù) 課程設計(論文)題目:直流電機驅(qū)動程序的設計院(系): 電子與信息工程學院專業(yè)班級:計算機101學 號: 100401018學生姓名:鄭杭指導教師:瞿濤教師職稱:講師起止時間:13-12-28 至 14-01-10課程設計(論文)任務及評語院(系):電子與信息工程學院教研室:計算機科學與技術(shù)號 學杭 K 關(guān)課程設計 (論文) 題目流 直課程設計論文 >任務訕用» 紂 伽 抄 M,互 或 相 ) 禁 機 禺 嚴 動 電 , 電 口 > 流WM 直 的 左 O 整 字、元00 匕匕 * O ws Il 畑 容
2、換 芯 幾 鉗 路 計份 厶冃 一 一 O 為7 流 以W加觀伽 直 M 刖流爪卄 將。 制 利序腫婦 wtMM圖 測 利朗完印 膽轉(zhuǎn):細W怖 育 M以打 M血W則何卄嘰 M十 iiIfflMa r/ 4 Tr- IT 4<一 一 - IV 巳土、 流能十#路也設原+:劉婦 根m認撰 ff電近電Lr>itt近胡ffi:1>路2>3> 流要件直總設件態(tài)和求 電 直主e1.23 軟1.2 要 出指導教師評語及成績?nèi)赵履曛缚兂煽偰夸浀?章嵌入式linux 1第2章設備驅(qū)動程序簡介32.1設備驅(qū)動程序的概念32. 2設備驅(qū)動程序的基本結(jié)構(gòu) 3第3章搭建交叉編譯環(huán)境53.1
3、 安裝 Redhat 9.0Linux 操作系統(tǒng)53.2安裝交叉編譯器53.3配置NFS網(wǎng)絡文件系統(tǒng)53.4鏈接掛載5第4章 直流電機驅(qū)動程序的編寫 64.1驅(qū)動程序的編寫64.2直流電機用戶應用程序 94.3驅(qū)動程序的編譯文件 Makefile 104.4用戶程序的 Makefile 文件11第5章運行程序125.1建立設備進入點 125.2加載驅(qū)動程序125.3運行用戶應用程序 12第6章課程設計總結(jié)13參考文獻14遼寧工業(yè)大學 課程設計說明書(論文)第1章嵌入式linuxLinux操作系統(tǒng)核心最早是由芬蘭的 Linus Torvalds于1991年9月在芬蘭赫辛基大 學上學時發(fā)布的(Li
4、nux 0。01版,第一個正式向外公布的Linux內(nèi)核版本),后來經(jīng)眾多 世界項尖的軟件工程師不斷修改和完善,Linux得以在全球普及開來,在服務器域及個人 桌面領(lǐng)域得到越來越多的應用。Linux是在GNU公共許可權(quán)限下免費獲的,是一款符合 POSIX標準的多用戶、多任務、支持多線程和多CPU的類Unix操作系統(tǒng)。Linux以其高效 性和活躍性著稱。Linux模塊化的設計結(jié)構(gòu),使得它既能夠在格昂貴的工作站上運行又能 夠在廉價的PC機上實現(xiàn)全部的Unix特性。Linux當前有很多發(fā)行版本,流行的有:RedHat Linux、Debian Linux、ReflagsLinux、Ubuntu等。由于
5、集成電路技術(shù)的飛速發(fā)展,嵌入 式系統(tǒng)的開發(fā)從單片機時代進入到了一個“系統(tǒng)開發(fā)的階段,嵌入式操作系統(tǒng)也逐漸 走上了歷史舞臺。從國內(nèi)和國外來看,嵌入式操作系統(tǒng)主要有 WindowsCE VxWorks pSOS Palm OS等。Linux是一個成熟、穩(wěn)定的操作系統(tǒng),由于其在嵌入式開發(fā)方面具有其它操 作系統(tǒng)無可比擬的優(yōu)勢,經(jīng)過這幾年的發(fā)展,已迅速躋身主流嵌入式開發(fā)平臺。Linux作為嵌入式操作系統(tǒng)的優(yōu)勢在于:1. Li nux 是開放源代碼的免費軟件。只要遵守 GPL的規(guī)定,就可以免費獲得Linux 內(nèi)核和其它自由軟件的源代碼,采用Linux操作系統(tǒng)構(gòu)建嵌入式系統(tǒng),可以大大降低開發(fā) 成本和周期。2
6、丄inux具有完善的文檔和廣泛的技術(shù)支持。Linux是互聯(lián)網(wǎng)充分發(fā)展的產(chǎn)物,在網(wǎng) 上能夠找到許多關(guān)于Linux的文檔以及強大的技術(shù)支持。3丄inux內(nèi)核功能強大,性能高效、穩(wěn)定。Linux的內(nèi)核非常穩(wěn)定,它的高效和穩(wěn)定 性已經(jīng)在各個領(lǐng)域,尤其是在網(wǎng)絡服務器領(lǐng)域得到了事實的驗證。4.Linux能夠支持多種體系結(jié)構(gòu),是支持微處理器種類最多的操作系統(tǒng)。目前,Linux 已經(jīng)被移植到數(shù)十種硬件平臺上,幾乎所有主流的硬件平臺,如 X86 ARM PPC MIPS ALPHA SPAR(等, Linux 都支持。5丄inux擁有強大的網(wǎng)絡功能。隨著嵌入式系統(tǒng)的發(fā)展,嵌入式系統(tǒng)與Intemet結(jié)合得越來越緊
7、密。與其它操作系統(tǒng)相比,Linux在網(wǎng)絡方面有較大的優(yōu)勢,基本上所有的網(wǎng) 絡協(xié)議和網(wǎng)絡接口都可以在 Linux上找到。6.Linux大小和功能可定制。Linux繼承了 Unix的優(yōu)秀設計思想,內(nèi)核與用戶界面完 全獨立,各部分的可定制性很強,可以按照需求進行定制和配置, 這對于硬件資源有限的 嵌入式系統(tǒng)是一個理想的選擇。2遼寧工業(yè)大學 課程設計說明書(論文)第2章設備驅(qū)動程序簡介2.1設備驅(qū)動程序的概念設備驅(qū)動程序是有內(nèi)核中的相關(guān)例程和數(shù)據(jù)組成的1/O設備軟件接口,每當內(nèi)核意識到要對某個設備今次那個特殊的操作是,它就調(diào)用相應的驅(qū)動例程,當驅(qū)動例程完成后,就返回至用戶進程。設備驅(qū)動程序是操作系統(tǒng)內(nèi)
8、核、硬件之間的接口。設備驅(qū)動程序為應用程序忽略 了硬件的細節(jié),這樣在應用程序看來,硬件設備只是一個設備文 件,應用程序可以象 操作普通文件一樣對硬件設備進行操作。設備驅(qū)動程序是內(nèi)核的一 部分,它文成以下功能:(1) 對設備初始化和釋放。(2) 把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)。(3) 讀取應用程序傳送給設備文件的數(shù)據(jù)和回送應用程序請求的數(shù)據(jù)。(4) 檢測和處理設備出現(xiàn)的錯誤。每個設備驅(qū)動程序都有以下幾個特性:(1) 具有一整套的和硬件設備通訊的例程,并且提供給操作系統(tǒng)一套標準的 軟件接口。(2) 有一個可以被操作系統(tǒng)動態(tài)調(diào)用和移除的自包含組件。(3) 可以控制和管理用戶程序和物理設備之間
9、的數(shù)據(jù)流。2. 2設備驅(qū)動程序的基本結(jié)構(gòu)對用戶程序而言,設備驅(qū)動程序隱藏了設備的具體細節(jié), 對各種不同設備提供了一致 的接口。一般設備驅(qū)動程序可以分為三個主要組成部分:(1)自動配置和初始化子程序:自動配置和初始化子程序常在相應的 driver中實現(xiàn),負 責檢測所要驅(qū)動的硬件設備是否存在和是否能正常工作。如果該設備正常,則對這個設備及其相關(guān)的設備驅(qū)動程序需要的狀態(tài)進行初始化。這部分驅(qū)動程序僅在初始化的時候調(diào)用 一次。服務于I/ O請求的子程序:它又稱為驅(qū)動程序的上半部分, 調(diào)用這部分是由于系統(tǒng)調(diào)用的結(jié)果。這部分程序在執(zhí)行的時候,系統(tǒng)仍認為是和進 行調(diào)用的進程屬于同一個進程,只是由用戶態(tài)變成了核
10、心態(tài),具有進行此系統(tǒng)調(diào)用的用戶 程序的運行環(huán)境。因此可以在其中調(diào)用 sleepO等與進程運行環(huán)境有關(guān)的函數(shù)。(3)中斷服務子程序:在Lintm系統(tǒng)中,并不是直接從中斷向量表中調(diào)用設備驅(qū)動程序的中斷服務子程序,而是由系統(tǒng)來接收硬件中斷,再由系統(tǒng)調(diào)用中斷服務子程 序。中斷可以產(chǎn)生在任何一個進程運行的時候,因此,在中斷服務程序被調(diào)用的時候, 不能依賴于任何進程的狀態(tài),也就不能調(diào)用任何與進程運行環(huán)境有關(guān)的函數(shù)。因為設備驅(qū)動程序一般支持同一類型的若干設備,所以一般在系統(tǒng)調(diào)用中斷服務子程序的時候, 都帶有 一個或多個參數(shù),以唯一標識請求服務的從設備。4遼寧工業(yè)大學 課程設計說明書(論文)第3章搭建交叉編譯
11、環(huán)境3.1安裝Redhat 9.0Linux操作系統(tǒng)在PC機上安裝虛擬機,并在虛擬機上安裝Redhat 9.0Linux操作系統(tǒng)。3.2安裝交叉編譯器似乎 啟動虛擬機并以root用戶名登錄,在主機的根目錄/下,創(chuàng)建linuette目錄, 如:mkdir /linuette 。在mnt/cdrom目錄下找到光盤,將光盤中 RPM?文件夾拷貝到 /linu ette目錄下,打開系統(tǒng)工具下地終端,此時,系統(tǒng)將彈出終端框,在里面改變目/linuette/RPMS 下,輸入如下命令:#rpm - Uvh *.rpm3.3配置NFS網(wǎng)絡文件系統(tǒng)根據(jù)在Linux主機終端上執(zhí)行setup,選中Firewall
12、 configuration,回車,進入系統(tǒng)服務選項菜單,選擇 NOFIREWAL關(guān)閉防火墻。之后選中System setvices回車,選 中*nfs.保存退出。利用編輯器打開/etc/exports 文件,修改為:/(rw)保存退出。改 變目錄到/etc/rc.d/init.d/下,執(zhí)行如下命令:./nfs start 3.4鏈接掛載用交叉網(wǎng)線主機和實驗系統(tǒng)鏈接起來,打開minicom,配置波特率為115200,無奇偶校驗位。給系統(tǒng)上電,利用ifconfig eth0 192.168.0.12改變系統(tǒng)IP地址。在主機終端 上配主機Linux系統(tǒng)IP地址為192.168.0.11.利用pin
13、g命令看主機與實驗系統(tǒng)是否鏈接 上。利用chmod - R 777 /home/nfs改變/home/nfs文件夾屬性,在 minicom上輸入命令 mount 192.168.0.11/home/nfs /mnt/yaffs回車,掛載主機上的 /home/nfs 到實驗系統(tǒng)的/mnt/yaffs 目錄下。至此,Linux實驗環(huán)境搭建成功。5遼寧工業(yè)大學 課程設計說明書(論文)第4章 直流電機驅(qū)動程序的編寫4.1驅(qū)動程序的編寫首先是設備初始化,定義直流電機驅(qū)動程序的初始化函數(shù) ZLDJinit (),在函數(shù)中實 現(xiàn)向系統(tǒng)注冊設備號、設備名稱和初始化寄存器。向系統(tǒng)注冊設備,這里定義電機的主設 備
14、號宏符號名為ZLDJ-MAJOR設備名稱為zldj-drv ,設備的結(jié)構(gòu)體為&ZLDJ-ops,則設備 的注冊函數(shù)為:Devfs-register-chrdev(ZLDJ-MAJOR, ” zldj-dev ”,ZLDJ-ops);設備初始化函數(shù): Static int in tZLDJ-i ni t(void)In t ret=-ENODEV;ret= Devfs-register-chrdev(ZLDJ-MAJOR, ” ZLDJ-drv ” ,&ZLDJ-ops); showversio n();printk(ZLDJ-Module register success! -
15、kernel-n”);if(ret<0)/當返回值小于0時,設備注冊失敗Printk (” Could not register ZLDJ-driver ”);return 0;驅(qū)動程序的file-operation數(shù)據(jù)結(jié)構(gòu),由于直流電機驅(qū)動程序只能控制電機旋轉(zhuǎn)和停止,因此只需要接口函數(shù)ioctl ()就夠了。static struct file-operations ZLDJ-ops=Ioctl:ZLDJ-ioctl ,控制直流電機轉(zhuǎn)動和停止的借口函數(shù),控制直流電機轉(zhuǎn)動和停止的借口函數(shù)ioctl()后,主要是設備寄存器 GPRS與寄存器GPCR勺值。GPSM置位寄存器,當取值為1時,電
16、機開始轉(zhuǎn)動。GPSR2 |= (0x1«20;/ 電機正轉(zhuǎn)GPSR2 |=(0x1<<18;/ 電機反轉(zhuǎn)GRC為復位寄存器,當取值為1時,電機停止轉(zhuǎn)動。GPCR2 |=(0x1<<20;/電機正轉(zhuǎn)停止GPCR2 |=(0x1<<18;/電機反轉(zhuǎn)停止udelay ()設置一段時否則會產(chǎn)生溢出,因此為了能讓電機旋轉(zhuǎn)一段時間后,自動停止轉(zhuǎn)動,要使用函數(shù) 間延遲。由于函數(shù)udelay ()是微妙級,且該值不能取得太大, 設置一個循環(huán)來加大延遲的時間。for ( i=0 ; i<300;i+)udelay(8000);/ 延時直流電機驅(qū)動源程序:#i
17、ncludevli nux/con fig.h>#i ncludevli nu x/kernel.h>#in cludevli nu x/sched.h>#i ncludevli nu x/timer.h>#in cludevli nux/ini t.h>#in cludevli nu x/module.h>#in cludevli nu x/delay.h>#in cludevli nux/in terrupt.h>#i ncludevli nu x/devfs-fs-kernel.h>#in cludevli nu x/fs.h>
18、#in cludevli nu x/slab.h>#in cludevasm/io.h>#i ncludevli nu x/asm/irq.h>#i ncludevli nu x/hardware.h>#define ZLDJ-MAJOR 111#define VERS ” ZLDJ-dev”void showversi on(v oid)prin tk();9遼寧工業(yè)大學 課程設計說明書(論文)printk(“ sn”,VERS);prin tk(*nn);/* 接口函數(shù) ioctl*/*file,u nsig nedintssize-tZLDJ-ioctl(stru
19、ct inode*ino de,struct filecmd, un sig ned long arg)int i;GPSR2 |=( 0x1«20;/電機正轉(zhuǎn)for ( i=0 ; i<300;i+)udelay(8000);/延時GPCR2 |=( 0x1<<20;/電機正轉(zhuǎn)停止for ( i=0 ; i<300;i+)udelay(8000);/延時GPSR2 |=( 0x1<<18;/電機反轉(zhuǎn)for ( i=0 ; i<300;i+)udelay(8000);/延時GPCR2 |=( 0x1<<18;/電機反轉(zhuǎn)停止udel
20、ay(arg);return 0;static struct file-operati ons ZLDJ-ops=ioctl ZLDJ-ioctl,;static int init set-ZLDJ-i nit(void)int ret=-ENODEV;ret=devfs-register-chrdev(ZLDJ-MAJOR, ” ZLDJ-drv ”,&ZLDJ-ops); showvers ion();printk(“ZLDJ-Module register success!-kernel-n”);if(retvO)/當返回值小于0時,設備注冊失敗printk (“ Could n
21、ot register ZLDJ-driver ”);return 0;static void exit clea nup-ZLDJ-ctl(void)#ifdef OURS-HELLO-DEBUGprintk(“ cleanup-Module-kernel-n”);#en difdecfs-unregister-chrdev(ZLDJ-MAJOR,” ZLDJ-drv ” )MODULE-LICENS“(GPL )module-i nit(set-ZLDJ-i nit);module-exit(clea nup-ZLDJ-ctl);4.2直流電機用戶應用程序直流電機用戶應用程序設計分析,直流
22、電機應用程序的功能是在用戶空間調(diào)用設備驅(qū)動程序,其主要設計步驟如下。第一步,獲取直流電機驅(qū)動程序的文件描述符。fd=open ("/dev/zldj_drv",O_RDWR );第二步,調(diào)用設備驅(qū)動程序中的函數(shù)ioctl (),向電機發(fā)出控制指令。ioctl(fd,0x1,1000);直流電機用戶應用程序源程序:#i nclude<stdio.h>#in clude<sys/ioctl.h>#in clude<fc ntl.h>#in cludev un istd.h>int mai n() int fd,i nt ret;fd=o
23、pe n("/dev/zldj_drv",O_RDWR);if(fd<0) prin tf("nn Ope n device zldj error' n"); prin tf("n please in put Number (0-9):"); scan f("%x",&ret);ioctl(fd,0x1,1000);close(fd);printf("End of Test'n");return 0;4.3驅(qū)動程序的編譯文件MakefileKERNELDIR=/Li
24、 nuxINCLUDEDIR=$(KERNELDIR)/i ncludeCROSS_COMPILE=arm-Li nux-CC =$(CROSS_COMPILE)gccCFLAGS+=-l.CFLAGS+=-Wall-O-D_KERNEL_-DMODULE-l $ (INCLUDEDIR)TARGET=zldj_drv.oall:$(TARGET)zldj_drv.o:zlidj_drv.c$(CC) -c $ (CFLAGS) $ A-o $ in stall:in stall-d $ (INSTALLDIR)in stall-c $ (TARGET).o $ (INSTALLDIR)cle
25、an :rm-f *.o * core .depe nd4.4用戶程序的Makefile文件CC=arm-L inu x-gccSTD= _GUN_SOURCEWARN= -WallTARGTS=testZLDJ.c.o:$(CC) -c $ (CFLAGS)-D $ (STD) $ (WARN) $ < all: $(STARGTS)TestZLDJ:testZLDJ.o$(CC)testZLDJ.o -o testZLDJclea n:rm-f *.o core a.out $ (TARGTS)clobber:clea nrm-f $ (TARGTS)13遼寧工業(yè)大學 課程設計說明書(論文)第5章運行程序5.1建立設備進入點由于直流電機驅(qū)動程序中已經(jīng)定義其主設備號為111,此設備號沒有定義,故取默認值為0.直流電機的設備進入點為zldj_drv。創(chuàng)建直流電機驅(qū)動程序的設備進入點如下: rootLi nux dcmo_drv# mk nod/dev/zldj_drv c 111 05.2加載驅(qū)動程序使用命令ins
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公寓新房預售合同樣本
- 公司要約合同樣本
- 付費驗車合同樣本
- 光伏項目 施工合同范例
- 事業(yè)編制聘用合同樣本
- pos機結(jié)算合同標準文本
- 中介甲乙丙方合同樣本
- 代購合作合同樣本
- 個人合同標準文本標準文本
- 倉儲設計合同樣本
- 企業(yè)管理基礎(chǔ)知到智慧樹章節(jié)測試課后答案2024年秋山東經(jīng)貿(mào)職業(yè)學院
- 清明節(jié)傳統(tǒng)文化知識主題班會184
- UL987標準中文版-2019固定和固定電動工具第八版
- 自考《英語二》高等教育自學考試試卷與參考答案(2025年)
- 新材料領(lǐng)域新型建筑材料研發(fā)及市場推廣計劃實施
- 國家安全教育大學生讀本-第八章堅持以促進國際安全為依托
- SB004-呼吸機標準操作規(guī)程藥物臨床試驗機構(gòu)GCP SOP
- 施工單位穿透式管理制度
- 社會組織項目管理制度
- 中國橋梁發(fā)展史大眾科普
- 2024網(wǎng)絡數(shù)據(jù)安全管理條例課件
評論
0/150
提交評論