|
1 | | -K3 Resource Partitioning Tool |
| 1 | +K3 resource partitioning tool |
2 | 2 | ============================= |
3 | 3 |
|
4 | | -The Keystone3 Resource Partitioning tool partitions various system |
5 | | -resources among different software components in a multi-core SoC. |
6 | | -Texas Instruments developed this tool based on their SysConfig tool. |
| 4 | +A multi-core System-on-Chip (SoC) has many software components. |
| 5 | +This tool divides system resources among them. |
7 | 6 |
|
8 | | -System integrators typically use this tool to assign **resources** |
9 | | -to different software parts. These resources include Direct Memory |
10 | | -Access (DMA) channels, rings, proxies, interrupts, and more. |
| 7 | +Use this tool to: |
11 | 8 |
|
12 | | -The tool also supports Quality of Service (QoS) and firewall |
13 | | -settings to help partition **peripheral devices** for different |
14 | | -software components. |
15 | | - |
16 | | -Getting started |
17 | | ---------------- |
18 | | - |
19 | | -The K3 Resource Partitioning Tool is available on the TI Developer Zone |
20 | | -as K3 Resource Configuration. You can use the tool online and locally |
21 | | -within the SDK. |
22 | | - |
23 | | -Accessing the tool online |
24 | | -^^^^^^^^^^^^^^^^^^^^^^^^^ |
25 | | - |
26 | | -.. note:: |
27 | | - |
28 | | - We recommend using this method. |
29 | | - |
30 | | -To access the tool, follow these steps: |
31 | | - |
32 | | -1. **Open the Tool**: Go to https://dev.ti.com/sysconfig/?product=K3-RESOURCE-CONFIGURATION |
33 | | - to open the tool. Log in to your TI account if needed. |
34 | | - |
35 | | - .. figure:: /images/k3_resource_config_startpage.png |
36 | | - :scale: 75% |
37 | | - :align: center |
38 | | - |
39 | | -2. **Select Your Device**: Choose your device from the list. |
40 | | - |
41 | | - .. figure:: /images/k3_resource_config_device_selection.png |
42 | | - :scale: 75% |
43 | | - :align: center |
44 | | - |
45 | | -3. **Start Configuring Resources**: Click ``Latest Baseline Design`` to set |
46 | | - up resources using the latest baseline for your device. Or pick a |
47 | | - Processor SDK version-specific Baseline Design to match a specific SDK |
48 | | - release. |
49 | | - |
50 | | - .. figure:: /images/k3_resource_config_device_selected.png |
51 | | - :scale: 75% |
52 | | - :align: center |
53 | | - |
54 | | - .. figure:: /images/am62px_respart_tool_main.png |
55 | | - :scale: 70% |
56 | | - :align: center |
57 | | - |
58 | | -Accessing the tool locally |
59 | | -^^^^^^^^^^^^^^^^^^^^^^^^^^ |
60 | | - |
61 | | -To use the tool locally, follow these instructions: |
62 | | - |
63 | | -1. **Download and Install SysConfig**: Download and install the latest |
64 | | - SysConfig tool from the `SysConfig release download link |
65 | | - <https://www.ti.com/tool/download/SYSCONFIG>`__ |
66 | | -2. **Locate the Tool**: Find the **k3-respart-tool** folder in your SDK. |
67 | | -3. **Open SysConfig GUI**: Start the SysConfig. In the GUI, select the |
68 | | - **software product** by browsing to your **k3-respart-tool** location. |
69 | | - |
70 | | - .. figure:: /images/k3_resource_config_product_selection_local.png |
71 | | - :scale: 75% |
72 | | - :align: center |
73 | | - |
74 | | - .. figure:: /images/k3_resource_config_product_selected_local.png |
75 | | - :scale: 75% |
76 | | - :align: center |
77 | | - |
78 | | -4. **Select Your Device**: Pick your target device from the list. |
79 | | - |
80 | | - .. figure:: /images/k3_resource_config_device_selection_local.png |
81 | | - :scale: 75% |
82 | | - :align: center |
83 | | - |
84 | | -5. **Start Configuring Resources**: Click ``Latest Baseline Design`` to set |
85 | | - up resources using the latest baseline for your device. Or pick a |
86 | | - Processor SDK version-specific Baseline Design to match a specific SDK |
87 | | - release. |
88 | | - |
89 | | - .. figure:: /images/k3_resource_config_device_selected_local.png |
90 | | - :scale: 75% |
91 | | - :align: center |
92 | | - |
93 | | - .. figure:: /images/am62px_respart_tool_main_local.png |
94 | | - :scale: 70% |
95 | | - :align: center |
96 | | - |
97 | | -Usage |
98 | | ------ |
99 | | - |
100 | | -After the design loads, you can use the Resource Partitioning, Bandwidth (BW) |
101 | | -Limiter, and Quality of Service (QoS) Configuration modules. |
102 | | - |
103 | | -Resource partitioning |
104 | | -^^^^^^^^^^^^^^^^^^^^^ |
105 | | - |
106 | | -The resource partitioning module divides resources among different hosts in |
107 | | -the system. A **host** is a software part that communicates with **System |
108 | | -Firmware** (SYSFW) using its own context. The module create a **Resource |
109 | | -Management Board Configuration** file, which defines the resource partitioning. |
110 | | -The boot loader passes this file to System Firmware during boot. |
111 | | - |
112 | | -In the left pane of GUI, you see the available hosts and what resources each |
113 | | -one has. There are different resource **groups**, where you set the required |
114 | | -**count** for each resource. The tool assigns resources based on the counts |
115 | | -you set for all hosts. Besides allocating resources, you can configure |
116 | | -different **host capabilities**. Click the **?** next to a host's name to read |
117 | | -the detailed documentation for that host module. |
118 | | - |
119 | | -.. _resource_totals: |
120 | | - |
121 | | -Review resource allocation |
122 | | -^^^^^^^^^^^^^^^^^^^^^^^^^^ |
123 | | - |
124 | | -You can check the current resource split at any time. Select the **Resource |
125 | | -Allocation Table** from the three dots at the top right of the tool. This |
126 | | -section shows an HTML table of hosts and their allocated resources. |
127 | | -Each row shows a certain resource. Each column shows the resource ranges |
128 | | -assigned to a certain host. |
129 | | - |
130 | | -Resource totals |
131 | | -^^^^^^^^^^^^^^^ |
132 | | - |
133 | | -The last column, labeled ``ALL``, represents the total number of |
134 | | -resources available to all hosts. This column is for the ``HOST_ID_ALL`` |
135 | | -value. |
136 | | - |
137 | | -Certain hardware have some resources, such as ``GPIO interrupts`` and ``Virtual |
138 | | -interrupts``, tied to them. For example, ``DMASS Interrupt Aggregator |
139 | | -Virtual Interrupts`` connect directly to specific cores, so those interrupts |
140 | | -cannot go to just any core. The tool only assign resources in ways that match |
141 | | -the hardware. |
142 | | - |
143 | | -The tool does not adjust the ``ALL`` column for host-specific resources. |
144 | | - |
145 | | -Bandwidth limiters configuration |
146 | | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
147 | | - |
148 | | -This BW limiters configuration module helps you set up rate limiters for the SoC. |
149 | | -Each rate limiter connects to a source VBUSM interface. You can set limits for |
150 | | -reads, writes, and outstanding transactions. You can set these limits separately. |
151 | | - |
152 | | -In the GUI, pick a device and turn on bandwidth or transaction limits as needed. |
153 | | -The tool creates an address-value pair data structure in the **<soc>_qos_uboot.c** |
154 | | -file. Software (usually the boot loader) uses this file to set the limits in the |
155 | | -correct registers. |
156 | | - |
157 | | -Quality of service configuration |
158 | | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
159 | | - |
160 | | -This QoS configuration module helps you set up Central Bus Architecture Subsystem |
161 | | -(CBASS) QoS endpoints. QoS configuration includes two types of parameters. QoS |
162 | | -settings include parameters that tune DMA performance in the interconnect and set |
163 | | -up Input/Output Memory Management Unit (IOMMU) paths for masters. Each device can |
164 | | -use different Channel IDs for DMA requests. You can set a unique QoS for each channel. |
165 | | - |
166 | | -In the GUI, pick a device, endpoints, and channels to set their QoS. You can add |
167 | | -more than one QoS module for the same device provided that endpoints and channels |
168 | | -do not overlap. The tool creates a simple address-value pair data structure in the |
169 | | -**<soc>_qos_uboot.c** file. Software (such as the boot loader) uses this file to set |
170 | | -all QoS settings. |
171 | | - |
172 | | -Firewall configuration |
173 | | -^^^^^^^^^^^^^^^^^^^^^^ |
174 | | - |
175 | | -.. note:: |
176 | | - |
177 | | - Currently u-boot cannot use the generated firewall files directly. |
178 | | - The firewall support in u-boot is not added officially. |
179 | | - |
180 | | -The Firewall configuration module creates the data you need to control firewalls. |
181 | | -Firewalls control a host's access to a peripheral. Each firewall has a region. |
182 | | -Pick a firewall and set the address range for the rules. Each region can have up |
183 | | -to three permission slots. Each slot takes a name, Priv ID, and permissions. Many |
184 | | -CPUs can share a Priv ID, so one slot can cover several CPUs. These slots decide |
185 | | -what each CPU can do based on security level, privilege, and transaction type. For |
186 | | -example, allow secure reads and writes but block insecure writes from A72 to |
187 | | -Multimedia Card (MMC). |
188 | | - |
189 | | -By default, the tool sets the start and end addresses in the region, but you can |
190 | | -set a custom region if needed. You can also pick a host's name and the tool fills |
191 | | -in the Priv ID. With this data, the tool creates an array of Texas Instruments |
192 | | -System Controller Interface (TISCI) message data to send to SYSFW for firewall |
193 | | -setup. |
194 | | - |
195 | | -Generating output files |
196 | | -^^^^^^^^^^^^^^^^^^^^^^^ |
197 | | - |
198 | | -The tool creates different files with RM board config data, QoS settings, and |
199 | | -firewall settings. Here is how you use these files: |
200 | | - |
201 | | -.. list-table:: |
202 | | - :header-rows: 1 |
203 | | - :widths: 20 15 30 35 |
204 | | - |
205 | | - * - Filename |
206 | | - - Used by |
207 | | - - Output destination |
208 | | - - Comments |
209 | | - * - :file:`rm-cfg.c` |
210 | | - - k3-image-gen |
211 | | - - :file:`soc/<soc>/<profile>/` |
212 | | - - e.g. - :file:`k3-image-gen/soc/j721e/evm/rm-cfg.c` |
213 | | - * - :file:`sciclient_defaultBoardcfg_rm.c` |
214 | | - - PDK sciclient |
215 | | - - :file:`packages/ti/drv/sciclient/soc/V<X>/` |
216 | | - - e.g. - :file:`pdk/packages/ti/drv/sciclient/soc/V1/sciclient_defaultBoardcfg_rm.c` |
217 | | - * - :file:`sciclient_defaultBoardcfg_rm_mcusdk.c` |
218 | | - - MCU+ SDK sciclient |
219 | | - - :file:`source/drivers/sciclient/sciclient_default_boardcfg/am62x/` |
220 | | - - e.g. - :file:`mcu_plus_sdk/source/drivers/sciclient/sciclient_default_boardcfg/am62x/sciclient_defaultBoardcfg_rm.c` (Drop :file:`_mcusdk` from filename) |
221 | | - * - :file:`sciclient_defaultBoardcfg_tifs_rm.c` |
222 | | - - PDK sciclient |
223 | | - - :file:`packages/ti/drv/sciclient/soc/V<X>/` |
224 | | - - e.g. - :file:`pdk/packages/ti/drv/sciclient/soc/V2/sciclient_defaultBoardcfg_tifs_rm.c` |
225 | | - * - :file:`tifs-rm-cfg.c` |
226 | | - - k3-image-gen |
227 | | - - :file:`soc/<soc>/<profile>/` |
228 | | - - e.g. - :file:`k3-image-gen/soc/j721e/evm/tifs-rm-cfg.c` |
229 | | - * - :file:`<soc>_qos.h` |
230 | | - - U-boot |
231 | | - - :file:`ti-u-boot/arch/arm/mach-k3/r5/<soc>/<soc>_qos.h` |
232 | | - - e.g. - :file:`ti-u-boot/arch/arm/mach-k3/r5/am62ax/am62a_qos.h` |
233 | | - * - :file:`<soc>_qos_uboot.c` |
234 | | - - U-boot |
235 | | - - :file:`ti-u-boot/arch/arm/mach-k3/r5/<soc>/` |
236 | | - - e.g. - :file:`ti-u-boot/arch/arm/mach-k3/r5/am62ax/am62a_qos_uboot.c` |
237 | | - * - :file:`<soc>_qos_data.c` |
238 | | - - MCU+ SDK / PDK QoS |
239 | | - - :file:`source/drivers/qos/v0/soc/<soc>/qos_data.h` and :file:`packages/ti/boot/sbl/soc/k3/<soc>_qos_data.c` |
240 | | - - e.g. - :file:`source/drivers/qos/v0/soc/am62ax/qos_data.h` and :file:`packages/ti/boot/sbl/soc/k3/j721s2_qos_data.c` |
241 | | - * - :file:`<soc>-firewall-config.c` |
242 | | - - U-boot |
243 | | - - Not yet supported |
244 | | - - |
245 | | - * - :file:`<soc>-firewall-config.c` |
246 | | - - SBL |
247 | | - - Not yet supported |
248 | | - - |
249 | | - * - :file:`sciclient_defaultBoardcfg.c` |
250 | | - - PDK sciclient |
251 | | - - :file:`packages/ti/drv/sciclient/soc/V<X>/` |
252 | | - - e.g. - :file:`pdk/packages/ti/drv/sciclient/soc/V1/sciclient_defaultBoardcfg.c` |
253 | | - * - :file:`sysfw_img_cfg.h` |
254 | | - - k3-image-gen |
255 | | - - :file:`soc/<soc>/<profile>/` |
256 | | - - e.g. - :file:`k3-image-gen/soc/j721e/evm/sysfw_img_cfg.h` |
257 | | - * - :file:`rm-cfg.yaml` |
258 | | - - U-boot |
259 | | - - :file:`ti-u-boot/board/ti/<soc>/` |
260 | | - - e.g. - :file:`ti-u-boot/board/ti/am62ax/rm-cfg.yaml` |
261 | | - * - :file:`tifs-rm-cfg.yaml` |
262 | | - - U-boot |
263 | | - - :file:`ti-u-boot/board/ti/<soc>/` |
264 | | - - e.g. - :file:`ti-u-boot/board/ti/am62ax/tifs-rm-cfg.yaml` |
265 | | - |
266 | | -Troubleshooting |
267 | | ---------------- |
268 | | - |
269 | | -- If you see **No product with name "K3-Respart-Tool" and version 1.0.0 found**, |
270 | | - you likely missed the step to select the **software product**. |
271 | | -- If you get error ``XYZ`` **is not generated when configuration errors exist**, |
272 | | - your resource split has errors. Adjust the allocation to fix them, then generate |
273 | | - the output files. |
274 | | -- If you remove resources from a core and the ``ALL`` column in the "Resource |
275 | | - Allocation Table" does not change, those resources belong only to that core. |
276 | | - :ref:`See "Resource Totals" under "Review Resource Allocation" for more details |
277 | | - <resource_totals>`. |
| 9 | +* Assign Direct Memory Access (DMA) channels |
| 10 | +* Assign rings, proxies, and interrupts |
| 11 | +* Set Quality of Service (QoS) for devices |
278 | 12 |
|
| 13 | +For more information, see the |
| 14 | +`K3 Resource Partitioning Tool user guide <https://dev.ti.com/tirex/content/tirex-product-tree/processors-utilities_1_1_0/k3_resource_configuration_users_guide.html>`__. |
0 commit comments