999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于嵌入式操作系統VxWorks的I2C總線驅動設計※*

2015-09-12 06:42:40盧慧慧袁玉湘
單片機與嵌入式系統應用 2015年8期
關鍵詞:設備

盧慧慧,袁玉湘

(國網智能電網研究院 電工新材料及微電子研究所,北京102211)

盧慧慧(工程師),主要研究方向為嵌入式軟件、信號處理等;袁玉湘(高級工程師),主要研究方向為集成電路、嵌入式軟件。

引 言

近幾年,嵌入式系統在很多領域都得到了廣泛應用。VxWorks是Wind River公司開發的嵌入式操作系統,具有高性能、可高度裁減等特點,能夠支持多種微處理器,如PowerPC、X86、ARM、MIPS等。隨著我國經濟的快速發展,電力需求快速增長。在電力系統中考慮到通信方式的多元化要求以及智能電網發展的不確定性,要保證系統開發的可持續性及可擴展性,電能質量監測、智能電網調度、繼電保護等電力行業場景需要高實時性、高可靠度的操作系統來保證通信的實時性和可靠性。在此背景下,嵌入式實時操作系統VxWorks在電力系統中得到了廣泛的應用。同時硬件和軟件之間的聯系是通過驅動實現的,那么驅動就具有非常重要的作用。

I2C(Inter Integrated Circuit)總線是飛利浦公司于20世紀80年代開發的一種“電路板級”的總線結構。它是一種同步通信形式,具有接口線少、控制方式簡單、通信速率較高等優點[3],使得I2C總線在電力通信中得到廣泛的應用,如應用在電力通信網監控系統中,既能簡化系統接口,又能使系統易于擴展[4]。在主從通信模式中,I2C總線可以同時連接上多個I2C從設備,并且通過設備地址來識別具體的通信對象。

本文通過對龍芯公司LS232 內核的龍芯1B 芯片分析研究,提出了在VxWorks操作系統下進行I2C 總線及設備驅動程序的設計方案。

1 I 2C總線通信協議及龍芯1B芯片介紹

I2C總線用串行數據(Serial Data,SDA)和串行時鐘(Serial Clock,SCL)兩條線在總線和設備之間進行信息傳遞,在設備間進行串行通信或者雙向數據傳送。對每個芯片來說,每條線既是輸入線,又是輸出線[5]。

I2C總線遵從同步串行傳輸協議,即每一位在串行發送時都是由時鐘SCL 的邊沿進行同步,總線上傳送的每一幀數據都是一個字節。在每個數據包前都有一個地址,用來指示由哪個器件來接收該數據。I2C主控制器和I2C設備是I2C 總線體系結構中的兩個重要概念。其中I2C主控制器是微控制器提供控制I2C總線的接口,用于控制所有I2C總線的特殊序列、協議、仲裁和時序;而I2C設備指的是與I2C總線相連的外圍設備,比如EEPROM 存儲器、RTC時鐘等。不同的I2C設備具有不同的特性,因此其驅動程序一般都需要特別設計[6]。

龍芯1B芯片是一款基于MIPS指令集的32位SoC芯片,片內集成具有自主知識產權的32位處理器核,能夠滿足超低價位云終端、工業控制/數據采集、網絡設備、消費類電子等領域需求。芯片擁有8KB的指令和數據緩存器,1 個LCD 控 制 器、1 個DDR2 控 制 器、1 個NAND FLASH 控 制 器、1 個 全 功 能 串 口、1 個 四 線 串 口 和10 個兩線串口,支持I2C、SPI、CAN、USB等接口[7]。

2 嵌入式VxWorks驅動程序框架

在嵌入式VxWorks操作系統中,外部設備可以分成3種類型:字符設備、網絡設備以及塊設備。根據設備的類型,對于驅動程序的管理也分成3種模塊:字符設備驅動程序模塊、網絡設備驅動程序模塊以及塊設備驅動程序模塊[8]。一種驅動管理模塊對應一種類型的設備,而且各個模塊中不同設備的功能也是不一樣的,用戶可以在Vx-Works下,根據需求建立不同的功能模塊,實現系統的高性能和可裁減性。

在嵌入式VxWorks操作系統中,設備的驅動程序是板級支持包(Board Support Package,BSP)的一部分,完成了對設備初始化、讀、寫操作和控制等功能。驅動程序是直接控制設備的程序,同時也是設備上層的軟件接口。本質上,設備的驅動程序是對I/O 進行操作,從軟件層面上來看,就是對I/O 端口的地址進行讀操作或寫操作[9]。只要操作系統訪問外設,就會調用驅動程序,由此得出,驅動程序并不能夠自動執行,而只能夠被操作系統或者應用程序所調用。

