imx6ul+rtc使用

RTC实时时钟 系统在断电后 需要RTC电池计时间并在系统启动后 将这个时间给到系统时间。以此维护系统断电后与现实时间同步 一般RTC电池需要3V的电压 若经过扩展板连接 需要测量此电压是否给到主控芯片 然后date命令可以查看系统时间 date -s “2008-08-08 12:00:00” 可以通过这个命令修改系统时间与现实时间一致 如果设备上有hwclock这个命令 可以通过此命令修改和查看rtc 阅读详情
Source-lib外设库第五弹;

现在看网上最多设置rtc事件是用date命令和hwclock命令来设置;

现在我们用c来写:
#include "so_lib.h"
#include "bsp_rtc.h"

int main(int argc, char** argv)
{
        int dev_fd;
        dev_fd = rtc_init_time("2017-11-30 21:20:00");

        rtc_deinit(dev_fd);

        return 0;
}
这次主函数真的超级简单,初始化rtc时间,然后释放rtc。
编译运行下,等会咱们再来看代码;

老规矩先安装库:
install --mode=644 libslhl.so /usr/local/lib/
install --mode=644 libslbsp.so /usr/local/lib/
运行程序:
./source-rtc_test
没有报错;

执行命令查看下rtc的时间是否更新对:
hwclock -r


什么情况怎么多l一个月。

EXPORT int rtc_init_time(const char *dt)
{
        int dev_fd = -1;
        dev_fd = open_hardware(RTC_PATH, O_RDWR | O_NONBLOCK);
        if (dev_fd == -1)
                return -1;
        if (set_rtc_time(dev_fd, dt) == -1)
                return -1;
        return  dev_fd;
}
这段代码没有问题,再看下set_rtc_time函数:
/*
        使用方法:char *dt = "2017-11-30 18:59:00"
*/
EXPORT int set_rtc_time(int dev_fd, const char *dt)
{
        struct rtc_time rtc_tm;

        int ret = sscanf(dt, "%d-%d-%d %d:%d:%d", &rtc_tm.tm_year, &rtc_tm.tm_mon, \
                                                                                                &rtc_tm.tm_mday, &rtc_tm.tm_hour, \
                                                                                                &rtc_tm.tm_min, &rtc_tm.tm_sec);
        if (ret != 6) {
                ERR("Time not match");
                return -1;
        }
        ret = ioctl(dev_fd, RTC_SET_TIME, &rtc_tm);
        if (ret == -1) {
                ERR("ioctl RTC_RD_TIME");
        }
        return ret;
}
这段代码验证了下也没有问题;

查看内核代码后发现问题:

mon = rtc_tm.tm_mon + 1;    tm_mon starts at zero

修改代码:
EXPORT int set_rtc_time(int dev_fd, const char *dt)
{
        struct rtc_time rtc_tm;

        int ret = sscanf(dt, "%d-%d-%d %d:%d:%d", &rtc_tm.tm_year, &rtc_tm.tm_mon, \

                                                                        
                        &rtc_tm.tm_mday, &rtc_tm.tm_hour, \

                                                                        
                       &rtc_tm.tm_min, &rtc_tm.tm_sec);
        if (ret != 6) {
                ERR("Time not match");
                return -1;
        }
rtc_tm.tm_mon -= 1;
        ret = ioctl(dev_fd, RTC_SET_TIME, &rtc_tm);
        if (ret == -1) {
                ERR("ioctl RTC_RD_TIME");
        }
        return ret;
}
最后编译测试问题解决,效果如下:

imx6ul+获取rtc时间 接上一节的rtc测试,不过这次是测试获取时间。 主函数更改了: #include "so_lib.h" #include "sl_perpheral.h" #include "bsp_rtc.h" DEBUG_SET_LEVEL(DEBUG_LEVEL_INFO); int main(int argc, char** argv) {         int dev_ 阅读详情

相关推荐

imx6ul+QT闹钟

