diff --git a/docs/software_requirements/system_initialization.sdoc b/docs/software_requirements/system_initialization.sdoc index 1002edf..cd40579 100644 --- a/docs/software_requirements/system_initialization.sdoc +++ b/docs/software_requirements/system_initialization.sdoc @@ -10,3 +10,293 @@ IMPORT_FROM_FILE: software_requirements.sgra TBD [/FREETEXT] + +[SECTION] +TITLE: Interface Requirements + +[FREETEXT] + +TBD + +[/FREETEXT] + +[REQUIREMENT] +UID: ZEP-127 +STATUS: Draft +TYPE: Interface +COMPONENT: System Initialization +TITLE: Build-time Registration for System Initialization Notifications +STATEMENT: >>> +The Zephyr RTOS shall expose an interface to build-time registration for the following system initialization notifications: + +- Pre-CPU Architecture Initialization +- Pre-Kernel Initialization +- Post-Kernel Initialized +- Application Initialization +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-146 + +[REQUIREMENT] +UID: ZEP-143 +STATUS: Draft +TYPE: Interface +COMPONENT: System Initialization +TITLE: Build-time Registration for SMP-Initialized Notification +STATEMENT: >>> +Where the Symmetric Multi-Processing feature is enabled, + +the Zephyr RTOS shall expose an interface to build-time registration for the following system initialization notifications: + +- Symmetric Multi-Processing Initialized. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-146 + +[/SECTION] + +[SECTION] +TITLE: Functional Requirements + +[FREETEXT] + +TBD + +[/FREETEXT] + +[REQUIREMENT] +UID: ZEP-128 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Sustain hardware watchdog inherited from preceding executable +STATEMENT: >>> +Where the Zephyr RTOS inherits an active hardware watchdog that cannot be reconfigured, + +the Zephyr RTOS shall sustain the active hardware watchdog. +<<< + +[REQUIREMENT] +UID: ZEP-129 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Initial CPU stack usage kept within published limits +STATEMENT: >>> +The Zephyr RTOS shall use no more than the published amount of the initial CPU stack. +<<< + +[REQUIREMENT] +UID: ZEP-130 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Preceding executable data availability +STATEMENT: >>> +While the Zephyr RTOS is in any system initialization phase, + +the Zephyr RTOS shall allow read access to the data provided by the preceding executable. +<<< + +[REQUIREMENT] +UID: ZEP-131 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Initialization follows component dependency order +STATEMENT: >>> +The Zephyr RTOS shall initialize the system following the order of component dependencies. +<<< + +[REQUIREMENT] +UID: ZEP-138 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Initialization ends with call to `main(void)` +STATEMENT: >>> +When all of the following has been established, + +the Zephyr RTOS shall call the C function `main(void)` on the system initialization stack: + +- each C++ static object has been initialized; and +- each SMP context has been initialized; and +- each System Initialization notification has been published; and +- each memory access protection has been established. +<<< + +[REQUIREMENT] +UID: ZEP-139 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Return value of `int main(void)` ignored +STATEMENT: >>> +The Zephyr RTOS shall explicitly ignore the return value of the call to `int main(void)`. +<<< + +[REQUIREMENT] +UID: ZEP-140 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Code Coverage Data Dumped Upon Return from `main()` +STATEMENT: >>> +While the Zephyr RTOS shutdown sequence has not begun, + +When the call to `main(void)` returns, + +the Zephyr RTOS shall dump code coverage data. +<<< + +[REQUIREMENT] +UID: ZEP-141 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: System Shutdown Disables Interrupts +STATEMENT: >>> +When the System Shutdown is entered, + +the Zephyr RTOS shall disable all interrupts. +<<< + +[REQUIREMENT] +UID: ZEP-142 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Shutdown ends in empty infinite loop. +STATEMENT: >>> +When the System Shutdown sequence is completed, + +the Zephyr RTOS shall spin in an empty infinite loop. +<<< + +[SECTION] +TITLE: Initialization Notifications + +[FREETEXT] + +TBD + +[/FREETEXT] + +[REQUIREMENT] +UID: ZEP-137 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Initialization Notifications given in Registration Priority Order +STATEMENT: >>> +The Zephyr RTOS shall publish notifications for an event following the notification priority indicated in the event registration. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-145 + +[REQUIREMENT] +UID: ZEP-132 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Pre-CPU Architecture Initialization Notification +STATEMENT: >>> +While the CPU Architecture-specific initialization has not begun, + +When the C language execution environment has been initialized, + +the Zephyr RTOS shall publish a notification to each component registered for this event notification. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-135 + +[REQUIREMENT] +UID: ZEP-133 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Pre-Kernel Initialization Notification +STATEMENT: >>> +While the RTOS Kernel initialization has not begun, + +When the CPU Architecture has been initialized, + +the Zephyr RTOS shall publish a notification to each component registered for the Pre-Kernel Initialization event notification. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-135 + +[REQUIREMENT] +UID: ZEP-134 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Post-Kernel Initialization Notification +STATEMENT: >>> +While the C++ static objects have not been initialized, + +When the RTOS Kernel initialization is complete, + +the Zephyr RTOS shall publish a notification to each component registered for the Post-Kernel Initialization event notification. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-135 + +[REQUIREMENT] +UID: ZEP-135 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Application Initialization Notification +STATEMENT: >>> +While the CPU memory coherence has not been established, + +When all C++ static objects have been initialized, + +the Zephyr RTOS shall publish a notification to each component registered for the Application Initialization event notification. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-145 + +[REQUIREMENT] +UID: ZEP-136 +STATUS: Draft +TYPE: Functional +COMPONENT: System Initialization +TITLE: Symmetric Multi-Processing Initialized Notification +STATEMENT: >>> +Where the Symmetric Multi-Processing feature is enabled, + +Where the Non-Delayed SMP Initialization feature is enabled, + +While the Zephyr RTOS is in the initialization state, + +When the SMP initialization is complete, + +the Zephyr RTOS shall publish a notification to each component registered for the SMP Initialized notification event. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-135 + +[/SECTION] + +[/SECTION] + +[SECTION] +TITLE: Non-Functional Requirements + +[FREETEXT] + +TBD + +[/FREETEXT] + +[/SECTION] diff --git a/docs/system_requirements/index.sdoc b/docs/system_requirements/index.sdoc index dd33b1a..e0a9a9f 100644 --- a/docs/system_requirements/index.sdoc +++ b/docs/system_requirements/index.sdoc @@ -86,6 +86,51 @@ USER_STORY: >>> As a Zephyr RTOS user I want errors and exceptions to handled and react according to my applications requirements (e.g. reach/establish the applications safety state). <<< +[SECTION] +TITLE: System Initialization + +[FREETEXT] +TBD +[/FREETEXT] + +[REQUIREMENT] +UID: ZEP-144 +STATUS: Draft +TYPE: High Level +COMPONENT: System Initialization +TITLE: Extensible System Initialization +STATEMENT: >>> +The Zephyr RTOS initialization sequence shall be extensible. +<<< + +[REQUIREMENT] +UID: ZEP-145 +STATUS: Draft +TYPE: High Level +COMPONENT: System Initialization +TITLE: System Initialization Hooks +STATEMENT: >>> +The Zephyr RTOS shall execute registered initialization hooks at the requested point of the System Initialization sequence. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-144 + +[REQUIREMENT] +UID: ZEP-146 +STATUS: Draft +TYPE: High Level +COMPONENT: System Initialization +TITLE: Build Time Registration of System Initialization Hooks +STATEMENT: >>> +The Zephyr RTOS shall expose an interface for build-time registration of an initialization hook to be executed at a specific point in the system initialization sequence. +<<< +RELATIONS: +- TYPE: Parent + VALUE: ZEP-144 + +[/SECTION] + [REQUIREMENT] UID: ZEP-38 STATUS: Draft