在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

以uClinux為背景,介紹中斷驅動的I/O設備驅動的開發

電子工程師 ? 來源:工程網 ? 2021-03-25 10:27 ? 次閱讀

引 言

在32位微處理器逐漸成為嵌入式系統主流的同時,嵌入式應用也變得越來越復雜。許多嵌入式系統都不得不借助于專用的操作系統來支撐自己的應用。uClinux作為類Unix操作系統,繼承了Linux的各種優秀的品質,成為首選的嵌入式系統的操作系統。

為自己的設備在操作系統下添加驅動程序,是嵌入式設計必不可少的部分。針對不同的設備類型,選擇合適的驅動程序的模式,同樣也是十分重要的。通常的設備驅動采用直接I/O的方式,如存儲器、看門狗等;而對于象網絡這樣的數據流設備的驅動,則應該用到中斷機制。

本文以uClinux為背景,以一種數據流設備為目標,介紹中斷驅動的I/O設備驅動的開發。

1 應用背景

1.1 硬件描述

本文介紹的驅動程序是應用在一種電信E1線路和以太網互聯設備上的。它是旁路接收E1數據并將其發送到以太網的某一臺服務器上,在服務器上對E1的話路和信令時隙分析。

該設備中的處理器是采用三星公司出品的網絡型ARM處理器S3C4510B。E1線路接口采用Dallas半導體公司的專用El接口單元(LIU)芯片 DS2148,它完成波形整理、時鐘恢復和HDB3解碼。DS2148將整理后的E1數據流送給一片Altera公司的Cyclone系列的 FPGA(EPlC3T144C8),它將串行的E1數據流存入到FIFO,再通過ARM的32位外部總線將數據傳送給ARM。ARM將數據打包通過以太網發送到服務器上。圖l所示是本系統的硬件框圖。本文主要介紹接在ARM的外部總線上的FPGA,在uClinux下的驅動程序中斷機制的設計。

1.2硬件連接

S3C4510B處理器和FPGA的連接電路如圖2所示。

以uClinux為背景,介紹中斷驅動的I/O設備驅動的開發

以uClinux為背景,介紹中斷驅動的I/O設備驅動的開發

1.3 FPGA內FIFO的結構

在FPGA內部設置了兩個FIFO。為了防止ARM和FPGA操作的沖突,ARM和FPGA對兩個FIFO操作采用乒乓方式,這樣ARM和FPGA就可以同時操作不同的FIFO,而不需要等待。FIFO的大小是4096位,能容納一個E1復幀的數據量。當FPGA將一個FIFO填滿后,會用中斷的方式通知ARM來讀FIFO,同時FPGA會置內部的F1FO狀態寄存器。 FIFO)狀態寄存器命名為fpga_imf,是一個32位的寄存器,用其中某幾位置“l”,表示對應的FIFO需要讀取。

2 軟件設計

中斷驅動的I/O是指,輸人數據在中斷期間被填充到緩沖區內,并由讀取該設備的進程取走緩沖區內的數據;輸出緩沖區由寫設備的進程填充,并在中斷期間取走數據。數據緩沖可以將數據的發送和接收與write及read系統調用分離開來,提高系統的整體性能。下面是uCllnux下的中斷程序的設計。

2.1 uClinux下的中斷程序

在uClinux系統中,通過調用下面這個函數向系統申請一個中斷通道(或中斷請求IRQ),并在處理完以后釋放掉它。

mt reqLIest_irq(unsigned int irq,void(*handler)(int,vold*,

struct pt_regs*),unsigned 10ng flags,const chat*device,

vold*dev_id);

void free_irq(unstgned int lrq,VOid*dev_id);

其中,irq是中斷號。在本系統中它對應于S3C4510B的21個中斷源。這里用的是中斷源O。handler指向要安裝的中斷處理函數的指針。 flags是一個與中斷管理有關的各種選項的字節掩碼。device傳遞給request_irq的字符串,在/proc/interrupts中用于顯示中斷的擁有者。dev_id指針用于共享的中斷信號線。函數的返回值為O時表示成功,或者返回一個負的錯誤碼。函數返回一EBUJSY通知另一個設備驅動程序已經使用了要申請的中斷信號線。下面是FPGA的設備中斷申請函數。這個函數是在驅動中的fpga_open函數中被調用的。

