cb0510ebcf
According to [1], we should disable non-maskable and maskable interrupts while initializing RTC. Otherwise, the RTC may be left in an undefined state (non-functional) if an interrupt occurs. Currently, maskable interrupts are already disabled, but NMI is not. This patch adds helpers APIs to enable/disable non-maskable interrupts (NMI) and changes rtc_init() to disable NMI while initializing the RTC. NMI enable/disable code is legacy-PC specific therefore it was put in driver/legacy_pc/ directory. Regarding the RTC initialization changes, just calling nmi_disable() and nmi_enable is not enough since NMI and RTC share the same IO port. So We should also set the NMI_ENABLE bit while selecting the RTC_INDEX. Additionally, the nmi_disable() call is not strictly required since we set the NMI_ENABLE bit while selecting the RTC_INDEX. However, to make clear hat we are disabling NMI and to improve readability (by matching NMI disable/enable), the nmi_disable() call was purposely used. [1] http://wiki.osdev.org/RTC |
||
---|---|---|
apps | ||
core | ||
cpu | ||
dev | ||
doc | ||
examples | ||
lib/newlib | ||
platform | ||
regression-tests | ||
tools | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
CONTRIBUTING.md | ||
LICENSE | ||
Makefile.include | ||
README-BUILDING.md | ||
README-EXAMPLES.md | ||
README.md |
The Contiki Operating System
Contiki is an open source operating system that runs on tiny low-power microcontrollers and makes it possible to develop applications that make efficient use of the hardware while providing standardized low-power wireless communication for a range of hardware platforms.
Contiki is used in numerous commercial and non-commercial systems, such as city sound monitoring, street lights, networked electrical power meters, industrial monitoring, radiation monitoring, construction site monitoring, alarm systems, remote house monitoring, and so on.
For more information, see the Contiki website: