Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页
    1. Home
    2. Marleo
    • Profile
    • Following 0
    • Followers 0
    • my integral 535
    • Topics 4
    • Posts 13
    • Best 0
    • Groups 0

    MarleoLV 4

    @Marleo

    535
    integral
    0
    Reputation
    7
    Profile views
    13
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Marleo Unfollow Follow

    Latest posts made by Marleo

    • Reply: 【转载】哪吒D1开发板RISC-V CLINT编程实践

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

      posted in D1系列-RISC-V
      Marleo
      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;
      }
      posted in RTOS
      Marleo
      Marleo
    • Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程

      @caozilong 请问有找到了嘛🙏 非常感谢

      posted in RTOS
      Marleo
      Marleo
    • Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程

      @caozilong 您好,我只修改了vPortSetupTimerInterrupt函数,创建了三个简单的线程,刚开始时,线程能正常调度运行,但是运行177s后,线程便卡死,且不管创建几个线程,都是177s后卡死,请问可能的原因是什么呢?另外能分享下需要定制的函数源码吗?

      posted in RTOS
      Marleo
      Marleo
    • 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的基地址吧?谢谢。

      posted in RTOS
      Marleo
      Marleo
    • Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程

      @caozilong e54ec7eb-c6fd-48c8-a372-f677982f5ad0-image.png 我看的是这个版本的,去平头哥官网看了下,目前还是这个版本的,请问您能分享下更新后的版本吗?

      posted in RTOS
      Marleo
      Marleo
    • Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程

      @dreamer ad926436-c425-4f51-b83f-65c156118d1f-image.png 只有mtime比较寄存器地址,没有mtime寄存器啊

      posted in RTOS
      Marleo
      Marleo
    • Reply: FreeRTOS 10.4.3在RISCV(T-HEAD C906)平台上移植过程

      @caozilong 你好,在FreeRTOSConfig.h中,需要配置configMTIME_BASE_ADDRESS和configMTIMECMP_BASE_ADDRESS,但是C906没有mtime寄存器啊,该怎么设置呢?

      posted in RTOS
      Marleo
      Marleo
    • D1支持cklink烧写.bin文件至spi nand flash或者spi nor flash吗?

      请问D1支持平头哥的cklink烧写.bin文件至spi nand flash或者spi nor flash吗?

      posted in D1系列-RISC-V
      Marleo
      Marleo
    • D1内部的SRAM是多大呢

      查看了用户手册,有如下定义:a19c2349-1666-4b7e-b2ee-a1ca1ee99046-image.png ,D1内部的SRAM是32k吗?

      posted in D1系列-RISC-V
      Marleo
      Marleo