Skip to content

Commit c84d15f

Browse files
mwaskodeb-intel
authored andcommitted
arch: fw: zephyr based kernel description
Add RTOS layer chapter with kernel description that include low level drivers, services, SoC HAL, and overview diagrams. Signed-off-by: Michal Wasko <[email protected]>
1 parent 0d05161 commit c84d15f

File tree

5 files changed

+567
-0
lines changed

5 files changed

+567
-0
lines changed

architectures/firmware/sof-zephyr/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ SOF with Zephyr Architecture
99
overview
1010
app_layer/index
1111
mpp_layer/index
12+
rtos_layer/index
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
@startuml
2+
allowmixing
3+
4+
scale max 1280 width
5+
6+
package "SOF" {
7+
package "Kernel Infrastructure" {
8+
interface "Zephyr System Services" as SS
9+
10+
package "Services" {
11+
component "Memory Manager" as MEMORY_MANAGER
12+
component "Power Manager" as POWER_MANAGER
13+
component "IPC/IDC" as IXC
14+
component "Logging" as LOGGING
15+
component "Debug" as DEBUG
16+
component "Interrupt Handler" as INTERRUPT_HANDLER
17+
}
18+
19+
SS .down. MEMORY_MANAGER
20+
SS .down. POWER_MANAGER
21+
SS .down. IXC
22+
SS .down. LOGGING
23+
SS .down. DEBUG
24+
SS .down. INTERRUPT_HANDLER
25+
}
26+
27+
package "Kernel Extension" {
28+
interface "Extended System Services" as ESS
29+
30+
component "AVS Scheduling" as AVS_Scheduling
31+
32+
package "Extended Services" as EXTENDED_SERVICES {
33+
component "Firmware Manager" as FIRMWARE_MANAGEMENT
34+
component "Pipeline Management" as PIPELINE_MANAGEMENT
35+
component "Async Messaging" as ASYNC_MESSAGING
36+
component "Processing Component Management" as COMPONENT_MANAGEMENT
37+
component "IPC Message Processing" as IPC_MESSAGE_PROCESSING
38+
}
39+
40+
ESS .down. FIRMWARE_MANAGEMENT
41+
ESS .down. PIPELINE_MANAGEMENT
42+
ESS .down. ASYNC_MESSAGING
43+
ESS .down. IPC_MESSAGE_PROCESSING
44+
ESS .down. COMPONENT_MANAGEMENT
45+
46+
AVS_Scheduling -[hidden]down- EXTENDED_SERVICES
47+
}
48+
49+
package "Loadable modules" {
50+
component "WoV" as WOV
51+
52+
WOV .down. SS
53+
WOV .down. ESS
54+
}
55+
}
56+
57+
@enduml
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
@startuml
2+
allowmixing
3+
4+
scale max 1280 width
5+
6+
package "Kernel space" {
7+
8+
package "Media Processing Pipelines - kernel extension" as MPP_KERNEL_EXTENSION {
9+
interface "Extended System Services" as ESS
10+
11+
component "Firmware Manager" as FIRMWARE_MANAGER
12+
13+
package "Communication" as COMMUNICATION {
14+
component "IPC Message Processing" as IPC_MESSAGE_PROCESSING
15+
component "Async Messaging" as ASYNC_MESSAGING
16+
17+
IPC_MESSAGE_PROCESSING -[hidden]right- ASYNC_MESSAGING
18+
}
19+
20+
package "Pipeline/Component Infrastructure" as PIPELINE_COMPONENT_INFRASTRUCTURE {
21+
component "Pipeline Management" as PIPELINE_MANAGEMENT
22+
component "Host/DAI Gateways" as HOST_DAI_GATEWAYS
23+
component "Processing Component Management" as PROCESSING_COMPONENT_MANAGEMENT
24+
25+
PIPELINE_MANAGEMENT -[hidden]right- HOST_DAI_GATEWAYS
26+
HOST_DAI_GATEWAYS -[hidden]right- PROCESSING_COMPONENT_MANAGEMENT
27+
}
28+
29+
package "AVS Scheduling" as AVS_SCHEDULING {
30+
component "Data Processing (DP) Tasks (EDF based)" as DP_TASKS
31+
component "Low Latency (LL) Tasks" as LL_TASKS
32+
33+
DP_TASKS -[hidden]right- LL_TASKS
34+
}
35+
36+
FIRMWARE_MANAGER -[hidden]right- PIPELINE_COMPONENT_INFRASTRUCTURE
37+
FIRMWARE_MANAGER -[hidden]down- COMMUNICATION
38+
COMMUNICATION -[hidden]right- AVS_SCHEDULING
39+
40+
ESS -[hidden]down- FIRMWARE_MANAGER
41+
ESS -[hidden]down- PIPELINE_COMPONENT_INFRASTRUCTURE
42+
}
43+
44+
package "Zephyr" as Zephyr_RTOS {
45+
interface "Zephyr System Services" as SS
46+
47+
package "Schedulers" as SCHEDULERS {
48+
component "RTOS Scheduling" as RTOS_SCHEDULER
49+
}
50+
51+
package "Services" as SERVICES {
52+
component "Memory Manager" as MEMORY_MANAGER
53+
component "Power Manager" as POWER_MANAGER
54+
component "IPC/IDC" as IXC
55+
component "Logging" as LOGGING
56+
component "Debug" as DEBUG
57+
component "Timer Manager" as TIMER_MANAGER
58+
component "Interrupt Handler" as INTERRUPT_HANDLER
59+
60+
MEMORY_MANAGER -[hidden]right- POWER_MANAGER
61+
POWER_MANAGER -[hidden]right- IXC
62+
IXC -[hidden]down- LOGGING
63+
LOGGING -[hidden]right- TIMER_MANAGER
64+
TIMER_MANAGER -[hidden]right- INTERRUPT_HANDLER
65+
}
66+
67+
package "SoC HAL" as SOC {
68+
component "OEM SoC 1" as SOC_1
69+
component "OEM SoC 2" as SOC_2
70+
component "Other SoCs" as OTHER_SOCS
71+
72+
SOC_1 -[hidden]right- SOC_2
73+
SOC_2 -[hidden]right- OTHER_SOCS
74+
}
75+
76+
package "Drivers" as DRIVERS {
77+
package "Common Drivers" as COMMON_DRIVERS {
78+
component "GPDMA" as GPDMA
79+
component "Timer" as TIMER
80+
component "SHA-384" as SHA384
81+
component "Watchdog" as WATCHDOG
82+
component "IPC" as IPC
83+
component "IDC" as IDC
84+
}
85+
86+
package "Audio Drivers" as AUDIO_DRIVERS{
87+
component "DMIC" as DMIC
88+
component "I2S" as I2S
89+
component "SDW" as SDW
90+
component "HDA" as HDA
91+
92+
DMIC -[hidden]right- I2S
93+
I2S -[hidden]right- SDW
94+
SDW -[hidden]right- HDA
95+
}
96+
97+
package "Sensing Drivers" as SENSING_DRIVERS {
98+
component "I2C" as I2C
99+
component "GPIO" as GPIO
100+
component "I3C" as I3C
101+
component "SPI" as SPI
102+
component "UART" as UART
103+
104+
I2C -[hidden]right- GPIO
105+
GPIO -[hidden]right- I3C
106+
I3C -[hidden]right- SPI
107+
SPI -[hidden]right- UART
108+
}
109+
}
110+
111+
component "XTHAL" as XTHAL
112+
113+
SS -[hidden]down- SCHEDULERS
114+
SS -[hidden]down- SERVICES
115+
SCHEDULERS -[hidden]right- SERVICES
116+
SERVICES -[hidden]right- SOC
117+
SERVICES --[hidden]down-- DRIVERS
118+
DRIVERS -[hidden]down- XTHAL
119+
}
120+
121+
MPP_KERNEL_EXTENSION --[hidden]down-- Zephyr_RTOS
122+
}
123+
124+
@enduml
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.. _rtos_layer:
2+
3+
RTOS Layer Infrastructure
4+
#########################
5+
6+
The RTOS layer is based on Zephyr that provide generic and scalable open source
7+
solution with options for SW partitioning of product subsystems to run audio
8+
workloads.
9+
10+
.. toctree::
11+
:maxdepth: 1
12+
13+
zephyr_kernel_overview

0 commit comments

Comments
 (0)