在VxWorks應用程序中,系統訪問外部設備是通過VxWorks的I/O 子系統進行操作的。VxWorks的I/O 子系統具有獨特性,比其他I/O 系統更加快速、靈活,這在實時系統中是非常重要的。針對基于I/O 系統的字符設備和塊設備,VxWorks的I/O 系統提供一些ioLib系統庫中的標準I/O 接口函數。這種驅動設計方法的優點是對應用程序開發人員進行底層硬件的屏蔽,使得其在編寫程序時不需要關心底層設備硬件。對于一個字符設備來說,驅動程序包含了7 種基本I/O 操作函數:創建設備create()、刪除設備remove()、打開設備open()、關閉設備close()、讀取設備中的數據read()、向設備寫數據write()和設置設備的方式字ioctl()[10]。但有些設備并不支持其中的某些操作,可以在實現的時候將其省略。

3 I 2C主控制器驅動設計

I2C設備屬于字符設備,I2C 主控制器的驅動程序按功能可以分成3個主要模塊:初始化模塊、讀模塊和寫模塊。在VxWorks嵌入式系統中,連接I2C 總線上的設備必須按照I2C總線時序傳輸,下面介紹一下I2C主控制器驅動的基本模塊。

3.1 I 2C主控制器初始化i2c_Init()

初始化I2C主控制器,主要是為各個寄存器設置正確的初值。首先,對I2C 通信端口進行配置,包括分頻鎖存器低字節寄存器PRERlo和分頻鎖存器高字節寄存器PRERhi,以實現合適的總線時鐘頻率。若分頻鎖存器的值為prescale,從APB 總線PCLK 時鐘輸入的頻率為clock_a,SCL總線的輸出頻率為clock_s,則應滿足如下關系:prescale=clock_a/(5×clock_s)-1。然后,設置控制寄存器CTR,使I2C總線處于正常工作模式。

3.2 I 2C主控制器寫字節和寫數據

I2C主控制器寫字節函數i2cWriteByte()實現的功能是I2C總線發送出一個字節的數據,并接收應答位。函數實現具體流程如下:

①設置發送數據寄存器TXR,將被寫進的數據從設備的設備地址放在發送數據寄存器,然后,設置命令控制寄存器CR產生寫信號、START 信號以及應答信號;

②讀狀態寄存器SR,看是否傳輸完成及收到應答信號。如果正在傳輸數據,則等待并一直檢測傳輸的過程,直到數據傳輸完畢,數據傳輸完畢后,檢測是否收到應答信號,如果沒有收到,重新進行發送;

③收到應答位后,將要發送的數據寫入發送數據寄存器TXR,然后,命令控制寄存器CR產生寫信號;

④重復第2步的操作,如果控制器沒有收到應答信號,則重復第3步的操作,直到一個字節的數據寫完收到應答信號為止;

⑤設置命令控制寄存器CR產生STOP信號。

i2cWrite()函數實現的功能是I2C總線發送出連續的數據,并接收應答位。當要發送的數據長度為0時,則直接返回,不做任何操作;當要發送的數據大小是一個字節時,則直接調用i2cWriteByte()即可;當要發送的數據大小大于一個字節時,循環進行寫操作,直至將所有的數據都寫入到從設備中為止。

i2cWrite()函數中實現循環寫操作的部分略——編者注。

3.3 I 2C主控制器讀字節和讀數據

I2C主控制器讀字節函數i2cReadByte()實現的功能是I2C總線從設備中讀出一個字節的數據,并接收應答位,返回值是接收到的數據。函數實現的具體流程如下:

①設置發送數據寄存器TXR,將被寫進數據的從設備的設備地址放入發送數據寄存器,然后,設置命令控制寄存器CR產生寫信號、START 信號以及應答信號;

②讀狀態寄存器SR,看是否傳輸完成及收到應答信號,如果正在傳輸數據,則等待并一直檢測傳輸的過程,直到數據傳輸完畢,數據傳輸完畢后,檢測是否收到,如果沒有收到應答信號,重新進行發送;

③數據傳輸完畢并且收到應答位后,設置命令控制寄存器CR產生讀信號和應答信號;

④重復第2步的操作,如果控制器沒有收到應答信號,則重復第3步的操作直到數據傳輸完畢后,讀接收數據寄存器RXR,將接收到的數據放到寄存器rBuf中;

⑤設置命令控制寄存器CR產生STOP信號。

i2cRead()函數實現的功能是I2C總線接收連續的數據,并接收應答位。當要接收的數據長度為0時,則直接返回,不做任何操作;當要接收的數據大小是一個字節時,則直接調用i2cReadByte()即可;當要接收的數據大小大于一個字節時,循環進行讀操作,直至總線讀取到所有的數據為止。

i2cRead()函數中實現循環讀操作的部分略——編者注。

4 I 2C設備驅動的設計

4.1 RX8025簡介及硬件連接結構

