linux 开发板时间不对_修改开发板linux系统时间 - CSDN
  • 问题描述linux中使用date设置时间后用hwclock -w同步到RTC,断电重启后,有时会失效原因分析保存时间戳1、使用命令关机(halt)会调用rc0.d中的脚本; 2、使用命令重启(reboot)会调用rc6.d中的脚本; 3、其中都...

    问题描述

    linux中使用date设置时间后用hwclock -w同步到RTC,断电重启后,有时会失效

    原因分析

    保存时间戳

    1、使用命令关机(halt)会调用rc0.d中的脚本;
    2、使用命令重启(reboot)会调用rc6.d中的脚本;
    3、其中都有脚本S25save-rtc.sh,S25save-rtc.sh是对 ../init.d/save-rtc.sh的软连接;
    4、save-rtc.sh脚本内容:

    date -u +%4Y%2m%2d%2H%2M%2S > /etc/timestamp
    

    使用时间戳

    1、启动内核后启动第一个程序init,init调用脚本/etc/inittab

    2、inittab中启动的第一个脚本是:/etc/init.d/rcS

      7 # Boot-time system configuration/initialization script.
      8 # This is run first except when booting in emergency (-b) mode.
      9 si::sysinit:/etc/init.d/rcS
    

    3、init.d/rcS中有exec /etc/init.d/rc S;
    4、rc中循环调用rcS.d中的脚本;
    5、rcS.d中有脚本S55bootmisc.sh,软连接到 ../init.d/bootmisc.sh
    6、 bootmisc.sh脚本关于timestamp的内容如下:

    test -x /etc/init.d/hwclock.sh && /etc/init.d/hwclock.sh start
    if test -e /etc/timestamp   #如果/etc/timestamp文件存在
    then
    SYSTEMDATE=`date -u +%4Y%2m%2d%2H%2M%2S`    #获取系统时间
    read TIMESTAMP < /etc/timestamp             #读取/etc/timestamp保存的时间戳
    if [ ${TIMESTAMP} -gt $SYSTEMDATE ]; then    #如果上次保存的时间戳大于系统时间,将时间戳设置为系统时间
        # format the timestamp as date expects it (2m2d2H2M4Y.2S)
        TS_YR=${TIMESTAMP%??????????}
        TS_SEC=${TIMESTAMP#????????????}
        TS_FIRST12=${TIMESTAMP%??}
        TS_MIDDLE8=${TS_FIRST12#????}
        date -u ${TS_MIDDLE8}${TS_YR}.${TS_SEC}
        test -x /etc/init.d/hwclock.sh && /etc/init.d/hwclock.sh stop
    fi
    

    总结

    ARM开发板上设置RTC时间,如果执行reboot或者halt将会保存时间戳,重启后时间正常;
    如果是断电重启,/etc/timestamp中保存的时间戳是上次执行reboot或halt保存的,如果执行reboot或halt保存的时间戳比你想设置的RTC时间大,就会在执行启动脚本时,将/etc/timestamp中保存的时间戳设置到RTC中,导致出错。
    比如,有人故意设置一个很未来的时间,而且ARM板在使用过程中,都是直接断电,将会导致RTC设置一直是失败的。
    —end

    展开全文
  • arm-linux开发板修改时区

    千次阅读 2017-09-14 12:50:04
    开发板环境编译好之后,发现时间设置好之后,重启立刻就变了,正好是8个小时,应该是时区的问题。 使用date查看时间是UTC时间,解决办法: 1. 将ubuntu系统下面的/usr/share/zoneinfo/Asia/shanghai文件复制到开发板...

    开发板环境编译好之后,发现时间设置好之后,重启立刻就变了,正好是8个小时,应该是时区的问题。

    使用date查看时间是UTC时间而不是CST,解决办法:

    1. 将ubuntu系统下面的/usr/share/zoneinfo/Asia/shanghai文件复制到开发板的/etc/目录下,并改名为localtime。

    2. 在启动初始化文件/etc/init.d/rcS文件中添加一行,/sbin/hwclock -s。

    即可!

    说明:第1步为修改时区,第2步从RTC调入时间到系统时间中来。


    展开全文
  • void getSystemTimer(void) { #if 0 char *wdate[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"} ; time_t timep; struct tm *p; time(&timep); p=gmtime(&timep);... printf("\n****...

    void getSystemTimer(void)
    {
    #if 0
        char *wdate[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"} ;
        time_t timep;
        struct tm *p;
        time(&timep);
        p=gmtime(&timep);
        printf("\n************************* %d:%d:%d **************************\n", p->tm_hour, p->tm_min, p->tm_sec);
    #endif
        static char flag=0;
        static long lastsecond = 0 ;   //old
        long timeoffset = 0 ;          //now
        
        struct timeval tv;
        struct timezone tz;
        gettimeofday(&tv,&tz);
        if(flag==0){
          lastsecond = tv.tv_sec ;
          flag = 1 ;
        }
        timeoffset = tv.tv_sec - lastsecond ; //get offsettime
        printf("\n************************* %d:%d:%d **************************\n",(timeoffset/60)/60,(timeoffset/60)%60,timeoffset%60) ;
    }

    展开全文
  • 想通过ntp来更新arm linux开发板上的时间,下载了最新的ntp-4.2.9结果死活arm-linux-gcc编译不过去,按照网上某人的方法http://blog.csdn.net/zgrjkflmkyc/article/details/45098831 ,基本上不能成功,包括拿着他...

           想通过ntp来更新arm linux开发板上的时间,下载了最新的ntp-4.2.9结果死活arm-linux-gcc编译不过去,按照网上某人的方法http://blog.csdn.net/zgrjkflmkyc/article/details/45098831 ,基本上不能成功,包括拿着他这个所使用的版本ntp-4.2.4也是无法成功编译以及运行。

           只能arm-linux-gnueabi-gcc编译过去,但是运行的时候出问题,具体表现在getaddrinfo函数执行异常,返回值异常,初步分析,可能是arm-linux-gnueabi-gcc自带的glibc库内部实现的问题,反正我的arm-linux-gnueabi-gcc版本是4.8,对应的gblic版本是2.19的,最新的可能解决了,但是我不能更换编译工具链,因为是在ubuntu14.04上,getaddrinfo出错导致域名无法解析为IP地址,即使更换为IP地址传入ntpdate,也提示Error错误,这一点无法理解。

           没办法退回到最早时候的ntp-4.2.0版本,然后只编译ntpdate,其他部分不编译,make过程中会把其依赖的其他文件一并做编译,目的想用ntpdate程序更新时间,其他暂时不考虑,注意编译过程中可能出现一些错误之类的,甚至运行的时候也会出现segmentation fault这样的错误,基本上是init_alarm函数内部的部分signal_no_reset出现了问题。

           ntpdate程序的原理很多人没说,其实就是添加好对应的服务器列表以后,启动一个定时器,给各个服务器发送ntp数据包,这个数据包貌似有标准格式,没仔细分析,然后服务器收到数据包之后,客户端select之后拿到返回包含时间的数据包,解析并修改系统时间,基本上就是这样,但是ntpdate本身的程序因为要兼容winnt还有vxworks等等各种平台,所以里面超多的#if #else if等等条件编译,严重影响对代码的理解。

          不得不说,./configure这种探测编译环境的方式有足够多的缺陷,有时候明明目标平台是支持某个特性的,结果它探测完生成的config.h文件就是不支持该特性,就导致后面编译彻底出问题了,比如说我的目标平台以及编译工具链都支持timer_create和timer_settime这种启动定时器的方式,我自己写的别的程序使用了timer_create都正常,结果让ntp自带的./configure配置完了以后生成的config.h就是没有宏HAVE_TIMER_CREATE和HAVA_TIMER_SETTIME,真垃圾。

          还有ntp开源的东西,为了在同一个程序里面兼容多种平台,什么winnt、vxworks等等,做了大量的条件编译,真的,如果不是source insight的高亮外加#error做源码编译流程探测,很难理解这些代码,其实想做的事情很简单,就是发包给服务器,那后拿返回数据解析并设置系统时间。

          不管怎样,总算是把能运行的ntpdate编译出来了,设置了板子上/etc/localtime时区为Shanghai以后,现在运行ntpdate完美可以更新时间了。



    网上给了一堆的ntp服务器,也就这个比较好用一些。

    #./ntpdate time.buptnet.edu.cn

    展开全文
  • 嵌入式Linux开发板

    千次阅读 2016-03-29 17:38:31
    嵌入式Linux开发板开发介绍:iTOP-4412嵌入式Linux开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,独家配备三星S5M8767电源管理,配备Android、Linux + Qt、Ubuntu操作系统,开启学习、研发的...
  • linux 开发板(busybox命令)设置时间

    千次阅读 2015-06-05 15:21:33
    date后跟月日时分年 注意年是4位年,例如:2015年06月05日 10:00:00 date 060510002015
  • 嵌入式linux与ARM开发板的入门建议

    千次阅读 2011-08-14 00:50:00
     对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主要是...
  • 当使用一个运行着Linux系统的嵌入式开发板时(例 imx6 saber lite),常常用到一些重要的命令,比如查看刷入开发板的系统版本,开发板的CPU,开发板插入的各种外部设备(比如USB WIFI,3G MODEM, SATA硬盘.....), ...
  • linux系统上使用qt修改开发板时间

    热门讨论 2020-07-30 23:32:31
    这是一组在linux系统下通过使用qt的QTimeEdit和QDateEdit控件来修改开发板时间的代码
  • 嵌入式Linux开发板常见问题

    千次阅读 2012-12-04 15:28:47
    华恒ColdFire系列嵌入式Linux开发板常见问题解答 ——基于公用核心板HHCF5249/5272 (华恒科技版权所有) 1、关于宿主机Linux的安装 建议使用REDHAT系列:建议选择完全安装,即选择Custom...
  • 开发板环境时间设置好之后,重启会又变了,与之前设置时间正好相差8个小时,应该是时区的问题。使用date查看时间是UTC时间而不是CST,解决办法:拷贝/usr/share/zoneinfo/Asia/shanghai文件复制到/etc/目录下,并改名...
  • 开发板linux下联网

    2018-04-26 21:04:50
    最近在用开发板(PYNQ-Z1)做项目,想从git上用pip安装Python包,可是发现开发板linux连不上网。然后上网查各种资料和博客,最后终于是找到方法了。转自:https://blog.csdn.net/mmyaoduli/article/details/51578211...
  • 一、 先说一下时钟的概念,时钟包括硬件时钟和系统时钟,系统时钟就是linux系统显示的时间,用命令date可以显示当前系统时间;硬件时钟就是硬件自身的 时间了。它们两者没有关系的,但是可以通过命令设置系统
  • 嵌入式开发板(Embedded development board)就是半导体行业分工合作的载体之一,它为开发产品的厂商提供基本的底层硬件、系统和驱动等资源,使得用户不需要再投入人力和时间来完成这些底层的工作。 如何选择...
  • 本文所用开发板:tiny4412,当然也可以在jz2440上实现。 嵌入式中设备想要联网,无非就 有线和无线 两种方式。 有线就插上网线,没什么好说的;无线的话一种是将WIFI模块集成焊接在板子上,另一种是WIFI模块以...
  • 5.安装 Linux 系统到开发板 课程要求: 1. 了解linux嵌入式系统的组成和启动流程。 2. 通过SD卡自动烧写Linux系统到nand flash中。 3. 体验Linux+Qt系统。 实验器材: 软件: 1.OK6410光盘A,B。 硬件: 1. PC机...
  • 到网站下载源码 ...板子是help2416开发板,芯片是三星2416,操作系统Linux kernel 3.2 $ tar -xvf ntp-4.2.6p5.tar.gz $ cd ntp-4.2.6p5/ $ ./configure --host=arm-linux $ make 把ntpdate/ntpd
  • 对于很多linux开发初学者,手里没有开发板,但是又想练练linux驱动(入门级)的同学来说,在虚拟机ubuntu 下搭建一个简单的驱动开发环境不失为一个很好的选择。 linux驱动正常的开发环境搭建有以下几方面; 1、安装好...
  • linux 将触摸事件,鼠标事件,蓝牙事件等一切的输入都记录为 输入事件使用linux输入子系统管理 在linux中我们 结构体 表示复杂的事物 输入事件,在系统中已经定义好了 在 /usr/include/linux/input.h 中 详细的说明...
  • SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库...它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreS...
1 2 3 4 5 ... 20
收藏数 17,917
精华内容 7,166
关键字:

linux 开发板时间不对