版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式系統(tǒng)是先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)、電子技術(shù)以及各種具體應(yīng)用相結(jié)合的產(chǎn)物,是技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的新型集成知識(shí)系統(tǒng)。本次課程設(shè)計(jì)的目的是在有C語(yǔ)言基礎(chǔ),掌握在Linux下常用編輯器的使用Makefile 的編寫和使用以及Linux下的程序編譯與交叉編譯過(guò)程需要部分?jǐn)?shù)字電路的知識(shí)的基礎(chǔ)上。學(xué)習(xí)LED的相關(guān)知識(shí), 掌握74HC273芯片的工作原理以及了解SPI接口的相關(guān)知識(shí)。主要內(nèi)容是學(xué)習(xí)LED相關(guān)知識(shí),了解74HC273芯片對(duì)LED點(diǎn)亮的工作機(jī)制,熟練閱讀74HC273芯片資料,掌握對(duì)它的使用。 關(guān)鍵詞:嵌入式系統(tǒng)、LED、點(diǎn)陣目錄一、引言1二、嵌入式系統(tǒng)的特點(diǎn)21、概念
2、22、8段LED原理33、點(diǎn)陣式LED原理34、LED數(shù)碼管電路圖45、74HC273在開發(fā)板上的連接5四、實(shí)驗(yàn)部分61、實(shí)驗(yàn)設(shè)備及工具62、實(shí)驗(yàn)基礎(chǔ)63、實(shí)驗(yàn)環(huán)境連接7五、 實(shí)驗(yàn)步驟121、閱讀理解源碼122、編譯應(yīng)用程序123、下載調(diào)試13六、心得體會(huì)15七、參考文獻(xiàn)16附錄:17一、引言目前,嵌入式技術(shù)已成為通信和消費(fèi)類產(chǎn)品的共同發(fā)展方向。嵌入式系統(tǒng)幾乎包括了生活中的所有電器設(shè)備,如掌上、移動(dòng)計(jì)算設(shè)備、電視機(jī)頂盒、手機(jī)上網(wǎng)、數(shù)字電視、多媒體、汽車、微波爐、數(shù)字相機(jī)、家庭自動(dòng)化系統(tǒng)、電梯、空調(diào)、安全系統(tǒng)、自動(dòng)售貨機(jī)、蜂窩式電話、消費(fèi)電子設(shè)備、工業(yè)自動(dòng)化儀表與醫(yī)療儀器等。嵌入式系統(tǒng)是先進(jìn)的計(jì)
3、算機(jī)技術(shù)、半導(dǎo)體技術(shù)、電子技術(shù)和各個(gè)行業(yè)的具體應(yīng)用相結(jié)合的產(chǎn)物,這就決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。嵌入式系統(tǒng)一般指非系統(tǒng)。它是以應(yīng)用為中心、軟硬件可裁減的、能適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等綜合性要求的專用計(jì)算機(jī)系統(tǒng)。簡(jiǎn)單地說(shuō),嵌入式系統(tǒng)是集系統(tǒng)的應(yīng)用軟件與硬件于一體,類似于中的工作方式,具有軟件代碼小、高度自動(dòng)化、響應(yīng)速度快等特點(diǎn),因此特別適合于要求實(shí)時(shí)和多任務(wù)的系統(tǒng)。嵌入式系統(tǒng)主要由嵌入式處理器、相關(guān)支撐硬件、嵌入式操作系統(tǒng)及應(yīng)用軟件系統(tǒng)等組成。二、嵌入式系統(tǒng)的特點(diǎn)嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可剪裁,適應(yīng)引用系
4、統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的計(jì)算機(jī)系統(tǒng)。)嵌入式系統(tǒng)通常是面向特定應(yīng)用的,嵌入式與通用型的最大不同就是,嵌入式大多工作在為特定用戶群設(shè)計(jì)的系統(tǒng)中,它通常都具有低功耗、小體積、高集成度等特點(diǎn),能夠把通用中許多由板卡完成的任務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設(shè)計(jì)趨于小型化,因此,器件的移動(dòng)能力大大增強(qiáng),同時(shí)跟網(wǎng)絡(luò)的耦合也越來(lái)越緊密。)嵌入式系統(tǒng)的硬件和軟件都必須高效地設(shè)計(jì),量體裁衣、去除冗余,力爭(zhēng)在同樣的硅片面積上實(shí)現(xiàn)更高的性能,這樣才能在具體應(yīng)用中對(duì)處理器的選擇更具有競(jìng)爭(zhēng)力。)因?yàn)榍度胧较到y(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級(jí)換代也和具體產(chǎn)品同步進(jìn)行,所以,嵌入式系統(tǒng)產(chǎn)品一旦
5、進(jìn)入市場(chǎng),一般都具有較長(zhǎng)的生命周期。)為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)之中,而不是存貯于磁盤等載體中。嵌入式系統(tǒng)本身不具備自舉開發(fā)能力,即使在設(shè)計(jì)完成后,用戶也不能對(duì)其中的程序進(jìn)行修改,而是必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)。三、LED基本原理1、概念在某些半導(dǎo)體材料的 PN 結(jié)中,注入的少數(shù)載流子與多數(shù)載流子復(fù)合時(shí)會(huì) 把多余的能量以光的形式釋放出來(lái),從而把電能直接轉(zhuǎn)換為光能。PN 結(jié)加反 向電壓,少數(shù)載流子難以注入,故不發(fā)光。這種利用注入式電致發(fā)光原理制 作的二極管叫發(fā)光二極管,通稱 LED。LED 的發(fā)光顏色和發(fā)光效率與制作 LED 的材料和
6、工藝有關(guān),目前廣泛使用 的有紅、綠、藍(lán)三種。由于 LED 工作電壓低(僅 1.5-3V),能主動(dòng)發(fā)光且有 一定亮度,亮度又能用電壓(或電流)調(diào)節(jié),本身又耐沖擊、抗振動(dòng)、壽命 長(zhǎng)(10 萬(wàn)小時(shí)),所以在大型的顯示設(shè)備中,目前尚無(wú)其他的顯示方式與 LED 顯示方式匹敵。 把紅色和綠色的 LED 放在一起作為一個(gè)像素制作的顯示屏叫雙基色屏或 偽彩色屏;把紅、綠、藍(lán)三種 LED 管放在一起作為一個(gè)像素的顯示屏叫三基 色屏或全彩屏。制作室內(nèi) LED 屏的像素尺寸一般是 2-10 毫米,常常采用把幾 種能產(chǎn)生不同基色的 LED 管芯封裝成一體,室外 LED 屏的像素尺寸多為 12-26 毫米,每個(gè)像素由若
7、干個(gè)各種單色 LED 組成,常見的成品稱像素筒或像素模 塊。 LED顯示屏如果想要顯示圖象,則需要構(gòu)成像素的每個(gè) LED 的發(fā)光亮度都 必須能調(diào)節(jié),其調(diào)節(jié)的精細(xì)程度就是顯示屏的灰度等級(jí)?;叶鹊燃?jí)越高,顯 示的圖像就越細(xì)膩,色彩也越豐富,相應(yīng)的顯示控制系統(tǒng)也越復(fù)雜。在當(dāng)前 的技術(shù)水平下,256 級(jí)灰度的圖像,顏色過(guò)渡已十分柔和,圖像還原效果比 較令人滿意。 資料顯示,LED 光源比白熾燈節(jié)電 87%、比熒光燈節(jié)電 50%,而壽命比白 熾燈長(zhǎng) 2030 倍、比熒光燈長(zhǎng) 10 倍。LED 光源因具有節(jié)能、環(huán)保、長(zhǎng)壽命、安 全、響應(yīng)快、體積小、色彩豐富、可控等系列獨(dú)特優(yōu)點(diǎn),被認(rèn)為是節(jié)電降能 耗的最佳實(shí)
8、現(xiàn)途徑。2、8段LED原理LED的7個(gè)字段分別稱為a、b、c、d、e、f、g,有時(shí)還有一個(gè)小數(shù)點(diǎn)段h,圖1(a)所示。通過(guò)7個(gè)(或8個(gè))發(fā)光段的不同組合,顯示09和AF共16個(gè)字母數(shù)字,從而實(shí)現(xiàn)十六進(jìn)制的顯示。為使7段顯示器顯示數(shù)字或字符,就需點(diǎn)亮相應(yīng)的段,每個(gè)段分別由數(shù)據(jù)線進(jìn)行控制,通常數(shù)據(jù)線D0D7順序控制ah段,如圖11-34(b)所示,所需的控制信號(hào)稱為段碼。由于數(shù)字與段碼之間沒有規(guī)律性,因此必須進(jìn)行數(shù)字與段碼之間的轉(zhuǎn)換以便顯示數(shù)字。常用的轉(zhuǎn)換方法是將要顯示字形的段碼列成一個(gè)表,稱為段碼表。顯示時(shí),根據(jù)字符查段碼表,取出其對(duì)應(yīng)的段碼送到數(shù)據(jù)線上來(lái)控制顯示。3、點(diǎn)陣式LED原理點(diǎn)陣式LE
9、D的顯示單元一般由8行8列LED組成,其外形及內(nèi)部連接如圖3所示,可以再由這8行8列的LED拼成更大的LED陣列。點(diǎn)陣式LED顯示器能顯示各種字符、漢字及圖形、圖像,并具有色彩。點(diǎn)陣式LED中,每個(gè)LED表示一個(gè)像素,通過(guò)每個(gè)LED的亮與滅來(lái)構(gòu)造出所需的圖形,各種字符及漢字也是通過(guò)圖形方式來(lái)顯示的。對(duì)于單色點(diǎn)陣式LED,每個(gè)像素需要1位二進(jìn)制數(shù)表示,1表示亮,0表示滅。對(duì)于彩色點(diǎn)陣式LED,則每個(gè)像素需要更多的二進(jìn)制位表示,通常需要一個(gè)字節(jié)。點(diǎn)陣式LED顯示器的顯示控制采用掃描方式,在數(shù)據(jù)存儲(chǔ)器中開辟若干個(gè)存儲(chǔ)單元作為顯示緩沖區(qū),緩沖區(qū)中存有所需顯示圖形的控制信息。顯示時(shí)依次通過(guò)列信號(hào)驅(qū)動(dòng)器輸
10、出一行所需所有列的信號(hào),然后再驅(qū)動(dòng)對(duì)應(yīng)的行信號(hào),控制該行顯示。只要掃描速度適當(dāng),顯示的圖形就不會(huì)出現(xiàn)閃爍4、LED數(shù)碼管電路圖其中各個(gè)引腳的功能在下面都有描述。圖1.LED數(shù)碼管電路圖5、74HC273在開發(fā)板上的連接74HC273 在 8 字?jǐn)?shù)碼管中開發(fā)板中的連接如下圖所示: 圖2. 開發(fā)板上的7段LED的連接 開發(fā)板設(shè)置2 個(gè)數(shù)碼管,由74HC273 控制。74HC273是同步串行轉(zhuǎn)并行的鎖存器,在此通過(guò)SPI 總線和CPU 連接,鎖存數(shù)據(jù)后驅(qū)動(dòng)數(shù)碼管發(fā)光。 圖3. 開發(fā)板上點(diǎn)陣式LED的連接四、實(shí)驗(yàn)部分1、實(shí)驗(yàn)設(shè)備及工具硬件:UP-TECH S2410/P270 DVP 嵌入式實(shí)驗(yàn)平臺(tái)、
11、PC 機(jī) Pentium 500 以上, 硬盤 10G 以上。軟件:PC 機(jī)操作系統(tǒng) REDHAT LINUX 9.0MINICOMARM-LINUX 開發(fā)環(huán)境 2、實(shí)驗(yàn)基礎(chǔ)目的是為后續(xù)實(shí)驗(yàn)搭建好軟、硬件環(huán)境,配置好相關(guān)的協(xié)議、服務(wù),并通過(guò)編寫最簡(jiǎn)單的HelloWorld程序進(jìn)行測(cè)試。由于實(shí)驗(yàn)都要依靠前面的配置,本段只著重?cái)⑹鰧?shí)驗(yàn)的具體實(shí)現(xiàn)。3、實(shí)驗(yàn)環(huán)境連接(1)、建立工作目錄 rootzxt smile# mkdir hello rootzxt smile# cd hello(2)、編寫程序源代碼用下面的命令來(lái)編寫 hello.c 的源代碼,進(jìn)入 hello 目錄使用 vi 命令來(lái)編輯代碼:
12、按“i ” 或者“a ” 進(jìn)入編輯模式,將上面的代碼錄入進(jìn)去,完成后按 Esc 鍵進(jìn)入命令狀態(tài),再用命令“:wq” 保存并退出。這樣我們便在當(dāng)前目錄下建立了一個(gè)名為 hello.c 的文件。進(jìn)入/arm2410cl/exp/basic/10_led 目錄,使用 vi 編輯器或其他編輯器閱讀理解源代碼 (3)、編譯應(yīng)用程序運(yùn)行 make 產(chǎn)生 test_led 可執(zhí)行文件 test_led(4)、編寫Makefile(5)、編譯應(yīng)用程序在 hello 目錄下運(yùn)行“make” 來(lái)編譯我們的程序了。如果進(jìn)行了修改,重新編譯則運(yùn)行:rootzxt hello# make cleanrootzxt he
13、llo# make(6)、下載調(diào)試在宿主 PC 計(jì)算機(jī)上啟動(dòng) NFS 服務(wù),并設(shè)置好共享的目錄,在建立好 NFS 共享目錄以后,我們就可以進(jìn)入 MINICOM 中建立開發(fā)板與宿主 PC 機(jī)之間的通訊了。其步驟如下:服務(wù)器設(shè)置,輸入命令”setup”分別進(jìn)行對(duì)系統(tǒng)服務(wù)及防火墻配置。圖1 服務(wù)器配置 為宿主PC機(jī)配置了NFS服務(wù)NFS(Network File System)指網(wǎng)絡(luò)文件系統(tǒng),它實(shí)現(xiàn)了文件在不同的系統(tǒng)間使用。當(dāng)我們想用遠(yuǎn)端檔案時(shí),只需調(diào)用“mount”就可以遠(yuǎn)端系統(tǒng)掛接在自己的檔案系統(tǒng)之下。每次重啟宿主PC機(jī)時(shí),先輸入命令”service portmap restart”和”serv
14、ice nfs restart”,以啟動(dòng)nfs服務(wù)。啟動(dòng)vi編輯器查看網(wǎng)段輸入命令”Vi /etc/exports”查看網(wǎng)段為”192.168.0.*”,按鍵”ESC”,輸入”: wp”存盤退出。重新啟動(dòng)NFS服務(wù),輸入”完成主機(jī)IP地址設(shè)置。圖2NFS服務(wù)器配置進(jìn)入共享文件”cd /root/share/exp/basic/10_led”,輸入”ls”查看10_led下的兩個(gè).c文件。輸入”make clean”,”make”生成兩個(gè).0文件。轉(zhuǎn)入超級(jí)終端<1>硬件連接:連接宿主機(jī)和UP-TECH S2410/P270 DVP 嵌入式實(shí)驗(yàn)平臺(tái)。<2>打開宿主PC 機(jī)電
15、源,進(jìn)入 Linux操作系統(tǒng)。(7)、啟動(dòng)實(shí)驗(yàn)平臺(tái)硬件連接: 連接電源,將12V電源線的連到UP-NETARM2410-CL的電源接口;連接串口線,一端連接PC的串口,另一端連接到UP-NETARM2410-CL的串口(RS232-0);連接網(wǎng)線,將隨機(jī)附帶的交叉網(wǎng)線把UP-NETARM2410-CL靠近于電源接口的網(wǎng)口和PC機(jī)的網(wǎng)口連接好。建立超級(jí)終端:運(yùn)行Windows系統(tǒng)下(以WindowsXP為例)開始所有程序附件通訊超級(jí)終端(HyperTerminal)。新建一個(gè)通信終端。如果要求輸入?yún)^(qū)號(hào)、電話號(hào)碼等信息請(qǐng)隨意輸入,出現(xiàn)如圖所示對(duì)話框時(shí),為所建超級(jí)終端取名為arm,可以為其選一個(gè)圖標(biāo)
16、。單擊“確定”按鈕圖3 新建超級(jí)終端在接下來(lái)的對(duì)話框中選擇ARM開發(fā)平臺(tái)實(shí)際連接的PC機(jī)串口(如COM1),按確定后出現(xiàn)如圖所示的屬性對(duì)話框,設(shè)置通信的格式和協(xié)議。這里波特率為115200,數(shù)據(jù)位8,無(wú)奇偶校驗(yàn),停止位1,無(wú)數(shù)據(jù)流控制。按確定完成設(shè)置。完成新建超級(jí)終端的設(shè)置以后,可以選擇超級(jí)終端文件菜單中的另存為,把設(shè)置好的超級(jí)終端保存在桌面上,以備后用。用串口線將PC機(jī)串口和平臺(tái)UART0正確連接后,就可以在超級(jí)終端上看到程序輸出的信息了。圖4 超級(jí)終端端口設(shè)置啟動(dòng)實(shí)驗(yàn)平臺(tái) ::打開電源開關(guān),系統(tǒng)會(huì)由VIVI開始引導(dǎo)。正常啟動(dòng)時(shí)會(huì)顯示啟動(dòng)信息到“Press Return to start t
17、he LINUX now, any other key for vivi”,按除回車鍵外的其它鍵則進(jìn)入vivi控制臺(tái)。圖5 啟動(dòng)超級(jí)終端平臺(tái)圖6 超級(jí)終端命令輸入輸入”22”和”查看是否連通,若成功連接,”Ctrl+C”結(jié)束,在進(jìn)行掛載后,查找根目錄下的文件”cd /host/exp/basic/10_led”,通過(guò)“l(fā)s”查看文件,然后使用“insmod s3c2410-led.o ”命令完成將一個(gè)可動(dòng)態(tài)加載的模塊加載到內(nèi)核中。輸入” lsmod” 顯示當(dāng)前內(nèi)核加載的模塊,輸入命令”./test_led”進(jìn)行程序測(cè)試。圖7 下位機(jī)運(yùn)行五、實(shí)驗(yàn)步驟1、閱讀理解源碼進(jìn)入/arm2410cl/ex
18、p/basic/10_led 目錄,使用 vi 編輯器或其他編輯器閱讀理解源代碼 2、編譯應(yīng)用程序運(yùn)行 make 產(chǎn)生 test_led 可執(zhí)行文件 test_ledrootBC exp/basic# cd 10_led rootBC 10_led# make armv4l-unknown-linux-gcc -c -I. -Wall -O -D_KERNEL_ -DMODULE armv4l-unknown-linux-gcc -I. -Wall -O -D_KERNEL_ -DMODULE rootBC 2410-Classics LED# ls Makefile readme s3c24
19、10-led.c s3c2410-led.o test_led test_led.c 3、下載調(diào)試切換到 minicom 終端窗口,使用 NFS mount 開發(fā)主機(jī)的/arm2410cl 到/host 目錄,然后進(jìn)入/host/exp/basic/10_led 目錄,用 insmod s3c2410-led.o 命令插入 led 驅(qū)動(dòng),并用 lsmod命令查看是否已經(jīng)插入。/mnt/yaffsmount -t nfs -o nolock 192.168.0.189:/arm2410cl /host /host/exp/basiccd 10_led/ /host/exp/10_ledls Ma
20、kefile readme s3c2410-led.c s3c2410-led.o test_led test_led.c test_led.o /host/exp/10_ledinsmod s3c2410-led.o Using s3c2410-led.o 0-numeric tube : Dprintk device open s3c2410-hc273 initializedUsing exio.o /host/exp/10_ledlsmod Module Size Used by Tainted: P s3c2410-led 2048 0 (unused) /host/exp/10_l
21、ed./test_led 即可以看到8字?jǐn)?shù)碼管和點(diǎn)陣數(shù)碼管工作。6、 結(jié)果分析七、心得體會(huì)通過(guò)做這次ARM嵌入式課程設(shè)計(jì)我深深的體會(huì)到,專心投入去完成一件事情是多么讓人激動(dòng)不已的,當(dāng)某個(gè)環(huán)節(jié)的問題被你解決后,那種成就感能帶給自己更大的信心和激發(fā)你對(duì)學(xué)習(xí)的熱情,可能這是大學(xué)最后一個(gè)課程設(shè)計(jì)的原因,我把大量的精力和激情都投入到這次課程設(shè)計(jì)中,所以在整個(gè)學(xué)習(xí)過(guò)程中,我解決了一些平時(shí)沒有碰到的問題,這更讓我對(duì)技術(shù)這個(gè)行業(yè)產(chǎn)生強(qiáng)烈的興趣,下面是我這兩周的課程設(shè)計(jì)心得。這次課程設(shè)計(jì)我們做的是在ARM嵌入式平臺(tái)上通過(guò)LED顯示不同的符號(hào),這是一個(gè)具有挑戰(zhàn)性的功課,我們組分完每個(gè)人的任務(wù)后,接下來(lái)查資料,設(shè)計(jì)
22、,分析,和同學(xué)討論,在電腦上用軟件仿真,這幾天,緊張而又充實(shí)。這次課程設(shè)計(jì)是對(duì)我所學(xué)知識(shí)的全面檢驗(yàn)。我們?cè)谡n堂上掌握的僅僅是專業(yè)基礎(chǔ)課的理論面,如何去面對(duì)實(shí)際的設(shè)計(jì)是一個(gè)值得我們思考的問題,又如何把我們學(xué)的書本內(nèi)容運(yùn)用到實(shí)際中呢?我想做本次課程設(shè)計(jì)就給我們提供了良好的實(shí)踐平臺(tái)。在本次課程設(shè)計(jì)中我感觸很深的就是要查閱很多指導(dǎo)書籍。在此次設(shè)計(jì)中,我學(xué)會(huì)了自上而下的系統(tǒng)設(shè)計(jì)思想,掌握了綜合應(yīng)用所學(xué)理論的能力,而且對(duì)我的毅力是個(gè)考驗(yàn),我是連續(xù)將近兩周周做下來(lái)的。對(duì)我而言,知識(shí)上的收獲重要,精神上的豐收喜。挫折是一份財(cái)富,經(jīng)歷是一份擁有。此次課程設(shè)計(jì)將對(duì)我今后的進(jìn)步產(chǎn)生積極影響。最后由衷感謝老師的指導(dǎo),
23、同學(xué)的幫助。 八、參考文獻(xiàn)【1】趙宏,inux系統(tǒng)指南.成都:西南交通大學(xué)出版社,2008【2】張曉林,崔迎煒.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)。北京:北京航空航天大學(xué)出版社,2006【3】楊剛.嵌入式基礎(chǔ)實(shí)驗(yàn)教程.北京:北京大學(xué)出版社,2007【4】陳文智.嵌入式系統(tǒng)開發(fā)原理與實(shí)踐 .北京:清華大學(xué)出版社,2005【5】杜春雷.ARM體系結(jié)構(gòu)與編程.清華大學(xué)出版社,2007【6】博創(chuàng)公司.2410經(jīng)典實(shí)驗(yàn)指導(dǎo)書3.2.北京博創(chuàng)興業(yè)科技有限公司,2007【7】鄭慕德.嵌入式微型計(jì)算機(jī)系統(tǒng)實(shí)例教程.北京:科學(xué)出版社,2006【8】劉洪濤,孫天澤.嵌入式技術(shù)與設(shè)計(jì).北京:人民郵電出版社,2009【9
24、】【10】【11】附錄:#include<linux/config.h>#include<linux/module.h>#include<linux/kernel.h>#include<linux/init.h>#include<linux/miscdevice.h>#include<linux/sched.h>#include<linux/delay.h>#include<linux/poll.h>#include<linux/spinlock.h>#include<linux/
25、delay.h>#include<linux/ioport.h>#include<asm/io.h>#include<asm/hardware.h>#include<asm/sizes.h>#include<asm/uaccess.h>#include<asm/arch/S3C2410.h>#include<asm/arch/irqs.h>/* debug macros */#undef DEBUG#define DEBUG#ifdef DEBUG#define DPRINTK( x. )printk(&
26、quot;s3c2410-led: " x)#else#define DPRINTK( x. )#endif#define DEVICE_NAME "s3c2410 led"#define LED_TUBE_PHY_START 0x08000110#define LED_DIG_PHY_START 0x08000100#define LED_TUBE_IOCTRL 0x11#define LED_DIG_IOCTRL 0x12staticint ledMajor = 0;#define LED_MINOR 1#ifdef CONFIG_DEVFS_FSstatic
27、 devfs_handle_t devfs_led_dir,devfs_led;#endifstatic u32 s3c2410_led_tube_addr = IDE_BASE + 0x100;static u32 s3c2410_led_dig_vaddr = IDE_BASE + 0x110;staticint s3c2410_led_ioctl (struct inode *inode, struct file *filp, unsignedint cmd, unsignedint arg)/printk("DOT buffer is %xn" ,arg>&g
28、t;8 );switch(cmd)case LED_DIG_IOCTRL:return *(volatileunsignedlong *)s3c2410_led_dig_vaddr=(arg>>8) | arg << 16; ; default :return printk("your command is not exist"); return 0;static ssize_t s3c2410_led_write(struct file *filp, constchar *buf, size_t count, loff_t * f_pos)int
29、i;unsignedchar mdata16;if (copy_from_user(mdata,buf,10) return -EFAULT;for (i=0;i<8;i+)/printk(":%d ",mdatai);/*(volatile unsigned char *)(s3c2410_led_tube_addr+i)=0xff;*(volatileunsignedchar *)(s3c2410_led_tube_addr+i*2)=mdatai;/printk(":%x ",*(volatile unsigned short *)(s3c2
30、410_led_tube_addr+i);/printk("n");return 0;staticint s3c2410_led_open(struct inode *inode, struct file *filp) MOD_INC_USE_COUNT; printk("led device open sucess!n");return 0;staticint s3c2410_led_release(struct inode *inode, struct file *filp) MOD_DEC_USE_COUNT; printk("led d
31、evice releasen");return 0;staticstruct file_operations s3c2410_led_fops = owner:THIS_MODULE, open:s3c2410_led_open, ioctl:s3c2410_led_ioctl, write:s3c2410_led_write, release:s3c2410_led_release,;int _init s3c2410_led_init(void)int ret;BWSCON = (BWSCON & (BWSCON_ST1 | BWSCON_WS1 | BWSCON_DW1
32、) | (BWSCON_ST1 | BWSCON_DW(1, BWSCON_DW_16);BANKCON1= BANKCON_Tacs4 | BANKCON_Tcos4 | BANKCON_Tacc14 |BANKCON_Toch4 | BANKCON_Tcah4 | BANKCON_Tacp6 | BANKCON_PMC1;GPACON|=(1<<12); ret = register_chrdev(0, DEVICE_NAME, &s3c2410_led_fops);if (ret < 0) DPRINTK(DEVICE_NAME " can't
33、 get major numbern");return ret; #ifdef CONFIG_DEVFS_FS devfs_led_dir = devfs_mk_dir(NULL, "led", NULL); devfs_led = devfs_register(devfs_led_dir, "0raw", DEVFS_FL_DEFAULT, ledMajor,LED_MINOR, S_IFCHR | S_IRUSR | S_IWUSR, &s3c2410_led_fops, NULL);#endif DPRINTK (DEVICE_N
34、AME"tdevice initializedn");return 0; void _exit s3c2410_led_exit(void)#ifdef CONFIG_DEVFS_FSdevfs_unregister(devfs_led);devfs_unregister(devfs_led_dir);#endifunregister_chrdev(ledMajor, DEVICE_NAME);module_init(s3c2410_led_init);module_exit(s3c2410_led_exit);#include<stdio.h>#include
35、<stdlib.h>#include<fcntl.h>#include<unistd.h>#include<sys/ioctl.h>#include<sys/mman.h>/#include <linux/delay.h>#define TUBE_IOCTROL 0x11#define DOT_IOCTROL 0x12void jmdelay(int n) int i,j,k;for (i=0;i<n;i+)for (j=0;j<100;j+)for (k=0;k<100;k+);int main() int fd;int i,j,k;unsignedint LEDWORD;unsignedint MLEDA8;unsignedchar LEDCODE10=0xc0
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 沖擊試驗(yàn)機(jī)建設(shè)項(xiàng)目可行性分析報(bào)告(總投資4000萬(wàn)元)
- 臥式多級(jí)離心泵項(xiàng)目可行性分析報(bào)告范文(總投資7000萬(wàn)元)
- 公務(wù)員考試熱點(diǎn)紀(jì)檢辦案流程解讀
- 交通規(guī)劃師招聘面試題目參考集
- 三角鐵項(xiàng)目可行性分析報(bào)告范文
- 銀行信貸審查員面試題集及解析
- 深度解析(2026)《GBT 18459-2001傳感器主要靜態(tài)性能指標(biāo)計(jì)算方法》
- 生物科技公司研發(fā)部主任面試問題集
- 特發(fā)性肺纖維化長(zhǎng)期管理個(gè)體化方案優(yōu)化
- 酒店前臺(tái)服務(wù)面試考核全解析
- 安徽輔警考試真題網(wǎng)盤
- 墩柱和蓋梁施工方案
- 義務(wù)教育化學(xué)課程標(biāo)準(zhǔn)2022年
- 賈玲張小斐《上學(xué)那些事》(手稿)臺(tái)詞劇本完整版
- vPC技術(shù)詳解課件
- 西方美術(shù)欣賞學(xué)習(xí)通章節(jié)答案期末考試題庫(kù)2023年
- (完整版)七年級(jí)上期末動(dòng)點(diǎn)問題專題(附答案)
- 校舍加固工程竣工自評(píng)報(bào)告
- NCCN 腫瘤臨床實(shí)踐指南-(中文版)胸腺瘤和胸腺癌2020V1正式版
- 04KV低壓萬(wàn)能式斷路器使用與操作培訓(xùn)課件
- 菊花的組織培養(yǎng)ppt
評(píng)論
0/150
提交評(píng)論