โดยทั่วไปคุณสามารถตั้งค่านาฬิการะบบโดยใช้ http://linux.die.net/man/1/date . อย่างไรก็ตามมันไม่ได้ให้ความแม่นยำเป็นมิลลิวินาที (มันมีนาโนวินาที แต่มันไม่ทำงานในระบบของฉัน) มีวิธีอื่นในการตั้งค่านาฬิการะบบหรือฉันจะต้องเขียนโปรแกรม C เพื่อทำมัน?
โดยทั่วไปคุณสามารถตั้งค่านาฬิการะบบโดยใช้ http://linux.die.net/man/1/date . อย่างไรก็ตามมันไม่ได้ให้ความแม่นยำเป็นมิลลิวินาที (มันมีนาโนวินาที แต่มันไม่ทำงานในระบบของฉัน) มีวิธีอื่นในการตั้งค่านาฬิการะบบหรือฉันจะต้องเขียนโปรแกรม C เพื่อทำมัน?
คำตอบ:
ถ้า ntpd คือหนักสำหรับคุณลอง OpenNTPD . มันไม่ได้อ้างว่ามีความแม่นยำในระดับไมโครวินาที แต่ทำให้นาฬิกาของเซิร์ฟเวอร์ของฉันมีความสอดคล้องกัน ใช้ sntp ซึ่งมีน้ำหนักเบากว่าเล็กน้อย
ดังที่คนอื่น ๆ บอกไว้ว่านาฬิกาฮาร์ดแวร์ดริฟท์คุณไม่สามารถตั้งค่าและปรับมันได้
คุณควรใช้ ntpd ซึ่งจะทำให้ระบบของคุณถูกต้องโดยการซิงค์กับเซิร์ฟเวอร์เวลาที่ใช้ NTP โปรโตคอลเวลาเครือข่าย.
แม้ว่าระบบฝังตัวที่มีปัญหาไม่รองรับ NTP คุณจะต้องใช้อะไรมากเช่นนั้นหรือรันโปรแกรม C ของคุณบ่อยๆเพื่อตอบโต้การเบี่ยงเบนของนาฬิกาทั้งสอง นอกจากนี้โปรแกรม C ของคุณจะต้องคำนึงถึงเวลาดำเนินการของตัวเองและเวลาแฝงของการเชื่อมต่อระหว่างคอมพิวเตอร์สองเครื่อง (ระบบฝังตัวและเซิร์ฟเวอร์) โดยเฉพาะอย่างยิ่งเนื่องจากความแม่นยำระดับไมโครวินาทีเป็นสิ่งที่คุณต้องการ
อาจเร็วกว่าที่คุณจะค้นหาอินสแตนซ์ ntpd ที่คุณสามารถกำหนดค่าระหว่างสองระบบ เครื่องมือสำหรับสิ่งนี้มีอยู่เสมอในระบบปฏิบัติการเรียลไทม์สมัยใหม่ (สำหรับคำนิยามของ "เสมอ")