RTC support on Windows On Arm

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RTC support on Windows On Arm

Jump to solution
687 Views
norihiromichiga
Senior Contributor I

Hello, 

 

We have i.MX8M based custom board where Windows is running (WoA) and we need to add RTC to this board via I2C bus. 

When we checked source code from BSP W21H2-1-5-0, it uses SNVS/RTC inside of i.MX8M.

When we implement external RTC via I2C, could you advise me what work is needed from viewpoint of software development? 

 

Regards,

Norihiro Michigami
AVNET

0 Kudos
Reply
1 Solution
667 Views
Alejandro_Salas
NXP TechSupport
NXP TechSupport

Hello @norihiromichiga 

regarding external RTC, you need the following:

  1. Implement UEFI driver with the minimal requirements: I.e. initialization of RTC hardware, SetTime and GetTime procedures. At least that is what MS claims. Realistically, initialization is the most important part and Set/GetTime is just to make it easier. Initialized HW then can be used in ACPI. As a side but important note: It is good to have UEFI implementation working as it is a good reference when you implement the ACPI functionality, as development (including debugging) in ASL is much more unpleasant experience. Disabling the existing internal RTC driver is advisable.
  2. Implement ACPI Time and Alarm Device (TAD) - i.e. replace the existing code with the one appropriate for the external RTC. Here at least _GCP, _SRT, _GRT procedures are necessary and they (again according to MS) must be with the same functionality as in UEFI. Of course, _SRT and _GRT will include I2C communication.
  3. In Windows, the Windows Time Service needs to be disabled in order to use RTC time, not network time. This is e.g. manually done in the Date and Time Settings, where "Set time automatically" needs to be disabled. Also, you might want to consider how you deal with time zone and DST, as these might be doubled or contradict each other if set in multiple places (e.g. Windows and UEFI).
  4. Final point might be the consideration of time seed to set in UEFI initialization. In NXP internal RTC UEFI implementation, a set time and date is used as a seed, however NTP might be also used to set real Internet time. Of course, this variant adds complexity into UEFI.

 

Also, could you please share why do you want to use external RTC instead of internal one? Understanding the customer helps us provide better service. Thanks!

 

Best regards.

View solution in original post

0 Kudos
Reply
2 Replies
642 Views
norihiromichiga
Senior Contributor I

Hello  Alejandro, 

 

Thank you for your guide to support external RTC with Windows On Arm. 

We want to use EPSON RX8010 which has lower power consumption than internal RTC on i.MX8M. 

 

We also have question about ASL to support this RTC, so I will create another post. 


Thanks,

Norihiro Michigami

 

 

0 Kudos
Reply
668 Views
Alejandro_Salas
NXP TechSupport
NXP TechSupport

Hello @norihiromichiga 

regarding external RTC, you need the following:

  1. Implement UEFI driver with the minimal requirements: I.e. initialization of RTC hardware, SetTime and GetTime procedures. At least that is what MS claims. Realistically, initialization is the most important part and Set/GetTime is just to make it easier. Initialized HW then can be used in ACPI. As a side but important note: It is good to have UEFI implementation working as it is a good reference when you implement the ACPI functionality, as development (including debugging) in ASL is much more unpleasant experience. Disabling the existing internal RTC driver is advisable.
  2. Implement ACPI Time and Alarm Device (TAD) - i.e. replace the existing code with the one appropriate for the external RTC. Here at least _GCP, _SRT, _GRT procedures are necessary and they (again according to MS) must be with the same functionality as in UEFI. Of course, _SRT and _GRT will include I2C communication.
  3. In Windows, the Windows Time Service needs to be disabled in order to use RTC time, not network time. This is e.g. manually done in the Date and Time Settings, where "Set time automatically" needs to be disabled. Also, you might want to consider how you deal with time zone and DST, as these might be doubled or contradict each other if set in multiple places (e.g. Windows and UEFI).
  4. Final point might be the consideration of time seed to set in UEFI initialization. In NXP internal RTC UEFI implementation, a set time and date is used as a seed, however NTP might be also used to set real Internet time. Of course, this variant adds complexity into UEFI.

 

Also, could you please share why do you want to use external RTC instead of internal one? Understanding the customer helps us provide better service. Thanks!

 

Best regards.

0 Kudos
Reply