当前位置: 首页 > news >正文

在米联客4EV上部署tinyriscv

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

tinyriscv工程文件下载:https://download.csdn.net/download/xiaolangyangyang/91240174
tinyriscv开源代码下载:https://download.csdn.net/download/xiaolangyangyang/91240177
tinyriscv OCD下载:https://download.csdn.net/download/xiaolangyangyang/91240166
tinyriscv编译器下载:https://download.csdn.net/download/xiaolangyangyang/91240167
jlink_v11驱动下载:https://download.csdn.net/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参数。

http://www.lryc.cn/news/578959.html

相关文章:

  • 高速公路闲置土地资源化利用:广西浦北互通3MW分布式光伏监控实践
  • 基于大模型的急性重症胰腺炎全流程预测与诊疗方案研究
  • 从暴力穷举到智能导航,PC本地搜索被腾讯电脑管家“拯救”
  • 云原生环境下部署大语言模型服务:以 DeepSeek 为例的实战教程
  • Linux操作系统之文件(一):重识IO
  • 解决Linux下根目录磁盘空间不足的问题
  • 基于Cox风险比例模型的会员用户流失预测研究
  • [云上玩转Qwen3系列之四]PAI-LangStudio x AI搜索开放平台 x ElasticSearch: 构建AI Search RAG全栈应用
  • CLIP heat map generation
  • vue中的toRef
  • SpringBoot控制反转
  • 无人机AI制导模块运行方式概述
  • Docker Desktop导致存储空间不足时的解决方案
  • 阿里巴巴Java开发手册(1.3.0)
  • Python数据解析与图片下载工具:从JSON到本地文件的自动化流程
  • 买卖股票的最佳时机--js 算法
  • Nginx、Spring Cloud Gateway 与 Higress 的应用场景及核心区别
  • 从0到1:我的飞算JavaAI实战之旅,效率飙升10倍不是梦!
  • 【Rancher Server + Kubernets】- Nginx-ingress日志持久化至宿主机
  • uniapp项目中node_modules\sass\sass.dart.js的体积过大怎么处理
  • LeetCode[617]合并二叉树
  • 音频调试经验总结
  • 单链表和双向链表
  • Knife4j+Axios+Redis:前后端分离架构下的 API 管理与会话方案
  • 将文件使用base64存入数据库并在微信小程序中实现文件下载
  • 修复手机液晶面板显性横向线性不良定位及相关液晶线路激光修复原理
  • 【安全工具】SQLMap 使用详解:从基础到高级技巧
  • 【深度学习机器学习】Epoch 在深度学习实战中的合理设置指南
  • cmake find_package
  • Minio安装配置,桶权限设置,nginx代理 https minio