完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在bl808适配RT-THREAD master分支上的rt-smart过程中,遇到了虚拟地址和物理地址映射问题,寻求熟悉rt-smart的大佬帮助 BL808使用的是平头哥C906的RISC-V内核 1、当前在未开启RT_USING_SMART宏情况下,系统可以在物理地址上正常运行,任务切换正常。 内存物理地址:0x50000000,大小64MByte 在启动的时候,boot负责将rtthread这部分代码搬移到内存0x50000000。 2、在bsp下开启RT_USING_SMART选项,参考allwinner/d1s下的配置, (1)修改配置rtconfig.h为 #define KERNEL_VADDR_START 0x50000000 #ifdef RT_USING_SMART 基于以上配置的情况下,RT-SMART宏开启后,写plic之后就会发生异常, Unhandled Exception 7:Store/AMO Access Fault 目前关于RT-SMART的资料较少,官网文档中心里面讲的也不是特别详细,想寻求一下大佬支持,谢谢 |
|
相关推荐
5个回答
|
|
写plic的代码是怎样的?
|
|
|
|
写了什么地方呀,错误怎么是Store/AMO Access Fault
|
|
|
|
|
|
|
|
这部分代码在D1S开启MMU之后也是可以正常使用的。
在BL808没有开启MMU也是可以正常使用的,所以我怀疑是不是虚拟地址和物理地址转换没有处理好 在运行 writel(threshold, handler->hart_base + CONTEXT_THRESHOLD); 这句话就异常了 void plic_init(void) { int nr_irqs; int nr_context; int i; unsigned long hwirq; int cpu = 0; if (c906_plic_regs) { LOG_E("plic already initialized!"); return; } nr_context = C906_NR_CONTEXT; c906_plic_regs = (void *)C906_PLIC_PHY_ADDR; if (!c906_plic_regs) { LOG_E("fatal error, plic is reg space is null."); return; } nr_irqs = C906_PLIC_NR_EXT_IRQS; for (i = 0; i < nr_context; i ++) { struct plic_handler *handler; uint32_t threshold = 0; cpu = 0; /* skip contexts other than supervisor external interrupt */ if (i == 0) { continue; } // we always use CPU0 M-mode target register. handler = &c906_plic_handlers[cpu]; if (handler->present) { threshold = 0xffffffff; goto done; } handler->present = RT_TRUE; handler->hart_base = c906_plic_regs + CONTEXT_BASE + i * CONTEXT_PER_HART; handler->enable_base = c906_plic_regs + ENABLE_BASE + i * ENABLE_PER_HART; done: /* priority must be > threshold to trigger an interrupt */ writel(threshold, handler->hart_base + CONTEXT_THRESHOLD); for (hwirq = 1; hwirq <= nr_irqs; hwirq++) { plic_toggle(handler, hwirq, 0); } } /* Enable supervisor external interrupts. */ set_csr(sie, SIE_SEIE); } |
|
|
|
这部分代码:
c906_plic_regs = (void *)C906_PLIC_PHY_ADDR; 请修改为: /* 头文件 ioremap.h */ c906_plic_regs = rt_ioremap((void *)C906_PLIC_PHY_ADDR, size /* 这玩意的size */); |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1209 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1058 浏览 0 评论
1444 浏览 0 评论
1371 浏览 0 评论
1023 浏览 0 评论
74582 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 11:33 , Processed in 1.036474 second(s), Total 98, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号