[PATCH v2 0/2] rtc: provide an emulated RTC

Pablo Sebastián Greco pgreco at centosproject.org
Fri Oct 30 02:44:38 CET 2020


On 29/10/20 08:36, Heinrich Schuchardt wrote:
> On 10/29/20 11:27 AM, Pablo Sebastián Greco wrote:
>> Can I suggest as a future enhancement adding an option to also be able
>> to read U_BOOT_EPOCH from env? Userspace tools could write the time on
>> shutdown (like fakehwclock).
> Thank you for your suggestion.
>
> What does fakehwclock relate to?
fake-hwclock is a userspace linux tool that saves the current time in a 
file, in case ntp is not available at reboot time, so the clock will not 
be perfect, but it may be "good enough"
>
>> Ok, adding `date xxxxx` to the start script could work too, but it seems
>> messy.
> If you have network, you should use CONFIG_CMD_SNTP=Y and
> CONFIG_BOOTP_NTPSERVER=y and add "setenv autoload no && dhcp && sntp" to
> your script.
>
> This is why I submitted the following patch:
>
> net: sntp: remove CONFIG_TIMESTAMP constraint
> https://lists.denx.de/pipermail/u-boot/2020-October/430445.html
>
> If we want to follow you idea, we would have a probe() and a remove()
> method to the driver for managing the environment variable.
>
> One problem with saving the time on shutdown to the environment is that
> save_env() always saves the complete environment and not a single
> variable. Saving the complete environment may save changes that you do
> not want to persist.
>
> So a complete solution will require:
>
> * Create a function to save a single environment variable selectively.
>    This will be the part with the biggest effort.
That would be nice to have, even if not related to this.
> * Implement the probe() and remove() methods
> * Add a Kconfig option to enable the usage of the environment variable.
>
> But is this worth the effort if you have SNTP?
If SNTP is available, I agree that it makes no sense. but may not always 
be the case (as noted before), and some programs don't react too kindly 
to the clock jumping ahead several years during boot, so it would be 
nice to have a "good enough" clock before the kernel takes over,
Also, as was mentioned in other parts of the thread, some devices may be 
too close to the size limit, but I'd happily exchange network in uboot 
for this driver.
I know the idea is a bit wacky, but thought it could be useful ;)
>
> Best regards
>
> Heinrich
>
>> On 25/10/20 04:13, Heinrich Schuchardt wrote:
>>> On a board without hardware clock this software real time clock can be
>>> used. The build time is used to initialize the RTC. So you will have
>>> to adjust the time either manually using the 'date' command  or use
>>> the 'sntp' to update the RTC with the time from a network time server.
>>> See CONFIG_CMD_SNTP and CONFIG_BOOTP_NTPSERVER. The RTC time is
>>> advanced according to CPU ticks.
>>>
>>> v2:
>>> 	more elaborate Kconfig message
>>> 	adjust device name properties
>>> 	use build time as initial time
>>>
>>> Heinrich Schuchardt (2):
>>>    Makefile: provide constant with seconds since epoch
>>>    rtc: provide an emulated RTC
>>>
>>>   MAINTAINERS            |  1 +
>>>   Makefile               |  2 ++
>>>   drivers/rtc/Kconfig    | 11 ++++++
>>>   drivers/rtc/Makefile   |  1 +
>>>   drivers/rtc/emul_rtc.c | 80 ++++++++++++++++++++++++++++++++++++++++++
>>>   5 files changed, 95 insertions(+)
>>>   create mode 100644 drivers/rtc/emul_rtc.c
>>>
>>> --
>>> 2.28.0
>>>
Pablo


More information about the U-Boot mailing list