在米联客4EV上部署tinyriscv

实验环境:米联客XCZU4EV开发板

tinyriscv工程文件下载:https://download.youkuaiyun.com/download/xiaolangyangyang/91240174
tinyriscv开源代码下载:https://download.youkuaiyun.com/download/xiaolangyangyang/91240177
tinyriscv OCD下载:https://download.youkuaiyun.com/download/xiaolangyangyang/91240166
tinyriscv编译器下载:https://download.youkuaiyun.com/download/xiaolangyangyang/91240167
jlink_v11驱动下载:https://download.youkuaiyun.com/download/xiaolangyangyang/91240172

1、安装Jlink V11 7.56b版本驱动,JLINK V11

双击JLink_Windows_V756b_x86_64.exe,一路next即可。

如果遇到以上问题,将jlink驱动转换为winusb驱动,操作步骤如下:
        下载 Zadig 工具: http://zadig.akeo.ie
        Options 点击 List All Devices



        点击箭头处,选择 J-Link,在 Driver 出选择 jlink,另一边选择 Winusb,然后点击 Replace Driver,等待完成即可。

2、米联客EV4开发板引脚定义,将开发板的CEP作为IO使用,由于接口不兼容,只能用杜邦线链接其中5根相关的JTAG线,不能直接插入20PIN的JTAG插座



3、Jlink链接

        至少链接以下5根线:TCK、TMS、TDI、TDO、VTref

4、通过 Jlink+openOCD测试RISCV

        打开 cmd 执行命令:openocd -f jlink.cfg -f tinyriscv.cfg(使用jlink附带的openocd,目录中已包含)

        成功检测到 RISCV CPU
        打开另一个cmd窗口执行telnet localhost 4444,再在telnet加载并验证固件:


        如上图所示表示固件加载及验证成功,可使用resume 0命令启动cpu

5、编译生成bin文件

        C语言程序例程位于tests\example目录里,下面以simple程序为例进行说明,打开CMD窗口,进入到tests\example\simple目录,执行以下命令编译:
        # make

6、使用telnet进行调试

        再打开另一个终端,输入以下命令连接telnet:telnet localhost 4444


        然后就可以使用各种命令进行调试了,下面介绍一些常用的命令:

  • halt:停住MCU,进入调试模式;
  • resume:MCU从停住的地方继续执行,退出调试模式;
  • reset:复位MCU,复位之后就开始执行。通常在下载完程序后使用该命令来运行程序;
  • reset halt:复位MCU,然后停住MCU,即MCU停在复位地址处;
  • bp 0x00000010 4 hw:打断点,其中0x00000010是断点的地址,4表示地址长度为4个字节,hw表示硬件断点。tinyriscv只支持硬件断点。
  • rbp 0x00000010:删除0x00000010地址处的断点;
  • bp:查看所有断点信息;
  • step:单步执行,每次执行一条指令;
  • mww 0x00000010 0x1234:即memory write word,往0x00000010地址处写入0x1234,长度为4个字节;
  • mdw 0x00000010 2:即memory display word,从0x00000010地址处读取2个word;
  • reg sp:读取sp寄存器的值;
  • reg sp 0x10:往sp寄存器写入0x10;
  • load_image:加载image文件,比如:load_image filename address bin min_address max_length,其中filename表示要加载的文件,address表示要加载到哪个地址,bin表示文件的类型,min_address表示最小地址,该值与address相同即可,max_length表示文件的最大长度。目前使用这个命令来下载C语言程序。
  • verify_image:比如:verify_image filename offset,其中filename表示已经下载了的文件,offset表示从哪个地址开始校验。使用这个命令来校验下载进去的程序是否正确。
  • load_bin:如果觉得load_image命令的参数比较多,可以使用load_bin命令,比如:load_bin bin_file 0x0 1,表示将bin_file二进制文件下载到0x0地址处,并且校验。

7、使用gdb进行调试

        除了使用telnet进行调试之外,还可以使用gdb进行调试。
        openocd连上之后,打开另一个终端,执行以下命令运行gdb(freertos即为elf文件):
tinyriscv-v2.4\tools\gnu-mcu-eclipse-riscv-none-gcc-8.2.0-2.2-20190521-0004-win64\bin\riscv-none-embed-gdb.exe tests\example\FreeRTOS\Demo\tinyriscv_GCC\freertos
        (gdb) set remotetimeout 2000               // 设置超时时间
        (gdb) target remote localhost:3333      // 连接openocd服务
        (gdb) load                                                  // 加载程序
        (gdb) c                                                        // 继续执行


注意,如果要用gdb进行调试,则编译C程序时必须加上-g参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值