精品专栏
文章平均质量分 75
精品专栏
余额抵扣
助学金抵扣
还需支付
¥59.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
RedmiUltra
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
嵌入式预处理链接脚本lds和map文件
但通过预处理器的特性(如宏定义、条件编译、文件包含等)使得链接脚本更加灵活和可配置。原创 2025-05-25 22:44:49 · 662 阅读 · 0 评论
-
LTO优化详解
LTO 是嵌入式开发中优化代码体积和性能的有效手段,尤其适合资源受限的场景。但需权衡编译时间(LTO 会增加链接时间)和潜在的调试复杂性(优化后代码可能与源码差异较大)。通常建议结合-Os和 LTO 以达到最佳 Size 优化效果。如果我想优化bin文件的size,我需要打开lto吗?好的,用户之前已经询问过LTO优化在嵌入式开发中的作用,现在他问是否需要开启LTO来优化bin文件的体积。我需要先回顾之前的对话,确保回答一致。用户可能是在实际项目中遇到了体积过大的问题,想知道LTO是否有效。原创 2025-02-22 22:06:11 · 1579 阅读 · 0 评论
-
Asan结果解析
=251327==:进程ID:检测到堆缓冲区溢出:错误发生的内存地址:程序计数器(Program Counter)地址,指向出错的代码位置:基指针(Base Pointer):栈指针(Stack Pointer):进行了4字节(int大小)的写入操作:写入的目标地址thread T0:在T0线程中发生错误摘要:堆缓冲区溢出,发生在a.c的第14行main函数中第14-34行:影子字节信息AddressSanitizer通过"影子内存"机制检测内存错误。原创 2025-12-23 17:11:40 · 30 阅读 · 0 评论 -
ASAN_OPTIONS for AddressSanitizer (ASan)
是运行时配置的环境变量,它控制着 ASan 检测器在程序运行时的各种行为。原创 2025-12-23 14:40:13 · 44 阅读 · 0 评论 -
Kasan vs Asan
特性ASANKASAN差异影响插桩时机编译时一次性全量插桩编译时插桩,但可分层配置KASAN更适应复杂内核环境灵活性低,全有或全无高,可模块化、分层配置KASAN可在生产环境使用运行时调整有限,通过环境变量丰富,sysfs、启动参数KASAN支持动态调优错误恢复终止进程可能继续运行(配置决定)内核需要更高可用性硬件利用支持(如ARM MTE)更深度支持(多种模式)KASAN与硬件结合更紧密特性ASANKASAN插桩时机编译时全量插桩,固定不变编译时插桩,但可配置灵活性。原创 2025-12-22 21:39:52 · 40 阅读 · 0 评论 -
嵌入式开发中的编译器插桩与库实现
特性编译器插桩插桩后的库实现角色“规则制定者”和“自动工人”“功能提供者”工作阶段编译期链接期、运行期主要行为插入对特定桩函数的调用指令实现被调用的桩函数的具体逻辑输出包含了“空洞”(桩调用)的目标文件填补“空洞”的具体函数库控制方由编译器选项(或源码属性)控制由开发者完全自主编写。原创 2025-12-22 20:22:44 · 39 阅读 · 0 评论 -
GDB中x命令的用法详解
x命令是 GDB 中用于的常用命令,全称是。原创 2025-12-21 19:31:34 · 37 阅读 · 0 评论 -
NuttX SVC系统调用机制深度解析
是NuttX系统调用的核心数据库文件18,定义了所有可以通过SVC从用户空间调用的系统接口19。read在中定义31NuttX的SVC系统操作类型Flat模式Protected模式Kernel模式直接调用SVC调用SVC调用read/write直接调用SVC调用SVC调用直接调用直接调用直接调用任务切换SVC调用SVC调用SVC调用信号处理SVC调用SVC调用SVC调用。原创 2025-12-20 23:13:59 · 178 阅读 · 0 评论 -
SVC指令作用及与函数调用区别
SVC是。原创 2025-12-20 00:42:20 · 273 阅读 · 0 评论 -
ARMv8-M架构IPSR寄存器读取函数解析
这是一个用于 ARMv8-M 架构 的 C 语言内联汇编函数,用于读取 IPSR(中断程序状态寄存器) 的值。:内联函数,编译器会将函数体直接插入调用处,避免函数调用开销:返回32位无符号整数:获取IPSR寄存器值的函数2. 内联汇编部分3. 汇编指令详解:Move from System Register,从系统寄存器读取到通用寄存器:引用第一个操作数(变量):要读取的系统寄存器4. 操作数约束:输出操作数:破坏描述(clobber)在ARMv8-M架构中,IPSR(I原创 2025-12-17 20:49:46 · 615 阅读 · 0 评论 -
Python性能分析工具cProfile与pstats
cProfile: 负责收集详细的性能数据pStats: 负责对收集的数据进行排序、过滤和展示优势: 标准库内置、使用简单、数据准确用途: 性能优化、瓶颈定位、代码调优这两个工具是 Python 开发者进行性能优化的必备利器!您提出的这种用法确实更优雅、更专业!👍 这是我实际工作中更推荐的写法。原创 2025-10-13 00:32:28 · 58 阅读 · 0 评论 -
Python脚本shebang写法推荐
虽然两种语法在大多数情况下都能工作,但为了代码的规范性和兼容性,建议使用。原创 2025-10-05 21:44:48 · 199 阅读 · 0 评论 -
Python staticmethod静态方法的作用与使用
在Python中,是一个装饰器,用于定义。原创 2025-10-06 21:34:48 · 540 阅读 · 0 评论 -
Python f-string 用法详解
f-string 是 Python 3.6 引入的一种字符串格式化方法,它使用前缀f或F,允许在字符串中直接嵌入表达式。原创 2025-10-04 22:30:01 · 494 阅读 · 0 评论 -
Python @装饰器用法详解
自定义装饰器就是创建一个包装函数接受一个函数作为输入添加一些额外功能返回一个新的函数(通常调用原始函数)使用@装饰器名语法来应用这样你就能在不修改原函数的情况下,给函数添加各种通用功能!")")原创 2025-10-06 21:51:53 · 1532 阅读 · 0 评论 -
Git仓库Python文件Pylint静态分析
这个命令是在对Git仓库中的所有Python文件运行Pylint代码分析工具。原创 2025-10-06 20:53:21 · 495 阅读 · 0 评论 -
Python命令行参数解析全面总结
参数类型选择主要操作对象 → 位置参数配置选项 → 选项参数开关标志 →nargs使用指南可选值 →nargs='?多个值 →nargs='*'(可选) 或nargs='+'(至少一个)固定数量 →nargs=Naction使用场景布尔标志 →store_true收集多个值 →append计数 →count其他提示为所有参数添加help描述为常用选项设置合理的默认值使用type参数进行类型验证使用choices限制有效值范围。原创 2025-06-22 16:33:49 · 1068 阅读 · 0 评论 -
Python开启Http Server
用 Python 部署了一个具有 FTP 功能的服务器,电脑在局域网内通过 FTP 下载想要传输的文件。原创 2023-07-09 21:34:23 · 3548 阅读 · 0 评论 -
Python格式化工具推荐
工具适用场景风格决策Black追求极简统一,团队协作首选工具决定autopep8需要渐进式PEP 8合规用户配置yapf需要深度自定义风格用户配置2025年趋势:Black已成为Python社区事实标准,新项目优先推荐使用。大型项目常采用 Black + isort + flake8组合(格式化+导入排序+代码检查)。原创 2025-06-15 19:31:07 · 1035 阅读 · 0 评论 -
vscode code-server
ipad上,在浏览器输入。原创 2025-10-06 23:55:38 · 160 阅读 · 0 评论 -
VSCode CMake debug
不需要使用launch.json,使用UI操作即可。需要确保setting.json中配置的cmake路径是正确的,如果不确定可以临时的注释掉,确保vscode可以用到正确的cmake工具。原创 2025-10-05 00:17:43 · 259 阅读 · 0 评论 -
Ninja构建系统前世今生解析
前世:Ninja 诞生于 Google Chrome 项目对构建速度的极致追求,是为了解决 GNU Make 在超大规模项目中的性能瓶颈而生的“专用赛车”。今生:Ninja 凭借其“做好一件事”的极简哲学和无可匹敌的速度,与 CMake 等元构建系统形成了黄金组合,成为了 C/C++ 领域高性能构建的标杆。现状:如今,几乎所有主流的 C/C++ 项目(无论是开源如 LLVM/Clang, Android NDK,还是商业项目)都推荐或支持使用进行构建。原创 2025-09-16 12:25:36 · 118 阅读 · 0 评论 -
Ninja与Makefile性能比较及CMake优势
特性MakeNinja结果设计目标通用任务运行器极致速度的编译器驱动器Ninja目的纯粹依赖检查需要启动Shell进程,高开销内置检查,几乎零开销Ninja大幅胜出并行构建基础调度器深度优化的智能调度器Ninja更高效文件格式复杂,包含逻辑,解析慢简单,声明式,解析极快Ninja加载更快功能特性强大(函数、条件、变量)极简(仅依赖和命令)Make更灵活适用场景中小型项目,需要灵活性的脚本大型项目(如OS、浏览器),CI/CD根据规模选择。原创 2025-09-10 17:49:34 · 338 阅读 · 0 评论 -
嵌入式Secure Boot安全启动详解
Secure Boot(安全启动)是一种安全机制,其核心目的是确保设备只能运行经过制造商授权和认证的软件代码。你可以把它想象成一个层层递进的安检系统最可信的起点:设备上电后,首先执行的是芯片内部ROM中固化的、无法被修改的一小段代码,称为Boot ROM或ROOT OF TRUST(信任根)。这是整个安全启动链条的绝对信任基础。逐级验证信任根代码会去验证下一阶段要执行的引导程序(例如 Bootloader)的数字签名。验证方式通常是使用非对称加密算法(如RSA、ECC)。信任根里存储了开发者的。原创 2025-09-07 23:11:34 · 539 阅读 · 0 评论 -
nuttx调度策略
特性SCHED_FIFOSCHED_RR中文名先进先出调度轮询调度分时调度核心机制运行至完成时间片轮转动态优先级调整同优先级调度先就绪的先运行,直到它主动放弃轮流运行,时间片用完即切换复杂的动态调整,追求公平是否会强制切换否是(时间片耗尽时)是(由调度算法决定)确定性高高低风险高(易导致同优先级任务饿死)低低(但对实时任务来说是“饿死”)适用场景硬实时任务,要求极确定的响应通用实时任务,最常用非实时后台任务NuttX 像一辆 F1 赛车。原创 2025-09-02 11:57:54 · 135 阅读 · 0 评论 -
ccache编译加速配置
检查配置,输入命令,检查使用的编译器是否为 ~/.tools/cc,是则配置完成,否则检查环境变量是否配置成功which gcc使用ccache首次执行时,需要使用distclean清理中间文件,然后使用 time ./build.sh sim:mirtos -j 进行编译编译完成后 ,可通过ccache -s 查看当前已缓存文件数再次编译时,会自动选择文件缓存,再次使用 ccache -s 可以查看文件缓存的命中率使用注意。原创 2025-09-01 20:25:38 · 125 阅读 · 0 评论 -
JetBrains Mono字体
编码正文:无脑选Regular。这是为代码阅读优化的核心字重。追求更清晰显示:如果你的屏幕分辨率很高(如 4K 或 Mac 的 Retina 屏),可以尝试Medium,它会看起来更扎实。注释与强调:使用Italic(斜体)风格来显示注释,使用Bold(粗体)来强调关键字(通常由你的IDE主题自动管理)。标题与展示:在文档、幻灯片或海报中,可以使用LightExtraLight来做大标题,用ExtraBold来做短小精悍的强调。个性化。原创 2025-08-21 10:13:46 · 429 阅读 · 0 评论 -
XIP (eXecute In Place)
想让 CPU 跑得快,要么用 NOR 直接喂指令,要么把 NAND 的代码先搬到 RAM 这个“高速食堂”再吃!试图在 NAND 上 XIP 会导致 CPU 长时间停滞,性能完全不可接受。这就像 CPU 把 NOR 当作一块慢一点的 RAM 来用。这能节省 RAM 空间,加快启动速度。从存储介质复制到 RAM,而是。原创 2025-06-29 22:33:34 · 373 阅读 · 0 评论 -
python logging模块
以下是 Python 中 模块的基础使用示例和配置说明:进阶配置版(同时输出到控制台和文件)关键配置说明:日志级别(从低到高):常用配置方式:推荐格式元素:最佳实践:根据需求选择适合的配置方式,复杂项目推荐使用进阶配置实现更精细的控制。你提到的 是日志记录中非常重要的一个格式字段,它的值来源于 logger 的名称。具体来说:默认情况:自定义 logger:此时 会显示 或当前模块的 (如 )实际应用场景场景1:直接使用模块函数(root logger)场景2:使用原创 2025-04-05 14:45:23 · 237 阅读 · 1 评论 -
X macro
X Macro 是 C 和 C++ 中强大的工具,适用于需要在多个地方使用同一组数据的场景,如枚举、字符串映射、状态机等。但使用时需要平衡代码的可维护性和可读性,确保团队成员理解这种技巧。当然!下面是一个更复杂的例子,展示了如何使用X Macro实现一个命令处理系统,同时结合枚举、函数指针和字符串映射。这个例子更贴近实际应用,例如 CLI(命令行接口)程序或嵌入式系统的命令解析器。原创 2025-01-13 19:40:26 · 1235 阅读 · 0 评论 -
md5sum -c
命令用于验证文件的 MD5 校验和是否匹配。具体来说,-c选项告诉md5sum命令去读取指定文件(通常是一个包含 MD5 校验和的文件),并与实际文件的 MD5 校验和进行比较。原创 2024-12-14 23:27:46 · 913 阅读 · 0 评论 -
pdf merge
你可以使用工具来解除PDF的密码保护,从而避免每次都需要输入密码的麻烦。Ghostscript 是一个功能强大的工具,也支持 PDF 合并操作。是一个灵活的 PDF 工具,支持加密、解密和合并等功能。是一个强大的 PDF 工具,支持合并、拆分和其他操作。要合并特定的PDF文件,比如1-6个文件,而不包括7-8,你可以使用。是一个开源的命令行工具,适合处理PDF文件,包括移除密码保护。如果文件名的格式不同,确保在命令中使用正确的文件名即可。命令行工具,并指定你想要合并的文件。是一个简单且高效的工具,通常是。原创 2024-12-12 17:14:20 · 1246 阅读 · 0 评论 -
Linux重定向2>&1
的作用是将标准错误输出重定向到标准输出的文件描述符上,这样任何发送到标准错误的消息都会被重定向到标准输出。这在脚本和命令行中非常有用,特别是当你希望将所有输出(包括错误消息)都捕获到同一个地方时。是一种重定向操作符,常用于将标准错误输出(stderr,文件描述符2)重定向到标准输出(stdout,文件描述符1)。例如,下面这个命令将标准输出和标准错误都重定向到一个文件。在Linux和其他类Unix操作系统中,原创 2025-01-11 12:52:47 · 920 阅读 · 0 评论 -
clang和gcc的区别
Clang 是一个由 LLVM 项目开发的 C/C++/Objective-C 编译器前端,其目的是提供一个现代化、模块化、高性能的编译器替代 GCC。原创 2024-12-04 20:56:37 · 2431 阅读 · 0 评论 -
Python魔法函数
在Python中,的确有“魔法函数”(Magic Methods)这种说法,也被称为特殊方法(Special Methods)。这些函数的名称以双下划线开始和结束,例如__init____len__等。它们为Python提供了一种约定俗成的方式,使得用户定义的类能够与Python的内置操作和语法进行交互。原创 2025-02-02 17:54:16 · 471 阅读 · 0 评论 -
gdb打印某一个地址的值
在gdb中,你可以使用x(examine)命令查看从指定地址开始的内存内容。原创 2024-11-20 15:15:47 · 881 阅读 · 0 评论 -
嵌入式必会的几条ARM汇编指令
此处是学习韦老师的视频整理的,视频中也有讲解这6个指令,参考链接:https://www.bilibili.com/video/BV17U4y1K7EL/?这个示例代码从内存读取一个数据,加上一个常数,然后存回内存。之后调用一个子程序,该子程序修改寄存器值并返回主程序。就这几条混个面熟就行。原创 2024-06-10 12:02:58 · 756 阅读 · 0 评论 -
python print变量用法
多个变量之间用逗号分隔,打印时会自动以空格分隔开。函数打印完内容后会以换行符结尾。,两个单词之间没有换行。参数将输出打印到文件中。在 Python 中,参数来改变结尾字符。原创 2024-08-27 10:04:43 · 1300 阅读 · 0 评论 -
gcc编译选项-Wl
这个参数会指示链接器生成一个包含内存映射信息的文件,该文件可以提供关于程序的各个段(如代码段、数据段等)在内存中的布局信息,以及链接的对象文件和库的详细信息。这对于分析程序的内存使用情况、调试链接问题等非常有帮助。放在命令行中,可能不会被正确地传递给链接器,具体效果取决于编译器的实现和版本。是你想要生成的 MAP 文件的名称,可以根据实际情况进行修改。可以明确地将参数传递给链接器,确保参数被正确处理。,但通常情况下推荐使用。这是一个 shell 重定向操作。在使用 GCC 编译时,原创 2024-09-18 21:50:24 · 988 阅读 · 0 评论 -
Python进制转换
是两个常用的函数,分别用于处理整数和进制转换。本文将详细介绍它们的功能、区别以及如何结合使用。的用法,你可以轻松处理各种进制转换问题!希望这篇文章对你有帮助,欢迎在评论区讨论!可以结合使用,实现进制之间的灵活转换。函数用于将其他类型的数据(如字符串、浮点数等)转换为。假设我们需要将十六进制字符串。在 Python 中,原创 2025-02-16 22:50:44 · 525 阅读 · 0 评论
分享