LinuxC/C++调试的那些“歪门邪道”

李肖遥 2022-12-27 08:01
    关注、星标公众号,直达精彩内容

来自:知乎,作者:韦易笑

链接:https://zhuanlan.zhihu.com/p/32843449



无数次被问道:你在终端下怎么调试更高效?或者怎么在 Vim 里调试?好吧,今天统一回答下,我从来不在 vim 里调试,因为它还不成熟。那除了命令行 GDB 裸奔以外,终端下还有没有更高效的方法?能够让我事半功倍?

当然有,选择恰当的工具和方法,让 GDB 调试效率成倍的提升并没有任何问题。当然,前提条件是你至少会在使用最原始的 GDB。

裸奔状态:原始的 GDB 命令行

穿上各种衣服前,至少得先学会裸奔,找份简单的 GDB cheat sheet 对照一下:

生产环境中出现崩溃时,因线上服务器一般没有开发环境,也无配套源代码,所以程序崩溃后,如果你懒得把 core 文件拖回到开发机检查,可以先在线上服务器先简单gdb看一下。

GDB命令密密麻麻,常用的也就表格上那几条,比如进去以后第一步先用 bt 查看一下调用栈,info local查看一下本地变量,再配合 up/down 在整个调用栈的不同层次之间上下移动一下,检查各处局部变量的值,print 一下某个表达式,即便没代码,看下符号和反汇编,一般也能调试个七七八八。

碰到复杂点的 BUG,必须配合源代码了,那你得把 core 文件拉到开发环境中,再用 gdb 对照源代码调试,配合 list [行号] 指令查看当前运行的源代码,再配合其他方法进行调试。

那么这时候,如果调试复杂度继续上升,你需要不断的断点,每次 next / step 单步完后你都需要 list 一下前后源代码,或者用 disassemble [函数名/地址] 查看一下指令的话,不少人会感觉到抓狂,这时我们需要给裸奔的 GDB 穿条内裤了。

穿上内裤的 GDB - TUI

这是 gdb 自带的文本界面,使用 gdb -tui 命令启动,比如:

gdb -tui hello

即可打开我们的文本界面:

上方是源代码窗口,下面是 gdb 终端,窗口管理快捷键模仿 emacs,使用 c-x o 进行窗口切换,如果你还想查看指令窗口,可以输入:layout split

然后你单步的时候上面的源代码窗口会跟着滚动,比之前不停的 list 方便不少吧,要看前后源代码可以继续 c-x o 切换窗口后上下滚动。

有时候你 up/down 切换了栈帧后,上面的代码也许来不及更新,那么你用 update 指令,让上面的代码窗口定位到你最新的执行位置,有时也需要 CTRL-L 重绘下整个界面。

在 gdb 自带的 tui 模式中,你不但可以随时查看代码/指令,还可以查看寄存器。好吧,其实 gdb再简陋,本身还是配套了一条内裤的,只是很多人忘记拿出来穿了。

穿上内衣:gdbinit

如果上述文本 TUI的信息不够丰富的话,也许你会对 .gdbinit 感兴趣,~/.gdbinit 是一个 gdb配置脚本,可以设定一些由 python 编写的插件,比如 peda:

在 ~/.gdbinit 上面配置了 peda 后,可以看到命令提示符就从 (gdb) 变成了 gdb-peda$ 。每敲一个单步命令,peda 都会显示出无比丰富的信息,你还可以配置添加更多,配合高亮,你可以得到一个加强版的命令行。

不过这个我用的并不多,因为它会影响 TUI 模式的界面,我不喜欢在我的 gdb 里搞太多乱七八糟的东西。同时,当我们的调试需求继续变得更加复杂,你要不停的断点,频繁的单步,这些传统命令行里不停的输入各种指令显然已经让我们疲惫不堪了,能否直接在界面上查看源代码并且直接在代码上快捷键断点,快捷键单步呢?

可以啊,试试 cgdb。

穿上外套的 GDB:cgdb

CGDB 类似 gdb tui 分为终端窗口和代码窗口:

上面的代码窗口称为 cgdb mode, 下面的 gdb 窗口称为 gdb mode,调试就是不停的在两种模式间切换,按键模仿 vim,按 ESC 切换回 cgdb 模式,按 i 切换到 gdb 模式。

这看起来和 TUI gdb 差不多啊?除了语法高亮外它比 gdb tui 高效在哪里呢?答案是:大部分操作皆可在 cgdb mode 下(即源代码窗口)用快捷键操作。

方向键 或者 hjkl 移动光标,page-down/up 或 c-f / c-b 前后翻页,按 o键会列出当前可执行文件的源代码列表,可以切换查看其他相关代码文件,按 / 或者 ?可以进行文档搜索。

