- 博客(28)
- 收藏
- 关注
原创 CPU应用(使用pwm)
3.由于我使用的pwm是复用的gpio,所以一个pwm对应3个寄存器。首先是GPIO的复用,其次是pwm的周期和pwm的占空比。周期问硬件的要求25k是很小的数值.占空比基本等于周期*百分比。1.看芯片手册和硬件提供的原理图,找出对应的管脚和控制的寄存器(直接把手册喂给ai很方便,不需要自己找大概位置)2.对于操控cpu的寄存器,我使用的是devmem直接控制。
2025-12-05 14:10:12
88
原创 外设调试(phy8521)
对于在cpu上面的8521,通过mdio去访问;对于在switch上面的phy,通过sdk去访问,不知道如何访问的去问fae,phy的顺序要看硬件是怎么连接的,多试几次就知道了。一般是获取速率、link、双工、down/up。对于phy的灯修改后,需要掉电才能有效果,不然修改的数据不生效。对于phy的初始化是要切页的0x1e写目的地址,1f写值。
2025-12-04 13:56:18
58
原创 代码移植(调试ds1339)
但是在i2c0上的ds1339地址为0x68时卡住了。一直不能set 从地址。这个就是BSP驱动里面设置了ds1339的地址。BSP驱动和外部访问是不兼容的。在BSP里面设置是为了给系统命令date和hwclock使用。由于使用的精简版hwclock,先date后同步给hwclock。更换了设备的板卡,所以需要把A设备的bsp移植到B设备,设计方案基本一致。
2025-11-27 11:09:15
77
原创 代码移植(ctc5118的初始化端口)
根据硬件提供的端口把SERDESID、HSSID、LPORT对应上,datapath把端口、端口模式适配就行。由于是代码的移植适配,不需要我来造轮子。
2025-11-26 13:47:08
340
原创 关于cpld的GPIO模拟Jtag加载
对于gpio模拟jtag加载,首先要去知道cpld的型号,再找公司以前类型的型号的代码,把gpio的TSM\TDI\TDO\TCK\PROGRMAN一一对应替换即可。对于代码的调试,首先看是否初正确始化了管脚、管脚熟悉、高低电平,如果没问题就让硬件和cpld分析去吧。我知道的cpld的加载分背景加载和非背景加载。背景加载不用拉PRORMAN管脚,非背景就要手动拉。
2025-11-25 15:27:22
92
原创 记录一次代码编译时报错(2)
说明代码编译是有先后顺序的。由于项目代码的迭代,公共类的通用代码并没有统一的放在最前面,就可能导致你的代码先编译了,用到的通用代码还没有编译就会报错。这个时候只简单的方法就是把使用的代码复制粘贴到你的.c文件即可。基于这个问题,使用sourcing in sight看代码的时候就会发现一个通用的宏的代码会在几个.c地方实现,而且实现的过程是一模一样的。在项目的编译中,基本都是Makefile在帮助我们编译文件,分为三部分。基本格式为:目标:过程。
2025-11-03 14:03:51
210
原创 吐槽Keil软件
同步了项目文件,编译烧录到单片机后发现运行个1分钟就会重启。发现是提交项目文件时不能只提交.c .h文件,groups的配置也要提交。
2025-10-29 16:18:01
107
原创 ctc5118实验
步骤:只需要在ddr.c的结构体里面选择ecc_disable和DQ_16 ,编译uboot烧录进去即可。最好在uboot界面做一下稳定性测试,用自带的mtest。步骤:由于HS13/6被复用了,需要让硬件把SEL引脚拉高,默认是gpio模式,初始化引脚即可。H_BASE是478 BASE是496。实验一:从原有的两片ddr去掉一片做ecc的ddr。实验二:控制HS13 HS16引脚。
2025-08-27 14:11:54
125
原创 记录windos的ping用法
k host-list 与主机列表一起使用的严格源路由(仅适用于 IPv4)。-j host-list 与主机列表一起使用的松散源路由(仅适用于 IPv4)。-f 在数据包中设置“不分段”标记(仅适用于 IPv4)。-R 同样使用路由标头测试反向路由(仅适用于 IPv6)。-r count 记录计数跃点的路由(仅适用于 IPv4)。-s count 计数跃点的时间戳(仅适用于 IPv4)。若要停止,请键入 Ctrl+C。
2025-08-13 17:25:46
297
原创 D4单片机调试后续(2)
把单片机的代码优化后,我就没管做别的去了,昨天晚上组长研究了发现是单片机的(状态机)中断程序没有做并发处理导致。增加并发处理后就没有异常了,但是发现主机只能收到单片机发的16个字节,这个问题是由于单片机发的太快导致,增加延时即可。
2025-07-25 15:11:31
278
原创 记录一次MIB替换.my文件记录(2)
MIB Compiler专门添加需要的.my文件(核心库不能删除否则什么.my文件都不能添加不需要添加*.sdmib文件,.my文件可以直接添加需注意添加路径最后的正则表达式)MIB BROWSER是浏览器,只添加MIB Compiler编译好的模块和操作设备。MIB Builder就是CRUD.my文件的。
2025-07-23 10:09:31
255
原创 D4单片机调试后续
对于收帧异常开始认为是加boot导致的,因为老程序是没这个问题,后来发现去掉boot还是会出现收帧异常。把程序拿给工具去检测,也检测不到指针越界等错误。然后就先不管这个问题,直接优化了代码,就发现一处extern数组越界,解决后异常情况也没有解决。暂时先不处理这个问题,组长也没头绪,先解决别的。
2025-07-22 09:50:51
213
原创 xshell7提示需要更新解决办法
LiveUpdate.dat的文件删除了,然后再启动。echo 同步时间中,完成后自动关闭窗口...title Xshell启动器。#改成你的xshell启动路径。echo 启动软件中...
2025-07-17 14:36:00
519
原创 记录一次D4单片机调试
我猜测和单片机、软件的编译环境有关,因为crc校验是给的一个数字矩阵,然后每个帧的数据相当于i 抑或上下一个数据这样算的。方案:设备通过串口把文件转换成二进制方式传给D4单片机,D4单片机在同步写进设计好的分区。目前主要是设备收帧有时会收不到单片机发的帧,我发帧是会告诉单片机这是第几帧有索引,单片机按照索引写入分区,所以这个问题不是很大。最好的调试就是把每一帧都打印出来,设备收发帧,单片机收发帧。背景:设备与单片机通过串口连接,之前不支持在线升级D4单片机程序,现要求通过串口升级单片机。
2025-07-08 17:50:54
222
原创 记一次调试记录
嵌入式系统里面都会用到reboot,那么reboot是怎么实现的呢。一.硬件层面,由外设或者cpu自己控制管脚复位;二.软件层面,用reboot(RB_AUTOBOOT)这个通用函数。以前第一次做软件层面的reboot,我都不知道这个函数。__builtin_ctz 也是蛮实用的,中断回调可以用到。
2025-07-04 14:53:18
126
原创 记录一次前辈的提醒
问题出现再中断的注册函数的这一块,之前的中断函数是修改验证后某p的注册函数。而当前项目所用的注册函数是直接注册函数,不是之前的类似api的调用,直接注册函数会用到信号函数。我再信号函数里面又调用了回调函数。目前是没问题,可是如果后面用到系统函数就会产生死锁段错误的问题。为了避免后面可能出现的问题,所以就修改了,使用flag+task解决。在项目中,有用到中断这一特性,我负责中断这一块。这个项目用到了中断,我就之前把之前项目的中断函数拿过来修改了。然后前辈看到我的中断代码就要求我修改一下。
2025-06-30 16:47:33
404
原创 记录一次调试问题(数据类型)
分析:加打印后主卡接受的数据都是正数,转换过程出现再一个模板函数里面,该模板函数是多个产品通用的,发现是u_short变量在转换的时候强转成short ,由于数据超过了32767导致符号位变化了。解决办法:由于该函数还有别的数据使用,新增一个不强转的函数使用。需确认数据不需要负数。问题描述:子卡发送了一个数据,主卡接受后发现数据变成负数了。
2025-06-27 17:01:45
107
原创 记录一次发版本遇到的问题
发版本都是python去ftp去取的。由于产品有多个,所以脚本也有多个。pycharm一直都是用的3.8的。结果有一个脚本用3.8的报错说没有ftp,我换到3.7的发现执行开头一步下载了一个文件就卡住了。急的我连续换3.8 3.7的版本来回试。后来我发现是从ftp取这个33M的文件要2分钟,所以导致3.7的执行一步就卡住了。
2025-06-26 14:41:13
100
原创 记录一次MIB替换.my文件记录
按操作进入到这个界面,此时不会显示.my文件,而是显示文件夹,你要选的文件需要包含.my文件即可。选择需要替换的文件。再用MIB_BROWER连接就好了。tips:不关brower不能删除文件和添加。我的.my文件是放到桌面的,选择桌面即可。先关闭MIB BROWER。
2025-06-17 09:56:39
289
原创 记一次驱动调试记录
在设备跑app时,如何省时的区分是app的问题还是fpga的问题?之前都是pkill掉app,在用小工具单独加载测试。在linux下输入kill -l 可以查看命令。kill -23 PID 挂起线程 kill -25 PID结束挂起,继续跑app。
2025-06-16 15:58:59
103
原创 记录一次代码编译时方法重复定义报错
记得第一次面试的时候,面试官就会问代码在编译的时候会报哪些错误。当时很惭愧,只能说出没有include,变量重复定义。后面在工作中,就遇见了很多编译问题,写这篇文章都不记得了遇到的问题了。在代码编译中提示multiple definition of “xxx”,以为和变量被多次定义一样,发现该方法只在.c文件里面实现,没有在.h里面定义。我这个算是简单的,还有一种就是方法在.h里面声明并定义了,良好的代码习惯是.h里面声明.c里面实现,由于c语言不能重构,所以多次实现会报错。
2025-06-16 01:11:30
296
原创 记一次MIPS的BSP 25.03的编译流程
解压source/kernel目录下的内核压缩包(2),自己去output目录下选择自己需要的类型文件(3),进去touch loacl.mk文件(1),然后echo "LINUX_OVERRIDE_SRCDIR = ./source/kernel/linux-dbd52240xxxxxxxxxx" > local.mk。下载工具链和sdk包,解压。由于sdk包的编译生成的内核不需要指定特定的工具链只要是下载的工具链里面的就行。放到opt/mscc目录下,menuconfig默认是这个路径。
2025-06-11 11:13:14
171
原创 交叉编译MIPS的Redis
2.进入src下去make(没记错就是src)选择MALLOC的类型,CC工具链(看环境变量)CXX、AR、LD 、LDFLAGS、 LIBS。这些看自己的需要,出现什么方法没定义的自己添加即可,不知道添加什么内容问问ai,反正最坏就是精度不太好。我的工具链是精简版所以需要指定。1.首先下载Redis的release版本,出现fate.h之类的error就是版本的问题。3.make install PREFIX=“指定的目录”编译完成,我编译出来没有调试,是别人用了说运行正常。
2025-05-12 15:33:21
182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