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.

[参考译文] RTOS/AM4378:电路板移植问题

Guru**** 2548290 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/606561/rtos-am4378-board-porting-issues

器件型号:AM4378

工具/软件:TI-RTOS

尊敬的 TI 支持。

目前、我们正在尝试在具有载板 VAR-AM43CustomBoard 的 VAR-SOM-AM43上运行一些简单的示例。 我知道您对这些板没有直接支持、但如果我想支持定制板、我看不到任何不同的情况。 无论如何 IDK 开发。 由于我在移植和运行简单示例方面遇到的所有问题、电路板正在运行。
首先、我有点困惑、因为我找不到将 AM437x SOC 与 TI-RTOS SDK 移植的移植指南。
我找到了起动 指南 。 然后尝试运行一些简单 的示例。 半主机示例运行时不会出现任何问题。
然后我尝试 PDK 示例。  

1.)VAR-AM43CustomBoard 和 GpevmAM437x 在相同的引脚上具有 USART0、因此我尝试在 CCS 中运行示例(导入用 pdkProjectCreate.sh 创建的"UART_BasicExample_evmAM437x_armExampleProject")。 UART_Gets 中没有输出和程序挂起 

我 是否错过了 projecti 的一些一般设置?

2.)那么我决定进行 pinmux、因为 VAR-AM43 在 UART 上没有 rtsn 和 CTSN 信号。 由于 TX 引脚未在空闲状态(INIT 之后)上上升、我决定将 stdio 实例更改为2 -> UART2 (VAR-AM43CustomBoard 上的 RS-232端口)。
我开始观看有关 AM437x 和“电路板库:修改定制平台的源代码”的 TI 培训,但有有关移植 AM572x 的说明:(
我在 BBB 上找到了一些有关 UART 更改的说明 、因此我意识到必须在 packages/ti\starterware\board\am43xx、 packages/ti\starterware\soc\am43xx 和 packages/ti\board\src\evmAM437x 中进行更改。
因此、我使用测试所需的最小引脚进行了引脚多路复用-请参阅随附的 file.e2e.ti.com/.../3122.am43xx_5F00_gpevm_5F00_pinmux_5F00_data.c (我添加了2个引脚来驱动 GPIO 上的 LED)

然后按照以下说明停止进度:

要修改电源和时钟、请执行以下操作:
1.在 PRCMModuleEnable()例程中为 UART1添加时钟实例以归档
${pdk_install_DIR}packages/ti\starterware\SoC\AM335x\AM335x_prcm.c。
情形1:使能模块(SOC_CMPER_regs、CM_PER_UART1_CLKLS_AM335x_PRCM_PRCM

、SOC_CLKCLKCLKCLK_CTRL、SOC_LCM_TRL_CLK_TRL_CLK_TRL_CLK_CLKIT_TRL_TRL_CLK_CLK_CLK_TRL_CLK_CLK_CLK_

在 AM335x_prcm.c 和 AM437X_prcm.c 中,PRCMModuleEnable()似乎有很大不同。 如何在 AM437x 案例中插入此说明???

3) 我决定移动并执行除修改 PRCMModuleEnable 和将 stdio 打印实例更改为 UART2之外的所有步骤、其中 VAR-AM43 RS-232端口上。
重新编译 PDK、在 CCS 中运行示例... 根本没有输出。

4.)然后我尝试使用 portmux 来闪烁示例。 GPIO4_26上的示例和手动写入(板载 LED3)工作。 写入 GPIO4_8 (板载 LED2)不会产生任何输出(寄存器中的值正在变化-"CCS 寄存器视图")。
GPIO_evmAM437x_board.c 修改:

#define GPIO_USER0_LED_PIN_NUM (0x08)
#define GPIO_USER0_LED_PORT_NUM (0x04)
#define GPIO_User1_LED_PIN_NUM (0x1A)
#define GPIO_User1_LED_PORT_NUM (0x04)


/* GPIO 驱动器板特定引脚配置结构*/GPIO_PinConfig
gpinoConfig[
/*启用中断的输入引脚*/
GPIO_DEVICE_CONFIG ((GPIO_User1_LED_PORT_NUM + 1)、GPIO_User1_LED_PIN_NUM)|
GPIO_CFG_IN_INT_INT_RISING | GPIO_CFG_INPUT、

/*输出引脚*/
GPIO_DEVICE_CONFIG ((GPIO_User1_LED_PORT_NUM + 1)、GPIO_User1_LED_PIN_NUM)|
GPIO_CFG_OUTPUT、

/*输出引脚*/
GPIO_DEVICE_CONFIG ((GPIO_USER0_LED_PORT_NUM + 1)、GPIO_USER0_LED_PIN_NUM)|
GPIO_CFG_OUTPUT
};

/* GPIO 驱动程序回调函数*/
GPIO_CallbackFxn gpioCallbackFunctions[]={
null、
null、
空
}; 

MAIN_LED_BLINK 修改:

void AppGpioCallbackFxn (void)
{
/*切换 LED1 */
GPIO_TOGGLE (USER_LED1);
GPIO_TOGGLE (2);
AppDelay (delay_value);
GPIO_intR_triggered = 1;
} 

我迷路了!
您能否为我提供有关使用 AM437x SoC 的检查清单或详细说明? 或任何其他方向?
期待帮助我...

此致、
Marko

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    表示1。 我觉得这是一些 Pinmux 问题。 当我们测试 UART 0时、有一个 board_init 被调用、带有 Board_init_PINMUX_CONFIG 和 Board_init_module_clock 标志。 如果您的拜尔德使用相同的 UART 0实例。 然后、您需要检查您的 PINMUX 设置。

    表示2. 如果您决定将 UART 从0更改为2并更改了 pinmux 文件、您是否使用新的 pinmux 重建电路板? 请访问 processors.wiki.ti.com/.../Processor_SDK_RTOS_Board_Support

    对于 PRCM 域、在原始 evmAM437.c 文件中、它仅启用 UART 0、您还需要添加一行以启用 UART 2

    Board_status Board_moduleClockInit()

    int32_t status;

    /* UART */
    状态= PRCMModuleEnable (CHIPDB_MOD_ID_UART、0U、0U);


    对于3、请参阅#2以启用 UART 2

    对于4、在 AM437x EVM 中、LED0为0x050B、LED1为0x050A。 通过中断回调切换 LED0以切换 LED1。 使用

    /* GPIO 驱动器板特定引脚配置结构*/
    GPIO_PinConfig gpioPinConfigs[]={
    /*启用中断的输入引脚*/
    GPIO_DEVICE_CONFIG ((GPIO_USER0_LED_PORT_NUM + 1)、GPIO_USER0_LED_PIN_NUM)|
    GPIO_CFG_IN_INT_INT_RISING | GPIO_CFG_INPUT、

    /*输出引脚*/
    GPIO_DEVICE_CONFIG ((GPIO_USER0_LED_PORT_NUM + 1)、GPIO_USER0_LED_PIN_NUM)|
    GPIO_CFG_OUTPUT
    };

    我假设您对电路板中的 LED0执行相同的操作。 但是、我看到您为 LED1执行了此操作。

    此致、Eric