- 博客(50)
- 资源 (3)
- 收藏
- 关注
原创 [git]smartgit 取消非商业版本(non-commercial)选项后怎么继续免费使用
今天突然发现最新的smartgit启动界面取消了non-commercial的lic选项,意味着已经不支持免费的非商业评估了。但是非商业必须勾选保持软件是最新的选项,软件会自动检测更新,这个时候只能关闭对话框。隔一段时间会弹出来提醒更新,还是比较蛋疼。但是老版本还可以继续选择non-commercial版本。有需要的可下载最后一版支持non-commercial的版本。目前下面这个版本还是支持非商业使用的,V21.2.4。从最新版的changelog可以找到最后的版本号。又可以愉快的使用(白嫖)啦。
2022-12-14 14:21:24
3309
转载 【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
11711
原创 CAN/CANFD 总线负载率及计算(源码和工具)
CAN BUS的总线负载率是CAN总线架构协议设计时的一个重要的指标。一般建议负载率峰值不要高于80%,平均负载率不要超过50%。当然这只是一般建议,具体根据使用场景和系统设计而定。负载率定义关于CAN负载率的定义和计算,很多文章写得不求甚解,用帧数量来计算负载率是非常不正确的做法。其实总线负载率的定义其实是非常简单明了的:总线负载率=总线每秒上传输的实际bit数量/总线波特率*100%原理非常简单,波特率的定义就是每秒CAN总线上可以传输多少CAN数据bit,总线负载率自然就是总线
2022-03-09 14:55:47
19349
翻译 [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
3427
翻译 ATF(ARM Trusted firmware)代码结构
代码结构TF-A 代码在逻辑上分为前几节提到的三个引导加载程序阶段。代码也分为以下几类(在源代码中显示为目录): 平台特定。架构特定代码的选择取决于平台。 通用代码。这是平台和架构不可知的代码。 图书馆代码。此代码包含所有其他代码常用的功能。PSCI 实现和其他 EL3 运行时框架作为库组件驻留。 阶段特定。特定于引导阶段的代码。 驱动程序。 服务。EL3 运行时服务(例如:SPD)。特定的 SPD 服务驻留在services/spd目录中(例如s
2021-12-23 14:57:48
4481
原创 [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
1110
原创 [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
19445
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
7576
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
1579
原创 [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
4593
转载 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
3375
转载 RSA非对称加密基本原理
RSA是目前使用最广泛的公钥密码体制之一。它是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法的安全性基于RSA问题的困难性,也就是基于大整数因子分解的困难性上。但是RSA问题不会比因子分解问题更加困难,也就是说,在没有解决因子分解问题的情况下可能解决RSA问题,因此RSA算法并不是完全基于大整数因子分解的困难性上
2021-09-01 16:05:33
1547
转载 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
4316
原创 kernel make basic useage
make xxx_defconfig ARCH=XXXmake menuconfigmake savedefconfig && mv defconfig arch/xxx/configs/xxx_defconfig
2021-08-16 14:10:35
790
转载 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
2195
转载 buildroot 修改包源代码后重新编译【转】
使用buildroot构建rootfs十分的方便,由于实际需要常常需要修改一些包的源码来添加一些自定义功能,修改源码之后怎么操作才能让buildroot重新编译这个包呢。本帖最后由 shiyigudong 于 2012-07-16 14:54 编辑 最近使用buildroot制作编译环境,文件系统。使用过程当中有许多注意点。今天的一点注意记录如下: 使用buildroot则样重新编译某一个包。比如说我们在某一个包里修改了代码,怎么重新编译呢。 我使用的是buildroot-2012
2021-08-06 14:42:21
3331
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
2050
原创 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
1693
原创 [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
11178
原创 [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
6382
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
3141
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
4832
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
22393
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
17485
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
9799
原创 [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
5301
原创 [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
2187
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
6946
原创 [PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态
PCIe设备的低功耗状态要求系统驱动程序显式地将设备置于低功耗状态,从而PCIe链路则可以依次变为低功耗链路状态。PCIe规范允许PCIe链路在没有系统驱动的情况下进入低功耗状态。这个特性就是所谓的主动状态电源管理(ASPM)。一般来说,无论是系统驱动端硬件(RC)还是设备硬件(EP)都可以通过检测pcie链路上的空闲时间,然后启动电源状态转移。有两种低功率链路状态:L0s,也叫L0 st...
2020-04-30 15:40:40
25812
原创 [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
1292
转载 [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
3977
原创 [CAN Bus]有关 CAN 总线 通讯可靠性的 N个问题
第1问:总线中有若干节点,若某节点发送一帧报文且被ACK,那么能保证总线上所有节点都收到了这帧报文吗?答:不能,只能保证至少一个节点应答了这帧报文。第2问:当总线中一节点接收到一帧报文,且这帧的仲裁域(ID)与接收节点的过滤器不匹配。也就是说接收节点并不会将这帧数据放入接收fifo或者rx mail box。那么这个接收节点会在这帧的ACK slot发送显性位吗?答:会的,只要接...
2020-04-15 17:37:58
2738
5
原创 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
4202
2
转载 「博文连载」PCIe扫盲——PCIe演进方向?CCIX简介
摩尔定律逐渐降速,业界需要一同寻找提升计算性能、同时保持低功耗的方法。CCIX联盟的成立旨在实现一种新型互联,专注于新兴的加速应用,如机器学习、网络处理、存储卸载、内存数据库和4G/5G 无线技术。这个标准使得基于不同指令集的处理器,将缓存一致性、对等计算的优势扩展至许多加速设备包括FPGA、GPU、网络或存储适配器、智能网络和定制的专用集成电路。CCIX 通过扩展现有成熟的数据中心硬件和软件基础...
2020-03-13 11:28:24
2076
原创 [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
19817
6
原创 【PCIe】AER linux 驱动浅析
AER及linux内核驱动简介:https://blog.youkuaiyun.com/u010443710/article/details/1046491791. AER 中断首先AER驱动作为错误上报和处理的机制,肯定有一个错误上报的入口。这个入口就是AER中断。linux的AER驱动只针对RC,也就是说软件需要处理RC的AER中断请求。并在中断处理函数中通过AER 寄存器来判断错误类型并...
2020-03-06 17:07:24
6115
翻译 【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
5675
原创 [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
18769
转载 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
878
1
原创 DMA的Scatter/Gather
Scatter:离散Gather:聚合场景1:将一片连续内存数据搬运到一片不连续的的内存空间(且间隔是相等的)源内存:连续目的内存:离散这个时候就可以用到DMA的Destination Scatter Transfer场景2:将一片内存区域中等间隔的多段数据拷贝到一段连续内存中(常见的2D矩形抠图就是这种场景的典型应用)源内存:分散目的内存...
2020-02-07 11:42:34
9676
pcibusbinding1275-1994.pdf
2020-04-20
NCB-PCI_Express_Base_5.0r1.0-2019-05-22.pdf.zip
2020-02-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人