- 博客(56)
- 资源 (3)
- 收藏
- 关注
原创 具身神经-机器人运控通讯架构与实现系列
以第一性原则,探索当前具身机器人通讯架构实现最优解,加速具身机器人行业底层控制(通讯)系统技术方向收敛。尽可能帮助机器人本体系统工程师减少试错。
2025-10-18 22:28:39
477
原创 达妙电机卖断货openarm需求强劲-背后关键技术解析
本文解析了开源机械臂OpenArm爆红的背后原因及其关键技术选择。OpenArm凭借完整的开源生态和模块化设计,降低了机器人研发门槛,受到教育、科研和小型自动化领域欢迎。其关键部件选用了达妙电机,主要是因为:1)高扭矩密度和平稳力矩特性满足精密控制需求;2)支持高速CANFD总线与MIT控制协议,简化了多关节控制架构;3)高性价比降低了研发成本。文章指出,随着CANFD成为机器人通信新标准,电机厂商需要在CANopen和MIT协议间做出战略选择,并需解决协议升级难题,包括专业调试工具和技术支持团队建设。
2025-11-06 21:46:14
1227
原创 四足机器狗整机关节控制-CAN/FD总线架构及分析
摘要:本文分析了四足机器狗的CAN总线控制架构,指出MIT Cheetah等主流方案采用4路1Mbps CAN2.0总线(每路控制3个电机)时负载率约60%,处于合理范围。为解决扩展性瓶颈,提出升级到CANFD(1M/5M)方案:单路总线可控制6个电机(2条腿)且负载率仍保持60%,剩余总线资源可用于外接执行器或冗余设计。该优化显著提升了系统扩展能力,为功能多样化提供了通信保障。
2025-10-23 22:57:23
726
原创 [人形机器人]宇树G1拆解分析 - 主控部分
本文介绍了宇树G1机器人的主控系统架构。机器人采用双主控设计:大脑计算单元采用Nvidia Jetson Orin NX芯片组,负责高级运算任务;小脑运控单元疑似采用瑞芯微RK3588方案,专注于运动控制。两大单元通过总线连接,其中小脑单元通过6路RS485总线(推测为2路手臂、2路腿部、1路头部和1路腰部)精确控制各关节电机的力矩和角度。系统采用核心板+底板的设计模式,兼顾计算性能与运动控制稳定性。
2025-10-22 23:34:16
2485
原创 智元灵犀X1-本体通讯架构分析2:CAN/FD总线性能优化分析
通过5M高速波特率,单路CANFD总线可1KHz控制8个电机,保证关节流畅运行通过合并多个电机的控制命令到单条CANFD 64字节报文,有效降低了约26%的总线负载率CANFD总线最大负载率54%左右,留有通讯余量,避免高负载率下的总线竞争,保证了通讯的实时性。
2025-10-22 22:54:20
947
原创 智元灵犀X1-本体通讯分析1:整机通讯架构
本文剖析了智元灵犀X1机器人本体控制架构。该机器人采用29个关节和2个夹爪,均通过CANFD通讯。主控X86 MiniPC通过两个DCU模块扩展6路CANFD接口,实现1KHz控制频率。关键设计包括:使用CANFD 64字节长帧同时控制8个电机提升同步性;采用1M/5M双波特率优化通讯效率。虽然当前已有更紧凑的CANFD扩展方案,但灵犀X1的架构为行业提供了重要参考价值。文章还提供了相关技术文档和开源项目链接。
2025-10-18 22:30:07
789
原创 [git]smartgit 取消非商业版本(non-commercial)选项后怎么继续免费使用
今天突然发现最新的smartgit启动界面取消了non-commercial的lic选项,意味着已经不支持免费的非商业评估了。但是非商业必须勾选保持软件是最新的选项,软件会自动检测更新,这个时候只能关闭对话框。隔一段时间会弹出来提醒更新,还是比较蛋疼。但是老版本还可以继续选择non-commercial版本。有需要的可下载最后一版支持non-commercial的版本。目前下面这个版本还是支持非商业使用的,V21.2.4。从最新版的changelog可以找到最后的版本号。又可以愉快的使用(白嫖)啦。
2022-12-14 14:21:24
3679
转载 【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
12854
原创 CAN/CANFD 总线负载率及计算(源码和工具)
CAN BUS的总线负载率是CAN总线架构协议设计时的一个重要的指标。一般建议负载率峰值不要高于80%,平均负载率不要超过50%。当然这只是一般建议,具体根据使用场景和系统设计而定。负载率定义关于CAN负载率的定义和计算,很多文章写得不求甚解,用帧数量来计算负载率是非常不正确的做法。其实总线负载率的定义其实是非常简单明了的:总线负载率=总线每秒上传输的实际bit数量/总线波特率*100%原理非常简单,波特率的定义就是每秒CAN总线上可以传输多少CAN数据bit,总线负载率自然就是总线
2022-03-09 14:55:47
22092
3
翻译 [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
3857
翻译 ATF(ARM Trusted firmware)代码结构
代码结构TF-A 代码在逻辑上分为前几节提到的三个引导加载程序阶段。代码也分为以下几类(在源代码中显示为目录): 平台特定。架构特定代码的选择取决于平台。 通用代码。这是平台和架构不可知的代码。 图书馆代码。此代码包含所有其他代码常用的功能。PSCI 实现和其他 EL3 运行时框架作为库组件驻留。 阶段特定。特定于引导阶段的代码。 驱动程序。 服务。EL3 运行时服务(例如:SPD)。特定的 SPD 服务驻留在services/spd目录中(例如s
2021-12-23 14:57:48
4682
原创 [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
1168
原创 [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
21619
4
原创 [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
8151
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
1705
原创 [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
4798
转载 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
3817
转载 RSA非对称加密基本原理
RSA是目前使用最广泛的公钥密码体制之一。它是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法的安全性基于RSA问题的困难性,也就是基于大整数因子分解的困难性上。但是RSA问题不会比因子分解问题更加困难,也就是说,在没有解决因子分解问题的情况下可能解决RSA问题,因此RSA算法并不是完全基于大整数因子分解的困难性上
2021-09-01 16:05:33
1668
转载 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
4808
原创 kernel make basic useage
make xxx_defconfig ARCH=XXXmake menuconfigmake savedefconfig && mv defconfig arch/xxx/configs/xxx_defconfig
2021-08-16 14:10:35
823
转载 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
2395
转载 buildroot 修改包源代码后重新编译【转】
使用buildroot构建rootfs十分的方便,由于实际需要常常需要修改一些包的源码来添加一些自定义功能,修改源码之后怎么操作才能让buildroot重新编译这个包呢。本帖最后由 shiyigudong 于 2012-07-16 14:54 编辑 最近使用buildroot制作编译环境,文件系统。使用过程当中有许多注意点。今天的一点注意记录如下: 使用buildroot则样重新编译某一个包。比如说我们在某一个包里修改了代码,怎么重新编译呢。 我使用的是buildroot-2012
2021-08-06 14:42:21
3587
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
2486
原创 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
1824
原创 [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
12377
原创 [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
7037
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
3354
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
5531
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
25811
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
19786
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
10709
原创 [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
5760
原创 [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
2449
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
7646
原创 [PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态
PCIe设备的低功耗状态要求系统驱动程序显式地将设备置于低功耗状态,从而PCIe链路则可以依次变为低功耗链路状态。PCIe规范允许PCIe链路在没有系统驱动的情况下进入低功耗状态。这个特性就是所谓的主动状态电源管理(ASPM)。一般来说,无论是系统驱动端硬件(RC)还是设备硬件(EP)都可以通过检测pcie链路上的空闲时间,然后启动电源状态转移。有两种低功率链路状态:L0s,也叫L0 st...
2020-04-30 15:40:40
28771
原创 [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
1415
转载 [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
4623
原创 [CAN Bus]有关 CAN 总线 通讯可靠性的 N个问题
第1问:总线中有若干节点,若某节点发送一帧报文且被ACK,那么能保证总线上所有节点都收到了这帧报文吗?答:不能,只能保证至少一个节点应答了这帧报文。第2问:当总线中一节点接收到一帧报文,且这帧的仲裁域(ID)与接收节点的过滤器不匹配。也就是说接收节点并不会将这帧数据放入接收fifo或者rx mail box。那么这个接收节点会在这帧的ACK slot发送显性位吗?答:会的,只要接...
2020-04-15 17:37:58
3048
6
原创 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
4656
2
转载 「博文连载」PCIe扫盲——PCIe演进方向?CCIX简介
摩尔定律逐渐降速,业界需要一同寻找提升计算性能、同时保持低功耗的方法。CCIX联盟的成立旨在实现一种新型互联,专注于新兴的加速应用,如机器学习、网络处理、存储卸载、内存数据库和4G/5G 无线技术。这个标准使得基于不同指令集的处理器,将缓存一致性、对等计算的优势扩展至许多加速设备包括FPGA、GPU、网络或存储适配器、智能网络和定制的专用集成电路。CCIX 通过扩展现有成熟的数据中心硬件和软件基础...
2020-03-13 11:28:24
2324
NCB-PCI_Express_Base_5.0r1.0-2019-05-22.pdf.zip
2020-02-17
pcibusbinding1275-1994.pdf
2020-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