自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (3)
  • 收藏
  • 关注

原创 [git]smartgit 取消非商业版本(non-commercial)选项后怎么继续免费使用

今天突然发现最新的smartgit启动界面取消了non-commercial的lic选项,意味着已经不支持免费的非商业评估了。但是非商业必须勾选保持软件是最新的选项,软件会自动检测更新,这个时候只能关闭对话框。隔一段时间会弹出来提醒更新,还是比较蛋疼。但是老版本还可以继续选择non-commercial版本。有需要的可下载最后一版支持non-commercial的版本。目前下面这个版本还是支持非商业使用的,V21.2.4。从最新版的changelog可以找到最后的版本号。又可以愉快的使用(白嫖)啦。

2022-12-14 14:21:24 3001 1

转载 【eMMC】简介与协议浅析

eMMC 简介 Host Interface Flash Controller Flash Memory eMMC 分区管理 Boot Area Partitions eMMC 分区应用实例 eMMC 总线协议 eMMC 总线接口 eMMC 总线模型 eMMC 简介eMMC 是 embedded MultiMediaCard 的简称。MultiMediaCard,即M..

2022-04-06 09:27:10 10712

原创 CAN/CANFD 总线负载率及计算(源码和工具)

CAN BUS的总线负载率是CAN总线架构协议设计时的一个重要的指标。一般建议负载率峰值不要高于80%,平均负载率不要超过50%。当然这只是一般建议,具体根据使用场景和系统设计而定。负载率定义关于CAN负载率的定义和计算,很多文章写得不求甚解,用帧数量来计算负载率是非常不正确的做法。其实总线负载率的定义其实是非常简单明了的:总线负载率=总线每秒上传输的实际bit数量/总线波特率*100%原理非常简单,波特率的定义就是每秒CAN总线上可以传输多少CAN数据bit,总线负载率自然就是总线

2022-03-09 14:55:47 15056

翻译 [ATF] ARM Trusted firmware 构建选项

目录5.1.常见的构建选项5.2.GICv3 驱动程序选项5.3.调试选项TF-A 构建系统支持以下构建选项。除非另有说明,这些选项应在构建命令行中指定,并且不会在任何组件生成文件中修改。请注意,构建系统不会跟踪构建选项的依赖性。因此,如果任何构建选项从先前的构建中发生更改,则必须执行干净的构建。5.1.常见的构建选项 AARCH32_INSTRUCTION_SET: 选择编译器应该使用的 AArch32 指令集。有效值为 T32 和 A32。由于代码具有较小的结果大小...

2021-12-23 15:03:30 2953

翻译 ATF(ARM Trusted firmware)代码结构

