江苏做网站找谁,行政还要负责网站建设新媒体吗,seo自动刷外链工具,中安消防安全网站建设如果说让我做上层软件的工作#xff0c;我做起来可以得心应手#xff0c;但是让我做平台方面的工作(系统问题解决、驱动编写、软件移植等工作)#xff0c;确实不熟悉。所以很多问题都是摸着石头过河#xff0c;没有经验。许多问题在有经验的朋友那里是小菜一碟#xff0c;…如果说让我做上层软件的工作我做起来可以得心应手但是让我做平台方面的工作(系统问题解决、驱动编写、软件移植等工作)确实不熟悉。所以很多问题都是摸着石头过河没有经验。许多问题在有经验的朋友那里是小菜一碟而放在我面前总是如遇大山。不免被嘲笑为“弱鸡”最近我在做基于 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问题解决