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.

[参考译文] TDA4AEN-Q1:在 R5F (MCU) 内核上启用 DSS0

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1649974/tda4aen-q1-enable-dss0-on-r5f-mcu-core

器件型号: TDA4AEN-Q1

我们希望在 R5F 内核上显示一个早期启动屏幕。 有人能否提供有关如何配置协处理器内核的 PDF? 另外、由于我们处于 falcon 引导模式、因此我们无法访问传统的 u-boot 命令行。 请注意、这不是共享的 RTOS、只是我们要加载启动界面的 SBL 代码、然后丢弃 dss0 的控制。

我发现我实际上无法从寄存器地址 0x30202000 读取。 我假设这是因为外设未通电? 请参阅下面的、了解对 clk-data 和 dev-data 的更改。 基本上、我有 r5f MCU 代码、用于探测 tidss 驱动器、然后卡在从外设地址第一次读取时。

diff --git a/arch/arm/mach-k3/r5/j722s/clk-data.c b/arch/arm/mach-k3/r5/j722s/clk-data.c
index cb3d864c..0f3285b3 100644
--- a/arch/arm/mach-k3/r5/j722s/clk-data.c
+++ b/arch/arm/mach-k3/r5/j722s/clk-data.c
@@ -166,6 +166,11 @@ static const struct clk_data clk_list[] = {
        CLK_FIXED_RATE("emmcsd4ss_main_0_emmcsdss_io_clk_o", 0, 0),
        CLK_FIXED_RATE("fss_ul_main_0_ospi_0_ospi_oclk_clk", 0, 0),
        CLK_FIXED_RATE("mshsi2c_main_0_porscl", 0, 0),
+       CLK_FIXED_RATE("dss0_func_clk", 148500000, 0),
+       CLK_FIXED_RATE("dss0_vp0_clk",  148500000, 0),
+       CLK_FIXED_RATE("dss0_vp1_clk",  148500000, 0),
+       CLK_FIXED_RATE("dss_oldi0_clk", 148500000, 0),
+       CLK_FIXED_RATE("dss_oldi1_clk", 148500000, 0),
        CLK_PLL("pllfracf2_ssmod_16fft_main_0_foutvcop_clk", "gluelogic_hfosc0_clkout", 0x680000, 0),
        CLK_DIV("pllfracf2_ssmod_16fft_main_0_foutpostdiv_clk_subdiv", "pllfracf2_ssmod_16fft_main_0_foutvcop_clk", 0x680038, 16, 3, 0, CLK_DIVIDER_ONE_BASED),
        CLK_DIV("pllfracf2_ssmod_16fft_main_0_foutpostdiv_clk", "pllfracf2_ssmod_16fft_main_0_foutpostdiv_clk_subdiv", 0x680038, 24, 3, 0, CLK_DIVIDER_ONE_BASED),
@@ -342,6 +347,11 @@ static const struct dev_clk soc_dev_clk_data[] = {
        DEV_CLK(170, 1, "hsdiv0_16fft_main_12_hsdivout0_clk"),
        DEV_CLK(170, 2, "board_0_tck_out"),
        DEV_CLK(170, 3, "sam62_pll_ctrl_wrap_main_0_chip_div1_clk_clk"),
+       DEV_CLK(186, 0, "dss0_func_clk"),
+       DEV_CLK(186, 2, "dss0_vp0_clk"),
+       DEV_CLK(186, 6, "dss0_vp1_clk"),
+       DEV_CLK(243, 0, "dss_oldi0_clk"),
+       DEV_CLK(244, 0, "dss_oldi1_clk"),
 };
 
 const struct ti_k3_clk_platdata j722s_clk_platdata = {
diff --git a/arch/arm/mach-k3/r5/j722s/dev-data.c b/arch/arm/mach-k3/r5/j722s/dev-data.c
index 5f7e2a44..c05e866e 100644
--- a/arch/arm/mach-k3/r5/j722s/dev-data.c
+++ b/arch/arm/mach-k3/r5/j722s/dev-data.c
@@ -36,6 +36,9 @@ static struct ti_lpsc soc_lpsc_list[] = {
        [11] = PSC_LPSC(72, &soc_psc_list[0], &soc_pd_list[3], &soc_lpsc_list[7]),
        [12] = PSC_LPSC(73, &soc_psc_list[0], &soc_pd_list[3], &soc_lpsc_list[11]),
        [13] = PSC_LPSC(74, &soc_psc_list[0], &soc_pd_list[3], &soc_lpsc_list[12]),
+       [14] = PSC_LPSC(14, &soc_psc_list[0], &soc_pd_list[0], &soc_lpsc_list[13]), /* DSS0 */
+       [15] = PSC_LPSC(15, &soc_psc_list[0], &soc_pd_list[0], &soc_lpsc_list[14]), /* OLDI0 */
+       [16] = PSC_LPSC(16, &soc_psc_list[0], &soc_pd_list[0], &soc_lpsc_list[14]), /* OLDI1 */
 };
 
 static struct ti_dev soc_dev_list[] = {
@@ -57,6 +60,9 @@ static struct ti_dev soc_dev_list[] = {
        PSC_DEV(170, &soc_lpsc_list[11]),
        PSC_DEV(177, &soc_lpsc_list[12]),
        PSC_DEV(55, &soc_lpsc_list[13]),
+       PSC_DEV(186, &soc_lpsc_list[14]),
+       PSC_DEV(243, &soc_lpsc_list[15]),
+       PSC_DEV(244, &soc_lpsc_list[16]),
 };
 
 const struct ti_k3_pd_platdata j722s_pd_platdata = {
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Evan:

    R5F 上没有 TDA4AEN 的早期启动界面演示。  

    关于配置协处理器、这里有如何引导协处理器内核的示例: https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j722s/11_02_00_10/exports/docs/mcu_plus_sdk_j722s_11_02_00_18/docs/api_guide_j722s/DRIVERS_BOOTLOADER_PAGE.html

    如果 DSS 未通电、则是的、对 DSS 寄存器的读取可能会失败。

    此致、

    Takuma

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

    尊敬的 Takuma:

    感谢链接。

    我需要帮助查找上表的 LPSC 寄存器和 PSC 寄存器。 也不清楚我是否应该将 WKUP K3 PSC 添加到表中并使用它来启用 DSS。 我想这会在 K3 代码中的某个位置吗? 您能给我指一下 K3 源代码吗?

    因为 EMMC 和 I2C 等都在中  

    [0]= PSC(00x00400000)、
    那么、对于我来说、DSS 也将包含在该 PSC 中似乎是合理的?
     
    基本上、 0x00400000 (PSC_PSC0_PUBLIC) 的公共寄存器版本中的寄存器表只提供要通信的地址、我还没有找到应发送到 PSC_PSC0_PUBLIC 的定义的位置。 (或者,如果我应该使用 PSC_WKUP_PSC0_PUBLIC)  

    这看起来很有前景:
    mcu_plus_sdk_j722s_11_02_00_18/source/drivers/device_manager/rm_pm_hal/rm_pm_hal_src/pm/j722s/devices.c soc

    #define J722S_PSC_PD_DSS 21
    ...
    #define J722S_PSC_LPSC_LPSC_MAIN_DSS0 91
    #define J722S_PSC_LPSC_LPSC_MAIN_DSS1 92
    #define J722S_PSC_LPSC_LPSC_MAIN_DSS_DSI0 93
    #define J722S_PSC_LPSC_LPSC_MAIN_OLDI0 94
    #define J722S_PSC_LPSC_LPSC_MAIN_OLDI1 95

    我能够使用这些信息读取寄存器。 我不需要包含 PSC_WKUP_PSC0_PUBLIC。