【linux】ARM開發板上設定RTC時間,斷電重啟後,設定失效的原因分析
問題描述
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
相關推薦
【linux】ARM開發板上設定RTC時間,斷電重啟後,設定失效的原因分析
問題描述 linux中使用date設定時間後用hwclock -w同步到RTC,斷電重啟後,有時會失效 原因分析 儲存時間戳 1、使用命令關機(halt)會呼叫rc0.d中的指令碼; 2、使用命令重啟(reboot)會呼叫rc6.d中的指令碼;
【嵌入式Linux】ARM開發板通過NFS掛載Linux主機實現檔案共享
一般在Linux主機上arm-linux-gcc編譯程式,然後將該生成的可執行檔案傳送給ARM開發板,ARM開發板再執行該檔案。 (主機Linux系統)--->(ARM開發板Linux系統) 傳送檔案的過程可以採用NFS,FTP等多種方法 採用NFS實現遠端掛載,ARM
linux-arm筆記2:如何在ubuntu上安裝ftp,並且用ftp向arm開發板上傳檔案
[email protected]:~$ ftp 192.168.1.109 //arm開發板ip Connected to 192.168.1.109. 220 FriendlyARM FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) read
arm開發板上找不到/dev/i2c-*設備
linu arm The iic oar fig com 在一起 直接 最近在調試arm與外設iic通訊是,想來個投機取巧,先不寫單獨的驅動,直接通過iic bus設備是否可以連接到外設,然後發現在板子上找不到“/dev/i2c-n”的設備,標準的系統應該都是有的。 回去看
【Linux】在Windows7主機上安裝CentOS雙系統
因個人辦公電腦裝的盜版Win7總是藍屏,影響工作,加之看到 WPS Linux版也已釋出,嘗試安裝 CentOS 作為辦公系統。大學期間學過 Linux 語法,也自己玩過 Ubuntu,倒都也熟悉。 之所以選擇CentOS 是因為 Cen
【 Linux 】單臺伺服器上併發TCP連線數(轉)
單臺伺服器上併發TCP連線數 問題:一臺伺服器到底能夠支援多少TCP併發連線呢?1. 檔案描述符限制: 對於伺服器來說,每一個TCP連線都要佔用一個檔案描述符,一旦檔案描述符使用完,新的連線到來返回給我們的錯誤是"Socket/File:
【筆記】關於開發板、主機windows和虛擬機器ubuntu之間的ping
提前做好準備: 1.我們先將各個IP確定好: 主機windows IP為: 192.168.1.20 開發板執行uboot或linux IP為: 192.168.1.10 虛擬機器ubuntu IP為: 192.168.1.141 2. 將主機windows
在ARM開發板上搭建sshd環境(嘔血歷程)
安裝按照這個部落格:https://blog.csdn.net/u013711616/article/details/53044918 zlib-1.2.8.tar.gz openssl-0.9.8d.tar.gz openssh-5.6p1.tar.gz 資料已打包,見
ARM開發板上交叉編譯usb轉串列埠驅動
問題 這兩天為了做gps和arm的通訊,不得不搗鼓這個東東。開發板是創維特jx2410,usb轉串列埠線的晶片是pl2303。還好是這個晶片,讓我沒費多少力氣,就達成了目的。因為linux對它已經支援了,我們只要編譯、載入它的驅動就ok了。 驅動原始
linux-2.6.32在mini2440開發板上移植(10)之觸控式螢幕工作原理以及驅動程式詳細分析
第二部分輸入核心的作用如下: (1) 呼叫input_register_device() used to 新增裝置,呼叫input_unregister_device() 除去裝置。(下面會結合觸控式螢幕驅動講述) (2) 在/PROC 下產生相應的裝置資訊,下面這個例子即是: /proc/bus/input
arm開發板上arecord 錄音出現噪聲的解決方法
自己遇到的問題是在開發板上進行錄音,指令是:arecord -t raw -f S16_LE sh.pcm. 錄取到的聲音有雜音,自己通過alsamixer 命令來進行設定聲音獲取的引數,自己通過F4命令進入captrue來設定。 然後,F3命令,把有關Line的資料全
【Android】android開發之splash閃屏頁的四種實現方式,啟動頁的實現教程。
作者:程式設計師小冰,GitHub主頁:https://github.com/QQ986945193 首先給大家看一下今天實現的效果圖(其他三種都差不太多底下詳細介紹): 這個啟動頁實現的方法是四種,兩種是利用handler,其它兩種是利用了動畫的方式。 具體給大家貼一下
Ubuntu 12.04 每次重啟後,/etc/resolv.conf裡面設定的nameserver就被清空
# cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)# DO NOT EDIT THIS FILE BY HAND
IDEA中設定自動build-改動程式碼,不用重啟工程,重新整理頁面即可
1.CTRL + SHIFT + A --> 查詢Registry --> 找到並勾選compiler.automake.allow.when.app.running 2. FILE - SETTING - Build - Compiler - bulid pr
設定網路對映後,電腦重啟後自動重連
1. 利用批處理檔案來自動對映 ① 首先製作自動對映網路驅動器批處理檔案; ② 利用Net Use命令,其基本格式如下: NET USE [devicename | *] [\\computername\sharename[\volume] [p
伺服器重啟後,MySql連不上?!
今天發現數據庫某表崩潰了(解決方法:https://blog.csdn.net/qq_29729735/article/details/76683433),正想遠端連線一下伺服器,結果發現連線不上:
jenkins,Tomcat重啟指令碼,設定jvm引數之後遇到了一個坑。
如下是我的重啟指令碼 #/bin/sh source /etc/profile sh /opt/kms_jsoncach.sh pid=`ps -ef | grep "APPmanager" | grep -v 'grep\|tail\|more\|le
【轉】開發板上修改時間方法
之前使用開發板時發現每次開機後,系統的時間都恢復到初始狀態1970年。 一、 先說一下時鐘的概念,時鐘包括硬體時鐘和系統時鐘,系統時鐘就是linux系統顯示的時間,用命令date可以顯示當前系統時間;硬體時鐘就是硬體自身的 時間了。它們兩者沒有關係的,但是可以通過命令設定系統時鐘和硬體設定,讓它們同步。在l
【迅為推薦】適合新手學習的arm開發板-iTOP-4412開發板
免費部分視訊試看地址:(PS:迅為提供高清版下載地址)【視訊教程】iTOP-4412開發板之學習方法--致初學者 http://v.youku.com/v_show/id_XNzQ5MDA4NzM2.html【視訊教程】三星Exynos 4412處理器開發要點 htt
【Android 系統開發】 編譯 Android檔案系統 u-boot 核心 並燒寫到 OK-6410A 開發板上
本篇文章中用到的工具原始碼下載 : -- 光碟所含內容 : Android 引導 u-boot 原始碼, Android 核心 原始碼, Android 系統原始碼, 交叉編譯工具鏈;各項操作說明 : -- 編譯環境 : 編譯原始碼 (u-boot, 核心, Android