vxworks for x86读取bios时间的解决方法
vxworks for x86读取bios时间的解决方法
系统时间与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
然后从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) );
}
vxworks for x86读取bios时间的解决方法的更多相关文章
- C# 解析excel时,字段内有内容,却读取不到的解决方法
C# 解析excel时,字段内有内容,却读取不到的解决方法:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ...
- Springmvc+Hibernate在Eclipse启动Tomcat需要很长时间的解决方法
最近在学习SpringMvc开发,有一个提问困扰了很久,就是在Eclipse启动Tomcat需要很长时间,大概要1分多钟. 启动日志: 九月 08, 2016 8:59:01 下午 org.apach ...
- (蓝牙)网络编程中,使用InputStream read方法读取数据阻塞的解决方法
问题如题,这个问题困扰了我好几天,今天终于解决了,感谢[1]. 首先,我要做的是android手机和电脑进行蓝牙通信,android发一句话,电脑端程序至少就要做到接受到那句话.android端发送信 ...
- Office 2010 打开文件后所有的格式成了时间的解决方法
最新不知道什么原因,每一个 Excel 文件打开后,时需的数据都成了时间格式. 而且改都改不了,改了后第二次打开又成了这个样子. 最后找到解决方法. 如下动画,将 [$F400] 数据格式删除就可以. ...
- Jenkins无法读取覆盖率报告的解决方法
报错信息如下: log 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 coverage-report: [mkdir] Cre ...
- linux和windows双系统时间错误解决方法
转自http://www.2cto.com/os/201204/126212.html windows时间会慢8小时,原因: 两个概念: UTC即Universal Time Coordinated, ...
- 关于heritrix安装配置时出现”必须限制口令文件读取访问权限”的解决方法
转载:http://www.floatinglife.cn/关于heritrix安装配置时出现必须限制口令文件读取访问 最近开始写一个RSS聚合程序,需要爬虫支持,于是就整来heritrix,没想到, ...
- detectMultiScale 读取冲突的一个解决方法
背景:用的是opencv的HOGDescriptor检测行人,实例化为hog:使用默认的行人检测器: hog.setSVMDetector(cv::HOGDescriptor::getDefaultP ...
- CentOS 6.2出现Disk sda contains BIOS RAID metadata解决方法
今天在安装CentOS 6.2的时候,当进到检测硬盘的时候,总是过不去,报错如下: Disk sda contains BIOS RAID metadata, but is not part of a ...
随机推荐
- 在IAR下移植CC2650 contiki工程
与Instant Contiki相比,在Windows的IAR下开发可以在线仿真,下载也更方便,因此我想把BLEach的工程移植到IAR下.弄了好几天总算编译并且下载成功了,参考了[这篇TI的wiki ...
- python编码的那些事
字符串编码在python里是经常会遇到的问题,特别是写文件或是网络传输调用某些函数的时候. 现在来看看python中的unicode编码和utf-8编码 字符串编码的历史 计算机只能处理数字,文本转换 ...
- 原生JS实现图片轮播
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- .Neter玩转Linux系列之三:Linux下的分区讲解
基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...
- BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]
2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...
- VS2012编译log4cpp1.1.1版本
1.起因 看到官方网站上的log4cpp的代码已经更新到了1.1.1,而我目前使用的1.0.3版本,所以想使用下最新版本.在使用过程中发现相对于老版本,新版本的变化还是比较大的,特写下此文记录下. 2 ...
- CentOS安装EPEL Remi
EPEL,Remi 因为Centos官方源很多软件都没有,编译安装又比较麻烦,可以安装EPEL源Remi源解决此问题. CentOS 5.x : wget http://dl.fedoraprojec ...
- Virtualbox以及VWare在Win10下的不兼容
异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html Hyper原因导致的,关闭即可 禁用 hyper-vbcdedit /set h ...
- python入门学习笔记(一)
写在开头: A:python的交互式环境 ...
- 流式计算与计算抽象化------《Designing Data-Intensive Applications》读书笔记15
上篇的内容,我们探讨了分布式计算中的MapReduce与批处理.所以本篇我们将继续探索分布式计算优化的相关细节,并且分析MapReduce与批处理的局限性,看看流式计算是否能给我们在分布式计算层面提供 ...