You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(Linux): Update boot time guide for 11.0 release
- Add the section to profile boot time inside the kernel using GPIO
- Fix random whitespaces
- Update boot time numbers and other sections for AM62P 11.0
Signed-off-by: Aashvij Shenai <[email protected]>
Signed-off-by: Paresh Bhagat <[email protected]>
@@ -82,7 +82,7 @@ This section details the Out-Of-Box boot sequence:
82
82
83
83
**TF-A** (Trusted Firmware - Arm) provides a reference trusted code base for the Armv8 architecture. It implements various ARM interface standards. The binary is typically included in the bootloader binary. It starts in the early stages of U-Boot. Without ATF, the kernel cannot setup the services which need to be executed in the Secure World environment
84
84
85
-
**OPTEE** (Trusted Execution Environment) is designed as a companion to a non-secure Linux kernel running on Arm; Cortex-A cores using the TrustZone technology.
85
+
**OPTEE** (Trusted Execution Environment) is designed as a companion to a non-secure Linux kernel running on Arm; Cortex-A cores using the TrustZone technology.
86
86
87
87
**U-boot** proper is the second stage bootloader. It offers a flexible way to load and start the Linux Kernel and provides a minimal set of tools to interact with the board’s hardware via a command line interface. It runs from DRAM, initializing additional hardware devices (network, USB, DSI/CSI, etc.). Then, it loads and prepares the device tree (FDT). The main task handled by the U-Boot is the loading and starting of the kernel image itself.
88
88
@@ -188,8 +188,8 @@ Secondary Boot Loader (SBL)
188
188
189
189
- Removing unnecessary prints
190
190
191
-
The default examples contain a large number of prints that impact boot time and need to be removed.
192
-
191
+
The default examples contain a large number of prints that impact boot time and need to be removed.
192
+
193
193
- Navigate to the main.c of your example and remove calls to the following functions
194
194
- ``Bootloader_profileAddCore``
195
195
- ``Bootloader_profileAddProfilePoint``
@@ -221,22 +221,6 @@ Secondary Boot Loader (SBL)
221
221
.. Image:: /images/SBL_enable_dma.png
222
222
:align:center
223
223
224
-
.. ifconfig:: CONFIG_part_variant in ('AM62PX')
225
-
226
-
- Enable High Capacity(HC) channel DMA
227
-
228
-
This upgrades the DMA channel's FIFO depth from 128 to 192 and has been shown to have more than 200% increase in DMA transfer performance. In AM62P, the first four channels are high capacity. By default, these channels have been assigned to the A53 core by order of core priority which A53 has the first 18 channels, DM R5 has the next 6 and lastly, MCU R5 has 2.
229
-
230
-
- :download:`This patch </files/AM62P-Change-DMA-allocation.patch>` removes the DMA allocation of A53 and MCU cores to showcase the use of High capacity channels
231
-
232
-
.. note::
233
-
234
-
It is not possible to assign the first 2 channels to DM R5, the next 2 to A53, next 4 again to DM R5 and so on.
235
-
236
-
- Rebuild the boardcfg : `BOARCFG_GEN <https://software-dl.ti.com/mcu-plus-sdk/esd/AM62PX/latest/exports/docs/api_guide_am62px/TOOLS_SYSFW.html#BOARCFG_GEN>`_
The number of ranks on any DIMM is the number of independent sets of DRAMs that can be accessed for the full data bit-width of the DIMM. Dual rank gives us access to a bigger memory bank but consumes twice the tuning time. By default, DDR is in dual rank configuration and takes ~35ms that is visible in ``System_init`` in the SBL logs.
@@ -297,13 +281,13 @@ Reducing Linux kernel boot time
297
281
298
282
- Using a smaller kernel system
299
283
300
-
- By default, the kernel image contains a lot of drivers and filesystems to enable the functionality supported for the board but are not necessary for early boot. Trim kernel capabilities by using
- By default, the kernel image contains a lot of drivers and filesystems to enable the functionality supported for the board but are not necessary for early boot. Trim kernel capabilities by using
- `ti_early_display.config` - converts the majority of functionality into loadable modules
304
288
305
289
Usage:
306
-
290
+
307
291
.. code-block:: console
308
292
309
293
kernel$ make ARCH=arm64 CROSS_COMPILE=<path-to-compiler>/aarch64-none-linux-gnu- defconfig ti_arm64_prune.config ti_early_display.config
@@ -334,21 +318,21 @@ In order to package the filesystem as initramfs into the kernel, follow these st
334
318
335
319
2. Edit the kernel config:
336
320
337
-
.config:
338
-
321
+
.config:
322
+
339
323
.. code-block:: kconfig
340
324
341
325
CONFIG_INITRAMFS_SOURCE="/path/to/filesystem"
342
-
326
+
343
327
or using :code:`menuconfig`:
344
328
345
329
.. code-block:: kconfig
346
330
347
331
kernel$ make ARCH=arm64 CROSS_COMPILE=<path-to-compiler>/aarch64-none-linux-gnu- menuconfig
348
332
349
-
General setup ->
350
-
Initial RAM filesystem and RAM disk (initramfs/initrd) support ->
351
-
Initramfs source file(s)
333
+
General setup ->
334
+
Initial RAM filesystem and RAM disk (initramfs/initrd) support ->
335
+
Initramfs source file(s)
352
336
/path/to/filesystem
353
337
354
338
3. Rebuild the kernel
@@ -380,7 +364,7 @@ The time taken to boot filesystem is measured from Process ID 1(PID1) to login p
380
364
host$ rm -r <filesystem>/usr/lib/opkg
381
365
host$ rm <filesystem>/etc/issue
382
366
host$ cd <filesystem>/dev
383
-
host$ mknod -m 0600 null c 1 3
367
+
host$ mknod -m 0600 null c 1 3
384
368
385
369
This removes 52ms from the boot up time.
386
370
@@ -443,7 +427,7 @@ The following section displays the time taken by each stage to start and end. Fo
443
427
444
428
445
429
|Range 3 (SBL_start to SBL_end):
446
-
|This range measures the time the bootloader takes to configure the DDR, load + start the default HSM core, MCU core and Application Core. The GPIO that was set to LOW for SBL_start can be set to HIGH by copying the above code section and using `GPIO_pinWriteHigh`.
430
+
|This range measures the time the bootloader takes to configure the DDR, load + start the default HSM core, MCU core and Application Core. The GPIO that was set to LOW for SBL_start can be set to HIGH by copying the above code section and using `GPIO_pinWriteHigh`.
447
431
448
432
.. ifconfig:: CONFIG_part_variant in ('AM62PX')
449
433
@@ -513,6 +497,45 @@ In the `&main_uart0` node, connect the GPIO by adding
513
497
514
498
test-gpios = <&main_gpio0 39 GPIO_ACTIVE_HIGH>;
515
499
500
+
Update the :file:`drivers/tty/serial/8250/8250_omap.c` driver. Add the following section before the `omap8250_probe` function:
501
+
502
+
.. code-block:: C
503
+
504
+
static struct gpio_desc *gpio;
505
+
506
+
void test_gpio_on(void)
507
+
{
508
+
gpiod_direction_output(gpio, 1);
509
+
gpiod_set_value(gpio, 1);
510
+
}
511
+
EXPORT_SYMBOL_GPL(test_gpio_on);
512
+
void test_gpio_off(void)
513
+
{
514
+
gpiod_direction_output(gpio, 0);
515
+
gpiod_set_value(gpio, 0);
516
+
517
+
}
518
+
EXPORT_SYMBOL_GPL(test_gpio_off);
519
+
520
+
and the following in the `omap8250_probe` function:
- While AM62A ships with OSPI-NAND, it can be replaced with the OSPI-NOR flash with ease. NAND flash support needs to be replaced with NOR flash support
0 commit comments