Linux下基於I2C協議的RTC驅動開發

2021-01-12 電子產品世界

摘要:在嵌入式中,Linux漸漸成為一種流行探作系統,Linux驅動開發也成為嵌入式開發中的必備環節。介紹Linux環境下基於I2C協議的RTC驅動程序開發與實現。首先研究了Linux環境下字符設備驅動程序框架,然後介紹I2C協議,在此基礎上開發基於I2C協議的RTC字符設備驅動程序。對於驅動程序,這裡詳細介紹其整體架構和各模塊實現細節。最終成功實現了基於I2C協議的RTC驅動程序,並移植到Linux作業系統中。

本文引用地址:http://www.eepw.com.cn/article/149519.htm

0引言

近年來嵌入式系統的研究與開發漸漸成為熱點,在嵌人式系統中,Linux作業系統以其開源、穩定、可移植等種種優點,漸漸成為一種流行的作業系統。Linux下各種驅動程序的開發經常是軟體開發中必不可缺的環節,Linux對其驅動程序提供了很好的支持框架。I2C總線是一種由Philips公司開發的兩線式串行總線,用於連接微控制器及其外圍設備。I2C總線產生於在20世紀80年代。最主要的優點是其簡單性和有效性。

這裡介紹Linux字符設備驅動以及I2C總線協議,並在此基礎上開發基於I2C總線的RTC驅動程序。

1 Linux字符設備驅動框架

在Linux內核中每個字符驅動程序都是基於以下框架進行設計的:



技術專區

