VXWorks 时间问题
来源:互联网 发布:传奇数据库编辑工具 编辑:程序博客网 时间:2024/06/04 08:31
1。首先读取rtc的时间。时,分,秒。。。,
2。利用clock_settime设置系统时间
下面是x86体系读取bios时间的例子。类似你可以读取rtc中的时间:)
系统时间与bsp有关,在vzworks for x86系列的目标没有直接读取RTC(实时时钟控制器)的函数,用time.h中的函数读到的始终是 00:00:00, Jan. 1 1970.
所以在x86系列的机器中,我们可以从bios中读取当前的时钟。用sysInByte(),sysOutByte(),在70,和71端口读取或写bios里的时间.
首先要分析bios的内容,找出秒,分,时,天,月,年的存放地址。
他们分别是: 0x00,0x02,0x04,0x07,0x08,0x09年的低位字节,0x0A年的高为字节
然后从71端口读出相应的值,进行转换。
如:秒
sysOutByte(0x70,0x00);
second = sysInByte(0x71);
读出的second进行转换,:
second = (second &0x0F) + 10*((second &0xF0)> > 4);
示例代码:
- time_t biostime()
- {
- struct tm ahora;
- unsigned char cHour, cMin, cSec;
- unsigned char cDay, cMonth, cYear;
-
- sysOutByte(0x70,0x00/*second*/);
- cSec = sysInByte(0x71);
- ahora.tm_sec = (cSec&0x0F) + 10*((cSec&0xF0)> > 4);
-
- sysOutByte(0x70,0x02/*minut*/);
- cMin = sysInByte(0x71);
- ahora.tm_min = (cMin&0x0F) + 10*((cMin&0xF0)> > 4);
-
- sysOutByte(0x70,0x04/*hour*/);
- cHour = sysInByte(0x71);
- ahora.tm_hour = (cHour&0x0F) + 10*((cHour&0xF0)> > 4);
-
-
- sysOutByte(0x70,0x07/*day*/);
- cDay = sysInByte(0x71);
- ahora.tm_mday = (cDay&0x0F) + 10*((cDay&0xF0)> > 4);
-
- sysOutByte(0x70,0x08/*month*/);
- cMonth = sysInByte(0x71);
- ahora.tm_mon = (cMonth&0x0F) + 10*((cMonth&0xF0)> > 4) - 1;
-
- sysOutByte(0x70,0x09/*year*/);
- cYear = sysInByte(0x71);
- ahora.tm_year = 100 + (cYear&0x0F) + 10*((cYear&0xF0)> > 4);
-
- return mktime(&ahora); //将日期转化成时间戳
- }
我们在系统初始化时读取bios时间一次,然后修改系统时钟:
用
clock_settime(..)
以后我们得到的时间就都是当前的正确时间
示例:
- void inittime()
- {
- int res;
- struct timespec ts;
- struct tm daytime;
- time_t stime;
-
- ts.tv_sec = biostime();
- ts.tv_nsec = 0;
- res = clock_settime(CLOCK_REALTIME, &ts);
-
- stime = time(NULL);
-
- daytime = *localtime(&stime);
- printf ( "time is :%s\n ", asctime(&daytime) );
-
- }
阅读全文
0 0
- VXWorks 时间问题
- vxworks系统时间校准
- vxWorks启动时间
- Vxworks获取日历时间代码
- vxworks网卡加载时间缩短
- vxworks网卡加载时间缩短
- vxworks获取系统时间编程
- VxWorks 系统时间时区设置
- VxWorks时间片轮转调度
- VxWorks问题集锦【转】
- eXtremeDB vxworks 6.* 编译问题
- vxWorks中对时间的精确统计
- vxWorks中对时间的精确统计
- vxworks
- VxWorks
- vxworks
- vxworks
- vxworks
- mysql 配置支持SSL连接
- 172. Factorial Trailing Zeroes
- C# 编码转换
- 第十周作业: Add Digits
- 关于XML文档的xmlns、xmlns:xsi和xsi:schemaLocation
- VXWorks 时间问题
- Redis
- Swift 3.0 (一)
- 标签传播算法(Label Propagation)及Python实现
- 面向对象的六大设计原则
- CodeIgniter里面数据库常用函数
- Spring的aspectj的AOP操作
- 2014新跟踪算法KCF笔记
- 陈越何欣民数据结构2017年春11散列4