编译篇

riscv32-unknown-elf-gcc -march=rv32ima -mabi=ilp32 遇到这个问题
Error: unrecognized opcode `csrr a5,mhartid'解决方案:
https://lkml.org/lkml/2022/2/10/879
https://blog.csdn.net/u011011827/article/details/121371305
riscv32-unknown-elf-gcc -march=rv32ima_zicsr -mabi=ilp32//-march=rv32ima_zicsr_zifencei
原因:
> +# Newer binutils versions default to ISA spec version 20191213 which moves some
> +# instructions from the I extension to the Zicsr and Zifencei extensions.

链接篇

riscv64-unknown-elf-ld 链接遇到如下问题
target emulation `elf32-littleriscv' does not match `elf64-littleriscv'原因
应该是 riscv64-unknown-elf-ld 不支持 将32-elf 链接为 32-elf1.用 riscv 编译链 中的 gcc 链接试试
riscv64-unknown-elf-gcc  -T arch/rv32/linker.lds -nostdlib -nostartfiles -Wl,-Map=baremetal.map -Wl,--whole-archive arch/rv32/built-in.a init/built-in.a modules/built-in.a  -Wl,--no-whole-archive -o baremetal.elf2.用 riscv32 工具链试试
undefined reference to `__clzdi2' // https://github.com/riscv-collab/riscv-gnu-toolchain/issues/588我用的 是 x-tools 8.3.0 , riscv64-unknown-elf/lib/gcc/riscv64-unknown-elf/8.3.0/ 下的 .a 是 32bit的 直接链接 riscv64-unknown-elf/lib/gcc/riscv64-unknown-elf/8.3.0/rv64imac/lp64 下的 libgcc.a 会报其他的错/home/pop/x-tools/riscv64-unknown-elf/lib/gcc/riscv64-unknown-elf/8.3.0/rv64imac/lp64/libgcc.a(_clzsi2.o): in function `__clzdi2':/home/pop/work/freertos-riscv/crosstool-ng-crosstool-ng-1.24.0/.build/riscv64-unknown-elf/src/gcc/libgcc/libgcc2.c:710:(.text+0x1c): relocation truncated to fit: R_RISCV_HI20 against symbol `__clz_tab' defined in .rodata section in /home/pop/x-tools/riscv64-unknown-elf/lib/gcc/riscv64-unknown-elf/8.3.0/rv64imac/lp64/libgcc.a(_clz.o)
---riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14 编译 , 也是 这个问题 : undefined reference to `__clzdi2'riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/lib/gcc/riscv64-unknown-elf/10.2.0/ 下的 .a 是 64bit的 ---   目前观察到 10.2.1 的 adnes toolchain 没有这个问题,这个是rv64 only 的 , 可以正常链接 __clzdi2
---https://github.com/riscv-collab/riscv-gnu-toolchain/issues/457增加CT_LIBC_NEWLIB_TARGET_CFLAGS="-mcmodel=medany"没有解决解决方案:直接把 crosstool-ng 中的  ./.build/src/gcc-12.1.0/libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c ./.build/src/gcc-12.1.0/libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c 这两个文件放到 工程 中编译链接

gdb 篇

Could not fetch register "scause"; remote failure reply 'E14'原因
该版本的gdb中不支持该 csr1.更新到一个高版本的gdb 解决问题
Cannot find bounds of current function原因
abi的问题2.在gdb命令行中输入 set  architecture riscv:rv32 解决问题

qemu 篇

mode 切换时
切换后的pc 执行第一条指令后会进入异常(不是中断)原因(mcause) 为 "Instruction access fault"mdcause 为 "Reserved"原因
未知1.换一个 qemu-system-riscv 解决了该问题

riscv代码调试遇到过的问题及坑相关推荐

  1. 基于易灵思开发板RiscV的调试流程

    基于易灵思开发板RiscV的调试流程 一.相关环境准备 1.软件Install 2.硬件Device 二.硬件环境搭建 1.开发板连接 2.下载代码到开发板 三.软件环境搭建 1.启动Eclipse软 ...

  2. 【VS实践】代码调试与错误处理

    程序员的装逼技能:调试,错误处理和快捷键 学计算机3年,只知道一些基础的理论知识,写代码和调试很差,基本不会什么吧! 花时间了解一下关于这块的东西!以前觉得调试就是代码写出来一运行,有问题了分析那里出 ...

  3. 转:Python 代码调试技巧

    Python 代码调试技巧 转载于:https://www.cnblogs.com/kira2will/p/4254754.html

  4. 树形dp——树的重心(2) 代码调试理解

    和树的最大独立问题类似,先任选一个结点作为根节点,把无根树变成有根树,然后设d(i)表示以i为根的子树的结点的个数.不难发现d(i)=∑d(j)+1,j∈s(i).s(i)为i结点的所有儿子结点的编号 ...

  5. 三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》

    案例需求:在销售订单上新增一个按钮,在订单明细中新增一个字段,命名[即时库存]. 点击按钮,弹出"Hello World!",并获取订单明细物料的即时库存,填入字段[即时库存]. ...

  6. 【Android 逆向】代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )

    文章目录 一.Android 平台代码调试器代码 二.Android.mk 构建脚本内容 三.Application.mk 构建脚本内容 四.正式编译 五.博客资源 一.Android 平台代码调试器 ...

  7. 【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )

    文章目录 一.等待进程状态改变 二.detach 脱离进程调试 PTRACE_DETACH 三.调试中继续运行程序 PTRACE_CONT 一.等待进程状态改变 上一篇博客 [Android 逆向]代 ...

  8. 【Android 逆向】代码调试器开发 ( 代码调试器功能简介 | 设置断点 | 读写内存 | 读写寄存器 | 恢复运行 | Attach 进程 )

    文章目录 一.代码调试器功能简介 二.Attach 进程 一.代码调试器功能简介 代码调试器功能 : 设置断点 : 无论什么类型的调试器 , 都必须可以设置断点 , 运行到断点处 , 挂起被调试进程 ...

  9. Python代码调试方法

    对于每个程序开发者来说,调试几乎是必备技能.常用Pycharm编辑器里的方法有Print大法.log大法,但缺少类似Matlab的变量区,给代码调试带来不便,特别是在有函数的情况下,变量无法实时查看. ...

最新文章

  1. 邮箱的正则表达式验证总结经验
  2. 计算机网络·域名等级及域名服务器的命名
  3. Flex学习笔记2010-08-16
  4. E470 外放没声音问题解决
  5. CodeForces - 1236D Alice and the Doll(贪心+二分+模拟)
  6. [leetcode] 154.寻找旋转排序数组中的最小值 II
  7. 不定方程求解c语言_事业单位考试备考之数量关系:不定方程的求解
  8. seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化
  9. 怎么查看电脑有没有python_python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学...
  10. c语言递归求塔移动次数,c语言递归调用汉诺塔
  11. Windows 平台安装 MongoDB
  12. 顶饰条行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  13. 关于findViewById返回空指针的错误
  14. PAT (Basic Level) Practice1025 反转链表
  15. CF547D Mike and Fish 建图
  16. 【STM32H7的DSP教程】第12章 DSP基础函数-相反数,偏移,移位,减法和比例因子
  17. FastDfs与ElasticSearch和Mysql完成海量数据存储搜索功能
  18. html插入swf自动播放,如何在HTML页面中嵌入SWF文件?
  19. 施耐德电气:打造新一代数据中心基础设施
  20. 测试基础篇-开尔文测试基本原理

热门文章

  1. rem适配布局制作苏宁移动端首页
  2. hbase 中文乱码 查询_HBase的汉字乱码问题
  3. 【C#】大话设计模式- 13 建造者模式
  4. IDEA安装Spark
  5. 四年级计算机wps教案,苏科版信息技术四年级第9课《WPS轻办公》教案1.doc
  6. Unity Shader - The Fresnel Effect 菲涅尔效应
  7. vim E303错误信息解决记录
  8. Lua 学习笔记:C API 遍历 Table
  9. 微信小程序禁止图片双击放大
  10. html中如何美化展示json格式数据