@hazelijy 请问D1支持向量中断吗?

Latest posts made by Marleo
-
Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程
@caozilong 您好,参考了您的代码,在system_tick_init()函数中调用了get_cycles_hi()和get_cycles()函数来获取mtime的值,我在移植到哪吒开发板上,会出现”illegal instruction“异常,于是分别改写了system_tick_init和riscv_timer_interrupt函数,其余和arch以及freertos配置相关的基本和您的代码保持一致,但是现象还是运行一定时间就会卡死,求大佬hlep。D1_FreeRTOS_20211105_4.rar
void system_tick_init(void) { csr_clear(mie, MIE_MTIE | MIE_MSIE); write32(CLINT + 0x4000, counter() + delta); write32(CLINT + 0x4004, 0); csr_set(mie, MIE_MTIE); } void riscv_timer_interrupt(void) { csr_clear(mie, MIE_MTIE); *(uint64_t*)CLINT_MTIMECMPL(0) = counter() + delta; csr_set(mie, MIE_MTIE); } static inline uint64_t counter(void) { uint64_t cnt; __asm__ __volatile__("csrr %0, time\n" : "=r"(cnt) :: "memory"); return cnt; }
-
Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程
@caozilong 您好,我只修改了vPortSetupTimerInterrupt函数,创建了三个简单的线程,刚开始时,线程能正常调度运行,但是运行177s后,线程便卡死,且不管创建几个线程,都是177s后卡死,请问可能的原因是什么呢?另外能分享下需要定制的函数源码吗?
-
Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程
@caozilong 您好,对于第一种方式,我通过rdtime指令是可以读取mtime寄存器的值,对于第二种MMIO方式,直接去访问其地址,在freertos的vPortSetupTimerInterrupt()函数中,有对mtime和cmp进行操作,这里我设置的地址是mtime=0x1400BFF8,cmp=0x14004000,但是当芯片上电运行后,会陷入“Load access fault”异常,通过读取mtval寄存器里的值,发现其等于0x1400BFF8,所以,mtime这里该怎么设置呢?还有您的移植过程的第五点,CSR_PLIC_BASE指的是PLIC的基地址吧?谢谢。
-
Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程
@caozilong
我看的是这个版本的,去平头哥官网看了下,目前还是这个版本的,请问您能分享下更新后的版本吗?
-
Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程
@caozilong 你好,在FreeRTOSConfig.h中,需要配置configMTIME_BASE_ADDRESS和configMTIMECMP_BASE_ADDRESS,但是C906没有mtime寄存器啊,该怎么设置呢?
-
D1支持cklink烧写.bin文件至spi nand flash或者spi nor flash吗?
请问D1支持平头哥的cklink烧写.bin文件至spi nand flash或者spi nor flash吗?