在使用 imx8mp-evk 进行异构通信时,我尝试从 M 内核调用 UART3,但失败了。以下是我的程序。
1。修改 uboot 设备树 mcu_rdc。编译并生成 falsh.bin 之后、烧了它
hjk003_0-1764123430485.png
2。进入 U-Boot 并启动 Linux 系统。
hjk003_1-1764123515906.png
3. 根据演示修改的 M-core 代码。
hjk003_2-1764123571437.png
4.
hjk003_3-1764123601664.png
hjk003_4-1764123626665.png
调用发送函数时,PC 没有收到任何数据。
hjk003_5-1764123689621.png
同样的设置时钟频率我也尝试过,但还是没有输出
hjk003_0-1764142779109.png
Hi @hjk003
请拷贝UART4的时钟配置代码,改成UART3。CLOCK_EnableClock(kCLOCK_Uart3)只能解除门控,不能设置对于的clock源和时钟速率。
Zhiming_Liu_0-1764141185051.png
Best Regards,
Zhiming
@Zhiming_Liu顺便说一下,我的项目是基于对 evkmimx8mp_rpmsg_lite_pingpong_rtos_linux_remote_cm7 所做的演示更改。
@Zhiming_Liu当然,这是我的项目。
您好@hjk003
,能否在此分享您的项目?或发送私人信息。
致敬,
Zhiming
@Zhiming_Liu感谢您的回复。但是,我不想更改默认调试串行端口;我想使用另一个 UART3。
左侧包含我的函数,右侧包含用于安装调试串行端口的配置。
hjk003_0-1764138610526.png
您好@hjk003
请确保您已将所有 UART4 替换为 UART3,并低于 UART_INSTANCE。
Zhiming_Liu_0-1764136362949.png
致敬,
Zhiming
@Zhiming_Liu 好的,感谢回复。我尝试一下。
Hi @hjk003
1.首先关于RDC的配置,uboot里只分配给M7就行,这段配置会写在RAM中,ATF起来之后会读取这段配置,然后写入对应的寄存器。
2.关于这个共享访问的问题,我们建议将一组外设只分配给一个核心,例如你把GPIO2都分给M7,如果A53要访问的GPIO2下面的IO,需要通过rpmsg的机制来实现属性控制。其他外设类似。
3.设备树里的pinctrl并不会管UART 管脚分配给谁了,只要定义在里面,驱动就会设置对应的iomux寄存器。虽然M7和A53都有访问权限,但是后占有的就可能读写有问题。你可以试试在uboot里加载M7固件,看看是不是正常的,保留A53 设备树里的pinctrl设置。
Best Regards,
Zhiming
Hi @hjk003
我这边之前是测试过的,一般确保uboot里M7独占UART3,SDK里只有复制UART4的代码就可以启动了。DbgConsole_Init里用的UART INSTANCE你改了吗?
Best Regards,
Zhiming