rtems 4.11 RTC驱动 (arm, beagle)

RTC驱动的框架在 c/src/lib/libbsp/shared/tod.c 中,大部分功能都已经实现了,入口函数是 rtc_initialize(),BSP要实现的东西非常少。

beagle的实现在 c/src/lib/libbsp/arm/beagle/rtc.c中,提供一个 rtc_tbl RTC_Table[] 数组,数组的大小存储在 RTC_Count 全局变量中,每一个RTC_Table元素就是一个可能的RTC芯片,rtc_initialize()时,会调用每个RTC_Table元素的probe函数,第一个返回true的元素就是系统的rtc设备,这种实现方式是为了方便兼容产品的不同型号的主板(例如RTC芯片停产,换了另一个RTC芯片)。

RTC_Table元素(RTC设备)

RTC设备必须 rtc_fns 结构体中的3个函数:

  • 初始化:打开RTC设备时钟,设置总线访问方式等等
  • 读:从RTC设备中读取时间
  • 写:把时间设备到RTC设备中

rtc_initialize调用

cpukit/libcsupport/include/rtc.h 中定义了 RTC_DRIVER_TABLE_ENTRY,如果最终应用需要rtc,则可以通过配置,在 cpukit/sapi/include/confdefs.h 中包含到 _IO_Driver_address_table 中去

时间: 2024-10-09 23:05:28

rtems 4.11 RTC驱动 (arm, beagle)的相关文章

rtems 4.11 IRQ (arm,beagle)

arm IRQ入口在 cpukit/score/arm/arm_exec_interrupt.S 中,其中BSP最关心就是 bl bsp_interrupt_dispatch 这句,看看beagle BSP的实现, c/src/lib/libbsp/arm/beagle/irq.c,实现很简单,找到是哪一个中断源(vector number)引起的中断,然后调用 bsp_interrupt_handler_dispatch 即可,最后中断处理完后,通知中断控制器中断处理结束,可以引入下一个中断了

rtems 4.11 时钟驱动(arm, beagle)

根据bsp_howto手册,时钟驱动的框架主要在 c/src/lib/libbsp/shared/Clockdrv_shell.h 文件中实现 时钟初始化 时钟驱动初始化函数为 Clock_initialize(),这个函数在哪里被调用了呢? cpukit/include/rtems/clockdrv.h 中定义了 CLOCK_DRIVER_TABLE_ENTRY #define CLOCK_DRIVER_TABLE_ENTRY \ { Clock_initialize, NULL, NULL,

rtems 4.11 console驱动 (arm, beagle)

console驱动框架主要文件是 c/src/lib/libbsp/shared/console.c,驱动的入口是 console_initialize()主要作用是初始化BSP提供的全局变量 Console_Configuration_Ports[Console_Configuration_Count],初始化termios架构,注册console设备的文件节点. c/src/lib/libbsp/arm/beagle/console/console-config.c 是beagle BSP提

rtems 4.11 启动流程(arm, beagle)

请参照官方的 bsp_howto 文档,对arm来说,首先执行的文件是start.S start.S c/src/lib/libbsp/arm/shared/start/start.S 1.从 _start 开始执行 2.关CPU中断,初始化寄存器,设置好各mode的栈,调用 bsp_start_hook_0(),注意:此时异常向量表还没有配置好 3.然后拷贝vector到真正的位置(但没有设置cp15) 4.调用 bsp_start_hook_1() 5.最后调用 boot_card(),这个

IMX6Q RTC驱动分析

对于在工作中学习驱动的,讲究的是先使用,再理解.好吧,我们来看看板子里是如何注册的? 在板文件里,它的注册函数是这样的: imx6q_add_imx_snvs_rtc() 好吧,让我们追踪下去: 1 extern const struct imx_snvs_rtc_data imx6q_imx_snvs_rtc_data __initconst; 2 #define imx6q_add_imx_snvs_rtc() 3 imx_add_snvs_rtc(&imx6q_imx_snvs_rtc_d

rtems 4.11 部分m4文件分析

本来想把configure.ac和各种m4文件分析明白,发现有点困难,不过好在也能理解一些. 基本教程 首先要明白m4,参见这个教程,写得不错,不论怎么样m4替换来替换去的,还真是不那么容易懂,好在我们自己不用写,只要看懂大意而已- 然后我们还得去了解下 autoconf和automake,这本书不错 <Autotools: A Practioner's Guide to GNU Autoconf, Automake, and Libtool>,csdn有下载. 文件夹结构 当autoconf

linux RTC 驱动模型分析【转】

转自:http://blog.csdn.net/yaozhenguo2006/article/details/6824970 RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间.RTC因为是电池供电的,所以掉电后时间不丢失.Linux内核把RTC用作“离线”的时间与日期维护器.当Linux内核启动时,它从RTC中读取时间与日期,作为基准值.在运行期间内核完全抛开RTC,以软件的形式维护系统的当前时间与日期,并在需要时将时间回写RTC芯片.另外如果RTC提供了IR

RTC驱动模型分析

①RTC设备层: 设备资源的定义:arch/arm/plat-s3c24xx/devs.c static struct resource s3c_rtc_resource[] = { [0] = { .start = S3C24XX_PA_RTC, .end = S3C24XX_PA_RTC + 0xff, .flags = IORESOURCE_MEM, }, [1] = { .start = IRQ_RTC, .end = IRQ_RTC, .flags = IORESOURCE_IRQ,

【转载】RTC驱动分析

RTC驱动分析 关于RTC驱动的知识点,我看到一篇大牛的超详细的文章, 博文地址一:http://blog.csdn.net/yaozhenguo2006/article/details/6824970 博文地址二:http://helloyesyes.iteye.com/blog/1072433 以下是转载过来的部分知识点: 一. 驱动模型结构        与RTC核心有关的文件有:        /drivers/rtc/class.c          这个文件向linux设备模型核心注