自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

holly的专栏

转载居多

  • 博客(342)
  • 资源 (8)
  • 收藏
  • 关注

转载 PCIe扫盲——PCI总线中的Reflected-Wave Signaling

当然,所有的这些过程都要求在一个时钟周期内完成,这种机制也限制了PCI总线频率的提高,也限制了单个PCI总线上的最大连接设备的数量。:熟悉信号完整性分析的朋友应该知道,在高速信号传输中,反射往往会导致信号的形变,使得信号质量变差,误码率变高,甚至信号收发异常,传输中断。不过,相对于目前的很多高速串行信号,PCI总线算是很慢的信号了,像PCI总线这种利用反射机制降低功耗的,几乎不可能在高速信号得到应用。:如果使用插槽连接,则一个连接算两个PCI设备,插槽和PCI卡分别算作一个PCI设备。

2025-09-18 09:10:45 62

转载 PCIe扫盲——一个典型的PCI总线周期

如下图所示,除了时钟信号CLK和数据地址复用信号AD之外,PCI总线至少还应包括FRAME#(用于表示一次数据传输的起始)、C/BE#(Command/Byte Enable)、IRDY#(Initiator Ready for data)、TRDY#(Target ready)、DESEL#(Device Selec,片选信号,用于选择PCI设备)和GNT#(Grant)信号等。此后,所有的控制信号均被拉高,处于inactive状态,AD、FRAME#和C/BE#处于三态状态。

2025-09-13 16:25:39 91

转载 PCIe扫盲——PCI总线基本概念

从结构上看,PCI是在CPU的供应商和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。PCI总线上可以挂接PCI设备和PCI桥,PCI总线上只允许有一个PCI主设备(同一时刻),其他的均为PCI 从设备,而且读写操作只能在主从设备之间进行,从设备之间的数据交换需要通过主设备中转。到了PCI-X2.0版本,整个总线就只能插一个PCI卡了(相当于两个PCI负载),为了能够在主板上提供更多的插槽,则必须通过连接多个PCI桥来实现(后面会详细地介绍)。

2025-09-04 09:09:53 77

转载 8B / 10B Encode/Decode详解

在编码过程中,用一个极性偏差( running disparity,RD)参数表示不平衡度,在不平衡时用2个10 bit字符表示一个8位字符,其中一个称为RD- ,表示“1” 的个数比“0” 的个数多2个,另一个称为RD+ ,表示“0” 的个数比“1” 的个数多2个。这些编码的目的包括: 确保必须的变换(“1” 到“0” 和“0” 到“1” 的变换), 保证稳定的直流均衡(“0” 码与“1” 码的个数相当), 以及满足其它标准的要求(最大化信道带宽利用率, 提高对误差的容忍能力等等)。

2025-09-03 17:51:04 70

转载 PCIe扫盲——PCIe简介

由于PCI-E是从PCI/PCI-X继承发展而来,PCI-E在应用层(软件上)几乎是全完兼容PCI/PCI-X设备的。并且PCI-E是一种非常复杂的总线,因此学习PCIe的同时也必须提前对PCI和PCI-X总线有一定的了解,所以下面的连载博文将先从PCI和PCI-X总线介绍开始。图中的PCI-E的传输速率指的是实际的有效传输速率,为RAW Data速率的80%,因为PCI-E(Gen1&Gen2,Gen3中使用了新的方式,即128b/130b)中使用了8b/10b编解码技术。

2025-09-02 19:05:18 61

转载 GCC -O2 踩坑指南:严格别名(Strict Aliasing)与整数环绕(Integer Wrap-around)

在 C 和 C++ 中,当多个左值 lvalue 指向同一个内存区域时,就会出现别名(alias)。int a = 42;*ptr 改变 a 的值也会改变。这里 *ptr 就被称为 a 的别名。严格别名就是编译器当看到多个别名(alias)时,会在一定规则下默认它们指向不同的内存区域(即使它们实际上指向相同的内存区域),并以此进行优化,这可能会生成与我们期望不同的代码。int a;

2025-08-28 20:04:15 63

转载 PCIe扫盲系列博文连载目录篇(第五阶段)

6、Crosslink与Multi-Root/Multi-Processor系统:http://blog.chinaaet.com/justlxy/p/5100065650。3、PCIe卡Spec(CEM)导读:http://blog.chinaaet.com/justlxy/p/5100061925。3、PCIe演进方向?9、128/130b编码详解:http://blog.chinaaet.com/justlxy/p/5100066168。

2025-08-21 20:13:23 48

转载 PCIe扫盲系列博文连载目录篇(第四阶段)