RX8025 是EPSON 公 司 的 實 時 時 鐘(Real-Time Clock,RTC)芯片。該芯片的外部通信接口采用I2C 總線方式,內部配置頻率可調、高精度的32.768kHz晶振,具有2個系統鬧鐘功能、6種中斷發生功能以及時鐘精度調整功能,在手機、控制裝置、智能儀表及其他電子領域中得到大量應用。

RTC最重要的功能就是顯示時間,是通過讀/寫寄存器實現的[11]。要顯示秒、分、時、日期、月、年,CPU 必須讀取存于BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON 與BCDYEAR寄存器中的值,時間的設置也是通過這些寄存器實現的。龍芯1B處理器通過I2C總線與RTC時鐘RX8025相連接,CPU 通過I2C 主控制器與RTC 的讀/寫寄存器相連,以便完成RTC 時間的初始化及讀取等。

4.2 RX8025的簡介及硬件連接結構

4.2.1 I2C設備描述符結構

由圖9看到,最大應力主要集中在安裝孔附近,其值為20.6 MPa,小于材料的許用應力.因此當板厚選擇10 mm時,滿足強度要求.

4.2.2 具體設計

設備驅動初始化函數i2cDrv(),可以判斷驅動是否已經初始化。如果已經完成初始化,則直接返回;如果還沒有初始化,則調用iosDrvInstall()例程。該例程對于同一個設備,驅動只需要調用一次,它將驅動服務程序與I/O系統服務進行關聯,將I2C驅動例程加入到驅動表DRV_TABLE中,并且分配給I2C設備一個驅動號。

設備創建函數i2cDevCreate(),首先判斷驅動是否已經初始化。如果還沒有初始化,則返回錯誤信息;如果已經完成初始化,則進行設備的一些初始化。首先分配設備描述符并對其進行初始化;然后調用iosDevAdd()例程,該函數向VxWorks的I/O 子系統的設備鏈表DEVICE LIST 中添加一個I2C 設備,并設置I2C 設備頭結構的驅動號i2cDrvNum,該驅動號是設備驅動初始化完成時返回的驅動號;最后設置I2C設備頭結構的設備名devName為“/i2cDev”,這樣就保證了設備對于以后的open()、read()和write()例程可用。

設備打開函數i2cOpen(),通過調用I2C 控制器初始化函數i 2c_Init()來進行I2C主控制器的初始化,并且必須返回一個I2C設備指針pi2cDev,之所以要返回該指針,是因為一定要將該指針賦值給文件表FD_TABLE中文件條目FD_ENTRY 中的第一項pDevHdr。

設備寫函數rtcwrite(),通過I2C主控制器向RTC設備中寫入數據。在RTC 模塊中,寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON 和BCDYEAR分別寫入秒、分、時、天、月、年的數值,完成RTC初始時間的設定。

設備讀函數rtcread(),通過I2C 主控制器讀出RTC設備中的數據,即當前的時間值。訪問RTC 模塊的寄存器,首先要設RTCCON 的位為1。CPU 通過讀取RTC模塊中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON 和BCDYEAR的值,得到當前的相應時間值。

在嵌入式操作系統VxWorks的開發環境Workbench中,首先創建VxWorks image工程,將設計好的I2C 主控制器驅動和I2C 設備RTC 驅動文件編譯到VxWorks內核中[12];然后再將編譯生成的VxWorks映像文件通過網口下載到嵌入式設備如龍芯1B開發板中;最后上電運行,目標板可以實現I2C總線以及I2C設備的功能。

4.2.3 RTC設備驅動和測試

設備驅動的驗證需要在用戶空間的測試程序中來完成,首先,針對RTC 設備驅動的測試程序描述如下:在VxWorks系統命令行下,調用i2cDrv()初始化設備驅動,然后調用i2cDrvCreate()創建RX8025 設備,將從設備RX8025掛接在I2C總線上;然后,CPU 通過I2C主控制器訪問RX8025,在RX8025中先寫入自定義的初始時間,格式為“年月日時分秒”。測試結果顯示,CPU 可以讀出時間值,格式也為“年月日時分秒”,第一次讀取時間為14:50:04,第二次讀取的時間為14:50:21,時間一直在增長,結果略——編者注。這樣可以證明本文設計的I2C 驅動程序的正確性。

4.3 I 2C設備驅動的應用實例

在某電網項目的控制設備中使用龍芯1B芯片,該芯片通過I2C 總線與STM8S003單片機相連。在VxWorks系統下使用本文設計的VxWorks的I2C 驅動程序控制STM8S003單片機,并實現ADC功能,該ADC具有10位轉換精度,共有5路A/D轉換通道,以實現對控制設備周邊環境中溫度、濕度等物理量的監控。不同A/D轉換通道采集到的數據結果略——編者注,通道0的數據為232,通道1的數據為448,通道2的數據為542,通道3的數據為381。上述結果可以轉換為對應物理量值,以通道1為例,通道1采集到的電壓值為U1=448×10/1024=4.375V。

