工具技能知识点学习
文章平均质量分 84
工具技能知识点学习
TrustZone_
一个搞技术的读书人,妄图分享最干货的技术知识与世界运转的底层逻辑。公ZH:TrustZone
展开
-
工具知识 | Linux 常用命令参考手册
每个月的最后一天就比较麻烦了, 需要配合 date 命令和 if 流程语句来实现,这里 if 语句检查明天的日期是不是01,如果是今天就是最后一天,每天中午12点检查今天是不是最后一天then;要执行的指令# 文件名为 linux-manual $ curl https://github.com/xjh22222228/linux-manual -O。原创 2024-09-10 23:00:08 · 2450 阅读 · 0 评论 -
工具知识 | Linux常用命令
参考GFM-TOCGFM-TOC。原创 2024-09-10 22:58:14 · 1699 阅读 · 0 评论 -
工具知识 | 保姆级Git教程,10000字详解
Git是一种分布式版本控制系统,它可以不受网络连接的限制,加上其它众多优点,目前已经成为程序开发人员做项目版本管理时的首选,非开发人员也可以用Git来做自己的文档版本管理工具。大概是大二的时候开始接触和使用Git,从一开始的零接触到现在的重度依赖,真是感叹Git的强大。Git的api很多,但其实平时项目中90%的需求都只需要用到几个基本的功能即可,所以本文将从实用主义和深入探索2个方面去谈谈如何在项目中使用Git,一般来说,看完实用主义这一节就可以开始在项目中动手用。原创 2024-09-10 22:43:40 · 1394 阅读 · 0 评论 -
msecs_to_jiffies is what?
函数是 Linux 内核中的一个非常有用的函数,它用于将毫秒(milliseconds)转换为内核的“jiffies”单位。在 Linux 内核中,jiffies是一个全局变量,代表自系统启动以来经过的“滴答”(ticks)数,这里的“滴答”是系统时钟的一个固定周期,通常是几毫秒(如 10ms,但这取决于系统的 HZ 值,即每秒的时钟中断次数)。原创 2024-08-16 22:42:56 · 762 阅读 · 0 评论 -
数字电路波形图绘制工具WaveDrom简介
WaveDrom是一个免费和开放源代码的在线数字时序图(波形)渲染引擎,使用javascript,HTML5和SVG将WaveJSON输入文本描述转换为SVG矢量图形。WaveJSON是JSON格式的应用程序。WaveJSON的目的是为数字硬件/ IC工程师使用的数字时序图提供一种紧凑的交换格式。WaveDrom可以支持在线使用https://wavedrom.com/editor.html。原创 2024-08-09 23:09:58 · 1826 阅读 · 0 评论 -
基础概念 | DDR的几个概念
答:CPU与内存之间的接口位宽是64bit,也就意味着CPU在一个时钟周期内会向内存发送或从内存读取64bit的数据。可是,单个内存颗粒的位宽仅有4bit、8bit或16bit,个别也有32bit的。因此,必须把多个颗粒并联起来,组成一个位宽为64bit的数据集合,才可以和CPU互连。生产商把64bit集合称为一个物理BANK(Physical BANK),简写为P-BANK。为了和逻辑BANK相区分,也经常把P-BANK称为RANK或Physical RANK,把L-BANK则简称为BANK。原创 2024-07-22 13:53:11 · 920 阅读 · 0 评论 -
面试真题 | 说说TCP为什么需要三次握手和四次挥手?
三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备过程如下:上述每一次握手的作用如下:通过三次握手,就能确定双方的接收和发送能力是正常的。之后就可以正常通信了如果是两次握手,发送端可以确定自己发送的信息能对方能收到,也能确定对方发的包自己能收到,但接收端只能确定对方发的包自己能收到 无法确定自己发的包对方能收到并且两次握手的话, 客户端有可能因为原创 2024-07-14 21:33:09 · 850 阅读 · 0 评论 -
通信协议 | 三次握手、七次握手、四次挥手
客户端想要通过 HTTP 请求访问服务端时,需要经过三次握手;通过 HTTPS 访问服务端时,需要额外增加四次握手。TCP 协议需要通过三次握手建立可靠连接。想要建立 HTTPS 安全连接,需要在 TCP 可靠连接基础上使用 TLS 协议。TLS 协议需要四次握手才能建立安全连接。终止 TCP 可靠连接时需要四次挥手。需要注意的是,本文所说的三次握手、七次握手、四次挥手都是基于特定版本的协议,不同版本的协议所需握手次数可能不同。原创 2024-07-14 21:25:49 · 2139 阅读 · 0 评论 -
网络协议 | MQTT协议草案5.0中文版
MQTT是一个客户端-服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。MQTT协议5.0版本在3.1.1版本的基础上增加了会话/消息延时功能、原因码、主题别名、in-flight流控、属性、共享订阅等功能,增加了用于增强认证的AUTH报文。原创 2024-07-06 12:48:28 · 776 阅读 · 0 评论 -
共享库的加载时重定位
本文旨在解释现代操作系统如何实现使用加载时重新定位的共享库。它专注于运行在32位x86上的Linux操作系统,但一般原则也适用于其他操作系统和CPU。请注意,共享库有许多名称-共享库、共享对象、动态共享对象(DSO)、动态链接库(DLL,如果你来自Windows背景)。原创 2024-02-28 16:23:54 · 389 阅读 · 0 评论 -
芯片DFX:Coresight的两大功能
coresight具有两大功能,一个是debug,一个是trace。转载 2023-11-02 09:30:13 · 577 阅读 · 0 评论 -
芯片DFX:Coresight-APB,ATB总线
APB和ATB总线,是coresight中常用的2个总线。对于coresight组件的访问,而,使用ATB总线进行传输。转载 2023-11-01 13:24:16 · 633 阅读 · 0 评论 -
芯片DFX:Coresight-Rom Table
在一个soc中,有多个coresight组件,,去获取这些coresight组件的信息了?这个时候,就需要靠coresight组件中,ARM规定,在一个soc中,必须要实现至少1个Rom table,该Rom table,rom table只会占用一个4K空间大小,也就是PIDR4寄存器的SIZE为0。转载 2023-11-01 13:23:56 · 407 阅读 · 0 评论 -
芯片DFX:Coresight-channel interface
channel interface是用来使不同coresight组件之间传递event使用。使用两个组件来实现:◾CTM: cross trigger matrix, 接收CTI的channel信号,然后广播给其他CTI◾CTI:cross trigger interface, 接收trigger信号,发送trigger信号,接收channel信号,发送channel信号channel interface的典型应用。每个coresight组件和对应的CTI相连,那这个CTI就可以。转载 2023-10-31 20:02:48 · 402 阅读 · 0 评论 -
芯片DFX:Coresight寄存器
比如可以规定,该寄存器的最低位,表示最近该寄存器被读取过,第1位,表示最近该寄存器被写过。CLAIMCLR寄存器:CLAIMSET寄存器。转载 2023-10-31 20:02:04 · 523 阅读 · 0 评论 -
ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析
在许多应用中,我们需要对嵌入式系统进行详尽的调试和测试。此时,官方的IDE可能无法满足我们的需求,而需要寻找其他的专业工具。其中,劳特巴赫公司提供的调试工具备受推崇。该公司专门为各种不同的芯片和处理器提供高端的调试解决方案,其工具功能强大,易于使用,但价格较为昂贵。对于某些特定领域或大型项目,系统的复杂性和规模需要更强大的调试工具。此时,劳特巴赫公司成为了一个值得信赖的选择。他们的调试工具可以捕捉偶发性的问题、进行死机调试、代码分析、函数运行时间测试等操作,这些都是在开发过程中非常实用的功能。原创 2023-10-26 13:14:12 · 4856 阅读 · 0 评论 -
OTA技术,谁在受益?谁又在收益?
目前,各大OEM(Original Equipment Manufacturer)把OTA(Over the Air)技术已经玩的炉火纯青,已然成为他们修复车辆Bug的利器。甚至一些OEM每月都会去工信部报备一下,让自家"显眼包"(OTA技术)亮亮相,美其名曰:“产品优化”、“提升Xx体验”…其实呢,这都是OEM灌输给售后(4s店)的话术。当然,不排除部分功能优化体验,但是,大部分都是去修Bug的。本文,咱们聊一聊这样一个Topic(话题):OTA技术,谁在受益?谁又在收益?转载 2023-10-23 17:21:12 · 246 阅读 · 0 评论 -
借力EDA,AI芯片全速优化验证过程
半导体各领域的发展难度与日俱增,验证可能是整个发展过程中最具挑战性的阶段。多年来,研究显示在验证上投入的时间和资源所占的百分比会随着新时代芯片的出现而增加。因此整体上,。电子设计自动化(EDA)产业将人工智能(AI)的力量应用到验证过程的各个步骤,以应对这样的情况。转载 2023-10-14 16:09:53 · 608 阅读 · 0 评论 -
systemtap从入门到放弃
systemtap是一个用于简化linux系统运行形态信息收集的开源工具。它立足于性能诊断和bug调试,消除了开发人员在收集数据时需要经历的繁琐和破坏性的工具、重新编译、安装和重新引导的过程。这是systemtap官方wiki给出的介绍,这里不深究它的原理,网上有个图可以清晰得展现systemtap的五脏六腑:systemtap可以动态得hook内核代码,其底层就是使用的kprobe接口。转载 2023-10-14 15:23:36 · 625 阅读 · 0 评论 -
内存泄漏检测工具valgrind神器
常用选项,适用于所有Valgrind工具-tool= 最常用的选项。运行 valgrind中名为toolname的工具。默认memcheck。h –help 显示帮助信息。-version 显示valgrind内核的版本,每个工具都有各自的版本。q –quiet 安静地运行,只打印错误信息。v –verbose 更详细的信息, 增加错误数统计。-trace-children=no|yes 跟踪子线程?[no]-track-fds=no|yes 跟踪打开的文件描述?[no]原创 2023-10-14 14:28:23 · 1221 阅读 · 0 评论 -
Huawei LiteOS 概览
Huawei LiteOS是华为面向IoT领域,构建的轻量级物联网操作系统,可广泛应用于智能家居、个人穿戴、车联网、城市公共服务、制造业等领域。Huawei LiteOS开源项目目前支持 ARM64、ARM Cortex-A、ARM Cortex-M0,Cortex-M3,Cortex-M4,Cortex-M7 等芯片架构。任务管理提供任务的创建、删除、延迟、挂起、恢复等功能,以及锁定和解锁任务调度。支持任务按优先级高低的抢占调度以及同优先级时间片轮转调度。内存管理。原创 2023-10-11 16:00:02 · 2032 阅读 · 0 评论 -
芯片设计流片、验证、成本的那些事
芯片从设计到成品有几个重要环节,分别是设计->流片->封装->测试,但芯片成本构成的比例确大不相同,一般为人力成本20%,流片40%,封装35%,测试5%。芯片流片是高风险的事情,这个风险有多高,这个概率在15%-35%左右;不同的团队和芯片种类概率也不一样。有模拟芯片公司即使在团队完备、思路清晰的情况下,还是耗了8年时间,历经18次流片,才最终完成了传感器模拟计算IP验证,打造出了理想中的那颗超低功耗、超近传感芯片。转载 2023-10-05 20:21:19 · 2582 阅读 · 0 评论 -
Nvidia和AMD显卡是如何制作的
我们参观了世界上最大的显卡制造商之一,看看魔术是如何发生的。原创 2023-10-05 14:01:02 · 957 阅读 · 0 评论 -
深入理解bootargs
在嵌入式系统中,bootargs是非常重要的参数。它保存着Linux内核启动的相关信息,如启动参数和控制台信息等。而在ARM架构的系统中,bootargs参数则是在U-Boot引导时设置的。原创 2023-08-28 11:36:04 · 4208 阅读 · 0 评论 -
GDB调试学习(四):段错误
在gdb中运行,遇到段错误会自动停下来,这时可以用命令查看当前执行到哪一行代码了。gdb显示段错误出现在_IO_vfscanf函数中,用bt命令可以看到这个函数是被main.c的第6行间接调用的,也就是scanf这行代码引发的段错误。继续调试上一节的程序,上一节最后提出修正Bug的方法是在循环中加上判断条件,如果不是数字就报错退出,不仅输入字母可以报错退出,输入超长的字符串也会报错退出。gdb指出,段错误发生在第19行。可是这一行什么都没有啊,只有表示main函数结束的}括号。原创 2023-08-18 00:42:51 · 1093 阅读 · 0 评论 -
GDB调试学习(三):观察点
这个暂时解释不了,但123407这个结果可以解释了,是12345×10 + 0x05-0x30得到的,虽然多循环了一次,但下次一定会退出循环了,因为0x05的后面是’\0’。已经很明显了,每次都是回到for循环开头的时候改变了input[5]的值,而且是每次加1,而循环变量i正是在每次回到循环开头之前加1,原来input[5]就是变量i的存储单元,换句话说,i的存储单元是紧跟在input数组后面的。怎么会有下一次循环呢?=‘\0’,而本来应该是0x00的位置现在莫名其妙地变成了0x04,因此循环不会结束。原创 2023-08-18 00:41:48 · 331 阅读 · 0 评论 -
GDB调试学习(二):断点
至于应该在哪里设置断点,怎么知道哪些代码可以跳过而哪些代码要慢慢走,也要通过对错误现象的分析和假设来确定,以前我们用printf打印中间结果时也要分析应该在哪里插入printf,打印哪些中间结果,调试的基本思路是一样的。接下来的循环从左到右扫描字符串并把每个数字累加到结果中,例如输入"2345",则循环累加的过程是(((0×10+2)×10+3)×10+4)×10+5=2345。可见断点有助于快速跳过没有问题的代码,然后在有问题的代码上慢慢走慢慢分析,“断点加单步”是使用调试器的基本方法。原创 2023-08-17 09:05:48 · 432 阅读 · 0 评论 -
GDB调试学习(一):单步执行和跟踪函数调用
程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪。到目前为止我们的调试手段只有一种:根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,基本上证明了自己假设的错误原因,就可以动手修正Bug了,如果结果和预期的不一样,就根据结果做进一步的假设和分析。原创 2023-08-16 11:32:39 · 1840 阅读 · 0 评论 -
【转】万字长文解读 Linux 内核追踪机制
注入到我们想要追踪的内核函数执行前后,当内核函数执行时触发我们定义的函数,我们在函数中实现获取我们想要的上下文信息并保存下来。转载 2023-07-21 00:15:51 · 437 阅读 · 0 评论 -
TCM、ITCM、DTCM
TCM=Tightly Coupled Memory,是一种高速缓存,据说是被直接集成在CPU芯片中。注意:1.内存支持列表中,内存详细参数里,SS指的是单面内存,DS指的是双面内存。内存一共有两面,根据内存总容量和内存芯片的存储容量,内存厂家会生产双面内存和单面内存,也就是内存的两面都有存储芯片,或者只有一面有存储芯片。单双面内存在兼容性上有一定区别,所以会单独列出来。2。ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线。原创 2023-07-20 00:15:23 · 3987 阅读 · 0 评论 -
什么是BSDL&SVF文件?
在某些情况下,制造商需要实现与标准包中定义的单元不同的单元,在这种情况下,BSDL 文件需要包含有关此类自定义单元的信息,方法是将数据直接包含在文件中,或者更常见的是,通过添加对单独 VHDL 包文件的调用。自定义单元格包文件的调用方式与标准单元格的调用方式类似:例如,要调用文件 MyPackage,将输入语句“use MyPackage.all”。由于单元格可以以许多不同的方式使用,因此自定义单元格包将包含每个单元格的几条信息,以描述它如何在每种使用模式下响应不同的命令。原创 2023-07-04 23:35:47 · 945 阅读 · 0 评论 -
万文长字带你搞懂JTAG的门门道道
JTAG:Joint Test Action Group“(联合测试工作组) 的英文缩写边界扫描要求符合IEEE1149.1 (JTAG) 标准BSDL(Boundary- ScanDescriptionLanguage)边界扫描描述语言边界扫描测试 (Boundary-Scan-TEST):对符合IEEE1149.1标准的器件,通过BSDL文件生成测试向量, 测试器件开路短路的一种测试方法边界扫描(Boundary Scan)测试发展于上个世纪90年代,随着大规模集成电路的出现,原创 2023-07-02 13:28:32 · 618 阅读 · 0 评论 -
FMC&FSMC
同步/异步静态存储器-------SRAM、DRAMSDRAM存储器---------------SDRAM所有外部存储器共享地址、数据和控制信号,但有自己的片选信号。FMC一次只能访问一个外部器件。原创 2023-05-06 21:35:53 · 7629 阅读 · 0 评论 -
【转】如何编译linux驱动ko
本文描述了liunx驱动ko的编译方法,其中单编驱动ko是本文的重点。什么是ko?在Linux中一个.ko文件就是一个模块文件。1、模块自身不被编译到内核映像中,从而不影响内核映像的大小2、一旦模块被加载,模块和内核中的其他部分的功能完全一样。本文描述了liunx驱动ko的编译的两种方法:整编内核 和单编KO。并重点描述了单编ko的实现方法和优势。转载 2023-04-26 21:37:23 · 2994 阅读 · 3 评论 -
【转】到底什么是CDN?
之前在看DRM的时候,其中讲到这个视频的分发使用的是CDN。但是对于CDN不知道是什么,之前做物联网方面的云服务的时候也听说过,这里来看看CDN。如今这个移动互联网时代,越来越多的人使用手机观看视频,丰富自己的娱乐生活。回答这个问题之前,我们先来做一道算术题。以之前很火的“延禧攻略”为例,当时曾经在某视频APP实现了1千万用户同时在线观看。转载 2023-04-13 00:00:48 · 163 阅读 · 0 评论 -
PXE启动
并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE选项是PXE固件有PXE能力的鉴定,但是会被一般的DHCP服务忽略。PXE协议大致上结合了DHCP和TFTP,虽然都有在两者上面有改进。PXE通常都是利用固件来启动计算机,这种固件是包含数据的只读内存(ROM)或是可编程只读内存(PROM)芯片,而不是包含数据的磁介质。原创 2023-02-23 21:46:49 · 5794 阅读 · 0 评论 -
initrd是什么?
initrd = initialized RAM disk,是一个启动时存在于内存的文件系统。initrd的最初的目的是为了把kernel的启动分成两个阶段:在kernel中保留最少最基本的启动代码,然后把对各种各样硬件设备的支持以模块的方式放在initrd中,这样就在启动过程中可以从initrd所mount的根文件系统中装载需要的模块。这样的一个好处就是在保持kernel不变的情况下,通过修改initrd中的内容就可以灵活的支持不同的硬件。原创 2023-02-23 21:44:13 · 3612 阅读 · 0 评论 -
内核宏之—DIV_ROUND_UP(向上取整)&&virt_to_page&&GRUB,UEFI
开机出现GRUB引导主要原因是,一般现在的电脑现在都不再是legacy BIOS引导,而是UEFI这种快速启动的引导方式,在硬件的BOOT权限设置时,一般有legacy first和UEFI first这两个选项,若是采用legacy first的话一般是不会出现GRUB界面的,因为grub多用于引导LINUX系统,此时boot是优先导入LINUX。某一次缓冲区申请的大小是 A,这个时候,就可以用这个算法,计算出缓冲区的一个合。由于A>1、B>1,且A、B都是整数,所以可以设A=NB+M。原创 2023-02-23 20:01:35 · 1782 阅读 · 0 评论 -
什么是GN?以及顺便学点构建系统。
什么是GN?以及顺便学点构建系统。GN是一个生成Ninja Build文件的元构建系统。这意味着比GYP更快、更简单。它只输出Ninja构建文件。在探讨chromium的最新GN构建系统之前,回顾一下软件开发中的构建系统。构建系统的需求是随着软件规模的增大而提出的。如果只是做软件编程训练,通常代码量比较小,编写的源代码只有几个文件。比如你编写了一段代码放入helloworld.c文件中,要编译这段代码,只需要执行以下命令:gcc helloworld.c。原创 2023-02-15 20:34:20 · 3690 阅读 · 1 评论 -
第二次使用脚本后想学点东西:grep
之前不是在弄一个日志筛选脚本吗?我想在测试完以后去打印出我的日志是否有成功运行。原来的测试通过就会打印pass或者success,我本来想着用这个作为关键词,结果发现在测试用例运行的时候也会打印这些东西。于是我就想在完成一个测试用例自己去echo上一些特殊的符号,这样就可以作为一个筛选。同时因为这个echo的特殊符号就是测试用例执行完成的后一句,而测试用例的最后一句打印出来,这不是我的目的就达成了。于是用grep筛选关键词,那么怎么去实现用grep显示筛选目标的前后行呢?原创 2023-02-15 20:05:34 · 229 阅读 · 0 评论
分享