近日在某狐家的3506g板子上调试CAN FD,开BRS波特率切换后无法收发数据
dmesg日志指出bitrate error 1.6%,远超brs后的重同步能力(<±0.3% ?)
ip -details link show can0
提示外设基础clock为196608000Hz,4096*48000的音频时钟,
DTS与内核config中去除所有音视频相关无果
改用hclk_can则又变成115200基的串口时钟
devmem对照TRM发现当前can用的v0pll,
在clk-rk3506.c中clk_can_patents_p去除相关选项,只保留到
{ "xin24m", "gpll" };
强制使用gpll终于得到了0误差的整数时钟
虽然不够优雅但解决了
我想问下有其他人也遇到过这个问题吗,这个神奇的v0pll=1179648000Hz是被谁初始化的呢
最近编辑记录 4610 (2025-10-31 13:52:22)
离线
性能着实一般,pvtpll=1433MHz,当前CPU频率比规格书上1.2G要高
打上了rt补丁,手动分配了中断和进程的CPU亲和性
1M仲裁5M数据0字节data下,只有21000帧/秒左右
猜测是socketcan这套框架太重? 因为CANTX没有DMA和FIFO,tx完成中断到送入下一帧的时间较长
某家核心板的宣传页上写的24307/s也不知道是如何达到的
Mem: 19096K used, 104172K free, 64K shrd, 0K buff, 3636K cached
CPU0: 0.0% usr 0.2% sys 0.0% nic 99.8% idle 0.0% io 0.0% irq 0.0% sirq
CPU1: 0.0% usr 17.6% sys 0.0% nic 72.0% idle 0.0% io 0.0% irq 10.3% sirq
CPU2: 6.9% usr 93.0% sys 0.0% nic 0.0% idle 0.0% io 0.0% irq 0.0% sirq
Load average: 1.63 1.46 1.08 3/95 535
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
533 447 root R 708 0.5 2 33.7 cangen can1 -I 555 -L 0 -b -g0 -p1 -x
68 2 root RW 0 0.0 1 9.4 [irq/47-can1]
380 378 root S 18104 14.6 0 0.0 /usr/bin/adbd
534 463 root R 1512 1.2 0 0.0 top最近编辑记录 4610 (2025-10-31 18:29:18)
离线
国产的跑linux的芯片是不是外设都不太靠谱呀,我看常用的外设还是跑在mcu上比较可靠,mpu就跑跑网络
没有不靠谱的外设,只有不靠谱的价格
3506也带个M0核200M,或者单独划个A7核心在xenomai抛开协议栈单独跑会好不少
至少绕过socketcan,单独驱动里写个ioctl发送接口也应该会有提升
其实除了上FPGA,还真没见过谁家can外设能跑满线速的
rk资料藏着掖着太难找,目前调试到至少是比一般usb can盒性能要强
已经给领导交差就没再优化
离线