16、PCIe扫盲——弹性缓存(Elastic/CTC Buffer):http://blog.chinaaet.com/justlxy/p/5100057990。3、PCIe扫盲——PCIe错误源详解(一):http://blog.chinaaet.com/justlxy/p/5100057797。4、PCIe扫盲——PCIe错误源详解(二):http://blog.chinaaet.com/justlxy/p/5100057799。

2025-08-21 20:11:51 75

转载 PCIe扫盲系列博文连载目录篇(第三阶段)

19、PCIe扫盲——Lattice ECP3/ECP5 SerDes简介:http://blog.chinaaet.com/justlxy/p/5100053990。10、PCIe扫盲——Ack/Nak 机制详解(二):http://blog.chinaaet.com/justlxy/p/5100053475。9、PCIe扫盲——Ack/Nak 机制详解(一):http://blog.chinaaet.com/justlxy/p/5100053468。

2025-08-21 20:10:54 58

转载 PCIe扫盲系列博文连载目录篇(第二阶段)

4、PCIe扫盲——Memory & IO 地址空间:http://blog.chinaaet.com/justlxy/p/5100053319。5、PCIe扫盲——基地址寄存器(BAR)详解:http://blog.chinaaet.com/justlxy/p/5100053320。7、PCIe扫盲——TLP路由基础:http://blog.chinaaet.com/justlxy/p/5100053323。

2025-08-21 20:09:46 21

转载 PCIe扫盲系列博文连载目录篇(第一阶段)

13、PCIe扫盲——PCIe总线体系结构入门:http://blog.chinaaet.com/justlxy/p/5100053246。18、PCIe扫盲——PCIe总线物理层入门:http://blog.chinaaet.com/justlxy/p/5100053261。11、PCIe扫盲——PCIe总线基本概念:http://blog.chinaaet.com/justlxy/p/5100053225。

2025-08-21 20:06:45 57

转载 一文深入分析arm64 cache机制

摘要: 本文深入探讨了ARMv8架构中的缓存(cache)技术,分析了其层次结构、内部组织及映射方式。文章指出缓存用于解决CPU与主存的速度不匹配问题,并详细介绍了直接映射、组相连和全相连三种缓存映射方式的特点及优缺点。此外,还阐述了缓存的读写分配策略(如Write-back和Write-through)以及三种缓存分类(VIVT、PIPT、VIPT)对性能的影响。最后,通过MESI协议说明了多核系统中缓存一致性的维护机制,包括状态转换和总线操作。文章结合图表和实例,为理解ARM架构的缓存设计提供了全面参考

2025-06-18 10:01:42 257

转载 ARM64内存属性及MAIR配置

本文介绍了ARM架构下的内存属性类型及其在Linux内核中的配置实现。内存属性分为两大类:Normal型(如SRAM/DRAM)和Device型(设备寄存器),后者包含G/R/E三个子属性。Linux通过MAIR寄存器预定义了6种内存属性索引(DEVICE_nGnRnE、DEVICE_nGnRE、DEVICE_GRE、NORMAL_NC、NORMAL、NORMAL_WT),并在页表属性中通过PTE_ATTRINDX字段选择。文章详细分析了内核中ioremap、dma_alloc_coherent等接口如何配

2025-06-17 19:40:09 176

转载 在VSCode中打开来自远程ssh主机的文件

在VSCode中打开来自远程SSH主机的文件是通过VSCode的远程开发扩展实现的。远程开发扩展允许开发人员在本地的VSCode编辑器中访问和编辑远程主机上的文件。

2025-02-10 10:01:07 821

转载 编译乱序 vs 执行乱序

现代高性能编译器在目标码优化时都具备对指令进行乱序优化的能力,编译器可以对访存指令进行乱序,减少逻辑上不必要的访存,以此来尽量提高Cache命中率和CPU的Load/Store单元的工作效率打开编译优化后,看到生成的汇编码并没有严格按照代码的逻辑顺序,这是正常现象。

2025-01-24 11:03:02 166

转载 ARM64虚拟内存

address字段占用中间36位(bit[47:12], 以4kb为粒度则地址的低12bit均为0,无需存放,因此address为实际48位物理地址的高36位),如果我们使用大内存页(即转换使用的最后一级页表<3),则address字段的低位字节将被忽略,具体来说,如果使用level 2级别页表作为最后一级,其一个页表项指向2MB的内存页,因此address字段中低9bit被忽略;目前64位架构的MMU通常使用4级页表(level 0,1,2,3),支持最大48位有效地址。使用的虚拟内存最大长度。

2025-01-23 19:06:03 215

转载 原理和实战解析Linux中如何正确地使用内存屏障

