-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Zephyr system init functional requirements #29
Changes from all commits
df72fa2
de16130
587615b
1fdd1f5
81f537b
a3d7827
a2bbb6f
03cd030
3e247aa
2be5cc7
2d679f5
2df6ede
a4e443d
e740a17
3b933f0
34c9ec4
d3e3881
8ee280b
25707e3
98fdb1d
93ebcc8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 | ||
<<< | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Enhancement Request: This needs a notification that System Initialization is compete. This notification needs to be given immediately before the call to This event is needed by components that change behavior upon initialization complete (e.g., user interfaces, allowing communication). Providing this through the System Initialization component allows independence from the implementation of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Enhancement Request: There needs to be a symmetric set of events for system shutdown. The shutdown event registration is needed to enable a bootloader to register a handler for handing off execution to the loaded image while still allowing a controlled, clean shutdown of the RTOS. |
||
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. | ||
<<< | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This STATEMENT is an enhancement request: This requirement is needed to handle conditions that will likely occur with some existing SOCs. This also needs another requirement to start a HW watchdog if one is not active. |
||
|
||
[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. | ||
<<< | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This STATEMENT is an enhancement request: This requirement is desired to allow users to determine the size of the initial stack provided by the bootloader. This also needs a related requirement for Zephyr Project to specify, per CPU architecture, the amount initial stack space consumed before transitioning to an internally-allocated 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. | ||
<<< | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This STATEMENT is an enhancement request. |
||
|
||
[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. | ||
<<< | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Referring specifically to the C function
|
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Which sdoc fragment should hold the requirements for the default implementation of |
||
[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. | ||
<<< | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does this STATEMENT reflect the current implementation? |
||
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] |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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. | ||
<<< | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This STATEMENT is an enhancement request. |
||
|
||
[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 | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing the Init level INIT_LEVEL_EARLY.