freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于arm9和linux的終端打印系統(tǒng)(參考版)

2024-11-21 22:08本頁(yè)面
  

【正文】 266MHz 32Bit RISC Microprocessor USER39。 是啊, 挫折是一份財(cái)富,經(jīng)歷是一份擁有 。 在此 ,我 要感謝我的指導(dǎo)老師 黃智偉教授 ,因?yàn)槭?黃教授 讓我 把暑假學(xué)的ARM7TDMI 知識(shí)重拾了不少,并 接 觸到 了 Linux 操作系統(tǒng) 。南華大學(xué)電氣工程學(xué)院課程設(shè)計(jì) 第 24 頁(yè) 共 30 頁(yè) 學(xué)習(xí)也是如此,它是一個(gè)長(zhǎng)期積累的過(guò)程,無(wú)論是在剩下的大學(xué)生活中,還是畢業(yè)參加工作以后我都應(yīng)該不斷地努力學(xué)習(xí),來(lái)拓寬自己的知識(shí)面,提升自己的綜合素質(zhì)。我 們每一個(gè)人都永遠(yuǎn)不能滿(mǎn)足于現(xiàn)有的成績(jī)。以前總是覺(jué)得自己的成績(jī)好,什么都懂,什么都會(huì),有點(diǎn)眼高手低。所以在動(dòng)手做這次設(shè)計(jì)之前,我認(rèn)真地翻了一下以前的筆記,我想認(rèn)認(rèn)真真地做這次的ARM 課程設(shè)計(jì),并以這次設(shè)計(jì)為我繼續(xù)學(xué)習(xí) ARM 的開(kāi)端。但 開(kāi)學(xué)后,自己慢慢放松了對(duì) ARM 的學(xué)習(xí),所以沒(méi)過(guò)多久感覺(jué)知識(shí)都忘得差不多了。 我這次的設(shè)計(jì)題目是: 基于 ARM9 和 Linux 的嵌入式打印終端系統(tǒng) 。勞動(dòng)是人類(lèi)生存生活永恒不變的話(huà)題。 最后 ,進(jìn)行 了 系統(tǒng)軟件平臺(tái)的設(shè)計(jì),完成了打印驅(qū)動(dòng),串口讀寫(xiě)與應(yīng)用程序 這 三 個(gè)功能模塊的實(shí)現(xiàn)。 再次 ,構(gòu)建了嵌入式系統(tǒng)平臺(tái),完成了 BootLoader、內(nèi)核、文件系統(tǒng)的搭建。 其次,對(duì)基于 S3C2410 嵌入式平臺(tái)進(jìn)行了分析與設(shè)計(jì)。 南華大學(xué)電氣工程學(xué)院課程設(shè)計(jì) 第 23 頁(yè) 共 30 頁(yè) 6 總結(jié)與體會(huì) 總結(jié) Linux 的通用性是毋庸置疑的,遵循 POSIX 標(biāo)準(zhǔn),內(nèi)核經(jīng)過(guò)適當(dāng)?shù)牟眉簟⒁浦?,即可用于如工業(yè)監(jiān)控設(shè)備、網(wǎng)絡(luò)通訊設(shè)備和 PDA 等嵌入式系統(tǒng)中。sem1)。sem2)。sem2)。sem1)。sem2,0,0)。sem1,0,1)。線(xiàn)程 p2 負(fù)責(zé)將 received socket 數(shù)據(jù)放入 c2 數(shù)組中,然后直接從 c2 取走數(shù)據(jù)交給打印機(jī)去打印。 主應(yīng)用程序的設(shè)計(jì) 開(kāi)發(fā)板上的應(yīng)用程序 Main 函數(shù)注冊(cè)兩個(gè)線(xiàn)程 p1 和 p2,兩個(gè)全局?jǐn)?shù)組 c1 和c2。 PC機(jī)上同時(shí)也運(yùn)行一個(gè) socket 用來(lái) listen 請(qǐng)求和綁定。 客戶(hù)端和服務(wù)器的 socket 編寫(xiě) 嵌入式打印終端采用 C/S 的模式,把 PC 機(jī)作為服務(wù)器,開(kāi)發(fā)板作為客戶(hù)端,通過(guò)以太網(wǎng)連接。 編寫(xiě)讀取掃描儀數(shù)據(jù)函數(shù) 首先打開(kāi)設(shè)備文件,該系統(tǒng)中的串口為 2,因此打開(kāi)函數(shù)為: Open(“/dev/ttyS1”,O_RDWR|O_NONBLOCK|O_NDELAY)。 設(shè)置串口參數(shù): set_parity(int fd,int databits,int stopbits,int parity), databits 為有多少個(gè)數(shù)據(jù)位, stopbit 為設(shè)置多少個(gè)停止位, parity 為奇偶校驗(yàn)位設(shè)置。 嵌入式打印終端 系統(tǒng) 中使用到的掃描儀是串口 掃描儀,這種掃描儀相對(duì)于USB 接口的掃描儀來(lái)說(shuō),控制較簡(jiǎn)單,在掃描儀掃描后,可以直接從串口讀取數(shù)據(jù)。串行通信是指利用一條傳輸線(xiàn)將數(shù)據(jù)一位一位地順序傳送。并行通信是指利用多條數(shù)據(jù)傳輸線(xiàn)將一個(gè)資料的各位同時(shí)傳送。 Open/close 函數(shù)打開(kāi) /關(guān)閉文件,因?yàn)樵?LINUX 下設(shè)備都是當(dāng)文件來(lái)操作的,所以需要 open 和 close 這兩個(gè)接口函數(shù)。 weida_printer_write()先對(duì)打印機(jī)是否在線(xiàn),是否忙,是否準(zhǔn)備好做進(jìn)一步的判斷,然后再進(jìn)行打印。 . 接口函數(shù)設(shè)計(jì) Ioctl()函數(shù)主要完成打印機(jī)字體、行距等參數(shù)的設(shè)置,在設(shè)計(jì)過(guò)程中必須解決用戶(hù)數(shù)據(jù)和內(nèi)核數(shù)據(jù)之間如何傳遞。最后使用 module_init(weida_printer_init)。 weida_printer_io_port_init()。/*注冊(cè)設(shè)備驅(qū)動(dòng) */ set_gpio_end (WEIDA_STB |GPIO_PULLUP_DIS |GPIO_MODE_OUT)。weida_printer_fops,NULL); 其中, DEVICE_NAME 為主設(shè)備名, weida_printer_fops 為定義的一個(gè)數(shù)據(jù)結(jié)構(gòu),用來(lái)實(shí)現(xiàn)的文件操作,包括 open、 close、 write 等。 初始化函數(shù) weida_init 通過(guò) devfs_register()函數(shù)向系統(tǒng)注冊(cè)設(shè)備。 . 定義設(shè)備名 define DEVICE_NAME weida_printer . 模塊函數(shù)設(shè)計(jì) 在該系統(tǒng)中,采用模塊化加載驅(qū)動(dòng)程序的方法,因此必須實(shí)現(xiàn)模塊的初始化函數(shù)和卸載函數(shù)。 打印驅(qū)動(dòng)的實(shí)現(xiàn) 該系統(tǒng)使用到的微型打印機(jī)屬于字符設(shè)備, 編寫(xiě) 驅(qū)動(dòng)程序。 Linux 內(nèi)核支持好幾種模塊類(lèi)型 (或者類(lèi) ),包括但不限于設(shè)備驅(qū)動(dòng)程序 。這意味著當(dāng)系統(tǒng)啟動(dòng)并運(yùn)行時(shí),我們可以向內(nèi)核添加功能 (當(dāng)然也可以移除功能 )。 微型 打印機(jī)驅(qū)動(dòng)的 設(shè)計(jì) Linux 設(shè)備驅(qū)動(dòng) 設(shè)備驅(qū)動(dòng)程序是內(nèi)核與硬件設(shè)備之間的接口。 南華大學(xué)電氣工程學(xué)院課程設(shè)計(jì) 第 19 頁(yè) 共 30 頁(yè) 5 嵌入式打印終端系統(tǒng)的軟件設(shè)計(jì) 軟件平臺(tái)采用的是基于 內(nèi)核的嵌入式 Linux 系統(tǒng)。在 Busybox Settings?Build Options 選項(xiàng)中,如圖 12 所示: 圖 12 Build Options 接著執(zhí)行 make 命令編譯 BusyBox 二進(jìn)制文件, make install 安裝至根文件系統(tǒng)的目錄中,并將標(biāo)準(zhǔn)的 Linux 命令重定向到 BusyBox 二進(jìn)制文件的符號(hào)鏈接。 圖 11 Installation Options 指定要使用的編譯器(用來(lái)在嵌入式環(huán)境中進(jìn)行交叉編譯)以及 Busy Box應(yīng)該靜態(tài)編譯還是動(dòng)態(tài)編譯。我們的根文件系統(tǒng)路徑為 (/armsys2410)。 比如常用的的控制臺(tái)命令,以及選擇使用哪種類(lèi)型 shell 等等。 BusyBox 與 Linux 內(nèi)核的配置和編譯過(guò)程相類(lèi)似。 BusyBox 可以將大約 的工具包裝成大約 200KB 大小。 構(gòu)建 BusyBox BusyBox最初是由 Bruce Perens 在 1996年為 Debian GNU/Linux安裝盤(pán)寫(xiě)的。 /tmp 就用來(lái)存放臨時(shí)文件的。 /proc 操作系統(tǒng)運(yùn)行時(shí),進(jìn)程 (正在運(yùn)行中的程序 )信息及內(nèi)核信息 (比如 cpu、硬盤(pán)分區(qū)、內(nèi)存信息等 )存放在這里。比如用戶(hù)帳號(hào)及密碼配置文件。 /root Linux 超級(jí)權(quán)限用戶(hù) root 的目錄。 /lib 庫(kù)文件存放目錄 /dev 設(shè)備文件存儲(chǔ)目錄,比如聲卡、磁盤(pán)還有我們的字符設(shè)備等。這個(gè)目錄下有很多的文件和目錄。 /sbin 大多是涉及系統(tǒng)管理的命令的存放,是超級(jí)權(quán)限用戶(hù) root 的可執(zhí)行命虛擬文件系統(tǒng) 內(nèi)存管理 進(jìn)程調(diào)度 網(wǎng)絡(luò)通信 進(jìn)程間通信 南華大學(xué)電氣工程學(xué)院課程設(shè)計(jì) 第 17 頁(yè) 共 30 頁(yè) 令 存放地, 普通用戶(hù)無(wú)權(quán)限執(zhí)行這個(gè)目錄下的命令。 mkdir bin sbin usr lib dev mnt root etc home proc tmP /bin 基礎(chǔ)系統(tǒng)所需要的那些命令位于此目錄,也是最小系統(tǒng)所需要的命令 ;比如 ls、 cp、 mkdir 等命令 ; 這個(gè)目錄中的文件都是可執(zhí)行的 , 普通用戶(hù)都可以使用的命令。至此, Linux內(nèi)核移植成功了,此時(shí)系統(tǒng)做完初始化工作以后依然不能夠正常啟動(dòng),這是因?yàn)檫€沒(méi)有加載文件系統(tǒng)。完整的 Linux 內(nèi)核主要由五個(gè)部分組成:進(jìn)程管理模塊,進(jìn)程間通信模塊,內(nèi)存管理模塊,虛擬文件系統(tǒng)和網(wǎng)絡(luò)通信模塊。配置并編譯 Uboot: make smdk2410_config 南華大學(xué)電氣工程學(xué)院課程設(shè)計(jì) 第 16 頁(yè) 共 30 頁(yè) make 編譯結(jié)束后會(huì)生成二進(jìn)制可執(zhí)行文件 ,該文件可作為最終的BootLoader 燒寫(xiě)到我們的 Flash 中。能支持大多數(shù)的嵌入式處理器和嵌入式操作系統(tǒng),其中對(duì) ARM 和Linux 的支持最為完善,而且文檔資料相當(dāng)豐富。而 stage2 則通常用 C 語(yǔ)言來(lái)實(shí)現(xiàn),主要負(fù)責(zé)檢測(cè)系統(tǒng)內(nèi)存映射,將操作系統(tǒng)的 kernel 和根文件系統(tǒng)映射從 flash 上讀到 RAM 空間中,為內(nèi) 核設(shè)置啟動(dòng)參數(shù),最后將系統(tǒng)控制權(quán)轉(zhuǎn)交給內(nèi)核。大多數(shù) BootLoader 都分為量部分: stage1 和 stage2。 BootLoader 的實(shí)現(xiàn)依懶于 CPU 體系結(jié)構(gòu),與底層硬件密切相關(guān)。使用 ARM Linux 提供的交應(yīng)用程序 (application) 文件系統(tǒng) (file system) 操作系統(tǒng)內(nèi)核 (kernel) 引導(dǎo)加載程序 (bootloader) 南華大學(xué)電氣工程學(xué)院課程設(shè)計(jì) 第 15 頁(yè) 共 30 頁(yè) 叉工具鏈,加入環(huán)境變量如圖 8 所示: 圖 8 交叉編譯工具 配置 BootLoader BootLoader 概述 BootLoader 是系統(tǒng)啟動(dòng)后,在操作系統(tǒng)內(nèi)核運(yùn)行前運(yùn)行的以小段程序,嚴(yán)重依懶于硬件而實(shí)現(xiàn)。字宿主機(jī)上創(chuàng)建一系列的工具,包括嵌入式系統(tǒng)的標(biāo)準(zhǔn) C 庫(kù),編碼器,匯編器,連接器等等,并將安裝目錄加入到系統(tǒng)的默認(rèn)搜索路徑中。然而,嵌入式開(kāi)發(fā)者的工具有所不同,因?yàn)樗鼈冇脕?lái)執(zhí)行應(yīng)用的平臺(tái)與用來(lái)建立應(yīng)用程序的平臺(tái)并不相同。 . 停用程序:特定于用戶(hù)的 應(yīng)用程序。 . 嵌入式操作系統(tǒng)內(nèi)核:特定于嵌入式目標(biāo)板定制的內(nèi)核以及內(nèi)核的啟動(dòng)參數(shù)。嵌入式軟件層次框架如圖 7 所示。嵌入式軟件是分層的,在硬件板卡完成之后,首先的工作就是把引導(dǎo)裝載器( bootloader)、 Linux 內(nèi)核、 文件系統(tǒng)移植到板卡上。 至此,硬件的電路設(shè)計(jì)及連接基本完成。 南華大學(xué)電氣工程學(xué)院課程設(shè)計(jì) 第 13 頁(yè) 共 30 頁(yè) ACK BUSY STB DATA0 ︱ DATA7 打印機(jī) GPIO_D1 GPIO_D2 GPIO_D0 GPIO_C8 ︱ GPIO_C15 開(kāi)發(fā)板 圖 5 核心 core 的 LCD 引腳和板上 LCD 引腳原理圖 同時(shí)查看打印機(jī)的電路手冊(cè)和管 腳 定義,選用其 STB 選通線(xiàn)、 ACK 回答脈沖線(xiàn)、 BUSY 線(xiàn)、 DATA0DATA7 數(shù)據(jù)線(xiàn)來(lái)與開(kāi)發(fā)板的 GPIO 口相連,并初始化高低電平值。查看 S3C2410 的電路原理圖,由于此系統(tǒng)不需要用到 LCD 屏,可以將板子上用于 LCD 連接的 GPIO 口進(jìn)行改造,根據(jù) ARM9core 的 LCD 電路引腳和板上的 LCD 插槽定義,如圖 5,找到了 14 根空閑的 GPIO 口: Gpio_c8~gpio_d15, gpio_d0~gpio_d4。 Port A(GPA): 23output port Port B(GPB): 11input/output port Port C(GPC): 16input/output port Port D(GPD): 16input/output port Port E(GPE): 16input/output port Port F(GPF): 8input/output port Port G(GPG): 16input/output port Port H(GPH): 11input/output port 我們使用的微型打印機(jī)使用的是并行接口。每個(gè)口可以通過(guò)軟件配置以滿(mǎn)足不同類(lèi)型的系統(tǒng)和設(shè)計(jì)的需要。被接收的數(shù)據(jù)也同樣從數(shù)據(jù)接收端口( RxD)移位輸入到移位寄存器,然后拷貝到 FIFO中。發(fā)送器和接收器包含 16 字節(jié)的 FIFO 和移位寄存器 。 UART 控制器可以進(jìn)行以下參數(shù)的設(shè)置:可編程的波特率,紅外收 /發(fā)模式,1 或 2 個(gè)停止位, 5 位, 6 位, 7 位或 8 位數(shù)據(jù)寬度和奇偶校驗(yàn)位。波特率發(fā)生器可使用系統(tǒng)時(shí)鐘或外部時(shí)鐘 作為時(shí)鐘源。 S3C2410 的 UART 單元提供 3 個(gè)獨(dú)立的
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1