本文对Linux内核的内存屏障的原理和用法进行一些分析和实战,它并未覆盖内存屏障的全部知识,但是应该可应付工程里面90%以上的迷惘和困惑。由于作者水平有限,文中疏漏与错误在所难免,恳请读者朋友们海涵。本文完成之时,北半球正在告别烈日炙烤的夏季,南半球即将迎来姹紫嫣红的春天,愿所有人都有一个美好的未来。参考文献【1】【2】【3】【4】

2024-12-17 20:44:05 190

转载 DDR为什么需要DQS信号?

DDR DQS

2023-08-04 15:53:52 3295

原创 CAN总线帧格式简介

can帧格式简介

2023-06-13 17:53:13 1090

转载 H265/HEVC

H.265又称为HEVC(全称High Efficiency Video Coding,高效率视频编码,本文统称为H.265),是ITU-T H.264/MPEG-4 AVC标准的继任者。2004年开始由ISO/IEC Moving Picture Experts Group(MPEG)和ITU-T Video Coding Experts Group(VCEG)作为ISO/IEC 23008-2 MPEG-H Part 2或称作ITU-T H.265开始制定。

2023-06-07 11:13:37 4812

原创 参考网站+大神blog

参考资料

2023-06-06 15:58:21 901

转载 【from Spark!】H264——H264的CAVLC和CABAC

H.264 CAVLC和CABAC

2023-05-22 18:05:44 351

转载 【from 一只嵌入式爱好者】Linux字符设备驱动详解七(“插件“设备树实现RGB灯驱动)

将led.dts编译为rgb.dtbo插件设备树,将传统设备树和插件设备树都加载到内核中,加载完成后就使用命令查看设备树,此时可以在设备数中看到新增了rgb_led节点。或者 ls /proc/device-tree再编译dts_led.c源文件为dto.led.ko内核模块并加载进内核。这时就有了/dev/rgb_led节点,最后向/dev/rgb_led节点写入数据就能控制rgb灯了。

2023-05-18 10:01:57 460

转载 【from 一只嵌入式爱好者】Linux字符设备驱动详解六(设备树实现RGB灯驱动)

DTS(device tree source):设备树源文件,ASCII 格式DTC(device tree compiler):设备树编译工具,DTB(device tree blob):二进制设备树。设备树使用uboot负责加载到内存,内核解析使用。

2023-05-18 09:50:59 240

转载 【from 一只嵌入式爱好者】Linux字符设备驱动详解五(使用platform虚拟平台总线)

通过使用platform虚拟平台总线,实现了软件与硬件代码分离。

2023-05-18 09:27:23 258

转载 【from 一只嵌入式爱好者】Linux字符设备驱动详解四(使用自属的xbus驱动总线)

创建自属的xbus驱动总线实现软件与硬件代码分离,本节尚未添加硬件接口代码,是为后面使用platform虚拟平台总线建立基础。

2023-05-18 09:21:01 333

转载 【from 一只嵌入式爱好者】Linux字符设备驱动详解三(使用class)

本文主要来自正点原子、野火Linux教程及本人理解,若有侵权请及时联系本人删除。通过使用class完成硬件设备分类管理。

2023-05-18 08:59:01 206

转载 【from 一只嵌入式爱好者】Linux字符设备驱动详解二(使用设备驱动模型)

本文主要来自正点原子、野火Linux教程及本人理解,若有侵权请及时联系本人删除。linux系统通过sysfs体现出设备驱动模型sysfs是一个虚拟文件系统(类似proc文件系统)目录对应的inode节点会记录基本驱动对象(kobject),从而将系统中的设备组成层次结构用户可以读写目录下的不同文件来配置驱动对象(kobject)的不同属性通过使用驱动模型,我们就不用再手动调用mknod命令创建设备文件(节点),本节演示并未创建/dev/目录下的设备文件,只是在/sys/目录下演示设备驱动的框架。

2023-05-17 17:00:40 178

转载 【from 一只嵌入式爱好者】Linux字符设备驱动详解

很久没有认真写一篇博客了,刚好最近学习了Linux字符设备驱动,好记性不如烂笔头,当然是要抓紧记下来,在开始之前安利一位师弟写的几篇博客,写得很不错。本文主要来自正点原子、野火Linux教程及本人理解,若有侵权请及时联系本人删除。从单片机到ARM Linux驱动——Linux驱动入门篇Linux字符设备驱动开发(2)——让开发板上的灯闪烁完成上面三步后就完成了LED字符设备的驱动编写,其他的字符设备可参考此驱动。

2023-05-17 10:00:44 218

