RTC裝置驅動

2021-07-24 00:16:03 字數 1337 閱讀 3247

從rtc裝置驅動看所有驅動的寫法:

1,所有驅動第一步是註冊「驅動程式」

2,註冊「裝置」

3,系統在初始化時,會呼叫驅動程式的probe函式,完成基本硬體的初始化和裝置的註冊

rp4412rtc體系結構解釋:

***_driver_register先把個新話的東西寫完然後進行driver_register

驅動開發人員寫的有:

定義平台裝置結構體s3c_device_rtc:/arch/arm/plat-samsung/dev-rtc.c;

板檔案裡註冊平台裝置(s3c_device_rtc加入smdk4x12_devices):/arch/arm/mach-exynos/mach-smdk4x12.c;

定義物理層的平台驅動s3c_rtc_driver:drivers/rtc/rtc-s3c.c

註冊物理層的驅動s3c_rtc_driver:drivers/rtc/rtc-s3c.c模組載入時註冊

platform_add_devices

為什麼定好平台裝置的結構體後,要寫上到相應的板檔案?

答:因為板子初始化的時候,要呼叫platform_add_devices,註冊各種各樣的裝置,把各種裝置都加到平台匯流排上去。(平台裝置的結構體.id等於-1,表明裝置只有乙個 )

裡面會依次呼叫各個裝置的proc函式,探測裝置物理上是否存在,存在則進行充分的初始化。

寫驅動程式,一定要區分driver和device, 前者是裝置所對應的驅動程式,device是裝置本身。兩者都需要註冊,註冊前者的目的,是告訴系統,在匯流排上面有這個驅動程式可以用了。

註冊device目的,是讓核心知道插入了這樣一些裝置了。

platform_driver_register的理解:

答:先驅動,都要註冊。平台驅動的註冊(讓系統能找到它),是使用platform_driver_register,是對driver_register進行了封裝,

主要是註冊了prob等函式,另外就是增加了位元組的platform_type 。 平台驅動和其他匯流排(如usb匯流排)上的驅動不同,不同體現在(分量上)

int platform_driver_register(struct platform_driver *drv)

平台驅動的prob函式的作業是什麼?

答:兩點,一是探測有沒有這個裝置;二是如果有這個裝置,則進行充分的初始化。所以說prob函式是平台驅動的入口.  (和模組的入口並不一樣,先呼叫模組入口,在後面某個時刻,再呼叫prob函式)

int driver_register(struct device_driver *drv)的作用是什麼

為了在核心中對驅動程式進行註冊,加到匯流排類別上面,讓當有裝置掛載上去時候核心能感知到

Linux下的RTC子系統裝置驅動

實時時鐘的作用主要是為作業系統提供乙個可靠的時間,並在斷電下,rtc時鐘也可以通過電池供電一直執行下去。實時時鐘驅動也有乙個子系統,叫做rtc子系統,其源 目錄是 driver rtc 在這個目錄下有乙個rtc核心 區,主要是rtc dev.c rtc sysfs.c和rtc proc.c三個檔案,...

RTC驅動的應用

linux常見的驅動在driver目錄下都有乙個資料夾,進入kernel主目錄下的drivers rtc,發現下面包含了許多晶元的rtc驅動,我們這裡是以pcf8563為主,她是我們要分析的核心。其他幾個相關聯的檔案分別是 alarm.c alarm dev.c class.c hctosys.c ...

RTC驅動程式

rtc實時時鐘 遵循字元裝置驅動 2 s3c rtc init platform driver register s3c rtc probe rtc device register s3c pdev dev,s3c rtcops,this module rtc dev prepare cdev in...