如果说让我做上层软件的工作,我做起来可以得心应手,但是让我做平台方面的工作(系统问题解决、驱动编写、软件移植等工作),确实不熟悉。所以很多问题都是摸着石头过河,没有经验。许多问题在有经验的朋友那里是小菜一碟,而放在我面前总是如遇大山。不免被嘲笑为“弱鸡”~

最近我在做基于 Realtek 芯片RTL8196E的家庭网关的研发工作。Realtek提供了一个Linux的SDK开发环境。由于硬件上没有RTC,所以其中Linux的系统(下面简称为RTLinux)时钟是不正确的。需要时间同步。这个我从busybox中集成了ntpd便可。但是,我发现就算是同步好了时间,在执行 date 命令输出的时间时区都不对。

我在网上找了许多Linux系统设置时区的办法。从部分是:将 /usr/share/zoneinfo/Asia/Shanghai 符号链接为 /etc/localtime 便可。我在自己的PC机Linux(下面简称为PCLinux)上尝试,果然奏效。而同样的方法运用到 RTLinux 却没有一点效果。

这是博主想抱怨两句:网上找到的资料大多是告诉你怎么怎么去做就能达到什么目标,而没有说明为什么要这么做,它内在的原理是什么。如果不知道为什么,那么一旦发生一点变化,就无法变通了。

经博主研究,解决上面问题的办法有两种:

设置 /etc/TZ 文件,在该文件中指明时区

设置 TZ 环境变量

若读者不想深究其原因,那后面的内容便不必再看了。

博主先是发现了 /etc/TZ 这个文件看似时区的意思,其内容为: PST8PDT7,不知道是什么意思。尝试改改它。

到busybox里去找找 "/etc/TZ",看是谁,是怎么实用这个文件的。没有找到相关的引用。

到Linux内核中去找。也没有~

到boards中去找。结果找到:

可以看出是在 romfs/lib/libc.so.0 库文件里的。

而这个库文件则是由toolchain的工具集中复制得来。

于是再到toolchain下去找,结果有很多:

这时区的问题原来是由uclibc来决定的。

去看看uclibc/libc/misc/time/time.c中是怎么解决 /etc/TZ 文件的。

read_TZ_file()函数从 __UCLIBC_TZ_FILE_PATH__宏所(值为"/etc/TZ")指文件中读取数据。

在 _time_tzset(int use_old_rules) 中设置时区。

大致过程:

e = getenv("TZ");

if ((!e && !(e = read_TZ_file(buf))) || !*e) {

//!ERROR

}

可见,e先是从环境变量中去读,如果没有再从 /etc/TZ 中去读‍‍,‍‍这就是我们想要的原理。

接下来就是一大推解析相关的处理。这个我就不花时间去研究这个过程了,主要去看一下有没有相关的说明文档。

OK,我全明白了。 如果是在中国,那么就应该将变量设置成:"CST-8",试试看:

成功!

现在有两种方案:

直接到时区信息写到 /etc/TZ 文件

在系统启动时,设置环境变量 TZ

这两者都可以做。我们先默认在 /etc/TZ 文件中写入 "CST-8"

问题解决!