int fpga_open(struct inode*inocle,stuct_file*file){

int result;

result=request_irq(FPGA_IRQ,δfpga_isr,SA_INTER-RUPT,″fpga″,NULL);

if(resuIt!=O){

printk(KERN_INFO”Can not register FPGA ISR!\n”);}else{

printk(KERN_INFO″FPGA ISR Register successfully!\n”);

}

}

在申請了中斷通道后,系統會響應外部中斷0,而進入中斷處理程序。中斷處理程序的第一步是要先清除S3C4510B的中斷懸掛寄存器的外部中斷O位。這是為了讓FPGA可以產生新的中斷。在uClinux系統中是調用下面的宏來實現的。

責任編輯:lq6

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5372

    瀏覽量

    121304
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3630

    瀏覽量

    129794
  • 微處理器
    +關注

    關注

    11

    文章

    2274

    瀏覽量

    82818
收藏 人收藏

    評論

    相關推薦

    I/O接口與I/O端口的區別

    在計算機系統中,I/O接口與I/O端口是實現CPU與外部設備數據交換的關鍵組件,它們在功能、結構、作用及運作機制上均存在顯著差異,卻又相互協
    的頭像 發表于 02-02 16:00 ?215次閱讀

    單片機I/O接口的傳輸方式

    著數據傳輸的任務,還影響著整個系統的性能和可靠性。本文將深入探討單片機I/O接口的傳輸方式,包括無條件傳送、查詢傳送、中斷傳送和DMA傳送等,以期單片機應用
    的頭像 發表于 02-02 15:56 ?145次閱讀

    I/O中斷問題

    一個I/O中斷,initP3的中斷使能,能用P3.2/P3.3兩個中斷嗎?
    發表于 01-26 09:35

    RK3568開發驅動指南Linux中通用SPI設備驅動

    RK3568開發驅動指南Linux中通用SPI設備驅動
    的頭像 發表于 01-23 11:02 ?1868次閱讀
    迅<b class='flag-5'>為</b>RK3568<b class='flag-5'>開發</b>板<b class='flag-5'>驅動</b>指南Linux中通用SPI<b class='flag-5'>設備</b><b class='flag-5'>驅動</b>

    iTOP-RK3568開發驅動開發指南-第十八篇 PWM

    中斷線程化實驗 ?第六篇 平臺總線 第50章 平臺總線模型介紹 第51章 注冊platform設備實驗 第52章 注冊platform驅動實驗 第53章 probe函數編寫實驗 第5
    發表于 10-29 10:13

    線路驅動器的作用_線路驅動器應用背景

     線路驅動器是一種電子設備,它在電路中起到至關重要的作用,主要用于增強信號的傳輸和驅動能力。具體來說,線路驅動器的作用可以歸納以下幾個方面
    的頭像 發表于 10-03 14:56 ?349次閱讀

    文檔更新 | 迅RK3568驅動指南-第十七篇(串口)

    I2C 第166章 初步認識I2C 第167章 I2C上拉電阻 第168章 I2C通信時序介紹 第169章
    發表于 09-24 10:42

    Linux 驅動開發與應用開發,你知道多少?

    一、Linux驅動開發與應用開發的區別開發層次不同:Linux驅動開發主要是針對硬件
    的頭像 發表于 08-30 12:16 ?956次閱讀
    Linux <b class='flag-5'>驅動</b><b class='flag-5'>開發</b>與應用<b class='flag-5'>開發</b>,你知道多少?

    MSP430 I/O驅動段式LCD設計說明

    電子發燒友網站提供《MSP430 I/O驅動段式LCD設計說明.pdf》資料免費下載
    發表于 08-30 10:39 ?1次下載
    MSP430 <b class='flag-5'>I</b>/<b class='flag-5'>O</b>口<b class='flag-5'>驅動</b>段式LCD設計說明

    文檔更新 |迅 RK3568開發驅動指南-第十五/十六篇

    《iTOP-RK3568開發驅動開發指南》更新,本次更新內容對應的是驅動(第十五篇 i2C)(第十六篇 SPI)視頻,后續資料會不斷更新,
    發表于 07-08 11:04

    NCA9555帶中斷的16位I2C總線I/O端口英文手冊

    電子發燒友網站提供《NCA9555帶中斷的16位I2C總線I/O端口英文手冊.pdf》資料免費下載
    發表于 07-03 17:26 ?1次下載

    軟件可配置模擬 I/O 的設計理念

    作者: Kenton Williston 曾幾何時,模擬 I/O 就是最專業、功能最固定的硬件。例如,電流驅動器和電壓傳感器是完全不同的零件,試圖顛倒其角色可謂是荒謬至極。 軟件可配置模擬 I
    的頭像 發表于 05-05 11:10 ?977次閱讀
    軟件可配置模擬 <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 的設計理念

    RT-Thread驅動開發指南進階篇-動手驅動先楫未適配的外設LCD

    經過上一篇的《《RT-Thread設備驅動開發指南》基礎篇--先楫bsp的hwtimer設備
    的頭像 發表于 02-25 11:04 ?2851次閱讀
    RT-Thread<b class='flag-5'>驅動</b><b class='flag-5'>開發</b>指南進階篇-動手<b class='flag-5'>驅動</b>先楫未適配的外設LCD

    《RT-Thread設備驅動開發指南》基礎篇--先楫bsp的hwtimer設備

    一、概述(一)RT-Thread設備驅動《RT-Thread設備驅動開發指南》書籍是RT-thread官方出品撰寫,系統講解RT-threa
    的頭像 發表于 02-24 08:16 ?1879次閱讀
    《RT-Thread<b class='flag-5'>設備</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>指南》基礎篇--<b class='flag-5'>以</b>先楫bsp的hwtimer<b class='flag-5'>設備</b><b class='flag-5'>為</b>例

    RT-Thread設備驅動開發指南基礎篇—先楫bsp的hwtimer設備

    RT-Thread設備驅動開發指南》書籍是RT-thread官方出品撰寫,系統講解RT-thread IO設備驅動
    的頭像 發表于 02-20 16:01 ?1857次閱讀
    RT-Thread<b class='flag-5'>設備</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>指南基礎篇—<b class='flag-5'>以</b>先楫bsp的hwtimer<b class='flag-5'>設備</b><b class='flag-5'>為</b>例
    主站蜘蛛池模板: 成人亚洲欧美在线电影www色 | 1000又爽又黄禁片在线久 | 韩国黄色三级视频 | v视界影院最新地址 | 日本在线一区二区 | 香蕉色网 | 亚洲插插插 | 色成人综合| 在线 你懂的| 韩国三级理论在线观看视频 | 国产三级在线观看视频 | 免费在线观看视频网站 | 欧美成人观看免费全部完小说 | 天堂网中文在线最新版 | 欧美丝袜一区 | 久青草免费在线视频 | 欧美人与动性视频在线观 | 色黄视频网站 | 欧美性生交xxxxx久久久 | 草草操| 日日噜噜爽爽狠狠视频 | 欧美天堂在线观看 | 激情五月综合综合久久69 | 欧美特级午夜一区二区三区 | 一区二区三区网站 | 天天爱天天爽 | 18岁禁黄色 | 加勒比视频一区 | 久久午夜宅男免费网站 | 伊人久久影院大香线蕉 | 亚洲深夜 | 日xxxx| 欧美成人一区二区三区在线视频 | 国产在线播放一区 | 天天插天天爱 | 天天天天干| 最新亚洲人成网站在线影院 | 色噜噜狠狠色综合中文字幕 | 久久男女 | www.一区二区三区 | 日韩一级片在线播放 |