打印
[技术问答]

MA35D1 打RT_PREEMPT后编译异常

[复制链接]
368|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2023-8-7 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
往MA35D1内核5.10.140版本打入RT_PREEMPT实时补丁编译内核报错,出现下面错误:

          drivers/spi/spi-ma35d1-qspi.c: In function ‘nuvoton_spi_probe’:
          ./include/linux/spinlock_types_rt.h:32:2: error: expected expression before ‘{’ token
               32 | { .lock = __RT_SPIN_INITIALIZER(name.lock), \
                    | ^
          drivers/spi/spi-ma35d1-qspi.c:973:42: note: in expansion of macro ‘__SPIN_LOCK_UNLOCKED’
             973 | nuvoton->slave_txdone.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_txdone.lock);
                    | ^~~~~~~~~~~~~~~~~~~~
          ./include/linux/spinlock_types_rt.h:32:2: error: expected expression before ‘{’ token
               32 | { .lock = __RT_SPIN_INITIALIZER(name.lock), \
                    | ^
          drivers/spi/spi-ma35d1-qspi.c:977:42: note: in expansion of macro ‘__SPIN_LOCK_UNLOCKED’
             977 | nuvoton->slave_rxdone.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_rxdone.lock);

使用特权

评论回复
沙发
内政奇才| | 2023-10-10 15:00 | 只看该作者
你的 Linux 内核版本是什么?

使用特权

评论回复
板凳
riplay| | 2023-10-12 08:04 | 只看该作者
参考文档里的下面方式修改即可:
修改./driver/spi/spi-ma35d1-spi.c line 905
修改./driver/spi/spi-ma35d1-spi.c line 969
原代碼為
nuvoton->slave_done.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_done.lock);
修改為
#ifndef CONFIG_PREEMPT_RT
nuvoton->slave_done.lock = __SPIN_LOCK_UNLOCKED(nuvoton->slave_done.lock);
#else
nuvoton->slave_done.lock = (spinlock_t)__SPIN_LOCK_UNLOCKED(nuvoton->slave_done);
#endif

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2038

主题

7366

帖子

10

粉丝