tty資料傳送流程
//tty子系統
1.file_operation中找到tty_write
2.tty_write找到線路規程中的n_tty_write
3.n_tty_write找到uart_ops中的uart_write
//串列埠驅動
4.uart_write找到s3c24xx_serial_start_tx
當應用程式使用系統呼叫時最終呼叫到s3c24xx_serial_start_tx函式
s3c24xx_serial_start_tx如何實現
1.使能串列埠傳送中斷,fifo資料會傳送走,然後串列埠產生中斷
2.中斷處理程式來完成資料傳送
串列埠傳送的資料從**來
當應用程式呼叫write系統呼叫後,資料會被寫入串列埠的迴圈緩衝,當傳送中斷處理程式開始傳送資料時會把迴圈緩衝的資料取走。使用者資料在uart_write呼叫時被寫入迴圈緩衝。
串列埠傳送函式分析
串列埠傳送真正的函式是s3c24xx_serial_tx_char
1.判斷是否有需要傳送的x_char字元(裝置是否能傳送),如果有通過將其寫入utxh暫存器傳送
2.如果迴圈快取為空或者串列埠狀態不允許傳送,則關閉傳送中斷
3.利用while迴圈,來傳送資料,迴圈條件:1.迴圈快取不為空;2.傳送資料量小於256
3.1.當傳送fifo滿的時候,退出傳送
3.2.從迴圈緩衝中取出資料,寫入utxh暫存器
3.3.調整迴圈緩衝位置
4.如果迴圈緩衝中的資料量低於256的時候,喚醒之前在傳送時阻塞的程序
5.如果迴圈緩衝為空,則關閉傳送中斷
國嵌攻略 132 串列埠驅動實現
如何開發linux驅動程式 一般情況下都會有現成的驅動程式,不需要從零開始開發驅動程式。所以linux驅動開發主要分為兩個步驟 1.讀得懂驅動程式 2.寫的了核心功能。傳送中斷處理程式 傳送中斷處理函式在 drivers serial samsung.c的s3c24xx serial tx char...
4 串列埠驅動
1 初始化gpio的模式和速度 2 配置中斷優先順序分組 3 串列埠初始化 4 串列埠服務函式編寫 我是分割線 一 gpio初始化 gpio埠設定 gpio inittypedef gpio initstructure rcc apb2periphclockcmd rcc apb2periph gp...
國嵌攻略 168 音效卡驅動開發
oss架構 oss全稱是open sound system,叫做開放式音訊系統,這種早期的音訊系統是基於檔案系統的訪問方式,這意味著對聲音的操作完全可以像對普通檔案那樣執行open,read等操作。oss中,主要提供了一下幾種音訊裝置的抽象裝置檔案 dev mixer 用來訪問音效卡中的混音器,用於...