This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM62P:裸机越狱演示、从 UART1更改为 UART2无法正常工作。

Guru**** 2383310 points
Other Parts Discussed in Thread: AM62P, SYSCONFIG, AM625, OMAP-L137, AM62D-Q1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1500219/am62p-bare-metal-jailhouse-demos-change-from-uart1-to-uart2-not-working

部件号:AM62P
Thread 中讨论的其他器件: SysConfigAM625、OMAP-L137AM62D-Q1

工具/软件:

您好:

我们正在尝试按照此处 AM62P 处理器 SDK 文档中所述的顺序重新制作越狱演示:

https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/11_00_09_04/exports/docs/linux/Foundational_Components /Hypervisor/Jailhouse.html

但是、我们不能使用 UART1、因为它专用于我们硬件上的另一种资源、我们需要使用 UART2。  我们对下面所示的 Yocto 方法中使用的 ti-jailhouse git 存储库应用了补丁。

我们能够运行 Linux Inmate 演示程序 (ping、ivshmem-demo)成功并在 UART2的配合控制台端口上获取适当的数据。

但是、裸机演示程序不起作用 (uart-demo.bin 和 GIC-demo.bin)。  我们在 UART2端口/控制台上没有任何输出。

是否可能需要写入额外的代码、以使 UART2退出复位条件或者在裸机代码中配置时钟等?  在我们的主 Linux DTS 中、我们强制始终应用 UART2引脚多路复用引脚、同时保持器件标记为"保留"。

我在 ti-jailhouse、git 存储库中看不到任何需要修改的内容来使裸机示例使用 UART2运行。

iff --git a/configs/arm64/dts/inmate-k3-am62p5-sk.dts b/configs/arm64/dts/inmate-k3-am62p5-sk.dts
index 047f9621..70787aab 100644
--- a/configs/arm64/dts/inmate-k3-am62p5-sk.dts
+++ b/configs/arm64/dts/inmate-k3-am62p5-sk.dts
@@ -10,7 +10,7 @@
        #size-cells = <2>;

        aliases {
-               serial1 = &main_uart1;
+               serial1 = &main_uart2;
        };

        chosen {
@@ -87,11 +87,11 @@
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
                };

