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时间的解决方法的更多相关文章

  1. C# 解析excel时,字段内有内容,却读取不到的解决方法

    C# 解析excel时,字段内有内容,却读取不到的解决方法:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ...

  2. Springmvc+Hibernate在Eclipse启动Tomcat需要很长时间的解决方法

    最近在学习SpringMvc开发,有一个提问困扰了很久,就是在Eclipse启动Tomcat需要很长时间,大概要1分多钟. 启动日志: 九月 08, 2016 8:59:01 下午 org.apach ...

  3. (蓝牙)网络编程中,使用InputStream read方法读取数据阻塞的解决方法

    问题如题,这个问题困扰了我好几天,今天终于解决了,感谢[1]. 首先,我要做的是android手机和电脑进行蓝牙通信,android发一句话,电脑端程序至少就要做到接受到那句话.android端发送信 ...

  4. Office 2010 打开文件后所有的格式成了时间的解决方法

    最新不知道什么原因,每一个 Excel 文件打开后,时需的数据都成了时间格式. 而且改都改不了,改了后第二次打开又成了这个样子. 最后找到解决方法. 如下动画,将 [$F400] 数据格式删除就可以. ...

  5. 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 ...

  6. linux和windows双系统时间错误解决方法

    转自http://www.2cto.com/os/201204/126212.html windows时间会慢8小时,原因: 两个概念: UTC即Universal Time Coordinated, ...

  7. 关于heritrix安装配置时出现”必须限制口令文件读取访问权限”的解决方法

    转载:http://www.floatinglife.cn/关于heritrix安装配置时出现必须限制口令文件读取访问 最近开始写一个RSS聚合程序,需要爬虫支持,于是就整来heritrix,没想到, ...

  8. detectMultiScale 读取冲突的一个解决方法

    背景:用的是opencv的HOGDescriptor检测行人,实例化为hog:使用默认的行人检测器: hog.setSVMDetector(cv::HOGDescriptor::getDefaultP ...

  9. CentOS 6.2出现Disk sda contains BIOS RAID metadata解决方法

    今天在安装CentOS 6.2的时候,当进到检测硬盘的时候,总是过不去,报错如下: Disk sda contains BIOS RAID metadata, but is not part of a ...

随机推荐

  1. 原生JS实现图片轮播

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. C#基础拾遗系列之一:先看懂IL代码

    一.前言 首先,想说说为什么要写这样系列的文章,有时候在和同事朋友聊天的时候,经常会听到这样的话题: (1)在这家公司没什么长进,代码太烂,学不到东西.(你有没有想想框架为什么这样写,代码还可以怎么去 ...

  3. RChain的Casper共识算法

    RChain的Casper共识算法是基于Vlad Zamfir的correct-by-construction共识协议和CTO Greg Meredith和其他RChain成员讨论而来的.他们还为Ca ...

  4. POJ 3348 Cows [凸包 面积]

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9022   Accepted: 3992 Description ...

  5. Python tutorial阅读之使用 Python 解释器

    配置环境变量后,一般可以直接通过Python或指定Python版本号来调用Python. Python 解释器有些操作类似 Unix shell:当使用终端设备(tty)作为标准输入调用时,它交互的解 ...

  6. VS2012如何调试JS

    下面的操作步骤描述了怎样利用vs.net中的调试器来调试javascript: 1,首先,要让你的ie允许调试脚本,具体步骤如下:    打开ie->工具菜单->inter选项->高 ...

  7. 修改XCode默认工程为使用Xib

    概述 自从XCode5开始,当创建一个带有View的iPhone项目时,默认采用了StoryBoards,本文主要是讲解如何手动修改使其切换到使用xib来布局. 修改步骤 1.先将Main.story ...

  8. Visual Studio 2017 Enterprise (15.3)

    版本15.3更新在用户离线下载时更加人性化,包含了进度显示,下载出错可以输入R,进行下载的重新尝试,并在当前下载框下继续下载为完成的作业,结合 --layout 参数的离线文件的检查和修复,并且在下载 ...

  9. CentOS下安装XAMPP详细教程(转)

    [原文]http://blog.csdn.net/hel12he/article/details/49781813 现在PHP的集成运行环境越来越多,个人比较喜欢XAMPP,更新速度快,好用,安装便捷 ...

  10. centos6下从源码安装setuptools和pip

    1. 下载setuptools及pip的源码包 setuptools与pip都是python的模块 setuptools源码包: https://pypi.python.org/pypi/setupt ...