[國嵌攻略][132][串口驅動實現]

如何開發Linux驅動程序

一般情況下都會有現成的驅動程序,不需要從零開始開發驅動程序。所以Linux驅動開發主要分為兩個步驟:1.讀得懂驅動程序;2.寫的了核心功能。

?

發送中斷處理程序

發送中斷處理函數在/drivers/serial/samsung.c的s3c24xx_serial_tx_chars

?

循環緩沖

struct circ_buf {

??? char *buf;

??? int head;

??? int tail;

};

存數據的時候移動head,取數據的時候移動tail。

static irqreturn_t s3c24xx_serial_tx_chars(int irq, void *id){    //判斷發送流控    struct s3c24xx_uart_port *ourport = id;struct uart_port *port = &ourport->port;if(port->x_char){   //是否有發送流控字符//寫入流控字符wr_regb(port, S3C2410_UTXH, port->x_char);//修改發送計數port->icount.tx++;//清除流控字符port->x_char = 0;return IRQ_HANDLED;   //中斷處理完成
    }//判斷數據發送struct circ_buf *xmit = &port->state->xmit;if(uart_circ_empty(xmit) || uart_tx_stopped(port)){   //是否循環緩沖為空或者串口停止發送
        s3c24xx_serial_stop_tx(port);return IRQ_HANDLED;   //中斷處理完成
    }//循環發送數據int count = 256;while(!uart_circ_empty(xmit) && (count-- > 0)){   //是否循環緩沖不為空并且發送數據小于256字節//判斷循環緩沖if(rd_regl(port, S3C2410_UFSTAT) & (1<<14)){   //是否循環緩沖已滿break;}//寫入發送數據wr_regb(port, S3C2410_UTXH, xmit->buf[xmit->tail]);//移動緩沖位置xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);   //循環移動尾部//修改發送計數port->icount.tx++;}//喚醒阻塞進程if(uart_circ_chars_pending(xmit) < 256){   //是否循環緩沖數目小于256
        uart_write_wakeup(port);}//關閉發送使能if(uart_circ_empty(xmit)){   //是否循環緩沖為空
        s3c24xx_serial_stop_tx(port);}return IRQ_HANDLED;   //中斷處理完成
}

?

接收中斷處理程序

接收中斷處理函數在/drivers/serial/samsung.c的s3c24xx_serial_rx_chars

?

static irqreturn_t s3c24xx_serial_rx_chars(int irq, void *dev_id){//循環接收數據struct s3c24xx_uart_port *ourport = dev_id;struct uart_port *port = &ourport->port;int max_count = 64;while((max_count--) > 0){   //是否接收數據小于64字節//判斷接收緩沖unsigned int ufstat;ufstat = rd_regl(port, S3C2410_UFSTAT);if((ufstat & 0x3F) == 0){   //是否接收緩沖為空break;}//讀取錯誤狀態unsigned int uerstat;uerstat = rd_regl(port, S3C2410_UERSTAT);//讀取接收數據unsigned int ch;ch = rd_regb(port, S3C2410_URXH);//寫入接收緩沖
        uart_insert_char(port, uerstat, S3C2410_UERSTAT_OVERRUN, ch, TTY_NORMAL);}//寫入線路規程struct tty_struct *tty = port->state->port.tty;tty_flip_buffer_push(tty);return IRQ_HANDLED;   //中斷處理完成
}

?

轉載于:https://www.cnblogs.com/d442130165/p/5265703.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373470.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Regions ADF 11g進行Master Detail CRUD操作

你好 此示例演示了如何使用Regions在表之間創建Master Detail關系。 區域的主要目的是可重用性的概念。 使用區域和有限的任務流&#xff0c;我們可以將頁面重用到許多其他頁面中&#xff0c;以保持相同的功能并采用更簡潔的方法。 下載示例應用程序。 在此示例中&#xff0c;…

[轉] vim自定義配置 和 在ubnetu中安裝vim