转载 万字长文解读AUTOSAR完整架构及AP特性

本文主要内容分为两章节。第一章节简要介绍了AUTOSAR的软件架构,设计理念以及方法论,对Classic Platform和Adaptive Platform做了简单的比较。第二章主要介绍了Adaptive Platform的特性。AUTOSAR(AUTomotive Open System ARchitecture)是汽车和软件行业领先公司的全球合作联盟,为智能移动开发和建立标准化的软件框架以及开放的E/E系统架构。

2023-05-16 17:40:33 8885

转载 ONNX--跨框架的模型中间表达框架

onnx

2023-04-27 13:53:57 412

转载 从源码理解智能指针(一)——auto_ptr、unique_ptr

};auto_ptr和unique_ptr都是独占式指针,auto_ptr为了实现“独占式”语义,拷贝构造和赋值重载会偷偷地把原对象的资源给拿走,但是不会给用户任何提示,这是很危险的,并且拷贝和赋值本身的语义就不符合资源的独占原则。

2023-04-22 20:06:08 266

转载 posix是什么都不知道,还好意思说你懂Linux?

POSIX:可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),

2023-04-06 11:45:49 517 1

转载 关于可重入性函数

可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入 函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。

2023-04-04 11:35:28 134

转载 bss段、data段和text段

在采用段式内存管理的架构中(比如intel的80x86系统),一个程序本质上都是由 bss段、data段、text段三个组成的。比如,在C语言程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。发现程序2编译之后所得的.exe文件比程序1的要大得多。

2023-04-04 11:10:49 638

转载 初步认识迭代服务器和并发服务器

也就是说,这个进程是一个一个处理各个客户端发来的连接的,比如一个客户端发来一个连接,那么只要它还没有完成自己的任务,那么它就一直会占用服务器的进程直到处理完毕后服务器关闭掉这个socket。这样每来一个客户端,服务器就克隆一个自己去处理请求,这样主进程就一直处于监听状态而不会被阻塞。额,我想讲的重点不是这里,重点是代码第12行!

2023-04-04 10:59:10 227

转载 状态机的两种写法对比

上面横竖两种写法的代码片段,实现的功能完全相同,但是,横着写的效果明显好于竖着写的效果。竖着写隐含了优先级排序(其实各个事件是同优先级的),排在前面的事件判断将毫无疑问地优先于排在后面的事件判断。这种if/else if写法上的限制将破坏事件间原有的关系。而横着写不存在此问题。由于处在每个状态时的事件数目不一致,而且事件发生的时间是随机的,无法预先确定,导致竖着写沦落为顺序查询方式,结构上的缺陷使得大量时间被浪费。

2023-04-04 10:52:45 297

转载 优秀程序员不得不知道的20个位运算技巧

一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker’s Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!

2023-04-04 10:39:33 118

转载 rosspin、rosspinOnce及多线程订阅

什么时候用ros::spin()和ros::spinOnce()呢,如果仅仅只是响应topic,就用ros::spin()。因为在一些点云处理的程序中,出现多个订阅者订阅同一个topic,由于内部处理的时间不同,最后造成显示界面出现卡顿,现象就是用鼠标拖动点云的视角会感觉非常卡,不顺畅。而下面的打印输出不会更新,相当于只执行了一次,但是它会不断处理ROS 的message queue(下图右边的subscriber 开头的打印函数只调用了一次,然后一直响应订阅的消息)。断开连接,通知延后了一分多钟。

2023-03-29 14:34:51 592

原创 ROS参考资料

http://wiki.ros.org/Installation/Source

2023-03-29 13:58:51 375

8B10B详解&综述.pdf

8B10B详解&综述.pdf

2025-09-03

【测试代码】Linux共享库(动态库)与进程之间全局变量是无法共享

测试代码:Linux共享库(动态库)与进程之间全局变量是无法共享

2016-06-18

USB TO TTL (PL-2303)在Win8.1驱动

USB TO TTL (PL-2303)在Win8.1可使用的驱动程序:PL2303芯片装不上驱动很可能是是山寨产品,官方驱动从1.5.0以后的版本都不再提供支持,官方驱动仅支持正品芯片,山寨芯片用旧版驱动可驱动使用,但可能有些未知问题(当然不会常见)……

2017-10-14

Qt5开发及实例【OCR版】.pdf

qt5开发及实例,ocr版。qt5开发及实例,ocr版。qt5开发及实例,ocr版。qt5开发及实例,ocr版。

2018-05-12

大教堂和集市

大教堂和集市

2016-06-15

UML面向对象建模与设计(第二版)

文档为高清扫描板,已经经过文本识别,有目录。

2014-10-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除