嵌入式基础
文章平均质量分 84
aFakeProgramer
Adaptive AUTOSAR技术专家,2024 AUTOSAR中国官方TOP培训讲师。深耕汽车电子软件领域,精通Adaptive AUTOSAR架构及RTA-VRTE工具链,实战经验丰富。深入掌握SOME/IP、IPC、DDS、DoIP、UDS、TSN等通信协议,熟悉SOA设计、V2X与车载网络安全。熟练使用C++和Python进行系统开发与集成,具备MQTT、加密机制等智能网联技术应用能力。致力于将复杂技术通俗化,推动汽车软件架构向服务化、智能化发展。持续分享Adaptive AUTOSAR、DDS、TSN及车载以太网等前沿技术实践,助力工程师快速掌握下一代汽车电子开发核心技能。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CPU使用率深度解析:从基础原理到实战应用指南
增加核心数可提升高使用率下的系统稳定性,但无法消除100%使用率时的性能悬崖效应。:CPU无"部分使用"状态,与内存/硬盘的连续型使用模式有本质区别。:40% CPU使用率 = 40%容量被使用,60%空闲。:核心数越多,性能拐点越向右偏移(可承受更高使用率)。:无论核数多少,使用率接近100%时均会出现。:日常运维中,70%使用率是交互型应用的。(U=单核使用率,n=CPU核心数):10个时钟周期内40%使用率 =(0%空闲或100%忙碌)。:超过70%后,排队时间呈。越高越好(接近100%)原创 2026-03-03 17:15:10 · 313 阅读 · 0 评论 -
在 CMakeLists.txt 中场景的变量,如何打印变量
除了 CMake 内置变量,还可以自定义变量,配合set()命令使用:cmake# 定义自定义变量(可设默认值)set(APP_VERSION "1.0.0" CACHE STRING "应用版本号")set(ENABLE_LOG ON CACHE BOOL "是否开启日志功能")# 打印自定义变量message(STATUS "应用版本: ${APP_VERSION}")message(STATUS "日志功能: ${ENABLE_LOG}")# 条件使用自定义变量。原创 2025-11-18 11:16:05 · 873 阅读 · 0 评论 -
串口通讯、RS232与RS485的本质区别与应用解析
于是,人们发明了“扩音器”——RS232,嗓门一提,十几米外也能喊话清晰。可要是到了工厂这种又吵又远的地儿,光靠吼也不行了,那就得上“对讲机系统”——RS485,不仅抗干扰、传得远,还能一群人组队群聊。单片机本身输出的是 TTL 电平,我们只需要在原来串口通讯的基础上加一个电平转换芯片,例如MAX232,这样它就能把TTL电平转换为RS232电平了。今天,咱们就来聊聊这三位“通信兄弟”:低调的TTL、中气十足的RS232,和工业硬汉RS485,看看它们到底是怎么“说人话”(或者“说电平”)的。原创 2025-10-13 17:44:48 · 1151 阅读 · 0 评论 -
RS232 串口通信接口和代码实现红绿灯控制
1——东西方向红灯;2——东西方向黄灯;3——东西方向绿灯;4—— 避开发送 0x0A的底层却发送0x0D0x0A问题5——南北方向红灯;6——南北方向黄灯;7——南北方向绿灯。https://blog.csdn.net/qiaoliang328/article/details/61539980x0A的...原创 2019-09-16 15:55:37 · 2611 阅读 · 0 评论 -
串口调试助手如何使用
需要设置好对应的串口端口,波特率、校验位、数据位、停止位,然后打开串口。这是一个绿色版的,比深蓝串口调试助手好用的多。原创 2019-09-16 16:01:03 · 11075 阅读 · 0 评论 -
编译之舞:C/C++ 与 GCC 的协作曲
在现代计算的舞台上,编程语言如同舞者,而编译器则是那幕后默默引导的编舞师,每一次代码的编写都像是一场精心设计的舞蹈。在这个舞台上,C 语言和 GCC(GNU Compiler Collection)是一对经典的搭档。它们共同演绎了一场编译的华美舞蹈,从源代码到可执行文件的华丽蜕变。本文将探索 C 语言与 GCC 之间的这种美妙协作,并深入了解它们是如何共同创造出那些最终运行在计算机上的程序。转载 2025-09-12 11:01:51 · 151 阅读 · 0 评论 -
GCC编译器版本兼容性分析:11.4与12.2混合使用的风险与解决方案
使用GCC 11.4编译的C++库文件与GCC 12.2编译的代码在同一个程序中链接和运行,,可能导致链接错误或运行时崩溃。。虽然GCC 11.4和12.2在C++17支持上基本一致,但标准库的底层实现差异可能导致程序行为不可预测。本文将深入分析这种混合编译环境可能带来的兼容性问题,并提供实用的解决方案。原创 2025-08-27 10:29:11 · 965 阅读 · 0 评论 -
使用 GCC 11.4 编译生成的 C++ 库文件与使用 GCC 12.2 编译的代码在同一个程序中链接和运行,可能会带来哪些兼容性问题或运行时风险?
风险类型可能性严重性说明标准库 ABI 不匹配高灾难性导致段错误、数据损坏、不可预测行为异常处理失败高高程序在抛出异常时意外终止符号版本冲突中高程序无法启动,动态链接错误RTTI/dynamic_cast 失效中中/高多态和类型转换出现逻辑错误微妙的运行时行为差异低不定难以调试的间歇性故障。原创 2025-08-27 10:13:33 · 1046 阅读 · 0 评论 -
VSCode常用快捷键
原创 2025-08-26 15:33:40 · 149 阅读 · 0 评论 -
为什么libc++.so.6的库可以替换成高版本的,但是libc.so.6.0的库却是万万不能的?
在Linux系统中,libc.so.6(glibc)和libc++.so.6(libc++)虽然都是核心库,但它们的版本替换风险差异显著。glibc作为系统底层基础库,几乎所有动态链接的程序都依赖它,替换高版本可能导致系统工具崩溃甚至无法启动,恢复难度极大,因此应始终通过系统包管理器升级。相比之下,libc++主要用于C++程序,非系统底层必需,替换失败通常只影响少数应用,恢复较为容易,可通过包管理器或手动安装多版本共存。简言之,glibc是系统的“地基”,而libc++只是“墙面装饰”,前者一旦出错,系统原创 2025-05-21 10:31:52 · 788 阅读 · 0 评论 -
ARM全新Armv9架构(armv8、armv9架构的差异)
在具体细节上,Armv9 架构沿用 AArch64 基准指令集,并在功能方面添加了一些非常重要的扩展,从而确保 ARM 公司增加架构编号,并针对 v9 架构新特征以及多年来发布的各种 v8 架构扩展进行软件层面的基准重定。对于全新的 Armv9 架构,ARM 公司 CEO 西蒙 · 塞加斯(Simon Segars)表示,「v9 架构将提升安全性和信任度,并为未来十年的计算机技术奠定基础。ARMV8 、V9 是 ARM 架构的两个不同版本,它们在性能、安全和功能方面都有显著的差异。转载 2025-04-16 14:23:40 · 2982 阅读 · 0 评论 -
一文说明 CPU亲和性(CPU Affinity)
就是利用特殊的硬件指令,把两个逻辑内核(CPU core)模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。我们常听到的双核四线程/四核八线程指的就是支持超线程技术的CPU.:机器上安装的实际CPU, 比如说你的主板上安装了一个8核CPU,那么物理CPU个数就是1个,所以物理CPU个数就是主板上安装的CPU个数。转载 2024-11-15 10:32:05 · 2680 阅读 · 0 评论 -
一步步教你:如何用Qemu来模拟ARM系统
在实际验证的时候,发现一个现象:很多文章虽然给出了或简单、或详细的操作步骤,但是大部分都没有写清楚操作的背景、各个软件的版本,这就导致需要把整个文章看完了、把所有的操作步骤都做了一遍,才明白作者想表达的是什么意思,操作的目的是什么。这里的操作过程有些还需要继续深入,比如:在系统启动之后,自动挂载宿主机(Ubuntu系统)中的某个文件夹,这样就可以把hello等可执行程序复制到挂载目录中,然后在ARM系统中直接执行了,而不用再执行下面在一连串的操作(停止虚拟机-挂载磁盘镜像-复制文件-卸载-启动虚拟机)。转载 2024-11-12 14:34:19 · 7582 阅读 · 0 评论 -
QNX与Linux差异一览
首先,QNX系统没有tcpdump工具(文档中是有的,实际在环境中并没有),真是非常可惜,Linux系统支持tcpdump,支持libpcap库所提供的相关特性。而对QNX系统交叉编译时,首先需要调用qnxxxx_env脚本初始化环境,必须要显示的用-l c指定c库的链接,同时需要指定std的语言,同时QNX系统支持qcc和gcc两套编译器,亲测均可生成在QNX系统上运行的可执行文件。QNX系统根目录下有debug、dev、etc、lib、opt、proc、bin、sbin、tmp、usr、var目录。转载 2024-04-11 09:55:24 · 5884 阅读 · 4 评论 -
Linux 黑话解释:什么是 POSIX?
与其说 POSIX 是一个东西,不如说是一个标签。想象一下,有一个盒子,上面贴着标签:POSIX,而盒子里是一个标准。该标准由 POSIX 所关注的规则和指令集组成。POSIX是可移植操作系统接口Portable Operating System Interface 的缩写。它是一个 IEEE 1003.1 标准,其定义了应用程序(以及命令行 Shell 和实用程序接口)和 UNIX 操作系统之间的语言接口。当 UNIX 程序从一个 UNIX 平台移植到另一个平台时,遵守该标准可以确保其兼容性。转载 2024-04-08 13:49:46 · 686 阅读 · 0 评论 -
在 GitHub 上下载了一个 C++ 工程,并且该工程包含了 CMakeLists.txt 文件,该如何编译这个工程呢?
是你工程中生成的可执行文件的名称。根据你的工程,你需要替换它为实际的可执行文件名。如果你在 GitHub 上下载了一个 C++ 工程,并且该工程包含了。请注意,上述步骤中的。原创 2024-02-28 13:51:31 · 1880 阅读 · 0 评论 -
Linux的 .bashrc 有什么作用?
CSDN博客. https://blog.csdn.net/Heyyellman/article/details/111565781.-CSDN博客. https://blog.csdn.net/Heyyellman/article/details/111565781.每次你启动一个新的终端时,.bashrc文件就会被执行,加载你设置的环境变量,别名,函数等。例如,你可以用别名来缩短常用的命令,用函数来组合多个命令,用bash提示符来显示你想要的信息,甚至用颜色和图标来美化你的终端。原创 2024-01-26 10:58:08 · 3162 阅读 · 0 评论 -
在Linux中查看进程的状态
在Linux中,您可以使用ps命令来查看进程的状态。ps命令可以显示当前运行的进程的相关信息,包括进程的PID、状态、CPU和内存占用等。ps命令有很多参数,可以用来控制显示的格式和内容。如果您想了解更多关于Linux进程的知识,您可以点击以下链接:(1) Linux中进程的六种状态_进程sleep状态-CSDN博客. https://blog.csdn.net/qq_49613557/article/details/120294908.转载 2024-01-26 10:36:43 · 3231 阅读 · 0 评论 -
浅谈可重入函数与不可重入函数
所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。也可以这样理解,重入即表示重复进入首先它意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外。转载 2024-01-26 09:26:23 · 173 阅读 · 0 评论 -
Linux系统中的bash 进程和init进程还有systemd进程分别有什么作用,他们之间有什么联系?
根据Linux惯例,字母d是守护进程(daemon)的缩写systemd的含义是它要守护整个系统。systemd是为了解决initd的缺点问题而诞生的, 它为系统的启动和管理提供了一套完整的解决方案。使用systemd就不再需要initd了,它成了系统的第一个进程(PID= 1),其它进程都是它的子进程。systemd初始化进程服务采用并发启动机制,开机速度得到了很大的提升。可以用命令命令 查看systemd的版本。systemd。原创 2024-01-24 09:18:37 · 2955 阅读 · 0 评论 -
Linux启动流程 梳理| 思维导图 | 流程图 | 值得收藏
Linux启动流程总的来说可以分成三个阶段Linux启动流程总的来说可以分成三个阶段Linux启动流程图第一步:上电在 x86 系统中,将 1M 空间最上面的 0xF0000 到 0xFFFFF 这 64K 映射给 ROM。当电脑刚加电的时候,会做一些重置的工作,将 CS 设置为 0xFFFF,将 IP 设置为 0x0000,所以第一条指令就会指向 0xFFFF0,正是在 ROM 的范围内。在这里,有一个 JMP 命令会跳到 ROM 中做初始化工作的代码,于是,BIOS 开始进行初始化的工作。转载 2024-01-22 09:35:51 · 2688 阅读 · 0 评论 -
为什么MCU一般跑RTOS,SoC一般跑嵌入式Linux?
MCU(Microcontroller Unit)和SoC(System on a Chip)是两种不同的嵌入式系统,它们通常运行不同类型的操作系统,具体取决于其应用场景和硬件资源。转载 2024-01-22 09:27:46 · 1226 阅读 · 0 评论 -
Hypervisor 和Docker 还有Qemu有什么区别与联系?
Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,可以让多个操作系统和应用共享硬件资源,也叫做虚拟机监视器(VMM)¹。Hypervisor有两种类型:Type I和Type II²。Type I 直接运行在硬件上,例如KVM,Xen,Hyper-V等。Type II 运行在一个已有的操作系统上,例如VMware Workstation,VirtualBox等。原创 2024-01-22 09:06:32 · 2275 阅读 · 0 评论 -
QEMU架构浅析
特别是缓冲区溢出攻击等内存损坏漏洞,这些漏洞利用威胁代理(例如后门)提供的特殊代码覆盖易受攻击的应用程序代码,如果已经被覆盖的代码已经被运行(并因此被缓存),出了正常运行的会导致漏洞攻击利用外,更多的时候则会导致TCG运行和翻译失败,从而导致程序复现异常或崩溃。因此,对于技术人员来说,了解QEMU是一项艰巨的任务。,本质上,KVM是管理虚拟硬件设备的驱动,该驱动使用字符设备/dev/kvm(由KVM本身创建)作为管理接口,主要负责vCPU的创建、虚拟内存的分配、vCPU寄存器的读写以及vCPU的运行。转载 2024-01-19 21:17:14 · 772 阅读 · 0 评论 -
TDA4 Linux BSP ,SD卡制作
Operation Finished 看到这个,就说明你的BSP拷贝到SD卡搞好了。下面为制作SD卡和拷贝BSP的log。原创 2024-01-15 18:24:51 · 1493 阅读 · 0 评论 -
S32V234 Linux yocto开发环境搭建
一、主机环境主机: Ubuntu 16.04.5 64bitS32V bsp infomation:Bsp version:auto_yocto_bsp_19.0 ;Linux Kernel version: 4.13.34 ;Yocto Project version: 2.1 ;开发板SBC-S32V234官网资料:https://www.nxp.com/design/development-boards/automotive-development-platforms/s32v-mpu-platfor原创 2022-06-15 16:57:01 · 1968 阅读 · 0 评论 -
详解三大编译器:gcc、llvm 和 clang
回顾 GCC 的历史,虽然它取得了巨大的成功,但开发 GCC 的初衷是提供一款免费的开源编译器,仅此而已。可后来随着 GCC 支持了越来越多的语言,GCC 架构的问题也逐渐暴露出来。但 GCC 到底有什么问题呢?LLVM 的优点也正是 GCC 的缺点。传统编译器工作的时候前端负责解析源代码,检查语法错误,并将其翻译为抽象的语法树(Abstract Syntax Tree)。优化器对这一中间代码进行优化,试图使代码更高效。转载 2023-12-12 17:04:51 · 46894 阅读 · 5 评论 -
保护嵌入式系统的要素2—信任根 (RoT)
信任根应该是基于硬件且不可变的,信任根不能被篡改,然后允许系统检测以后加载的软件是否可以信任。信任根是一个不可变的过程或身份,用作信任链中的第一个实体。换句话说,嵌入式开发人员的信任根是一个不可更改的身份和最小的软件集,可以成功地验证自己并促进系统上的安全操作。在为我们的产品选择微控制器时,我们必须确保我们可以永久“burn-in”信任根使用的重要信息,例如公司私钥,一旦进入微控制器,我们不希望这些信息是可变的。使用供应商建立的信任根,我们可以使用现有的信任根将我们的信任根转移到设备。转载 2023-10-11 14:03:33 · 463 阅读 · 0 评论 -
53页PPT,看懂IPv6/IPv6+
转载 2023-10-09 11:21:02 · 390 阅读 · 0 评论 -
QNX入门-简介、开源代码、框架文档
通过一个透明的开发过程,QNX的软件设计师将公布开发计划,新的源码,以及出错修改,并对开发进程进行监控。进行了隔离,内核和各种驱动、协议栈在同一个地址空间,应用程序在单独空间。,”Dan Dodge,QNX软件系统公司首席执行官说,“所有的商业开发者以及爱好者,都将史无前例地接触我们的软件中的‘皇冠上的珠宝’,并以此为基础来创造下一代的计算机技术革新。QNX 内核自身开销小、上下文切换快,在同样的硬件条件下给实时应用留下更大的余地,因而它在实时控制、通信、多媒体信息处理等对时间敏感的应用领域大有用武之地。转载 2023-10-06 16:32:06 · 9383 阅读 · 0 评论 -
40 个简单又有效的 Linux Shell 脚本示例
历史上,shell 一直是类 Unix 系统的本地命令行解释器。它已被证明是 Unix 的主要功能之一,并发展成为一个全新的主题。Linux 提供了各种功能强大的 shell,包括 Bash、Zsh、Tcsh 和 Ksh。这些外壳最令人惊讶的特性之一是其可编程性。创建简单而有效的 Linux shell 脚本来处理日常工作非常容易。转载 2023-10-05 16:59:39 · 819 阅读 · 0 评论 -
让你遥遥领先的7个编程习惯
我和很多杰出的软件工程师们一起工作过,他们有的来自FAANG之类的大公司,有的来自正处于创业阶段的小公司。这些工程师中有人自主创业,也有人在大型科技公司领导了数十亿美元的项目。在我与他们一起工作的时间里,我注意到他们绝大部分人的一些共通的编程和工作习惯。我想,或许正是这些习惯让他们成为了行业金字塔中最顶尖的那1%。工程是为了解决问题而诞生的。最好的工程师将代码视为达到目的的手段。虽然写代码是一种乐趣,但没有目的地写代码是没有意义的。代码应该用于为用户设计解决方案。某种意义上,编程是一种创造性的追求。转载 2023-10-05 16:53:46 · 167 阅读 · 0 评论 -
CMake 学习笔记
是一个根据。原创 2023-09-23 20:49:51 · 574 阅读 · 0 评论 -
一文搞懂 CPU 使用率
用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题。系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题。I/O 等待 CPU 高,说明等待 I/O 的时间比较长,所以应该着重排查系统存储是不是出现了 I/O 问题。软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的 CPU,所以应该着重排查内核中的中断服务程序。转载 2023-09-12 11:24:47 · 10075 阅读 · 0 评论 -
AUTOSAR基础篇之OS(下)
如之前文章所示,AUTOSAR OS作为一实时操作系统,那么就需要在预定的时间内完成特定的任务,但有时由于某些原因导致超时错误,OS必须采用有效的方式来预防超时任务的发生,而这类措施则可以称为时间保护。根据调度规则,若在同一核上多个任务被同时调度,即这些任务均处于就绪状态,那么高优先级任务会被率先执行,如图中的Core0上的任务T2,Core1上的任务T3以及Core2上的任务T5,三个任务同时进入运行状态,各个内核上的任务独立运行,互不干扰,其优先级并没有相互影响。转载 2023-09-04 09:44:30 · 1216 阅读 · 0 评论 -
AUTOSAR基础篇之OS(上)
当前TaskC处于运行状态,激活TaskA与TaskB分别进入就绪状态,由于TaskA优先级高于TaskB,所以TaskA抢占内核运行, 但是由于Resource1仍被TaskC暂用,而TaskA无法访问到共享资源Resource1,则被迫进入到等待状态,TaskB开始运行。不过幸运的是AUTOSAR OS采用上述的优先级天花板模式来避免任务优先级反转以及死锁问题的发生,即资源的上限优先级必须高于所有该资源的任务以及中断的优先级,但是应低于不访问该资源的任务的最低优先级。转载 2023-09-04 09:38:28 · 1460 阅读 · 0 评论 -
一些关于线程的可重入和不可重入的知识
线程安全:简单来说线程安全就是多个线程并发同一段代码时,不会出现不同的结果,我们就可以说该线程是安全的;线程不安全:说完了线程安全,线程不安全的问题就很好解释,如果多线程并发执行时会产生不同的结果,则该线程就是不安全的。线程安全产生的原因:大多是因为对全局变量和静态变量的操作。原创 2023-09-01 18:01:03 · 970 阅读 · 0 评论 -
一些关于异构SOC IPC核间通信的知识
共享内存在IPC方案中,一个核可以将数据写入共享内存,Mailbox可以将内存指针传递到另一个核上,另一个核可以拿到内存指针后,直接从共享内存读取数据,这个过程不需要经过数据的拷贝,因此非常高效,适合大数据量的传输。(2) Jacinto™︎ 7核间通信解决方案 - 嵌入式处理 - 技术文章 - E2E™ 设计支持. https://e2echina.ti.com/blogs_/b/the_process/posts/jacinto-7.,它可以让不同的核之间互相发送中断信号,类似于邮箱的工作方式。原创 2023-09-01 17:47:10 · 2697 阅读 · 0 评论 -
十分钟了解RTOS!
任务或 ISR 将信息传递给另一个任务,这称为任务间通信,用于发送和接收消息的服务通常由内核提供。如此多的供应商,困难在于选择合适的RTOS。在抢占式内核中,当一个事件使高优先级的任务就绪时,当前任务立即挂起,较高优先级的任务获得CPU控制权。如果ISR使更高优先级的任务就绪,则被中断的任务挂起,恢复执行新的更高优先级的任务。是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系 统作出快速响应,并控制所有实时任务协调一致运行的操作系统。转载 2023-08-17 14:56:49 · 941 阅读 · 0 评论 -
53 张图详解防火墙的 55 个知识点
防火墙( Firewall )是防止火灾发生时,火势烧到其它区域,使用由防火材料砌的墙。后来这个词语引入到了网络中,把从外向内的网络入侵行为看做是火灾,防止这种入侵的策略叫做防火墙。后来,防火墙不但用于防范外网,例如:对企业内网的 DoS 攻击或非法访问等,也开始防范从内部网络向互联网泄露信息、把内部网络作为攻击跳板等行为。硬件防火墙可以实现CIA的机密性完整性可用性( Availability )这三种类型的对应策略。小企业会在局域网和互联网的边界部署防火墙。代理服务器是应用网关防火墙的一种。转载 2023-08-14 10:03:46 · 617 阅读 · 0 评论
分享