上面这些快捷键基本和 vim 对应,能让你方便的浏览源代码,同时在代码窗口可以用空格键来切换断点,还有其他一些快捷键:

  • F5 - Send a run command to GDB.
  • F6 - Send a continue command to GDB.
  • F7 - Send a finish command to GDB.
  • F8 - Send a next command to GDB.
  • F10 - Send a step command to GDB.

更多快捷键见【这里】,这下单步和断点比原来轻松多啦,你基本可以呆在源代码窗口里不出来,大部分时候不用再到 gdb 命令行里一条条 next/step 的输入了。

编辑一下 ~/.cgdb/cgdbrc ,简单调教下使用更方便:

set ignorecase
set ts=4
set wso=vertical
set eld=shortarrow
set hls
map  :until

这里大概设置了搜索大小写不敏感,tab 大小,分屏方式(默认改为左右分屏),搜索高亮,以及加了一个 F9 的快捷键,用于跳出循环(默认没有这个快捷键):

现在大家都是宽屏显示器了,默认改成左右分屏(要 cgdb 7.0才支持)舒服不少。

cgdb 还有更多功能,比如没有源文件时可以查看汇编,或者交叉查看源代码和汇编,设置 mark 等等,具体见它的官方文档吧。

这个小工具能将你从大量 gdb 命令行中解脱出来,配置文件还可以让你按喜好绑定各种命令到快捷键上。

穿戴整齐:Emacs GDB

CGDB 虽然大部分操作可以用快捷键进行,但是仍然有不少时候需要切换回右边的 gdb mode 中去敲命令,比如当你需要每单步一次就用 info local 查看一下局部变量或者 print 一下某个全局变量的值的时候,频繁的左右切换会让你疲于奔命。

所有在调试一些相对复杂的问题时,上面这些工具 hold 不住了,作用平时 Vim 写代码的人,我也从不拒绝用 emacs 的 gdb mode 来调试一些复杂问题,毫无疑问 emacs 是目前终端下最强的 GDB 前端。

从来没用过 emacs 都没关系,只要安装一个 emacs 记得下面几条命令就可以调试了:

  • 切换文件:c-x c-f (先按 ctrl_x 再按 ctrl_f),输入文件名时可以用 tab 补全
  • 移动光标:方向键,或者 c-f, c-b, c-p, c-n;翻页 pgup/down 或者 c-v / m-v
  • 切换缓存:c-x b 切换当前窗口里的缓存,c-x c-b 打开新窗口切换缓存。
  • 窗口操作:c-x o 窗口切换,c-x 2 / c-x 3 上下/左右分屏,c-x 0 / c-x 1 关闭 / 独占
  • 输入命令:m-x (按 ALT_x)输入命令可以用 tab 补全,c-g 退出命令输入。

当然,别忘记退出命令是 c-x c-c,这就够了,首先我们启动 emacs:

按下 m-x (alt+x),提示输入命令(如果终端软件 alt 键不灵,那可以设置一下终端软件,或者一秒内先按 ESC,再按 x键,在 xterm 终端下是等价的),键入 “gdb”敲回车:

下面会问你怎么运行gdb,输入gdb的 shell 启动命令行回车后开始 gdb 模式:

看到这里也许你会问,这和直接命令行 gdb 有区别么?别急,继续 m-x 输入命令:

gdb-many-windows

马上满足你:

左上是 GDB 终端,从上到下分别是:GDB终端,本地变量监控,源代码,程序输出,栈帧,断点列表。

当然你可以接着在 gdb 终端里输入你想要的指令,但大部分时候我们会在源代码窗口工作,使用 c-x o 将窗口定位到源代码窗口,使用下面命令或者对应快捷键进行操作:

这些 gud- 开头的命令都是 emacs gdb-mode 下通用调试器的操作命令,他们和 gdb 命令一一对应,可以用 m-x 输入这些命令,还可以直接用快捷键操作。

如果你想把某个窗口替换成反汇编或者寄存器的监控,那么可以用 m-x 输入:

gdb-display-disassembly-buffer

那么其中一个窗口就会被切换成反汇编窗口:

左上角的 gdb 终端被切换成反汇编窗口了,看完后记得 c-x b 切换回 gdb 控制台,如果你要避免某个窗口被切换走可以搜索 emacs 的 dedicated window。再者,我们可以自己用窗口管理快捷键按照我们的喜好拆分布局:

比如重新拆分了一下,把 gdb 终端挪到右边,输出窗口下面,把原来显示 gdb 终端的地方显示为反汇编。基本上你在 IDE 上见得到的调试手段,在 emacs 中都可以操作,并且 emacs 还可以在 Windows 下用 gdb 调试 mingw 的程序。