Ubuntu 12.04安裝vim和配置 問題&#xff1a; ubuntu默認沒有安裝vim&#xff0c;出現&#xff1a; jygubuntu:~$ vim test.cThe program vim can be found in the following packages: * vim * vim-gnome * vim-tiny * vim-athena * vim-gtk * vim-noxTry: sudo apt-get insta…

win7 mysql php apache myadmin_windows下Apache+mysql+php+phpMyAdmin的安裝及配置 | 學步園

1、下載Apache ( httpd-2.2.25-win32-x86-no_ssl.msi )http://httpd.apache.org/download.cgi#apache24根據提示安裝到路徑(建議自定義路徑)&#xff0c;NetWork Domain和Server Name都輸入 localhost(訪問時使用的域名);2、下載mysql (mysql-5.5.34-win32.msi )http://dev.m…

(15) PHP 隨筆---LAMP Linux基本操作 對文件、目錄的操作

◇對目錄的操作&#xff1a; ◇創建目錄&#xff1a; mkdir Xmu //在當前目錄下創建一個名為Xmu的目錄 ◇創建多個級別目錄關系&#xff1a; mkdir -p newdir/newdir/newdir //在當前目錄下創建多個連續目錄&#xff0c;-p的意思是以遞歸的方式 ◇移動目錄(也可以針對…

具有NetBeans,嵌入式GlassFish,JPA和MySQL數據源的Arquillian

這是一個偶然的帖子。 我一直在研究交易CDI觀察者&#xff0c;并嘗試使用嵌入式GlassFish對它進行一些集成測試。 但是令人驚訝的是&#xff0c;這種方法不能很好地工作&#xff0c;我仍在弄清楚&#xff0c;使用普通的嵌入式GlassFish時問題出在哪里。 同時&#xff0c;我轉到…

hmcl手機版下載_最新HMCL下載地址

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓[16:49:27][AWT-EventQueue-0/ERROR]---- Hello Minecraft! Crash Report ----Version: 2.3.1Time: 2016-7-14Thread: Thread[AWT-EventQueue-0,6,main]Advice:無建議。Content:java.lang.IllegalStateException: Buffers have not…

為什么我會在2012年的新企業Java項目中使用Java EE而不是Spring

這個問題經常出現。 我的新項目也在2011年11月發布。 在這個新的Enterprise Java項目中&#xff0c;我將使用Java EE&#xff08;JEE&#xff09;代替Spring框架。 我知道&#xff1a;關于此主題的文章&#xff0c;博客和論壇討論都可以找到。 為什么還需要一個&#xff1f; 因…

jsp mysql 音樂網站_Maven+JSP+SSM+Mysql實現的音樂網站

項目簡介本系統基于MavenJSPSSMMysql實現的音樂網站。主要實現的功能有音樂播放、下載、上傳等幾個模塊。難度等級&#xff1a;中等技術棧編輯器Eclipse Version: 2020-03 (4.15.0)前端技術基礎&#xff1a;htmlcssJavaScript框架&#xff1a;JQueryBootstrap后端技術SpringSpr…

遙感影像濾波處理軟件 — timesat3.2

最近因為要做遙感影像的濾波處理&#xff0c;經過女神推薦&#xff0c;決定用Timesat&#xff0c;可是該軟件3.1版本只適合xp系統以及2011的matlab&#xff0c;后來在官網上找到了最新的3.2版本。支持64位操作系統以及2014的matlab。大家可以直接上官網&#xff08;http://www.…

持久化API(JPA)系列(三)實體Bean的開發技術-建立與數據庫的連接

在EJB 2.x中。EJB有3種類型的Bean。各自是會話Bean&#xff08;Session Bean&#xff09;、消息驅動Bean&#xff08;Message-Driven Bean&#xff09;和實體Bean&#xff08;Entity Bean&#xff09;。 隨著EJB 3的推出&#xff0c;EJB2.x中的實體Bean逐漸被JPA規范所替代&…

WebSphere Classloader內存泄漏預防

