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

正文內(nèi)容

基于arm嵌入式系統(tǒng)的觸摸屏驅(qū)動程序開發(fā)-文庫吧資料

2025-01-24 14:48本頁面
  

【正文】 nly equipped with touchscreen input. We use touch screens every day without even thinking about it. You might get cash at your ATM, sign for a package, check in for your flight, or look up a telephone number all by using a touch screen. This article describes two relatively new CPU offerings that provide builtin support for touchscreen input. I39。}module_init(gt2440ts_init)。 } input_unregister_device(dev)。 clk_put(adc_clock)。 free_irq(IRQ_ADC,dev)。 disable_irq(IRQ_TC)。 return 0。 } printk(KERN_INFO %s successfully loaded\n, gt2440ts_name)。 iounmap(base_addr)。 return EIO。 if (request_irq(IRQ_ADC, stylus_action, IRQF_SHARED|IRQF_SAMPLE_RANDOM, gt2440ts_name, dev)) { printk(KERN_ERR : Could not allocate ts IRQ_ADC !\n)。 dev = 0xDEAD。 devname = gt2440ts_name。 input_set_abs_params(dev, ABS_Y, 0, 0x3FF, 0, 0)。 devkeybit[BITS_TO_LONGS(BTN_TOUCH)] = BIT(BTN_TOUCH)。 } dev = input_dev。 if (!input_dev) { printk(KERN_ERR Unable to allocate the input device !!\n)。 iowrite32(WAIT4INT(0), base_addr+S3C2410_ADCTSC)。 iowrite32(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(100),base_addr+S3C2410_ADCCON)。 return ENOMEM。 base_addr=ioremap(S3C2410_PA_ADC,0x20)。 return ENOENT。adc_clock = clk_get(NULL, adc)。}static struct clk *adc_clock。 iowrite32(WAIT4INT(1), base_addr+S3C2410_ADCTSC)。 } else { mod_timer(amp。 if (count (12)) { iowrite32(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC)。 S3C2410_ADCDAT1_YPDATA_MASK。 S3C2410_ADCDAT0_XPDATA_MASK。 data1 = ioread32(base_addr+S3C2410_ADCDAT1)。 unsigned long data1。 } } return IRQ_HANDLED。 up(amp。 if (updown) { touch_timer_fire(0)。 (!(data1 amp。 S3C2410_ADCDAT0_UPDOWN)) amp。 data1 = ioread32(base_addr+S3C2410_ADCDAT1)。ADC_LOCK) == 0) { OwnADC = 1。 int updown。static irqreturn_t stylus_updown(int irq, void *dev_id){ unsigned long data0。ADC_LOCK)。 if (OwnADC) { OwnADC = 0。 input_sync(dev)。 input_report_key(dev, BTN_TOUCH, 0)。 iowrite32(ioread32(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON)。 count = 0。 } xp = 0。 input_report_abs(dev, ABS_PRESSURE, 1)。 input_report_abs(dev, ABS_Y, yp)。 yp = 2。 S3C2410_ADCDAT0_UPDOWN))。amp。 updown = (!(data0 amp。 data0 = ioread32(base_addr+S3C2410_ADCDAT0)。 unsigned long data1。 s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON)。 s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON)。 static void __iomem *base_addr。extern struct semaphore ADC_LOCK。 static long yp。static struct input_dev *dev。參考文獻(xiàn)[1]杜春雷 . ARM體系結(jié)構(gòu)與編程 . 北京:清華大學(xué)出版社,2003.[2]張思民 . 嵌入式系統(tǒng)設(shè)計與應(yīng)用 . 北京:清華大學(xué)出版社,2008.[3]馮國進(jìn) . 嵌入式Linux驅(qū)動程序設(shè)計從入門到精通 . 北京:清華大學(xué)出版社,2008.[4]馬忠梅等 . ARM amp。在課程設(shè)計中,大的問題基本上就遇到了這么多,還有很多小問題,在谷歌上一搜就有,關(guān)于技術(shù)方面的問題,最好是在谷歌上搜,感覺比百度全。 通過這次畢業(yè)設(shè)計,對Linux中的一些常用命令又回顧了一遍,并且也加深了印象,對Linux下設(shè)備驅(qū)動程序的開發(fā)也有了基本的認(rèn)識,感覺學(xué)到了很多東西,對不會的知識有一定的了解;對熟悉、學(xué)過的知識又復(fù)習(xí)了一遍,理解更加深刻,也加深了印象。在本次畢業(yè)設(shè)計中,NFS服務(wù)系統(tǒng)的配置是最基本的東西,雖然從理論上來說不是太難,但是實際操作時遇到了不少問題,不過通過在網(wǎng)上找尋的資料和同老師、同學(xué)的交流下,得到了解答;在設(shè)備驅(qū)動的開發(fā)中,雖然也很難,但是這些東西都是框架式的,網(wǎng)上很多,只需修改一下,滿足自己的硬件平臺即可。這樣就掛載成功了,只要把需要執(zhí)行文件復(fù)制到共享文件中,然后再目標(biāo)機的超級終端上執(zhí)行即可。 程序框架圖源程序見附錄A 運行程序 燒寫程序 將編譯好的可執(zhí)行文件下載到目標(biāo)板,我通過在網(wǎng)絡(luò)上收集了資料總結(jié)了以下四種方式: 第一種:使用U盤或者其他可移動設(shè)備 第二種:通過NFS直接運行 第三種:通過串口下載文件到開發(fā)板 第四板:通過網(wǎng)絡(luò)下載文件到開發(fā)板(1) 使用U盤方法:先把編譯好的可執(zhí)行程序復(fù)制到U盤,在U盤插到目標(biāo)板上并掛載,然后把程序拷貝到目標(biāo)板的可執(zhí)行目錄/bin。設(shè)備驅(qū)動的實現(xiàn)步驟: ①.在驅(qū)動模塊加載函數(shù)中設(shè)置Input設(shè)備支持input子系統(tǒng)的哪些事件; ②.將Input設(shè)備注冊到input子系統(tǒng)中; ③.在Input設(shè)備發(fā)生輸入操作時,提交所發(fā)生的事件及對應(yīng)的鍵值/坐標(biāo)等狀態(tài)。所以這使得我們輸入設(shè)備的驅(qū)動部分不在用關(guān)心設(shè)備文件的操作,而是要關(guān)心對各硬件寄存器的操作和提交的輸入事件。第四章 嵌入式設(shè)備驅(qū)動程序開發(fā) Linux輸入子系統(tǒng)介紹 在Linux中,輸入子系統(tǒng)是由輸入子系統(tǒng)設(shè)備驅(qū)動、輸入子系統(tǒng)核心層(Input Core)和事件輸入層(Event Handler)組成。(這里的IP地址可以用*代替,表示所有的客戶機都可以掛載次 目錄)rw表示掛載次目錄的客戶機多該目錄有讀寫的權(quán)力sync:數(shù)據(jù)同步寫入內(nèi)存和硬盤,也可以使用async,此時數(shù)據(jù)會先暫存于內(nèi)存中,而不立即寫入硬盤no_root_squash表示允許掛載次目錄的客戶機有該主機的root身份然后保存退出。 配置網(wǎng)絡(luò)文件系統(tǒng)NFS服務(wù) 在配置NFS服務(wù)之前,先使用查看一下Linux系統(tǒng)在安裝的時候是否已經(jīng)安裝了NFS服務(wù),方法如下:輸入命令setup,然后在出現(xiàn)的藍(lán)色窗口中選擇System services,進(jìn)入后,如果看到選項前的中括號有“*”,表示已經(jīng)被選中,如果沒有,就表示沒選中;現(xiàn)在選中NFS服務(wù),去掉iptables,然后保存退出。 當(dāng)你命名完以后,又會跳出一個對話框,選擇開發(fā)板的串口,我選擇的是串口4. 最后一步,最重要的一步,數(shù)據(jù)流控制必須選擇“無”,另外板子的串口波特率設(shè)為115200。 此時系統(tǒng)提示“您確定要取消嗎?”,選擇“是”,接著點擊提示窗口的“確定”,進(jìn)入下一步。 配置超級終端 超級終端程序通常位于windows系統(tǒng)的“開始程序附件通訊”中,選擇運行該程序,一般會彈出提示窗口,詢問你是否將HyperTerminal作為默認(rèn)的telnet程序,此時選擇“否”。所謂交叉編譯,就是指在一個硬件平臺上生成可以在另一個不同硬件平臺上執(zhí)行的代碼。但是,由于開發(fā)板上沒有足夠的資源來運行開發(fā)工具和調(diào)試工具。設(shè)備用完之后,可以再用戶空間通過移除已加載的驅(qū)動設(shè)備命令rmmod將設(shè)備卸載,此時的入口點是cleanup_module函數(shù),在該函數(shù)中完成設(shè)備的卸載。 命令為:Mknod /dev/ts_driver c 255 o③ 加載設(shè)備驅(qū)動程序 加載設(shè)備驅(qū)動程序: insmod 命令為:insmod 查看當(dāng)前加載了哪些設(shè)備驅(qū)動程序: lsmod –l 卸載設(shè)備驅(qū)動程序: rmmod ④ 設(shè)備驅(qū)動程序加載與卸載的工作過程 在用戶空間通過命令insmod向內(nèi)核空間加載設(shè)備驅(qū)動程序模塊,此時程序的入口點是初始化函數(shù)init_module(),在該函數(shù)中完成設(shè)備的注冊。 使用mknod命令在文件系統(tǒng)中創(chuàng)建一個設(shè)備進(jìn)入點。一般在/proc目錄下的devices文件中記錄了系統(tǒng)中處于活動狀態(tài)的設(shè)備的主設(shè)備號。嵌入式操作系統(tǒng)通過系統(tǒng)調(diào)用和硬件中斷來完成從用戶空間到內(nèi)核空間的控制轉(zhuǎn)移。設(shè)備驅(qū)動程序與用戶應(yīng)用程序是不同的,設(shè)備驅(qū)動程序是用戶應(yīng)用程序與硬件設(shè)備之間的一個中間軟件層。 ② 設(shè)備驅(qū)動程序和用戶應(yīng)用程序設(shè)備驅(qū)動程序可以理解為操作系統(tǒng)的一部分,它的作用就是讓操作系統(tǒng)能正確識別和使用設(shè)備。 塊設(shè)備文件通常指僅能以塊為單位讀寫的設(shè)備,一般塊的大小為512字節(jié)的整數(shù)倍。設(shè)備文件分為三類:字符型設(shè)備文件、塊設(shè)備文件或網(wǎng)絡(luò)接口設(shè)備文件。wq(存盤保存),q(退出Vi),q!(強制退出)等??梢钥闯觯谄聊坏撞匡@示有“插入”字樣表示插入模式,在該模式下可以輸入文字信息。此時進(jìn)入的是命令模式,光標(biāo)位于屏幕的上方。用戶可以進(jìn)行文件保存或退出操作,也可以設(shè)置編輯環(huán)境。 插入模式:只有在該模式下,用戶才能進(jìn)行文字編輯和輸入,用戶可按【Esc】鍵回到命令行模式。 Vi有三種模式,分別是命令行模式、插入模式及低行模式。 觸摸屏等效電路圖 軟件平臺使用Linux操作系統(tǒng)自帶的Vi文本編輯器。 因此,計算觸摸點的坐標(biāo)首先需要對觸摸屏的引腳電平進(jìn)行切換控制,使其處于合適的坐標(biāo)??刂破魍ㄟ^下述方法即可確定觸摸點位置: ① 在X+電極施加驅(qū)動電壓,X電極接地,Y+作為引出端測量得到接觸點的電壓,觸點電壓與驅(qū)動電壓之比等于觸點X坐標(biāo)與屏寬度之比,得到X坐標(biāo)。X電極和Y電極的正負(fù)端由“導(dǎo)電條”分別從兩端引出,且X電極和Y電極導(dǎo)電條的位置相互垂直,引出端X,X+,Y,Y+共4條線。(XY_PST設(shè)置到無操作模式)(2) ADC及觸摸屏接口特殊控制器① ADC控制寄存器(ADCCON) ADC控制寄存器② ADC觸摸屏控制寄存器 ADC觸摸屏控制寄存器③ ADC開始延時寄存器 ADC開始延時寄存器④ ADC轉(zhuǎn)換數(shù)據(jù)寄存器0 ADC轉(zhuǎn)換數(shù)據(jù)寄存器0⑤ ADC轉(zhuǎn)換數(shù)據(jù)寄存器1 ADC轉(zhuǎn)換數(shù)據(jù)寄存器1⑥ ADC觸摸屏起落中斷檢測寄存器 ADC觸摸屏起落中斷檢測寄存器 電阻式觸摸屏的工作原理
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1