那么也许你会抱怨 emacs 下操作是在太麻烦了,没关系,稍微调教一下即可。

调教 emacs gdb-mode

打开 ~/.emacs (windows下是 ~/_emacs)文件,输入如下内容:

(global-set-key [M-left] 'windmove-left)
(global-set-key [M-right] '
windmove-right)
(global-set-key [M-up] 'windmove-up)
(global-set-key [M-down] '
windmove-down)

(global-set-key [f5] 'gud-run)
(global-set-key [S-f5] '
gud-cont)
(global-set-key [f6] 'gud-jump)
(global-set-key [S-f6] '
gud-print)
(global-set-key [f7] 'gud-step)
(global-set-key [f8] '
gud-next)
(global-set-key [S-f7] 'gud-stepi)
(global-set-key [S-f8] '
gud-nexti)
(global-set-key [f9] 'gud-break)
(global-set-key [S-f9] '
gud-remove)
(global-set-key [f10] 'gud-until)
(global-set-key [S-f10] '
gud-finish)

(global-set-key [f4] 'gud-up)
(global-set-key [S-f4] '
gud-down)

(setq gdb-many-windows t)

解释一下,最上面设定了 ALT + 方向键就可以在窗口中跳转,如果你终端 alt+方向不灵的话可以改成 C-left, C-right 等用 ctrl + 方向键移动窗口,后面设定了一些常用命令的快捷。

最后设置了默认打开 gdb-many-windows,最好增加下面一段,允许鼠标操作:

(require 'xt-mouse)
(xterm-mouse-mode)
(require 'mouse)
(xterm-mouse-mode t)
(defun track-mouse (e))

(setq mouse-wheel-follow-mouse 't)

(defvar alternating-scroll-down-next t)
(defvar alternating-scroll-up-next t)

(defun alternating-scroll-down-line ()
(interactive "@")
(when alternating-scroll-down-next
(scroll-down-line))
(setq alternating-scroll-down-next (not alternating-scroll-down-next)))

(defun alternating-scroll-up-line ()
(interactive "@")
(when alternating-scroll-up-next
(scroll-up-line))
(setq alternating-scroll-up-next (not alternating-scroll-up-next)))

(global-set-key (kbd "") 'alternating-scroll-down-line)
(global-set-key (kbd "") 'alternating-scroll-up-line)

这下 xterm 下你可以自用的用鼠标点击切换窗口,点击按钮,用滚轮上下查看源代码了:

这下自由多了,ALT+方向或者鼠标点击,直接窗口跳转,并且用下面的命令操作:

  • F5 - 运行,Shift + F5 - 继续
  • F7/F8 代码级单步, 以及 Shift-F7/F8 指令级单步
  • F9 - 设置断点,Shift-F9 删除断点
  • F10 - 跳出循环,Shift-F10 跳出函数
  • F4 - 移动到上一个调用栈帧,Shift-F4移动到下一个

右上角的本地变量窗口上面有两个按钮,可以鼠标点击切换显示本地变量还是寄存器。右下角的也有两个按钮切换显示断点还是线程。最上面绿色部分的按钮也可以直接鼠标点击。

终于比我们最初的版本好用多了,如果你喜欢折腾的话,你还可以定制 gdb-many-windows 的初始格局,比如更复杂的:

彻底满足你各种复杂的调试需求,这里不展开了,有兴趣见【这篇文章】。

最后每次调试时打开 emacs, m-x输入 gdb 再键入文件名很麻烦?我们调教一下 .bashrc:

gdbtool () { emacs --eval "(gdb \"gdb --annotate=3 -i=mi $*\")";}

好了,终端下我们对要调试的程序只需要输入:

$ gdbtool hello

就能自动打开 emacs 并且切换到 gdb-mode 下面,展开我们的多窗口,开始调试了,是不是很愉快?

我平时调试没环境会先使用 gdb-tui 先看看,有环境或者问题复杂了我会打开 emacs 来调试。后来

@zpan

给我介绍了 cgdb 以后,gdb-tui 就退役了,无环境先用 cgdb 看个大概,碰到复杂问题打开 emacs,经过一番调教,十分顺手。

让 GDB 变得更性感一些

其实到 emacs 已经差不多了,但如果你实在记不住这有限的几个快捷键或者 gdb 命令,那么还可以尝试一下 gdbgui:

python 开发的基于浏览器的 GDB 前端,pip 安装一下即可,使用时:

gdbgui --host 0.0.0.0 hello

就会监听本地 5000 端口,这时我们可以用浏览器打开服务器上的地址完全用鼠标进行调试。

中间是程序代码,下面是 GDB终端,上面可以切换源代码,可以控制运行/继续/单步等。右边可以实时查看:本地变量,调用栈帧,内存地址,断点,线程 等等。

比如上面的调用栈和线程查看,以及下面的自定义结构体查询:

还能可视化查询数据结构:

鼠标点击代码左边就可以设置/删除断点,点击上面的按钮就能切换显示汇编代码。基本上把 GDB的主要功能都用可视化的方式,现代的网页界面展示在你的面前,不需要记住任何快捷键,鼠标点点点就可以了。

同时,这个 gdbgui 还支持 Windows 下的 gdb 调试。目前 gdbgui 还在活跃的开发中,作为最漂亮的 gdb 前端,相信它会越来越强大。

回顾一下

好了我们经历了从最开始 gdb 的命令行裸奔状态到终端下最完善的调试环境 emacs gdb-mode,再到性感的 gdbgui。GDB 的好处就在于对内可以引入各种插件,对外可以提供各种接口,自己做好调试的事情,前端界面可以完全交给其他程序来主导,不管是本地还是远程,所以才会有了各种各样丰富的 GDB Front End,还有各种远程 GDB 工具。

它不会限制你说你只能这样调试,或者你只有唯一的一种 UI可以操作,所以 GDB 的组合方式千千万万,用不着一谈 GDB 就觉得只有原始的敲命令一种用法,对吧?上面么多用法,随便选两样,花不了半小时,即可让你终端下的调试工作加快不少。

版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

关注我的微信公众号,回复“加群”按规则加入技术交流群。


点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

李肖遥 公众号“技术让梦想更伟大”,作者:李肖遥,专注嵌入式,只推荐适合你的博文,干货,技术心得,与君共勉。
评论
  • 电竞鼠标应用环境与客户需求电竞行业近年来发展迅速,「鼠标延迟」已成为决定游戏体验与比赛结果的关键因素。从技术角度来看,传统鼠标的延迟大约为20毫秒,入门级电竞鼠标通常为5毫秒,而高阶电竞鼠标的延迟可降低至仅2毫秒。这些差异看似微小,但在竞技激烈的游戏中,尤其在对反应和速度要求极高的场景中,每一毫秒的优化都可能带来致胜的优势。电竞比赛的普及促使玩家更加渴望降低鼠标延迟以提升竞技表现。他们希望通过精确的测试,了解不同操作系统与设定对延迟的具体影响,并寻求最佳配置方案来获得竞技优势。这样的需求推动市场
    百佳泰测试实验室 2025-01-16 15:45 340浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 128浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 173浏览
  • 日前,商务部等部门办公厅印发《手机、平板、智能手表(手环)购新补贴实施方案》明确,个人消费者购买手机、平板、智能手表(手环)3类数码产品(单件销售价格不超过6000元),可享受购新补贴。每人每类可补贴1件,每件补贴比例为减去生产、流通环节及移动运营商所有优惠后最终销售价格的15%,每件最高不超过500元。目前,京东已经做好了承接手机、平板等数码产品国补优惠的落地准备工作,未来随着各省市关于手机、平板等品类的国补开启,京东将第一时间率先上线,满足消费者的换新升级需求。为保障国补的真实有效发放,基于
    华尔街科技眼 2025-01-17 10:44 221浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 571浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 93浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 85浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 81浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 191浏览
  • 随着消费者对汽车驾乘体验的要求不断攀升,汽车照明系统作为确保道路安全、提升驾驶体验以及实现车辆与环境交互的重要组成,日益受到业界的高度重视。近日,2024 DVN(上海)国际汽车照明研讨会圆满落幕。作为照明与传感创新的全球领导者,艾迈斯欧司朗受邀参与主题演讲,并现场展示了其多项前沿技术。本届研讨会汇聚来自全球各地400余名汽车、照明、光源及Tier 2供应商的专业人士及专家共聚一堂。在研讨会第一环节中,艾迈斯欧司朗系统解决方案工程副总裁 Joachim Reill以深厚的专业素养,主持该环节多位
    艾迈斯欧司朗 2025-01-16 20:51 235浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 212浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 117浏览
  • 80,000人到访的国际大展上,艾迈斯欧司朗有哪些亮点?感未来,光无限。近日,在慕尼黑electronica 2024现场,ams OSRAM通过多款创新DEMO展示,以及数场前瞻洞察分享,全面展示自身融合传感器、发射器及集成电路技术,精准捕捉并呈现环境信息的卓越能力。同时,ams OSRAM通过展会期间与客户、用户等行业人士,以及媒体朋友的深度交流,向业界传达其以光电技术为笔、以创新为墨,书写智能未来的深度思考。electronica 2024electronica 2024构建了一个高度国际
    艾迈斯欧司朗 2025-01-16 20:45 556浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 169浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 207浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