解決應用程序類加載器泄漏 應用領域 傾向于&#xff1a; 使用應用程序類加載器中的Runnable實現啟動新線程。 即使JEE編程模型不支持此功能&#xff0c;客戶也經常直接創建新線程或通過使用間接創建它們 計時器 客戶必須確保在停止相應的應用程序&#xff08;或WAR模塊&…

airflow sql_alchemy_conn mysql_airflow使用mysql數據庫,LocalExecutor并發調度

mysql-airflow在mysql上執行create database airflow; —— 創建數據庫GRANT all privileges on airflow.* TO airflow% IDENTIFIED BY 123456; —— 將數據庫airflow的所有權限授權airflow用戶&#xff0c;密碼123456且該用戶可在任何IP段登錄操作FLUSH PRIVILEGES; —— 刷新…

【SAP業務模式】之ICS(四):組織單元的配置

SAP的ICS業務后臺配置主要有以下幾個配置點&#xff1a; 1、組織單元的配置&#xff08;公司代碼、銷售組織、工廠、采購組織等&#xff09;&#xff1b; 2、主數據的部分&#xff1b; 3、訂單和開票的定價過程&#xff1b; 4、開票輸出類型&#xff1b; 5、公司間發票的配置&a…

poj-2478 Farey Sequence(dp,歐拉函數)

題目鏈接&#xff1a; Farey Sequence Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 14230 Accepted: 5624Description The Farey Sequence Fn for any integer n with n > 2 is the set of irreducible rational numbers a/b with 0 < a < b < n a…

Twitter4j和Esper:在Twitter上跟蹤用戶情緒

對于復雜事件處理和Twitter API的新手&#xff0c;我希望這是一個簡短的教程&#xff0c;可以幫助他們Swift起步。 管理大數據并從中挖掘有用的信息是當前技術中最熱門的討論主題。 來自Twitter&#xff0c;Facebook和Linkedin等社交網絡的半結構化數據的爆炸式增長使Hadoop&am…

webase crud查看所有表_Laravel-Gii 可視化代碼生成工具 CRUD +GUI

Laravel-Gii 可視化代碼生成工具 CRUD GUI適用于快速B端后臺開發&#xff0c;根據MySQL的表結構生成對應的Model、Observer、Controller、View、Route等相關項目文件[TOC]注意因為是解析MySQL的表結構&#xff0c;并且根據字段生成模板&#xff0c;所以目前生成的Model類時只支…

20145231第二周Java學習筆記

20145231 《Java程序設計》第2周學習總結 教材學習內容總結 本周的學習采用的依然是先看課本&#xff0c;再看視頻&#xff0c;然后實踐敲代碼&#xff0c;最后根據學習筆記總結完成博客。 第三章&#xff1a;基礎語法 知識點比較多比較零碎&#xff0c;整理的都是實際操作中可…

JavaFX 2.0和Scala,像牛奶和餅干

JavaFX 2.0和Scala都是很好的技術&#xff0c;但是一起使用時效果會更好。 JavaFX 2.0是一種功能強大的富客戶端技術&#xff0c;具有先進的圖形&#xff0c;動畫和媒體功能。 Scala是一種簡單但功能強大的語言&#xff0c;具有用于編寫特定于域的語言&#xff08;DSL&#xff…

ASP.NET WebAPi之斷點續傳下載(上)

前言 之前一直感覺斷點續傳比較神秘&#xff0c;于是想去一探究竟&#xff0c;不知從何入手&#xff0c;以為就寫寫邏輯就行&#xff0c;結果搜索一番&#xff0c;還得了解相關http協議知識&#xff0c;又花了許久功夫去看http協議中有關斷點續傳知識&#xff0c;有時候發覺東西…

貪吃蛇(C++實現,VC6.0編譯,使用了EasyX圖形庫)

程序效果&#xff1a; 代碼&#xff1a; //main.cpp 1 #include <iostream>2 #include<fstream>3 #include <graphics.h>4 #include <conio.h>5 #include<ctime>6 #include<windows.h>7 #include<mmsystem.h>8 #pragma comment(lib…