結 語

本文詳細介紹了基于VxWorks的I2C驅動程序的設計方法,包括I2C主控制器驅動和I2C總線設備驅動兩部分。最后通過對I2C 設備RTC 進行讀和寫操作,驗證了本文的設計方法是正確可行的。使用基于VxWorks的I2C總線通信方式,在提高通信實時性的同時簡化了系統接口,并為今后VxWorks系統下其他設備驅動的開發提供了參考方法,增強了嵌入式模塊在電力系統應用中的實時性和可靠性。

編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。

[1]周啟平,張揚.VxWorks下設備驅動程序及BSP 開發指南[M].北京:中國電力出版社,2004:50-85.

[2]鄺堅.Tornado/VxWorks入門與提高[M].北京:科學出版社,2004:100-160.

[3]Philips Semiconductor.I2C Bus Specification.Version 2.1,2000.

[4]王婕,吳建江,劉仲謀,等.I2C總線在電力通信網監控系統中的應用[J].電力系統通信,2002,23(8):17-23.

[5]N Sriskanthan,T S Lim.I2C Bus Analyzer[J].IEEE Trans.Consumer Electronics,2001,47(4):865-872.

[6]余熾業,宋躍,雷瑞庭.嵌入式Linux的I2C 設備驅動程序的分析[J].現代電子技術,2013(16):38-40.

[7]杜安利.龍芯在嵌入式應用概況[J].中國集成電路,2013,22(10):92-93.

[8]Wind River Inc.VxWorks 6.7BSP Developer's Guide,2008.

[9]Wind River Inc.VxWorks 6.7 Device Driver Developer's Guide,2008.

[10]王金剛,楊錫勱,蘇琪.VxWorks BSP 開發人員指南[M].北京:清華大學出版社,2003:60-90.

[11]龔光松.基于I2C總線的實時時鐘芯片設計[J].軟件導刊,2012,11(4):97-100.

[12]Wind River Inc.Wind River Workbench User's Guide,2008.

猜你喜歡
設備
諧響應分析在設備減振中的應用
調試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發射設備中平衡輸入與不平衡輸入的轉換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
HTC斥資千萬美元入股虛擬現實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節省成本
主站蜘蛛池模板: 欧美在线视频不卡| 国产一级毛片在线| 亚洲日本一本dvd高清| 亚洲无码91视频| 久久综合九色综合97网| 91丝袜在线观看| 草草影院国产第一页| 国产一区二区三区在线无码| 亚洲欧美一区二区三区麻豆| 久久青青草原亚洲av无码| 99re在线视频观看| 亚洲三级色| 免费在线色| JIZZ亚洲国产| 成人国产小视频| 国产综合网站| 欧美第九页| 欧美日韩另类在线| 日韩欧美色综合| 奇米精品一区二区三区在线观看| 色哟哟国产精品一区二区| 激情无码视频在线看| 精品视频第一页| 69视频国产| www.精品视频| 丁香五月婷婷激情基地| 四虎国产精品永久一区| 亚洲综合片| 2021国产精品自产拍在线| 伊人成人在线视频| 热久久这里是精品6免费观看| 国产在线98福利播放视频免费| 九九九精品成人免费视频7| 日韩AV无码免费一二三区| 亚洲天堂视频网站| 国产第四页| 国产在线视频二区| 欧美在线中文字幕| 日本a级免费| 亚洲一区网站| 91久久国产热精品免费| 日韩欧美一区在线观看| 亚洲欧美一区二区三区麻豆| 亚洲国产综合精品一区| 日本人妻丰满熟妇区| 国产91全国探花系列在线播放| 亚洲精品国产成人7777| 色九九视频| 国产极品美女在线| 色天堂无毒不卡| 亚洲一区二区成人| 露脸一二三区国语对白| 国产精品va免费视频| 在线看免费无码av天堂的| 久久亚洲国产最新网站| 日韩av手机在线| 国产SUV精品一区二区| 超碰aⅴ人人做人人爽欧美| 农村乱人伦一区二区| 国产香蕉在线| 国产第一福利影院| 三上悠亚一区二区| 91偷拍一区| 亚洲第一黄色网| 爱色欧美亚洲综合图区| 婷婷激情五月网| 伊人色天堂| 欧美综合成人| 在线a视频免费观看| 亚洲第一视频网| 国产欧美亚洲精品第3页在线| 久久久91人妻无码精品蜜桃HD| 性欧美在线| 色呦呦手机在线精品| 国产h视频免费观看| 97se亚洲综合在线韩国专区福利| 婷婷久久综合九色综合88| 91九色国产在线| 国产乱人免费视频| 国产视频a| 伊人久综合| 毛片在线播放网址|