- 博客(182)
- 收藏
- 关注
原创 S32DS如何查看 当前/修改 使用的gcc版本
文章摘要:本文介绍了在S32DS开发环境中查看GCC编译器路径及版本的方法。首先通过"project->properties"可查看GCC路径变量"${S32DS_K3_ARM32_GNU_10_2_TOOLCHAIN_DIR}",然后在"build variables"中可确认实际使用的GCC版本信息。操作步骤简单直观,便于开发者快速确认开发环境配置。
2025-10-13 09:02:14
253
原创 NXP的MWCT2016S芯片SPI0_SOUT引脚初始化异常拉高分析
摘要 硬件上电时SPI0_SOUT引脚出现异常上拉波形。分析发现,该引脚在GPIO初始化阶段(配置为SPI功能时)即被拉高,与SPI驱动初始化无关。通过寄存器调试确认,当MSCR36寄存器的bit0-1置1时必然导致引脚拉高,这是由芯片设计决定的SPI功能复用要求。该现象暂不影响通信功能,但可能需联系NXP技术支持进一步确认。建议保留当前配置,持续观察实际影响。
2025-10-13 09:01:27
579
原创 S32K328上芯片内部RTC的使用和唤醒配置
本文介绍了S32K328芯片RTC功能的配置与应用。RTC由V11供电,支持低功耗唤醒,外部仅需3.3V和1.5V电源输入。通过MEX工具配置RTC模块、WKPU唤醒模块及时钟模块,并给出RTC时间设置/读取的代码实现。重点说明RTC初始化需三个函数配合,且主电掉电后时间无法保持。最后详细阐述了RTC唤醒功能的配置方法,包括定时器设置和WKPU中断使能,提供了两种唤醒源(bit0/bit1)的配置示例,实测验证了bit0唤醒功能。
2025-09-04 15:34:45
771
原创 TLV320AIC3104音频芯片调试记录
本文介绍了音频硬件系统的架构设计与调试方法。系统采用SOC主控芯片通过I2C控制CODEC音频编解码芯片,通过I2S传输音频数据,连接麦克风和扬声器。重点阐述了使用示波器测量各信号线波形的关键点:I2C作为控制线应有SCL/SDA波形,I2S数据线在播放时应有波形,BCLK时钟线持续存在,扬声器振幅反映音量大小。还介绍了软件开发的寄存器读写和音频处理实现,以及设备树配置方法。通过波形分析可快速定位硬件问题,如无声、录音失败等故障。
2025-09-04 15:34:02
1050
1
原创 优快云多少质量分的文章才能被评为高质量呢
优快云博客文章质量分查询可通过质量分查看网址进行。根据示例,多篇高质量文章的质量分均在80分以上(81-93分),表明优快云可能将质量分≥80的文章评为高质量文章。用户可通过该工具评估文章质量,优质内容通常获得85分以上的高分。
2025-08-21 13:42:33
437
原创 Pseudo机制使用fakeroot工具创建的伪root权限进行gitlab跟踪管理
摘要 本文介绍了在Ubuntu非root环境下使用Pseudo机制制作具有root权限的文件系统镜像的方法。Pseudo通过LD_PRELOAD机制覆盖系统调用,赋予文件伪root权限并存储权限信息。文章指出Git无法识别Pseudo伪权限的问题,会导致文件系统异常。为解决此问题,提供了两个处理步骤:1)通过脚本扫描非root权限文件;2)在编译前使用ts_fakeroot批量修改文件权限。最后给出了具体的使用示例和权限修改脚本,确保文件系统编译时保持正确的权限设置。
2025-08-21 11:34:50
310
原创 S32KS328上实现串口接收并判断长度的几种方法
摘要:本文分析了S32DS平台上RTD驱动中Lpuart_Uart模块的三种串口接收方法。阻塞读取方法稳定不丢包但需单独线程;超时读取易丢包且受0x00数据影响;推荐使用中断读取方法,通过配置LPUART_UART_IP_EVENT_RX_FULL为1,实现逐字节接收并计算数据长度。文中提供了详细代码实现,包括初始化设置、中断回调处理和数据读取流程,并建议使用环形缓冲优化数据处理。中断读取方法能准确获取数据长度,是较优解决方案。
2025-08-21 11:34:01
897
原创 windows11更新之后,鼠标开机一直转圈圈无法使用
摘要 Windows系统更新后出现开机鼠标转圈圈异常,并非系统加载项过多导致。该问题源于此前自定义的鼠标指针设置未与系统更新同步。解决方法:进入鼠标设置重新调整指针选项,确保系统能正确读取最新设置。此现象是系统版本更新时默认设置同步不良所致,导致开机时需较长时间加载鼠标配置信息。通过重新设置即可恢复正常。
2025-08-20 08:49:56
2254
原创 S32K328(Arm Cortex-M7)适配CmBacktrace错误追踪
CmBacktrace 是一个用于ARM Cortex-M系列MCU的故障诊断工具,它通过重写HardFault_Handler函数,分析SCB寄存器和堆栈信息来定位问题。工具支持FreeRTOS等RTOS平台,通过串口输出故障信息,结合addr2line工具可快速反推故障代码位置。配置时需修改cmb_cfg.h和cmb_def.h文件,适配链接脚本中的内存区域定义,并添加任务栈信息获取接口。测试时可通过故意触发硬件错误来验证功能,输出信息包含故障类型、线程名和堆栈内容,帮助开发者快速定位问题根源。
2025-08-20 08:49:17
506
原创 车载以太网调试记录
本文介绍了以太网MAC和PHY层的基本概念,重点分析了Linux内核(5.15.153版本)中PHY驱动的调试过程。PHY层由PCS、PMA和PMD三个子层组成,负责数据编解码和传输。文章详细跟踪了MDIO总线扫描流程,包括通过mdiobus_scan函数获取PHY ID,匹配对应驱动(如Marvell 88Q2220)的关键步骤,并展示了如何添加调试打印来验证驱动加载过程。通过分析设备树配置、寄存器读写协议(C22/C45)和驱动注册流程,为以太网PHY驱动的开发调试提供了实用指导。
2025-08-04 10:16:13
802
原创 abort()ing pseudo client by server request. See https://wiki.yoctoproject.org/wiki/Pseudo_Abort for
abort()ing pseudo client by server request.;path mismatch [4 links]: ino 45132677 db
2025-08-04 10:15:17
388
原创 emmc初始化加载失败--mmc0: error -110 whilst initialising MMC card
文章摘要 调试新硬件时发现eMMC无法挂载,内核报错-110(ETIMEDOUT)。通过硬件排查确认电源和数据线连接正常后,重点进行软件排查。在mmc_switch函数中添加调试日志,发现多次CMD6命令交互成功(如设置索引0xaf、0x22等参数时均返回成功响应0x00000800),但最终仍初始化失败。问题可能出在时序切换或状态检查环节,需进一步分析CMD6命令执行后的总线时序切换和状态校验流程。日志显示所有CMD6命令均成功完成,但后续流程仍导致超时,需检查硬件兼容性或时序参数配置。
2025-07-09 15:09:03
1476
原创 S32K3上wkpu模块配置休眠唤醒的一些报错处理
Channel count is not maching the number of channels in the list;There are duplicated `IcuChannelRef` in the configuration;When SIGNAL_EDGE_DETECT measure mode is selected signal edge detect container must be configured.;ISR for this channel is not configur
2025-07-09 15:08:14
322
原创 S32K328打断点调试进入main函数之前的准备工作
本文介绍了S32DS平台下FreeRTOS工程的调试配置与启动流程分析。调试前需将启动入口从"main"改为"Reset_Handler",并注意调试器选择(Jlink或PE)。启动流程通过mermaid流程图展示了从Reset_Handler到main函数的完整调用链,包含时钟初始化、存储器配置、中断向量表设置等关键步骤。文章还提供了各启动标签的详细说明表,重点指出DATA_INIT阶段的FPU启用注意事项。调试时建议对带bl指令的代码使用F5进入查看,避免直接单步
2025-06-19 19:48:37
891
原创 S32DS上进行S32K328的时钟配置,LPUART时钟配置步骤详解
摘要:本文介绍了S32K328微控制器的时钟配置方法。S32K328最大主频为240MHz,其时钟树包含多个系统时钟节点,核心配置参数参考官方手册Table 143和149。配置时需先核对硬件原理图中的外部时钟源频率,在S32DS中根据建议值设置内部/外部时钟源,并逐步验证各节点频率是否符合预期。特别说明LPUART时钟源选择规则:LPUART0/1使用120MHz的AIPS_PLAT_CLK,LPUART2-7使用60MHz的AIPS_SLOW_CLK,波特率计算需参考Table 125。最终需确保COR
2025-06-19 19:42:02
909
1
原创 for(;;) 和while(1) 的无限循环用法对比,优缺点说明
在C/C++中,`for(;;)`和`while(1)`都是实现无限循环的常见方式,两者在功能上完全等价,但有一些细微差异和风格偏好:for(;;)优缺点,while(1)优缺点
2025-06-06 22:52:52
581
原创 keil编译工程,结合map文件和bin文件,实测C语言中不同类型的变量存储在不同的内存区域
本文通过Keil编译工程实例分析了不同变量的存储位置:已初始化非零的静态和全局变量存放在.data段;初始化为零或未初始化的静态/全局变量存放在.bss段;字符串常量存放在只读区.constdata或.text段;局部临时变量存放在栈(stack)上。通过解析map文件和二进制文件,验证了"hello"字符串、222字节数组等数据的实际存储位置,而333字节的临时数组未出现在可执行文件中,证实其运行时在栈上分配。不同类型变量的存储段特性与理论定义一致,但需注意不同编译器的实现可能有所差异
2025-06-06 22:49:31
498
原创 我的创作纪念日
摘要 过去五年里,作者坚持撰写嵌入式开发技术博客,从最初的学习笔记发展为系统性的技术分享平台。通过200多篇文章,作者完成了从基础外设驱动到RTOS、Linux底层开发的进阶,并涉足嵌入式AI和RISC-V等前沿领域。博客写作不仅帮助作者构建了完整知识体系,还提升了调试优化能力和跨领域技术融合水平。在实践层面,博客逐渐成为开源社区的桥梁,带来职业发展机遇和副业收入。作者认为技术分享是最有效的学习方式,并计划继续深耕底层技术,探索嵌入式Rust等新兴方向。文章鼓励读者即刻开始技术写作,让时间见证成长。
2025-06-03 08:40:11
561
原创 S32DS如何打断点查看寄存器的值
本文介绍了在S32DS开发环境中查看特定寄存器值的步骤:首先在参考手册中定位目标寄存器地址(示例为0x402EC004),然后在debug模式下设置断点,通过外设寄存器窗口查找目标地址并添加监视。最后根据寄存器描述文档解析bit位信息,即可在监视窗口中实时查看寄存器值。该方法适用于嵌入式开发过程中的寄存器调试需求。
2025-05-29 09:43:58
882
原创 S32K328的片上flash使用记录
本文介绍了基于S32K3_RTD_5_0_0 API对S32K328片上Flash的操作方法。Flash分为8KB UTEST、128KB Data Flash和8MB Code Flash三部分。读取使用C40_Ip_Read接口,支持数据比对验证。编程操作以64位为最小单位(8字节),最大支持128字节写入,需先解锁扇区。擦除最小单位为8KB扇区,同样需先解锁。常见错误包括HardFault_Handler,可能由APP区内执行擦除导致,建议APP区和数据区分块存储。文中提供了详细的代码示例和注意事项,
2025-05-29 09:43:02
657
原创 freertos中xTaskCreate和vTaskDelete详解
每项任务都需要 RAM 来保存任务状态,并由任务用作其堆栈。如果 使用 xTaskCreate() 创建任务,则所需的 RAM 会自动 从 freertos堆分配。注意:实现任务的函数 绝不能尝试返回或退出,但是任务可以使用API接口删除;注意:实际创建任务的时候,会*sizeof( StackType_t );configTOTAL_HEAP_SIZE 定义的是字节数长度,两个宏一定要区分清楚;注意:任务优先级数值越小,任务优先级越低;如果传递 NULL,会删除调用任务
2025-05-16 15:17:44
978
原创 S32DS中定义的全局变量对应的路径查看${ProjDirPath}
系统中常用的变量:${PATH},${ProjDirPath},${WorkspaceDirPath},${BASE_PLATFORMSDK_S32K3}, ${PLATFORM_PLATFORMSDK_S32K3},可通过如下方法查看变量对应的值S32DS界面选择:project->properties->C/C++ build->Build Variables;注意:一定要勾选 "show system variables", 才会显示出来变量名称和值
2025-05-16 11:37:07
421
原创 S32DS使用JLINK编译调试问题点记录
Error: Multiple errors reported.\ Failed to execute MI command;测试发现当变量大于100byte时候,会有报错;部分代码,打断点时候无法停止,会直接跳过;task任务栈增加之后,某个任务无法运行already started. Terminate the first one before restarting
2025-05-16 11:36:25
784
原创 S32DS删除历史安装的license code(Software Activation Code)
路径:C:\ProgramData\FLEXnet卸载的时候,顺便把这个路径下的文件删除掉;下次安装S32DS的时候,就会弹出来 licenses code输入界面了;不然安装S32DS的时候,不会弹出来 licenses 的输入界面
2025-05-13 15:13:37
378
原创 S32DS安装报错The installation of S32 Design Studio for S32 Platform 3.6.0 has been rolled back
文章摘要:在查看log日志时,遇到“AdditionalNotes: ERROR - Error writing LaunchAnywhere components (Access Denied)”错误,可能的原因包括文件兼容性设置不当或C盘空间不足。解决方法包括:1)调整安装文件的兼容性设置,确保以管理员身份运行;2)确保C盘有足够的空间,建议至少预留15GB,因为即使安装到其他盘,解压过程仍可能默认使用C盘。这些措施有助于解决安装失败的问题。
2025-05-13 15:08:52
662
1
原创 使用线性稳压器(LDO)进行低功耗调试中功耗偏高问题分析
在使用GD32F470调试休眠状态,在进入深度休眠的条件下,测试发现功耗偏高,如下记录所示;深度睡眠模式和待机模式功耗不同;LDO和DCDC区别点; 24V转3V系统问题;;混合电源架构中先使用DCDC,再使用LDO; 使用LDO供电的时候,电流转换效率;
2025-04-14 09:04:15
1214
原创 SPI-CAN芯片MCP2518关于INT1中断的一点总结
代码参考官方给出的例程进行设置,下图测量的是 接收中断引脚 INT1;测量之前请确保 SPI-CAN已调试成功,可以正常收发CAN数据;查看芯片手册,MCP2518内部有FIFI缓存,能够存储一定的CAN数据;MCU2518在某些异常情况下,无法读取数据,INT1中断也没有产生;经过修改之后再次复测,INT1中断可以正常恢复和产生;异常数据波形,INT1一直为低电平;正常数据为拉低之后迅速恢复高电平。
2025-04-09 08:56:52
1150
原创 NXP-CAN芯片TJA1042T休眠唤醒的一些方法
首先去官网看下芯片手册重点关注一下 运行模式由此可知:1:STB引脚拉低,正常工作模式;STB引脚拉高,待机模式;2:没有唤醒信号的时候。RXD引脚为高电平;有唤醒信号的时候,RXD引脚为低电平;如下代码所示,代码使用的时rt-thread操作系统,所以很多接口也是直接用的rt-thread的标准接口控制;需要注意的时,如果当前MCU不支持CANL的中断配置的话;需要在休眠前把CANL配置成普通gpio模式,再配置中断唤醒;// 休眠唤醒配置// 关闭CAN。
2025-04-09 08:55:47
741
原创 Cannot import module can.interfaces.canalystii : No module named ‘canalystii‘
后经查看 canalystii 厂家文档,发现python-can官方的例程存在问题,没有完全适配 CANalyst-Ⅱ CAN盒;将厂家提供的 canalystii.py 文件,替换到can模块路径下的 canalystii.py 即可正常使用;经查看,python-can安装正常,版本正常,也有 canalystii.py文件;不知道为什么报上述错误。使用python-can发送CAN数据的时候,报如下错误。
2025-03-27 09:26:33
328
原创 使用VSCODE导致CPU占用率过高的处理方法
cpptools + ckg_server_linux + node + git + rg原因:MarsCode的自动补全功能或其它智能修复,也会搜索上下文;当打开的文件夹过大,也会占用大量CPU;原因:原因是C/C++会在全局搜索文件,可以快速进行跳转;当打开的文件过大,全局搜索文件会占用大量CPU;2:打开大文件的时候把这两个插件禁用;设置一下.vscode/setting.s ,想要显示代码变更的时候再打开;如果不喜欢的话,也可以直接搜索"GIT: Enabled",然后禁用。
2025-03-27 09:25:55
2182
原创 udsoncan中打印python-can原始的CAN数据收发
在使用udsoncan的时候, udsoncan 屏蔽了底层的CAN数据收发接口,只需调用 client相关的发送和response接口,来判断UDS数据;搜索 “def send” 和 "def _recv_internal " 收发函数,根据 class中元组的定义,添加对应打印信息。实际测试时候,我们需要关注底层CAN数据收发进行调试;此时我们需要打开CAN模块。最终可在python执行界面,查看到如下日志;找到自己使用CAN盒对应的文件,可以通过初始化时候来查找。
2025-03-24 17:28:43
660
原创 VSCODE上ckg_server_linux进程占用CPU过多
每次一打开VSCODE,ckg_server_linux进程就启动了,并且一直运行,且占用CPU过高;主要原因还是我打开的文件夹太大了,marscode应该是有自动索引搜索之类的功能;本地搜索了一下,发现是 marscode插件影响的;禁用marscode之后再重新打开VSCODE就好了。推测应该是某个插件的问题导致的;
2025-03-24 17:28:08
1773
原创 python-can + can-isotp + udsoncan 实现基础的UDS诊断功能;附代码
这里主要修改的配置是 “ bus1 = can.interface.Bus(interface=‘canalystii’, channel=0, bitrate=500000)” 这一行代码,需要根据实际使用的CAN盒进行配置;详细的代码说明都有注释以支持的CAN盒可以从python-can官网进行查看# 使用 python-can + udsoncan + can-isotp 库发送UDS请求""""""import cantry:# 发送0x10切换会话服务, 可以自己调整参数。
2025-03-17 17:26:08
1865
2
原创 UDS诊断中FTB的定义;27145中FTB的定义
00-0F故障信息10-1F一般电气故障20-2F一般信号故障30-3FFM(调频)/PWM(脉宽调制)故障40-4F系统内部故障50-5F系统编程故障60-6F算法故障70-7F机械故障80-8F总线信号故障90-9F组件故障A0-AF一般电气故障-2B0-BF预留C0-CF预留D0-DF预留E0-EF预留F0-FF车辆制造商专用详情可参考 J2012-DA文档。FTB->failure type byte 故障类型字节;FTB被定义为扩展DTC中最常用的故障类型字节,主要用于CAN网络。FTB与一个由
2025-03-17 17:25:06
928
原创 UDS诊断中,14229-1中DID的数据定义,15031-5中DID的数据定义
参数dataIdentifier(DID)逻辑上表示一个对象(例如进气门位置)或对象集合。该参数应在服务器的内存中 可 用。dataIdentifier 值 应 存 在 固 定 内 存 中 , 或 者 临 时 存 储 在 RAM 中。通常,dataIdentifier能够用于许多诊断服务请求,包括0x22(readDataByIdentifier),0x2E(writeDataByIdentifier)和0x2F(inputOutputControlByIdentifier)。
2025-03-13 09:17:01
904
原创 UDS中多帧传输详解(配合实例)--ISO 15765-2(网络层服务)
每个ECU的性能有差距,这个是接收端反馈发送端,每帧连续帧的时间间隔是多少;参考 N_PCI 字节说明解析,需要先把16进展转换为2进制,有的可能需要转换为10进制,便于人理解。根据UDS协议 ISO14229-1中的描述,传输层和网络层使用 ISO 15765-2来表示;参考 15765-2 “6.5.5”章节,有更加详细的描述,下面是简单总结。第一个byte是0x2X开头的是连续帧;第一个byte是0x3X开头的是流控帧;第一个byte是0x0X开头的是单帧;第一个byte是0x1X开头的是首帧;
2025-03-13 09:16:19
1636
原创 执行shell指令的时候,设置了 grep 过滤, 还是输出了一些无关数据
在使用grepstderrgrep确保grep的正则表达式能准确匹配目标数据。如果匹配不完整或过于宽松,可能会导致意外的数据被匹配。-w-i可以借助在线工具(如)调试正则表达式。stderr默认情况下,grep只作用于标准输出 (stdout),而命令的错误流 (stderr) 可能仍然直接输出到终端。grepstderr如果你只想过滤输出流而不关心错误流,可以将错误流重定向到/dev/null。
2025-02-13 15:38:32
1059
原创 windows上如何卸载已安装的USB驱动,设备管理器和控制面板没有卸载选项
在 Windows 系统上,可能遇到已经安装过旧驱动,又需要安装新驱动;但是旧驱动无法彻底卸载,设备管理器和控制面板没有卸载选项,此时可以使用 cmd指令进行驱动卸载。
2025-02-13 15:37:59
10153
原创 ./full_ota.sh: 93: Syntax error: redirection unexpected
IFS=’ ’ read -a allopts <<< “$@” 使用了 <<<(Here String)语法。这是 bash 提供的特性,但在 dash 或其他 POSIX 兼容的 sh 中是不支持的。我这边报错对应的语句 " IFS=’ ’ read -a allopts <<< “$@”"修改之后可以正常执行成功。查看.sh脚本,开头为。
2025-02-07 18:13:06
319
原创 ./build.sh: 9: Syntax error: “(“ unexpected
如果必须使用/bin/sh,需要改用dash支持的函数定义方式,即不使用function关键字,而直接定义函数名称并加上括号()。/bin/sh# 一键编译生成烧写包# 先批量使用ts_fakeroot增加一下root权限./build.sh。
2025-02-07 08:35:49
562
06-S32K3xx-Pins-and-Clocks-with-RTD-Training.pdf;S32K3XXRM-参考手册.pdf;S32K3的时钟配置建议(Seth Wang).pdf
2025-06-19
关于征求GB/T 32960.1《电动汽车远程服务与管理系统技术规范 第1部分:总则》等4项推荐性国家标准意见
2024-09-06
MobaXterm-keygen解除session保存限制的python脚本
2024-08-23
python将bin文件合并之后再打包为hex文件
2024-08-19
PK2DeviceFile.zip,配置 PK2DeviceFile.dat,适配PICkit3,识别 micorochip芯片
2024-04-20
git-repo,repo init批量拉代码使用的原始脚本
2023-11-21
ISO15031多个版本的协议;包括2006和2011版本
2023-08-01
ISO15765协议文档,包括多个版本协议和中英文
2023-08-01
汽车整车信息安全技术要求 及相关附件
2023-05-06
一款用于分析 内存分区情况的MAP 文件分析工具
2022-10-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