代码结构TF-A 代码在逻辑上分为前几节提到的三个引导加载程序阶段。代码也分为以下几类(在源代码中显示为目录): 平台特定。架构特定代码的选择取决于平台。 通用代码。这是平台和架构不可知的代码。 图书馆代码。此代码包含所有其他代码常用的功能。PSCI 实现和其他 EL3 运行时框架作为库组件驻留。 阶段特定。特定于引导阶段的代码。 驱动程序。 服务。EL3 运行时服务(例如:SPD)。特定的 SPD 服务驻留在services/spd目录中(例如s

2021-12-23 14:57:48 4284

原创 [ATF]文档编译docutils

在ATF根目录make help可以看到编译文档的选项make help...doc Build html based documentation using Sphinx tool...执行make doc如果报错缺少xx软件,需要先安装一下依赖先安装编译文档所需要的依赖 pip install -r docs/requirements.txt也可以cd doc下直接makecd docmake helpSphinx v4.3.2Pleas

2021-12-22 16:06:46 1066

原创 [CAN] CAN BUS的错误检测和错误状态管理

错误检测CAN控制器应提供以下错误检测机制。总线监测(也就是通过收发器回环到RX PIN来监测总线电平) 位填充检查 帧格式检查 CRC校验 ACK检查有五种错误类型,它们并不相互排斥(也就是可以同时出现)。Bit error 位错误 Stuff error 填充错误 CRC error Form error ACK errorBit error 位错误在总线上发送比特的节点也应监视总线。 当监视的位值与发送的位值不同时,认为检测到位错误。例外: 在仲裁期间发送隐.

2021-12-15 14:36:24 15163 3

原创 [CANFD] 高波特率下收发器延时的处理机制-Transceiver delay compensation

CANFD数据段支持可变速率,最高可达12Mb/s。我们知道CAN控制器会将收发器RX pin的数据采样接收,用于判断TX pin的数据是否被成功发送,以便实现冲裁判断和错误处理。RX的回环检测是保证CAN总线可靠性的基础技术。但是,CAN收发器的信号转换都是有时延的,也就是说从TX出发到达CAN bus,以及从CAN bus返回RX都是延时的,在CAN2.0时代,收发器的延时在适合的采样点设置下被妥当的处理,不会因此造成TX的数据,RX延时采样后出现错误。我们看一下典型的CAN2.0收发器的信号延

2021-12-03 13:57:29 6707 4

原创 PCIe L1s debug with RTW88

enable ASPM的过程种遇到一个奇怪的问题,明明RTW8822CE支持L1/s,但是enable kernel ASPM driver之后没有正常建立sysfs的link status节点。debug发现是aspm driver在获取host/device两端的aspm能力过程种,有做pcie_retrain_link,pcie_retrain_link后,RTW8822CE的pcie cap寄存器出现短暂时间访问为0的情况,导致driver认为device不支持任何的L1/L0/s。但测试n

2021-11-19 17:58:06 1454

原创 [kernel driver]FIRMWARE build-in

编译firmware到内核镜像中很多驱动会给设备加载firmware,firmware一般会在文件系统中去获取,如果需要在加载文件系统之前加载这样的驱动,则需要将对应的firmware一起编译进内核。配置CONFIG_EXTRA_FIRMWARE="subdir/xxx_fw.bin" (menuconfig: device driver->Generic Driver Options->Firmware loader)CONFIG_FIRMWARE_IN_KERNE...

2021-11-08 13:49:20 4277

转载 CAN收发器对比

10年前,国内的CAN收发器主流还是NXP(当年叫飞利浦)的PCA82C250,后来升级为PCA82C251,增强了管脚耐压能力与热关断功能,几乎所有CAN节点都使用PCA82C250/251。但随着汽车电子迅猛发展,以及半导体技术更新。基于三极管架构的PCA82C250/251已经无法满足汽车电子用户要求。所以NXP公司推出了新一代基于JFET的TJA1040/1050T收发器,不但可以与老的PCA82C250/251实现无缝升级,而且增加了待机模式功能与Split共模输出功能。同时为了防止MCU死机

2021-09-02 10:54:36 3044

转载 RSA非对称加密基本原理

RSA是目前使用最广泛的公钥密码体制之一。它是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法的安全性基于RSA问题的困难性,也就是基于大整数因子分解的困难性上。但是RSA问题不会比因子分解问题更加困难,也就是说,在没有解决因子分解问题的情况下可能解决RSA问题,因此RSA算法并不是完全基于大整数因子分解的困难性上

2021-09-01 16:05:33 1459

转载 kernel driver probe defer机制

​Linux kernel 驱动中,有不少驱动会引用到 EPROBE_DEFER 这个错误号。比如下面这个例子,对 devm_gpiod_get 的返回值进行判断,如果有错误且错误号不是-EPRBOE_DEFER,才输出error log。那么 EPRBOE_DEFER 有什么特别之处吗,需要驱动程序这样特意处理?这个与 kernel 设计的 driver-deferred-probe 机制有关。kernel 下有多个独立的驱动,每个驱动或多或少地会引用到其他驱动提供的资源,比如某个外设驱.

2021-08-31 17:46:10 3660

原创 kernel make basic useage

make xxx_defconfig ARCH=XXXmake menuconfigmake savedefconfig && mv defconfig arch/xxx/configs/xxx_defconfig

2021-08-16 14:10:35 758

转载 Armv8架构虚拟化介绍

目录1 综述1.1 虚拟化简介虚拟化为什么重要1.2 Hypervisor的两种类型1.3 全虚拟化和半虚拟化1.4 虚拟机(VM)和虚拟CPU (vCPU)2 AArch64的虚拟化2.1 Stage 2 转换什么是Stage 2 转换VMIDVMID vs ASID属性整合和覆盖模拟MMIO系统内存管理单元(System Memory Management Units, SMMUs)2.2 指令的陷入与模拟2.3 寄存器的访问避免陷入

2021-08-06 14:53:00 1994

转载 buildroot 修改包源代码后重新编译【转】

使用buildroot构建rootfs十分的方便,由于实际需要常常需要修改一些包的源码来添加一些自定义功能,修改源码之后怎么操作才能让buildroot重新编译这个包呢。本帖最后由 shiyigudong 于 2012-07-16 14:54 编辑 最近使用buildroot制作编译环境,文件系统。使用过程当中有许多注意点。今天的一点注意记录如下: 使用buildroot则样重新编译某一个包。比如说我们在某一个包里修改了代码,怎么重新编译呢。 我使用的是buildroot-2012

2021-08-06 14:42:21 3031 1

转载 eMMC 原理 3 :分区管理

1. Partitions OvervieweMMC 标准中,将内部的 Flash Memory 划分为 4 类区域,最多可以支持 8 个硬件分区,如下图所示:1.1 概述一般情况下,Boot Area Partitions 和 RPMB Partition 的容量大小通常都为 4MB,部分芯片厂家也会提供配置的机会。General Purpose Partitions (GPP) 则在出厂时默认不被支持,即不存在这些分区,需要用户主动使能,并配置其所要使用的 GPP 的容量大小,GPP 的

2021-07-14 17:57:20 1531

原创 Linux 下qt 程序打包发布

linux qt 程序打包发布1.linuxdeployqt 安装最简单的方法直接下载编译好的 linuxdeployqt-x86_64.AppImage文件,将其改名字为linuxdeployqt,并chmod a+x,然后复制到 /usr/local/bin/。然后命令行输入 linuxdelpoyqt –version,输出linuxdeployqt 版本就安装成功。linuxdeployqt-x86_64.AppImage 下载地址,https://github.com/probonopd

2020-11-17 23:18:42 1559

原创 [PCIe] linux 下测试ASPM

1. kernel config & driver.config - Linux/arm64 5.4.31 Kernel Configuration> Device Drivers > PCI support打开 PCI Express ASPM control和Debug PCI Express ASPM (会在sys_fs中添加aspm的控制node,方便手动修改进行测试)电源策略选择Power Supersave 在dts中修改bootargs,增加pci..

2020-10-10 17:21:06 9561

原创 [PCIe] PCIe 枚举过程-TODO

1. 设备的发现与bdf number的确定枚举的第一个过程是rc端通过向bus上发起cfg访问获取整个总线拓扑上的设备信息。简单说来就是去遍历每个bus,以及bus下device的配置空间。如果读到有效值(非全F)则认为发现了可用的设备。1.1 bdf number的分配bus device function这3个number的分配是很有意思的事情。对于每个pcie设备来说,并没有寄存器可以用来配置或者修改bdf number。那么这3个值在到底是怎么确定的呢。经典的说法是,bdf n

2020-09-18 18:58:29 5687 15

原创 [嵌入式linux] memset操作device mem map的空间出现bus error

kernel driver中用pgprot_noncached映射一片DMA内存到user space。在应用程序中通过memeset清零时,产生Bus error.vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);....memset(*Logical,0,Size);原因:在部分平台上,memset不能操作device映射的space。(根本原因和memset实现有关)下面是ARM64的实现/*

2020-07-21 17:51:45 2727 1

原创 [CAN BUS]CAN分析仪(或其他CAN设备)的最大接收能力测试方法---CAN 接收压力测试(每秒最大接收帧数)

CAN通讯设备,尤其对于CAN适配器(各种USB/网络/PCIe转CAN设备)CAN记录仪、分析仪的一个很重要的指标就是每秒CAN帧的最大接收数量。这个指标关系到一个设备在高负载网络是否存在丢帧的情况,如何测试每秒接收帧数也就成了评估一个CAN设备的性能的关键。本测试方案适用于绝大多数CAN接收设备,本文以ZLG的USB CAN盒和开源USB-CAN CANable为例进行测试。测试设备:待测CAN设备,注意必须具备CAN帧数据导出或计数功能,以及必须支持只听模式 一台CAN发送设备,能.

2020-07-20 23:29:40 4082 3

原创 [SDIO] SD card 初始化及常用命令解析(附波形,uboot代码)

目录初始化1.cmd 02.cmd83.cmd554.acmd415.cmd26.cmd37.cmd98.cmd139.cmd710.ACMD5111.CMD612.CMD1613.CMD1714.CMD1815.CMD12tuningCMD19DW_SDHCI的tuning流程初始化1.cmd 0 /* Reset the Card */ err = mmc_go_idle(mmc...

2020-06-29 10:22:55 18709 2

原创 [CAN BUS] USB-CAN adpter / USB转CAN 开源项目推荐(CANable candlelight cangaroo)

照理来说,USB-CAN这种东西应该已经被做的烂大街的工具,国内居然没有一个拿得出手的开源方案。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案....价格都很低,性能和可靠性嘛.......就不多说了。这里推荐一个国外的开源工具CANable,ta有完全开源的软硬件及上位机支持,支持windos和linuxStock can并且都免驱哦。且支持Python。CANable实际上应该是3个项目组成:硬件CANable主页 :https://canable.io/SCH...

2020-06-18 15:38:20 13941 7

原创 [linux] .gpg 格式加密文件解密操作

最近拿到一个.tgz.gpg的加密打包文件,竟不知道如何解压。以input_file.tgz.gpg 文件为例,需要先将其解密(用gpg命令)gpg --output output_file.tgz --decrypt input_file.tgz.gpg然后会提示输入密钥....输入后回车,密钥真确的话就会得到output_file.tgz 文件,然后用tar命令解压.tgz就可以了...

2020-06-18 14:37:54 8481

原创 [PCIe] Hot reset and FLR reset Performing in linux

“热重置”是通过PCI Express链路触发的常规重置。当链路被迫进入电气空闲状态时,或通过发送带有热复位bit的TS1和TS2有序集来触发热复位。软件可以通过设置然后清除设备上游桥接端口的PCI配置空间中桥接控制寄存器中的辅助总线复位位来启动热复位。(下图Bridge Control Register->Secondary Bus Reset)Secondary Bus Reset - Setting this bit triggers a hot reset on the corres

2020-06-15 14:45:04 4486

原创 [SDIO]Read Wait 读等待机制

sdio 协议的read wait机制相当于是一个流控功能。在执行多块读后,sd卡会在每一个SDCLK持续发送数据。如果host内部的DMA或CPU已经来不及搬运这些数据了,导致controller 的buffer overflow,数据将会出现丢失。解决办法1:host controller 在buffer 满时关闭SDCLK,sd卡没有clk驱动,会暂停数据发送。但是SDCLK关闭时无法发送其他CMD。解决办法2:通过一个信号告诉SD卡,我已经来不及处理这些数据了,请暂停,这个就是read w.

2020-05-25 16:24:46 1902 2

原创 [uboot] 打印等级和开关设置 dev_info,dev_debug,debug

debug(...); 的开关在U-boot\include\configs\xxx.h 中#define CONFIG_DEBUGdev_info,dev_debug...等dev_xxx打印开关通过log等级来确定make menuconfig->Console->loglevel通过调整loglevel来控制打印级别,loglevel越大打印的内容越多,具体每一级和loglevel数值的对应如下:...

2020-05-25 14:38:37 5971

原创 [PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态

PCIe设备的低功耗状态要求系统驱动程序显式地将设备置于低功耗状态,从而PCIe链路则可以依次变为低功耗链路状态。PCIe规范允许PCIe链路在没有系统驱动的情况下进入低功耗状态。这个特性就是所谓的主动状态电源管理(ASPM)。一般来说,无论是系统驱动端硬件(RC)还是设备硬件(EP)都可以通过检测pcie链路上的空闲时间,然后启动电源状态转移。有两种低功率链路状态:L0s,也叫L0 st...

2020-04-30 15:40:40 21450

原创 [misc] fatal error: hugetlbfs.h: No such file or directory

编译代码包含:#include <hugetlbfs.h>报错:xxx fatal error: hugetlbfs.h: No such file or directory原因:缺少libhugetlbfs,需要重新安装。ubuntu:sudo apt-get updatesudo apt-get install libhugetlbfs-dev...

2020-04-27 16:47:13 1190

转载 [PCIe]PCIe设备在一个系统中是如何发现与访问的

首先我们来看一下在x86系统中,PCIe是什么样的一个体系架构。下图是一个PCIe的拓扑结构示例,PCIe协议支持256个Bus, 每条Bus最多支持32个Device,每个Device最多支持8个Function,所以由BDF(Bus,device,function)构成了每个PCIe设备节点的身份证号。PCIe体系架构一般由root complex,switch,endpoint等类型...

2020-04-20 17:07:19 3147

原创 [CAN Bus]有关 CAN 总线 通讯可靠性的 N个问题

第1问:总线中有若干节点,若某节点发送一帧报文且被ACK,那么能保证总线上所有节点都收到了这帧报文吗?答:不能,只能保证至少一个节点应答了这帧报文。第2问:当总线中一节点接收到一帧报文,且这帧的仲裁域(ID)与接收节点的过滤器不匹配。也就是说接收节点并不会将这帧数据放入接收fifo或者rx mail box。那么这个接收节点会在这帧的ACK slot发送显性位吗?答:会的,只要接...

2020-04-15 17:37:58 2368 4

原创 eMMC Sampling Tuning and linux mmc driver support

目录1. eMMC 总线 Sampling Tuning1.1 Sampling Tuning 流程1.2 Tuning Block 数据1.3 retuning mode2. linux mmc driver中的retuning触发机制2.1 设备初始化时tuning2.2 timer retuning(software)2.3 Auto-Tuning(hard...

2020-03-27 11:32:10 3586 2

转载 「博文连载」PCIe扫盲——PCIe演进方向?CCIX简介

摩尔定律逐渐降速,业界需要一同寻找提升计算性能、同时保持低功耗的方法。CCIX联盟的成立旨在实现一种新型互联,专注于新兴的加速应用,如机器学习、网络处理、存储卸载、内存数据库和4G/5G 无线技术。这个标准使得基于不同指令集的处理器,将缓存一致性、对等计算的优势扩展至许多加速设备包括FPGA、GPU、网络或存储适配器、智能网络和定制的专用集成电路。CCIX 通过扩展现有成熟的数据中心硬件和软件基础...

2020-03-13 11:28:24 1878

原创 [PCIe] SR-IOV (单根虚拟化) 及linux驱动浅析(device的PF和VF及其驱动)

检查、配置vf数量,因为还没配置,所以是0[root@g1 ~]# cat /sys/class/infiniband/mlx5_1/device/mlx5_num_vfs0这里我测试把OFED驱动中的vf数量配置成1echo 1> /sys/class/infiniband/mlx5_1/device/mlx5_num_vfs在PCI总线上,用lsp...

2020-03-11 17:37:56 17001 6

原创 【PCIe】AER linux 驱动浅析

AER及linux内核驱动简介:https://blog.csdn.net/u010443710/article/details/1046491791. AER 中断首先AER驱动作为错误上报和处理的机制,肯定有一个错误上报的入口。这个入口就是AER中断。linux的AER驱动只针对RC,也就是说软件需要处理RC的AER中断请求。并在中断处理函数中通过AER 寄存器来判断错误类型并...

2020-03-06 17:07:24 5338

翻译 【PCIe】【翻译】AER 内核驱动 《pcieaer-howto》PCI Express高级错误报告驱动程序指南

本文翻译自内核文档:linux\Documentation\PCI\pcieaer-howto.txt《 PCI Express高级错误报告驱动程序指南》 HOWTOT.Long Nguyen <tom.l.nguyen@intel.com>张艳敏<yanmin.zhang@intel.com>2006年7月29日目录1.概述1.1关于本指南...

2020-03-04 13:27:10 5185

原创 [PCIe]LTSSM与电源管理

1. LTSSMLTSSM全称是Link Training and Status State Machine,有以下11个状态:Detect, Polling, Configuration, Recovery, L0, L0s, L1, L2, Hot Reset, Loopback, Disable这些状态分为5大类:1、链路训练状态(Link Training State):D...

2020-02-20 18:24:39 16142

转载 PCIe扫盲系列博文连载

转载自http://blog.chinaaet.com/justlxy/p/5100053251PCIe扫盲系列博文连载目录篇(第一阶段)1、前言篇:PCIe扫盲——PCIe简介:http://blog.chinaaet.com/justlxy/p/51000530662、PCIe扫盲——PCI总线基本概念:http://blog.chinaaet.com/justlxy/p/5100...

2020-02-19 17:16:45 740 1

原创 DMA的Scatter/Gather

Scatter:离散Gather:聚合场景1:将一片连续内存数据搬运到一片不连续的的内存空间(且间隔是相等的)源内存:连续目的内存:离散这个时候就可以用到DMA的Destination Scatter Transfer场景2:将一片内存区域中等间隔的多段数据拷贝到一段连续内存中(常见的2D矩形抠图就是这种场景的典型应用)源内存:分散目的内存...

2020-02-07 11:42:34 8333

pcibusbinding1275-1994.pdf

IEEE Std 1275-1994 Standard for Boot (Initialization Configuration) Firmware

2020-04-20

AER及其Linux内核的支持.pdf

本指南介绍了PCI Express Advanced错误的基础知识。 介绍报告(AER)的驱动程序,并提供有关如何使用它的信息,例如如何启动端点设备的驱动使其适用于PCI Express AER驱动程序。

2020-03-04

NCB-PCI_Express_Base_5.0r1.0-2019-05-22.pdf.zip

PCIe5.0 规范V1.0 PCI Express® Base Specification Revision 5.0 Version 1.0 22 May 2019 Copyright © 2002-2019 PCI-SIG ® PCI, PCI Express, PCIe, and PCI-SIG are trademarks or registered trademarks of PCI-SIG. All other product names are trademarks, registered trademarks, or servicemarks of their respective owners. Contact PCI-SIG Membership Services for questions about membership in the PCI-SIG or to obtain the latest revision of this specification. Contact PCI-SIG Technical Support for technical questions about this specification. DISCLAIMER PCI-SIG disclaims all warranties and liability for the use of this document and the information contained herein and assumes no responsibility for any errors that may appear in this document, nor does PCI-SIG make a commitment to update the information contained herein. This PCI Specification is provided “as is” without any warranties of any kind, including any warranty of merchantability, non-infringement, fitness for any particular purpose, or any warranty otherwise arising out of any proposal, specification, or sample. PCI-SIG disclaims all liability for infringement of proprietary rights, relating to use of information in this specification. This document itself may not be modified in any way, including by removing the copyright notice or references to PCI-SIG. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted herein. PCI, PCI Express, PCIe, and PCI-SIG are trademarks or registered trademarks of PCI-SIG. All other product names are trademarks, registered trademarks, or servicemarks of their respective owners.

2020-02-17

空空如也

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

TA关注的人

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