-               main_uart1: serial@2810000 {
+               main_uart2: serial@2820000 {
                        compatible = "ti,am64-uart", "ti,am654-uart";
-                       reg = <0x00 0x02810000 0x00 0x100>;
-                       interrupts = <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>;
-                       power-domains = <&k3_pds 152 1>;
+                       reg = <0x00 0x02820000 0x00 0x100>;
+                       interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&k3_pds 153 0>;
                        current-speed = <115200>;
                        clock-frequency = <48000000>;
                };
diff --git a/configs/arm64/k3-am62p5-sk-inmate-demo.c b/configs/arm64/k3-am62p5-sk-inmate-demo.c
index 0190aa3c..3014ff84 100644
--- a/configs/arm64/k3-am62p5-sk-inmate-demo.c
+++ b/configs/arm64/k3-am62p5-sk-inmate-demo.c
@@ -37,7 +37,7 @@ struct {
                .num_pci_devices = 0,

                .console = {
-                       .address = 0x02810000,
+                       .address = 0x02820000,
                        .divider = 0x1b,
                        .type = JAILHOUSE_CON_TYPE_8250,
                        .flags = JAILHOUSE_CON_ACCESS_MMIO |
@@ -50,9 +50,9 @@ struct {
        },

        .mem_regions = {
-               /* MAIN UART1 */ {
-                       .phys_start = 0x02810000,
-                       .virt_start = 0x02810000,
+               /* MAIN UART2 */ {
+                       .phys_start = 0x02820000,
+                       .virt_start = 0x02820000,
                        .size = 0x10000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                JAILHOUSE_MEM_IO,
diff --git a/configs/arm64/k3-am62p5-sk-linux-demo.c b/configs/arm64/k3-am62p5-sk-linux-demo.c
index b9c07342..aa37f983 100644
--- a/configs/arm64/k3-am62p5-sk-linux-demo.c
+++ b/configs/arm64/k3-am62p5-sk-linux-demo.c
@@ -2,7 +2,7 @@
  * Jailhouse, a Linux-based partitioning hypervisor
  *
  * Configuration for Linux inmate on AM62P5 based platforms
- * 3 CPUs, 512MB RAM, 1 serial port (MAIN UART1)
+ * 3 CPUs, 512MB RAM, 1 serial port (MAIN UART2)
  *
  * Copyright (c) 2023 Texas Instruments Incorporated - http://www.ti.com/
  *
@@ -43,7 +43,7 @@ struct {
                .vpci_irq_base = 189 - 32,

                .console = {
-                       .address = 0x02810000,
+                       .address = 0x02820000,
                        .divider = 0x1b,
                        .type = JAILHOUSE_CON_TYPE_8250,
                        .flags = JAILHOUSE_CON_ACCESS_MMIO |
@@ -107,9 +107,9 @@ struct {
                                JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA |
                                JAILHOUSE_MEM_LOADABLE,
                },
-               /* MAIN UART1 */ {
-                       .phys_start = 0x02810000,
-                       .virt_start = 0x02810000,
+               /* MAIN UART2 */ {
+                       .phys_start = 0x02820000,
+                       .virt_start = 0x02820000,
                        .size = 0x10000,
                        .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
                                                       JAILHOUSE_MEM_IO,
@@ -185,8 +185,8 @@ struct {
                        /* vpci */
                        1 << (189 - 160) |
                        1 << (190 - 160),
-                       /* uart */
-                       1 << (211 - 192),
+                       /* uart 2 */
+                       1 << (212 - 192),
                        0, 0,
                        },
                },

此外、在 Yocto 配方中、 提供一个选项来将 cpio 文件的压缩映像用于 initrd 文件会很有用。  我们即将使用...cpio.xz 作为我们的 initrd、它允许使用更大的 initrd 文件/ ramfs。

谢谢、

Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    用作更新。  如果我加载 Linux 囚犯/演示、请关闭该设置(越狱细胞关闭;越狱细胞破坏)、然后运行 UART2开始工作的裸机演示。

    因此、在 Linux 配合正确执行的裸机示例中、需要完成一些设置/启用 UART2的操作。

    此时不确定是什么。

    -迈克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Mike:

    这是我第一次看越狱,所以我将与你一起学习。

    是否有工作基线?

    在对 UART1/UART2进行任何修改之前、裸机演示是否按预期工作?

    有关外设分配的隆隆声

    在 MCU R5F 和 DM R5F 上运行的 MCU+应用程序、我们需要在 SysConfig 中显式请求所需的外设。 有关不同处理器内核之间的外设分配的更多信息、请参阅 AM62Px Academy > Multicore > Peripherals
    https://dev.ti.com/tirex/explore/node?node=A__AcGdexDmDxV8k7XSDZd.4w__AM62P-ACADEMY__fp5YxRM__LATEST 

    我在越狱源代码中看不到类似这样的东西。 我不知道是否足以指定要在其中使用的外设
    configs/arm64/k3-am62p5-sk-inmate-demo.c

    或者、如果需要在其他位置发送器件管理器(DM)固件消息、以便为外设分配 UART2。 (例如、如果在初始 Linux 引导中实际上需要将外设标记为"oke"、以便在裸机连接到 Linux 已代表囚犯分配的外设之前、外设被初始化?)

    仔细检查系统设计  

    您能给我详细介绍一下系统设计吗? 在我们花太多时间深入 Jailhouse 之前、我想先检查一下、以确保此实现符合您的需求。 例如、如果 MCU R5F 当前未进行编程、则对该内核进行编程可能有意义 、而不会影响您的 Linux A53性能。

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nick、

    作为背景,我们是一个 SOM 设计师,并正在验证越狱可以使用我们的硬件,因为我们已经有客户咨询它。  我们支持 AM62x、AM62P 和 AM62A 器件。

    是否有工作基线?

    这里目前只有我们的 SOM + DevKit、我无法访问 AM62P EVM、因此我无法使用 UART1/未修改的引脚进行测试、因为这些引脚会转到其他地方。  我会检查是否可以获得一个。  我们必须运行 Yocto 构建来为我们这里的硬件生成映像、但这是我们非常熟悉的过程、SDK 指令非常简单。  如我所说、我认为在裸机模式下可以/消除 UART1设置。

    我怀疑您是正确的、因为越狱示例裸机代码在配置外设方面实际没有太大作用。   我看不到与引脚多路复用配置或将外设退出复位相关的任何内容(不确定是否需要该功能)或确保启用了为器件馈送的时钟(同样、不确定是否要绕过 TRM)。  没关系、但我建议 TI 在 SDK 文档中添加一些您的里程数可能会有所不同的文本、或者添加一些提示、说明如果开发人员使用此功能、应该对其进行哪些配置。   

    我还注意到、Linux 囚犯有关添加其他示例的说明可能需要一些澄清。  如果在示例中向 cpio ramfs 文件系统添加了新代码、则需要调整添加到工作 dtb 的 initrd 大小修改。

    在系统设计方面、我们有几个客户希望更新旧的 L137和 L138的设计、同时考虑使用 AM625和 AM62P。  希望设置外设、并且希望 DSP 代码能够更轻松地迁移路径。  但它们的代码库有点大-它不能仅容纳在片上 RAM 中。  其他 Jacinto (?? AM57等)器件可能更自然、但功耗太高。

    一位客户尝试在62X 上使用 M4 (400 MHz)、但这不是由任务决定的、主要是因为内存和内存带宽受限。  他们现在正在调查 AM62P 上的 MCU R5 (800 MHz)、这一问题无疑更好、但如果效果足够好、陪审团仍然没有意见。

    南... 我们正在调查使用 Jailhouse 的性能和可能性、可能与自由 RTOS 或可能与支持 RT 的 Inmate Linux 内核配合使用。

    此致、

    Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Mike:

    明白。

    另一个需要记住的内核是 DM (设备管理器) R5F。 其主要任务是运行器件管理任务、但对于 AM62x 和 AM62Px、它也是用户可编程的。 但是、如果您将用户编程的代码放在 DM R5F 上、我们不支持低功耗模式、因此如果需要低功耗、那么它就不适合。

    您在这里的需求时间是多久? 拥有更多越狱经验的团队成员将在一周的剩余时间内离职。 我可以询问周围,但不确定我是否有任何其他的资源在这一边,我们会在谷歌搜索发现之外.

    我们全新的 AM62Dx 可能是另一个适合您客户用例的潜在问题-这是对 OMAP-L137/138的最自然的跟进。 目前、我们仅在 A53集群上支持 RTOS、不确定是否有计划添加 Linux。 也不确定我们是否计划在该处理器上开放 C7以进行开发、如果是、时间表是什么。 但是、如果该器件可能对您的用例感兴趣、您可以创建一个单独的 e2e 主题、询问该器件的软件计划: https://www.ti.com/product/AM62D-Q1 

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nick、

    AM62Dx 将是理想的选择、但似乎没有任何本地显示的配置。  62X 系列的 VOUT、OLDI、DSI 输出似乎没有特征、并删除 DSS。  这不一定是完整的路障、但有些客户使用 L138台式仪器的本地面板显示屏。

    我们希望62A C7可能会在某个时候打开,但到目前为止还没有打开。   

    我可以等到下周,如果这使解决这个问题更容易在你结束

    此致、

    Mike

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Mike:

    好的、下周我将与我的团队成员讨论 Jailhouse 问题。 如果我没有在下周的星期二回复,请 ping 该线程,这将确保我不会丢失你的线程。

    AM62A C7开发?

    在 AM62A 的 C7开发时、我从团队中得到了以下信息:
    "我们目前的产品侧重于视觉和 EdgeAI、因此我们目前不支持将 AM62A 上的 C7x 用作通用 DSP。 但是、我们希望了解您的短期需求、以便在我们的未来规划中考虑这一点。 请联系您当地的 TI 联系人、以便进一步讨论。"

    所以我不打算在2025年实现任何目标、但我们仍在决定在未来几年内将开发和支持资源投入到何处。 因此、与当地的 FAE 沟通有助于潜在地影响以后做出的决策。

    AM62D 显示?  

    我已经确认、我们未在汽车级器件 AM62D-Q1上启用显示。 但是、即将推出的器件会显示相关内容。 我无法在论坛上讨论、请联系您当地的 TI FAE 以了解更多详细信息。

    此致、

    Nick