开篇一张图: 接下来全靠编。 上图就是我这次做的闹钟的主界面图了,先简单的说下功能和流程: 这个闹钟可以设置时间和设置闹钟,在闹钟的时间到达时会播放一首歌,也可以关掉。 设置的时间是直接硬件设置到rtc,然后更新到系统时间里。 程序的主要资源在上图,都是前面写好的bsp包和lib库。 接下来我们看下程序: Widget::Widget(QWidget *par

Sourcelink 1268

Linux系统时间与RTC时间

http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3637782 Linux的RTC驱动相对还是比较简单的,可以将它作为一个普通的字符型设备,或者一个misc设备,也可以是一个平台设备,这都没有关系,主要还是对rtc_ops这个文件操作结构体中的成员填充,这里主要涉及到两个方面比较重要:   1. 在Linux中有硬件时钟

caoshunxin01的专栏 2935

settimeofday(linux RTC时间较准程序)

linux RTC时间较准程序

rtc定时器配置ioctl 设置 RTC_AIE_OFF、RTC_RD_TIME、RTC_ALM_SET、RTC_AIE_ON

命令获取当前 RTC 时间。然后,它设置了一个 RTC 定时器,使之在当前时间的 10 秒后触发。最后,它启用了 RTC 中断,以便在定时器触发时接收通知。此外,RTC 设备接口的具体使用可能因系统和硬件而异。请参考相关文档和资料,以了解您的系统中 RTC 设备接口的具体用法和支持的命令。请注意,使用 RTC 定时器和相关标志需要具有适当的权限。您可能需要以超级用户身份运行该程序,或者使用。要设置 RTC 定时器以及相关标志,您需要使用 Linux 的 RTC 设备接口(

sunfanup的博客 1720

HC-05蓝牙模块详细配置、连接与使用过程

用手按着模块上的按键,再给蓝牙模块上电。当蓝牙模块上的灯慢闪的时候就说明进入了配置模式了。在配置蓝牙的时候一定要将串口助手按这个要求配置:设置波特率 38400,数据位 8 位,停止位 1 位,无校验位,这是固定操作! 根据蓝牙的主从模式进行不同的设置,二者主要区别就在于AT+ROLE这个指令如果这里没返回OK可能有一下几种情况:如果正常返回OK,那就可以进行下一步了 配置蓝牙密码的时候,特别是配置HC05,密码必须加双引号"",否则不能正常设置!!!! 给从机模式蓝牙配置好之后,将蓝牙重

qq_51688022的博客 2万+

反序列化漏洞详解

目录 一、什么是序列化和反序列化 二、什么是反序列化漏洞 三、序列化函数(serialize) 四、反序列化(unserialize) ​五、什么是PHP魔术方法 六、一些常见的魔术方法 七、魔术方法的利用 八、反序列化漏洞的利用 1.__destruct()函数 2.__wakeup() 3.toString() ​九、反序列化漏洞的防御 一、什么是序列化和反序列化 序列化是将对象转换为字符串以便存储传输的一种方式。而反序列化恰好就是序列化的逆过程,反序列化会将字符串.

LJH1999ZN的博客 3万+

IMX6ULL上获取RTC时间

这里的rtcfd就是struct device,RTC_RD_TIME在这里就是控制的io,后面的&tm就是unsigned long,然后这个函数 ioctl本身就是对上面ops里面的函数指针(int)(ioctl *)(XXXX)的调用,这里相当于省略了ioctl=ioctl这一步,他们的首地址是一样的,因为名字都ioctl。然后前面的define定义的宏,就是对cmd里面的RTC_RD_TIME这样的IO进行的定义。

Xueqian E的博客 808

Proteus仿真实战:用STM32F103C8T6输入捕获模式精准测量PWM频率(附完整代码)

本文详细解析了如何在Proteus仿真环境中,利用STM32F103C8T6的输入捕获模式精准测量PWM频率。文章从输入捕获的工作原理、Proteus电路搭建、模块化代码实现到调试优化,提供了完整的实战指南和代码示例,帮助开发者深入理解并掌握这一关键技术。

weixin_29158047的博客 257

20200110-01 RTC_RD_TIME: Invalid argument 实时时钟 NXP pcf 8563 hwclock 回复 解决办法

问题现象如下 请先确保这些情况: 1 设备树引脚配置 OK 2 I2C 配置 OK 3 RTC 驱动选择 OK 个人解决办法: 先行写入一次时间 hwclock -w 再进行读取 hwclock 注意:记得给装个纽扣电池,不然断电又不行了 ...

你学习了吗?咋办,先想法子忽悠成“砖家”呗 5188

yolo自动化项目实例解析(九) 导航

比如我们经常使用的导航,说白了就是寻找两点之间最近的路径,也就是所谓的寻路,我们需要想办法让程序知道他要去哪里,路径包含(起点、轨迹、路径)

默子昂 1995

手把手教你用Wireshark抓包分析Profinet非周期通信(附实战案例)

本文详细解析了PROFINET非周期通信(RTA)的技术原理与实战应用,通过Wireshark抓包分析,揭示从PLC请求到驱动器响应的完整对话过程。涵盖实验环境搭建、关键配置步骤、典型参数访问流程及故障诊断案例,帮助工程师深入理解并优化工业网络通信性能。

Black的专栏 1049

imx6ul 18 之RTC

一、RTC 原理详解 6u和6ull的rtc内容在参考手册snvs章节。 6u的rtc分为hp和lp,对应高低功耗。 lp叫做srtc,hp叫rtc,hp的rtc掉电以后数据就丢失了,用纽扣电池也没用,因此必须要用lp / srtc。 snvs章节有些是加密有关的,需要与nxp签订nda协议(保密协议)。 rtc分为SNVS_LP 和 SNVS_HP 如果做产品,建议使用外置rtc芯片,如PCF8563。外部的精度较高,更高级的还有带温度补偿的rtc。 rtc很类似定时器,外接32.768KHz的晶振,然后

engineer0的博客 1719

STM32F401RCT6最小系统原理图设计

STM32F401RCT6最小系统原理图设计一、主控芯片二、电源电路三、晶振电路三、下载电路四、完整电路图      本文章基于STM32F401RCT6进行最小系统原理图设计,包含主控芯片,电源,晶振电路,下载电路等几部分 一、主控芯片 主控芯片采用STM32F401RCT6,需注意: VBAT在不接电池的情况下需接3.3V,VDDAVREF+需接3.3V,否则会造成芯片供电不正常,无法启动和识别的情况 VDDAVREF+和VCAP1处电容需按照规格书

weixin_43278295的博客 2万+

imx6ul——uboot添加RTC,pcf8563驱动

博主使用的是天嵌的imx6ul_coreB 一般来说uboot一开始是不支持RTC,可是有时需要在uboot上使用RTC,那么就记录一下如何添加RTC   1.添加RTC芯片配置相关 要添加RTC,首先在配置文件中添加宏开启pcf8563芯片的支持,以及RTC的设备地址等,使能date命令并设置RTC设备使用总线号。由于date命令是读取RTC内的时间,所以必须使用相关SOC自带rtc的驱...

a617996505的博客 2457

【网络安全】基于Python的威胁情报自动推送系统设计与实现(含源码)

本文介绍了一个基于 Python 开发的威胁情报自动推送系统的设计与实现。该系统通过集成 AbuseIPDB 威胁情报数据源与即时通讯平台,实现了恶意 IP 地址的自动化采集、筛选与实时推送功能。文章详细阐述了系统的技术架构、核心算法、数据流转过程以及关键代码实现。系统采用多线程并发架构,通过 Long Polling 技术实现实时消息接收,支持自动推送和交互式查询两种工作模式。文章还提供了完整的部署指南和使用说明,包括环境配置、运行方式等内容。

等风来 312

Qt C++ HTTP 调用通义千问大模型 X 学术论文润色工具(SCI 格式适配)

请求地址:`https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation`;| Windows | 打包时携带 `Qt6Network.dll`/`libcrypto-1_1-x64.dll` 等依赖;| Linux | 安装 `libssl-dev` 和 `libcurl4-openssl-dev`;| API 调用失败 | 检查 API-KEY 是否有效;

寒寒豆豆软件公司的博客 104

正点原子IMX6UL IIC RTC驱动DS3231

1 前言 觉得Imx6内部的RTC时钟不是很准,于是外置RTC芯片ds3231 在源码里一查, 发现在driver/rtc/rtc-ds1307.c中 2 修改设备树 ds3231地址可以查询数据表: 0xd0 , 但是linux 设备树要右移一位, 于是就成了0x68 也可以通过i2ctest来检测地址 &i2c1 { clock-frequency = <100000>; pinctrl-names = "default"; pinct..

紫枫洛天的博客 1447

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

迅为linux下串口,迅为iMX6UL开发板多路串口开发平台接口详解

原标题:迅为iMX6UL开发板多路串口开发平台接口详解iMX6UL开发板 核心板参数尺寸:38mm*42mmCPU:iMX6UL 主频528MHz ARM Cortex-A7架构 单核内存:512MDDR存储:8G EMMC工作电压:5V电压供电系统支持:Linux-QT4.7操作系统运行温度:-20℃ ~ +80℃引脚间距:1.27mm引角扩展:i.MX6功能全部引出,146PIN脚连接方式:...

weixin_35396246的博客 367

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

正点原子IMX6UL 调用外部RTC DS3231 设置时间hwclock /dev/rtc1

1 指令集 hwclock -s 或者 --hctosys 将硬件时间同步到系统时间 hwclock -w 或者 -systohc 将系统时间同步到硬件时间 hwclock -v 查看版本 hwclock -f 修改rtcfile , 比如 hwclock -f /dev/rtc1 date date 查看系统时间 date -s 设置系统时间 date -s 12/01/2018 date -s 21:15:38 date 120121152018.38 date -s "2007-..

紫枫洛天的博客 978

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

imx6ul 8 之主频和时钟配置

一、hw原理图 1、32.768kHz的晶振,供给rtc使用 2、在T16和T17两个io上面接了一个24MHz的晶振,整个系统的时钟由该时钟源提供 二、imx6ul系统时钟分析 1、7 路 PLL 时钟源 (from 24 MHZ)(驱动外设) 为了方便生成时钟,6ul从24MHZ晶振生成了7路PLL,这7路PLL有的又生成 PLL1 :arm_pll,arm内核用 PLL2 : system_pll,一般固定528m,又叫做528_pll。此路PLL又分出了4路PFD PLL3 : usb_pll

engineer0的博客 1144

迅为linux下串口,迅为iMX6UL开发板多路串口开发板接口详解

迅为iMX6UL开发板一.底板硬件描述:1.POWER电源接口电源输入为5V/2A+,给核心板提供5V电源,给底板供电。原理图部分如下图所示。电源接口位置如下图所示。2.SWITCH电源开关轻触电源开关可以控制开发板电源通断。原理图部分如下图所示。如下图所示。3.拨码开关8位拨码开关控制iMX6UL启动模式。原理图部分如下图所示。如下图所示。4.JTAG接口保留JTAG接口,有需要的用户可以进行扩...

weixin_36092871的博客 346

迅为iMX6UL Cortex-A7架构单核ARM开发板接口介绍-支持定制

支持商业级和工业级核心板 1. POWER 电源接口电源输入为 5V/2A+,给核心板提供 5V 电源,给底板供电。原理图部分如下图所示。 电源接口位置如下图所示。 2.SWITCH 电源开关轻触电源开关可以控制开发板电源通断。原理图部分如下图所示。 如下图所示。 3.拨码开关8 位...

weixin_30553837的博客 475

【迅为Linux开发板】imx6ul开发板的硬件接口设计

恩智浦imx6ul平台: 1.POWER 电源接口 电源输入为5V/2A+,给核心板提供 5V 电源,给底板供电。 原理图部分如下图所示。 电源接口位置如下图所示。 2.SWITCH 电源开关 轻触电源开关可以控制开发板电源通断。 原理图部分如下图所示。 如下图所示。 3.拨码开关 8 位拨码开关控制 iMX6UL 启动模式。 原理图部分如下图所示。 如...

Chihiro_S的专栏 557

迅为IMX6UL开发板_Cortex-A7_工业级丨商业级_多串口高效稳定研发

迅为IMX6UL开发板_Cortex-A7_工业级_多串口高效稳定研发 iMX6UL 商业级:内存:512M存储:8G EMMC iMX6UL 工业级:内存:256M存储:256M FLASH 核心板参数: 尺寸:38mm*42mm CPU:iMX6UL 主频528MHz ARM Cortex-A7架构单核 iMX6UL 商业...

weixin_30411997的博客 205

imx6ull-驱动开发篇41——Linux RTC 驱动实验

本文介绍了I.MX6U开发板内部RTC驱动的实现方法。主要内容包括:1)在设备树中配置snvs_rtc节点,匹配Linux内核中的rtc-snvs.c驱动;2)详细分析snvs_rtc_probe函数的实现过程,包括寄存器映射、中断注册和RTC设备初始化等关键步骤;3)讲解RTC操作集snvs_rtc_ops的实现,重点分析时间读取函数的工作流程;4)给出Linux系统下使用date和hwclock命令查看和设置RTC时间的具体操作方法。通过本文可以掌握I.MX6U内部RTC驱动的实现原理和实际应用方法。

m0_62228566的博客 1016
上一篇: imx6ul+QT5中文显示
下一篇: imx6ul+获取rtc时间
Sourcelink
博客等级 码龄12年 31粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值