OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4317|回复: 0

stm32在uboot启动的一些问题

[复制链接]

4

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2020-5-22
在线时间
22 小时
发表于 2023-1-7 16:00:18 | 显示全部楼层 |阅读模式
50金钱
写了一个stm32mp157的m4程序,需要在uboot阶段就去启动这个程序,现在存在两个问题。
1、程序内包含了双核通信的部分,因此这部分的初始化肯定是要等到linux系统内核初始化完成之后才可能成功。在uboot阶段进行初始化的话会导致程序一直在下面的printf处死循环,即使linux内核初始化完成了也无法跳出。
但是关闭m4程序后,重新开始m4程序则不会出现卡死在循环的问题,因此我修改了一下这部分内容,判断失败不会再次死循环转而跳到main函数的开头,相当于重新执行main函数,发现问题依然存在。请问有什么解决办法吗。
void rproc_virtio_wait_remote_ready(struct virtio_device *vdev)
{
    uint8_t status;

    /*
     * No status available for slave. As Master has not to wait
     * slave action, we can return. Behavior should be updated
     * in future if a slave status is added.
     */
    if (vdev->role == VIRTIO_DEV_MASTER)
        return;

    while (1) {
        printf("wait rproc_virtio_wait_remote_ready\r\n ");
        status = rproc_virtio_get_status(vdev);
        if (status & VIRTIO_CONFIG_STATUS_DRIVER_OK)
            return;
        metal_cpu_yield();
    }
}
2、m4程序中使用了spi+dma的方式去进行数据的传输 ,发现uboot启动m4程序之后,再一段时间内触发了spi的中断回调函数,但是内核初始化之后,就不再触发spi的中断回调了。去除dma后单纯spi传输则并没有出现此问题。推测为a7内设备树初始化时将dma再次初始化了一遍导致spi+dma传输出现了问题。附件为a7和ide程序内Linux的设备树。请问应该如何修改

stm32mp15xx-ya157c-m4.zip

1.57 KB, 下载次数: 0

stm32mp15xx-ya157c-a7.zip

3.94 KB, 下载次数: 0

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 14:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表