相關焦點

  • 「正點原子Linux連載」第六十一章Linux I2C驅動實驗
    第六十一章Linux I2C驅動實驗I2C是很常用的一個串行通信接口,用於連接各種外設、傳感器等器件,在裸機篇已經對I.MX6U的I2C接口做了詳細的講解。本章我們來學習一下如何在Linux下開發I2C接口器件驅動,重點是學習Linux下的I2C驅動框架,按照指定的框架去編寫I2C設備驅動。
  • I2C總線驅動程序
    #include "linux/kernel.h"#include "linux/module.h"#include "linux/i2c.h"#include "linux/init.h"#include "linux/time.h"#include "linux/interrupt.h"
  • Android Linux 內核介紹
    從下一篇開始將詳細介紹每一個Android內核驅動程序及其作用。本文引用地址:http://www.eepw.com.cn/article/201609/304697.htmAndroid內核是基於Linux 2.6內核的(目前最新開發版本是2.6.31),它是一個增強內核版本,除了修改部分Bug外,它提供了用於支持Android平臺的設備驅動,其核心驅動主要包括:Android Binder ,基於OpenBinder框架的一個驅動
  • AWorks如何編寫開發設備驅動程序
    本文導讀 本文詳細介紹了AWorks中開發設備驅動的一般方法。基於這些通用的方法,用戶可以嘗試獨立開發一些設備的驅動,以進一步加深對AWbus-lite的理解。同時,當後續遇到一些AWorks 暫不支持的設備時,也可以自行開發設備相應的驅動。
  • 基於USB設備的Linux網絡驅動程序開發
    1 引言 做為開放原始碼 (Open Source) 運動重要組成部分,Linux作業系統吸引了數以萬計的程式設計師共同開發。由於Linux比較完整的繼承了各種UNIX版本的穩定和高效,並且克服和改進了傳統UNIX中的很多缺點,更因為其開放的開發模式,Linux成為一個具有強大網絡服務功能的作業系統。它支持主流的TCP/IP以及IPX/SPX、 NETBEUI等眾多網絡協議,無論在嵌入式系統,伺服器還是桌面作業系統領域,Linux都取得了廣泛的應用。
  • ARM-Linux驅動移植--RTC(實時時鐘)移植
    >arm/mach-s3c2410/mach-smdk2410.c添加紅色字體部分staticstructplatform_device*smdk2410_devices[]__initdata={&s3c_device_usb,&s3c_device_lcd,&s3c_device_wdt,&s3c_device_i2c
  • 「正點原子FPGA連載」第二十四章Linux設備樹(二)
    1)摘自【正點原子】領航者 ZYNQ 之linux驅動開發指南2)實驗平臺:正點原子領航者ZYNQ開發板3)平臺購買地址:https://item.taobao.com/item.htm?在實際的開發當中肯定是有這樣的需求存在的,例如在我們的領航者開發板上有一個eeprom器件(24c64)和一個rtc器件(pcf8563),假如它倆都是掛在ZYNQ的i2c0總線下的。
  • Linux環境下的USB攝像頭驅動開發
    本文從Linux內核的USB核心模塊出發,遵循Video4Linux接口標準,採用urb策略與內存映射的方式以提高數據讀取速度,設計開發了基於Linux環境下的USB攝像頭驅動,並在ARM9實驗平臺上對該驅動程序進行了測試與分析。
  • linux內核移植-移植2.6.35.4內核到s3c2440
    新建一個工作目錄s3c2440,將內核源碼包拷貝至工作目錄下,再解壓。2、移植yaffs2驅動下載最新的驅動點擊下載 解壓在工作目錄s3c2440下進入yaffs2: cd yaffs2給內核打補丁: .
  • 基於μCLinux的USB驅動程序實現
    在此介紹FTDI公司的USB晶片FT245BL的主要性能、工作原理,並將其應用在Blackfin ADSP-BF533微處理器的嵌入式開發平臺上,說明在μClinux下編寫與加載USB接口晶片FT245BL的驅動程序方法,實現了DSP主板的 USB埠通信。
  • 基於Linux平臺下的FPGA的ARM驅動開發方法
    隨著產品研發周期的逐步縮短,定製型產品的開發使FPGA在後面的應用面越來越廣。例如在2G和3G通信,以及以後的4G通信和wimax等等通信類設備中,它與DSP、MPU一起將大量出現在其中。S3C2410微處理器是一款由Samsung為手持設備設計的低功耗、高度集成的微處理器,採用272腳FBGA封裝,內含一個ARM920T內核和一些片內外圍設備。
  • 《rt-thread驅動框架分析》-i2c驅動
    主要分為三層,驅動層-核心層-設備層。如果你分析過Linux的I2C框架,它的層次也是這樣子。所以你了解了RTT的I2C之後再去看Linux的I2C框架,其實問題不大。驅動層:分為硬體I2C驅動和軟體I2C驅動。核心層: ①其中bit_ops是RTT為軟體I2C提供的中間層,它的作用:為底層模擬I2C驅動提供回調接口,為核心層提供統一I2C通信接口。
  • 「正點原子FPGA連載」第八章Linux基礎外設的使用
    1)摘自【正點原子】領航者 ZYNQ 之linux驅動開發指南2)實驗平臺:正點原子領航者ZYNQ開發板3)平臺購買地址:https://item.taobao.com/item.htm?8.1GPIO之LED的使用GPIO驅動程序通過sysfs文件系統提供了用戶空間對GPIO的訪問,因而通過終端控制LED極其方便。
  • i2c的設備樹和驅動是如何匹配以及何時調用probe的?
    的設備樹和驅動是如何匹配以及何時調用probe的?,可支持多種不同的i2c控制器驅動。2. i2c架構如何如何管理硬體信息和驅動?不論哪一種總線,一定會維護兩個鍊表,一個是驅動鍊表,一個是硬體信息鍊表。
  • Linux內核驅動程序的配置
    實例引導:S3C2440 處理器的RTC 與 LED 驅動配置。首先,在Linux/drivers/char 目錄中包含了 S3C2410 處理器的 RTC 設備驅動原始碼 s3c2410-rtc.c.而在該目錄的 Kconfig 文件中包含 S3C2410_RTC 的配置項目:config S3C2410_RTC bool S3C2410 RTC Driver depends on ARCH_S3C2410 help RTC (Realtime
  • 基於I2C總線性能問答集錦
    [答:Alex] CAN總線通過複雜的傳輸協議可以實現很高容錯性能,所以多用於對數據準確要求很高的場合,比如汽車,機械等領域,但是其速度很低,協議複雜。而I2C總線協議實現非常的簡單,速度更高,但是沒有提供如CAN那樣複雜的糾錯和檢測機制。所以綜合而言,CAN複雜,但是容錯度高,速度低。
  • linux驅動開發第1講:帶你編寫一個最簡單的字符設備驅動
    關注「技術簡說」,一步一步教你開發linux內核和驅動。hello world!是廣大程式設計師入門一門新語言的第一步。今天,我們來看一個hello驅動,希望這是大家入門linux內核驅動的良好開局。我的環境是ubuntu 14.04,內核版本 4.4.0-31-generic,本節我會開發一個基於ubuntu 14.04下的最簡單的hello驅動,帶大家領略驅動的魅力。
  • 基於Linux系統的觸控螢幕驅動方案
    Linux根據不同設備,將驅動程序分為字符設備驅動、塊設備驅動、網絡設備驅動三種,Linux輸入子系統u是對字符類型輸入設備驅動實現方式的抽象,是對分散的、多種不同類別的輸入設備進行統一處理的內核驅動模型。輸入子系統具高效、無Bug和可重用等優點。本文對基於Linux輸入子系統的觸控螢幕驅動進行深入的討論。