whik

论坛回复已创建

正在查看 5 帖子:1-5 (共 9 个帖子)
  • 作者
    帖子
  • 回复道: 请问jlink v8可以调试这个板子的RISC-V核吗 #1997
    chao wangwhik
    参与者

    朋友你好,使用Jlink-V9是可以的,V8没试过,和使用板载调试器是同样的方法。

    • 1.连接USB线和J18端口,即下面的那个USB口。如果板载调试器已经升级为Jlink固件,连接J11 USB口会和JLink-V9冲突。
    • 2.按照下图连接RISC-V JTAG口和Jlink-V9调试器的JTAG口,一共4根线。
    • 3.更新电脑上的JLink-V9调试器驱动,设备管理器里显示为 BULK interface,不能是Jlink Driver,否则不能调试RISC-V核。
    • 4.编译、下载、调试均正常。

    织女星开发板VEGALite已经板载了基于NXP LPC4322JET100的FreeLink调试器,固件可以选择CMSIS-DAP或JLink固件,默认为CMSIS-DAP固件,当升级为Jlink固件时,可以完全当作Jlink调试器来使用,所以,无需外部的JLink调试器即可调试RV32M1的RISC-V内核。

    JLink驱动的更新、开发环境的搭建和程序的下载调试,可以参考以下帖子:

    回复道: 织女星开发板RISC-V内核实现微秒级精确延时 #1995
    chao wangwhik
    参与者

    delay.c和delay.h文件下载地址:delay.rar

    回复道: 织女星开发板RISC-V内核实现微秒级精确延时 #1994
    chao wangwhik
    参与者

    更新RISC-V核延时函数

    原文链接: 织女星开发板RISC-V内核SysTick实现精确延时

    RISC-V RI5CY 和 ZERO Core的SysTick使用的定时器不一样,延时函数需要根据内核的不同来进行条件编译。

    • RISC-V RI5CY Core:LPIT0_CH0
    • RISC-V ZERO Core:LPIT1_CH0

    delay.c文件内容

    #include "delay.h"
    
    /*
     * ZERO : LPIT1_CH0
     * RI5CY: LPIT0_CH0
     * */
    
    static uint8_t  fac_us=0;
    static uint16_t fac_ms=0;
    
    #if defined(CPU_RV32M1_zero_riscy)
    
    /*
     * RISC_V ZERO 使用 LPIT1_CH0作为SysTick,与RI5CY不同
     * */
    
    void Delay_Init(void)
    {
        CLOCK_SetIpSrc(kCLOCK_Lpit1, kCLOCK_IpSrcFircAsync);	//设置定时器时钟48MHz
        LOG("LPIT1时钟: %ld \r\n", CLOCK_GetIpFreq(kCLOCK_Lpit1));	//输出LPIT0时钟
    
        CLOCK_EnableClock(kCLOCK_Lpit1);	//使能时钟
        LPIT_Reset(LPIT1);					//复位定时器
        LPIT1->MCR = LPIT_MCR_M_CEN_MASK;	//使能定时器
    
        fac_us = CLOCK_GetIpFreq(kCLOCK_Lpit1)/1000000;
        fac_ms = fac_us*1000;
    }
    
    void Delay_us(uint32_t Nus)
    {
        LPIT1->CHANNEL[kLPIT_Chnl_0].TVAL =  48 * Nus - 1;					//加载时间
        LPIT1->SETTEN |= (LPIT_SETTEN_SET_T_EN_0_MASK << kLPIT_Chnl_0);		//启动定时器
        while(LPIT1->CHANNEL[kLPIT_Chnl_0].CVAL);							//等待计数值到0
    //	while((LPIT1->MSR & 0x0001) != 0x01);								//等待溢出
    //	LPIT0->MSR |= (1U << kLPIT_Chnl_0);									//写1,清除中断
        LPIT1->CLRTEN |= (LPIT_CLRTEN_CLR_T_EN_0_MASK << kLPIT_Chnl_0);		//清除计数器
    }
    
    void Delay_ms(uint32_t Nms)
    {
        LPIT1->CHANNEL[kLPIT_Chnl_0].TVAL = Nms * fac_ms  - 1;			//加载时间
        LPIT1->SETTEN |= (LPIT_SETTEN_SET_T_EN_0_MASK << kLPIT_Chnl_0);	//启动定时器
        while(LPIT1->CHANNEL[kLPIT_Chnl_0].CVAL);						//等待计数到0
    //	while((LPIT1->MSR & 0x0001) != 0x0001);							//等待产生中断
    //	LPIT0->MSR |= (1U << kLPIT_Chnl_0);								//向中断标志位写1,清除中断
        LPIT1->CLRTEN |= (LPIT_CLRTEN_CLR_T_EN_0_MASK << kLPIT_Chnl_0);	//清除计数器
    }
    
    #elif defined(CPU_RV32M1_ri5cy)
    
    /*
     * RISC_V RI5CY 使用 LPIT0_CH0作为SysTick,与ZERO不同
     * */
    
    void Delay_Init(void)
    {
        CLOCK_SetIpSrc(kCLOCK_Lpit0, kCLOCK_IpSrcFircAsync);	//设置定时器时钟48MHz
        LOG("LPIT0时钟: %ld \r\n", CLOCK_GetIpFreq(kCLOCK_Lpit0));	//输出LPIT0时钟
    
        CLOCK_EnableClock(kCLOCK_Lpit0);	//使能时钟
        LPIT_Reset(LPIT0);					//复位定时器
        LPIT0->MCR = LPIT_MCR_M_CEN_MASK;	//使能定时器
    
        fac_us = CLOCK_GetIpFreq(kCLOCK_Lpit0)/1000000;
        fac_ms = fac_us*1000;
    }
    
    void Delay_us(uint32_t Nus)
    {
        LPIT0->CHANNEL[kLPIT_Chnl_0].TVAL =  48 * Nus - 1;					//加载时间
        LPIT0->SETTEN |= (LPIT_SETTEN_SET_T_EN_0_MASK << kLPIT_Chnl_0);		//启动定时器
        while(LPIT0->CHANNEL[kLPIT_Chnl_0].CVAL);							//等待计数值到0
    //	while((LPIT0->MSR & 0x0001) != 0x01);								//等待溢出
    //	LPIT0->MSR |= (1U << kLPIT_Chnl_0);									//写1,清除中断
        LPIT0->CLRTEN |= (LPIT_CLRTEN_CLR_T_EN_0_MASK << kLPIT_Chnl_0);		//清除计数器
    }
    
    void Delay_ms(uint32_t Nms)
    {
        LPIT0->CHANNEL[kLPIT_Chnl_0].TVAL = Nms * fac_ms  - 1;			//加载时间
        LPIT0->SETTEN |= (LPIT_SETTEN_SET_T_EN_0_MASK << kLPIT_Chnl_0);	//启动定时器
        while(LPIT0->CHANNEL[kLPIT_Chnl_0].CVAL);						//等待计数到0
    //	while((LPIT0->MSR & 0x0001) != 0x0001);							//等待产生中断
    //	LPIT0->MSR |= (1U << kLPIT_Chnl_0);								//向中断标志位写1,清除中断
        LPIT0->CLRTEN |= (LPIT_CLRTEN_CLR_T_EN_0_MASK << kLPIT_Chnl_0);	//清除计数器
    }
    
    #endif

    delay.h文件内容

    #ifndef __DELAY_H__
    #define __DELAY_H__
    
    #include "fsl_lpit.h"
    #include "fsl_debug_console.h"
    #include "sys.h"
    
    /*
     * ZERO : LPIT1_CH0
     * RI5CY: LPIT0_CH0
     * */
    
    void Delay_Init(void);
    
    void Delay_ms(uint32_t Nms);
    void Delay_us(uint32_t Nus);
    
    
    #endif
    回复道: 手把手教你搭建织女星开发板RISC-V开发环境 #1859
    chao wangwhik
    参与者

    你好,可以直接使用板载FreeLink调试器来直接调试RISC-V核的,由于板载FreeLink固件默认是CMSIS-DAP固件,需要升级为Jlink固件才可以。

    • 1.断开默认连接的跳线帽J6/J8/J9/J12
    • 2.板载默认为CMSIS-DAP固件,不支持调试RISC-V核调试,需要升级为Jlink固件
    • 3.更新PC上的Jlink驱动程序
    • 4.使用1.25->2.54mm的杜邦线,把J6/J8/J9/J12的左边和J17对应连接
    • (5.开发板默认是从RI5CY核启动,所以不需要更改启动模式,如果已经修改了需要更改为从RI5CY核或ZERO核启动)

    具体可参考:

    回复道: 织女星开发板RISC-V内核实现微秒级精确延时 #1819
    chao wangwhik
    参与者

    这个论坛没有存放图片的位置,所以你需要把你的图片上传到一个地方,然后获取到这个图片的地址,使用html的方式插入图片,并选择文本模式:

正在查看 5 帖子:1-5 (共 9 个帖子)