嵌入式linux 时间同步,解决嵌入式Linux中的时区问题相关推荐

  1. 时间同步软件 linux,时间同步(Arch Linux)

    时间同步 在 Arch Linux 中启用时间同步只需运行以下命令: $ sudo timedatectl set-ntp true 这就足够了. 下面的内容可以不看.:) xclock 使用以下命令 ...

  2. linux时间同步命令shell,LINUX时间同步脚本或命令

    Linux系统和windows不同的地方,如果时间和网络时间差距太大的话.可能会导致程序,进程启动不了.下面是学习啦小编收集整理的LINUX时间同步脚本或命令,希望对大家有帮助~~ LINUX时间同步 ...

  3. Linux(deepin) 解决 Anaconda 环境中 matplotlib 中文乱码问题

    matplotlib 库设置中文显示时会出现小方框,为了解决这个问题查阅了很多资料,但是都是直接在系统环境中修改,而我用的是 Anaconda 自建的环境,无法解决问题,因此查了很久之后找到了解决方法 ...

  4. linux命令中service ntpd restart,Linux 时间同步 ntpd

    Linux 时间同步 ntpd 关于Linux下时间同步的解决方案,其实有几种.一是使用rdate命令,同步时间到远程主机.二是运用ntp软件包. 以下主要讲使用ntpd的方式来完成时间的同步. 当然 ...

  5. linux ntp 追赶,Linux 时间同步 ntpd

    Linux 时间同步 ntpd 关于Linux下时间同步的解决方案,其实有几种.一是使用rdate命令,同步时间到远程主机.二是运用ntp软件包. 以下主要讲使用ntpd的方式来完成时间的同步. 当然 ...

  6. linux 添加宋体字符集,Linux下安装中文宋体

    1,#cd /usr/share/fonts/default 2,mkdir -p ./truetype/simsun 3,取得simsun.ttc文件:如果网上下载不到则在windows (c:/w ...

  7. 嵌入式Linux 时间同步 gpsd+chrony

    嵌入式Linux 时间同步 gpsd+chrony 嵌入式Linux系统,外接GPS设备,系统通过NMEA数据和pps进行时间同步,同时将本系统作为时间同步服务器. 一.基本原理 ​ NMEA中获取U ...

  8. linux 打印函数宏,linux内核中的嵌入式汇编宏函数

    在看linux内核代码时,常会遇到诸如:static inline _syscall0(int,fork)这样的函数.经查阅资料,发现该函数是嵌入式汇编宏函数. linux内核提供了7个非常有用的宏定 ...

  9. 解析Linux内核源码中数据同步问题丨C++后端开发丨Linux服务器开发丨Linux内核开发丨驱动开发丨嵌入式开发丨内核操作系统

    剖析Linux内核源码数据同步 1.pdflush机制原理 2.超级块同步/inode同步 3.拥塞及强制回写技术 视频讲解如下,点击观看: 解析Linux内核源码中数据同步问题丨C++后端开发丨Li ...

最新文章

  1. Android开发--Matrix(一)--实现图片的动态放大缩小
  2. 解析几何:第三章 平面上的直线
  3. 分享12306抢票心得-终极秒杀思路篇
  4. 【数学】奶牛编号(jzoj 2932)
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的田径运动会管理系统
  6. oc语言学习之基础知识点介绍(三):类方法、封装以及继承的介绍
  7. 【数论】nefu119 组合素数
  8. html css 博客园,分享几个博客园代码样式的CSS配置(复制黏贴即可)
  9. CSS+DIV 网页重构技术
  10. c语言自定义标识符do,C语言基础知识习题
  11. python教程111-Python多条件计数与求和
  12. 贷中存量客户的价值挖掘与分类实现,试试这一重要的场景模型
  13. udp2raw android,关于udpspeeder和udp2raw部署的一些补充,及使用体会
  14. 移植wxX11到开发板上
  15. C语言编写1000元五种方法存五年的利息
  16. python编程设计高级_Python编程高级技巧| 选择好的名称
  17. 基于Arduino通过并联L298N实现四驱麦克纳姆轮巡迹小车
  18. linux 内核 文件到磁盘影射
  19. UKF VS EKF
  20. freenom域名免翻墙注册

热门文章

  1. java连接u盘_虚拟机VM6.0 LINUX redhat 挂接U盘,访问U盘
  2. sockjs.js:1609 GET http://192.168.1.119:8080/sockjs-node/info?t=1617976777339 net::ERR_CONNECTION_TI
  3. 如何在excel不同的工作表之间使用数据有效性?
  4. linux mysql 系统时间函数吗_Linux 宝库 - Mysql日期和时间函数不求人
  5. Linux日志高频使用命令
  6. React-Native填坑之TextInput value属性
  7. PHP opencv Dlib,Face_Recognition
  8. matlab填充点面,求大神指点绘制空间内散点图的包络面,,,散点程序如下
  9. 【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试
  10. 创建好centos7虚拟机之后连xshell连不上虚机