<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Eterlove的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Eterlove</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Eterlove]]></copyright><item><title><![CDATA[记录外部EEPROM读写有问题排查过程]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/139933870</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/139933870</guid><author>Eterlove</author><pubDate>Mon, 24 Jun 2024 19:57:38 +0800</pubDate><description><![CDATA[10.目前系统有86个故障，对应86个DTCCode,问题出错在后面49号故障，但是这86号故障通过For遍历的，打断点也有技巧，右击Breakpoint Properties断点属性内设置Condition（i == 49）（调试平台为S32DS3.5）该函数是先将EEPROM的数据读出到一个很大的局部数组A[430],然后再从数组数据依次拷贝到DTC结构体，但是这个函数在一个任务里面跑，这个任务只分配了256字节的堆栈，而局部数组太大，导致堆栈溢出。由于EEPROM的IIC驱动是用模拟IO写的。]]></description><category></category></item><item><title><![CDATA[UDS服务19 01按掩码读DTC数量]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/139810847</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/139810847</guid><author>Eterlove</author><pubDate>Wed, 19 Jun 2024 19:00:29 +0800</pubDate><description><![CDATA[UDS服务19 01按状态掩码读DTC数量。该文章为原创，转载请注明出处和作者。作者 : Eterlove。]]></description><category></category></item><item><title><![CDATA[工作经验杂谈2023-11-11]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/134344790</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/134344790</guid><author>Eterlove</author><pubDate>Sat, 11 Nov 2023 11:44:22 +0800</pubDate><description><![CDATA[初入嵌入式软件工程师的职场，第一份工作选择了站到风口上的储能行业，第一个正式项目选择了前沿的无线BMS项目。算了算，从7月4日开始入职，整整工作了四个月啦。故准备谈谈自己的收获和感受。]]></description><category></category></item><item><title><![CDATA[C 语言的断言函数应用]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/132354501</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/132354501</guid><author>Eterlove</author><pubDate>Fri, 18 Aug 2023 11:06:26 +0800</pubDate><description><![CDATA[从上面的示例中不难发现，对标准的 assert 宏来说，自定义的 ASSERT 宏将具有更大的灵活性，可以根据自己的需要打印输出不同的信息，同时也可以对不同类型的错误或者警告信息使用不同的断言，这也是在工程代码中经常使用的做法。从表面看来，上面的解决方案应该堪称完美。上面的解决方案尽管通过条件编译“#ifdef DEBUG”能产生很好的结果，也完全符合我们的程序设计要求，但是仔细观察会发现，这样的测试检查代码显得并不那么友好，当一个函数里这种条件编译语句很多时，代码会显得有些浮肿，甚至有些糟糕。]]></description><category></category></item><item><title><![CDATA[嵌入式开发工具推荐]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/132327559</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/132327559</guid><author>Eterlove</author><pubDate>Wed, 16 Aug 2023 20:56:10 +0800</pubDate><description><![CDATA[NXP官方开发的一款数据可视化的调试软件。]]></description><category></category></item><item><title><![CDATA[万丈高楼平地起,一砖一瓦皆根基]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/132313403</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/132313403</guid><author>Eterlove</author><pubDate>Wed, 16 Aug 2023 10:19:02 +0800</pubDate><description><![CDATA[转载于周立功人物事迹作者介绍：周立功，男，生于1964年，著作等身的嵌入式技术专家，广州立功科技股份有限公司创始人/董事长/总经理，广东省电子学会副理事长，广州市半导体行业协会副会长，广州市软件行业协会副会长，曾撰写60余本技术专著。]]></description><category></category></item><item><title><![CDATA[UDS (Unified Diagnostic Services)汽车诊断标准协议]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/132302914</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/132302914</guid><author>Eterlove</author><pubDate>Tue, 15 Aug 2023 17:21:40 +0800</pubDate><description><![CDATA[2. ECU 复位（0x11）服务 ECU Reset
  客户端使用 ECU 复位服务来请求服务端重置。
Note:①ECU 复位肯定响应消息(如果需要）应在服务端执行重置之前发送。含义如何解释:当ECU复位以后，“丢掉记忆，重新开始，它就不记得之前干过(收到什么指令)什么!”故执行复位前，应该先肯定响应消息后复位。
②还有一点值得注意：服务端重置成功后，将激活默认会话。

3. 安全访问（0x27）服务 Security Access
  使用该服务的典型示例如下所示：客户端请求“种子”，服务端发送“种]]></description><category></category></item><item><title><![CDATA[基于UDS on CAN的bootloader]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/132232849</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/132232849</guid><author>Eterlove</author><pubDate>Mon, 14 Aug 2023 14:27:25 +0800</pubDate><description><![CDATA[Tester(诊断方)ECU(汽车电控单元）3.UDS的软件实现：协议栈(Core)和应用程序。2.UDS的硬件实现：CAN总线和诊断接口。TP:Tester Present待机握手。Bootloader——三段式。]]></description><category></category></item><item><title><![CDATA[【MCU学习】GD32F427VG开发]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/132075958</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/132075958</guid><author>Eterlove</author><pubDate>Thu, 03 Aug 2023 09:21:19 +0800</pubDate><description><![CDATA[4.参考手册：GD32F4xx_User_Manual_Rev2.8_CN。5.数据手册：GD32F427xx_Datasheet_Rev1.5。3.GD32F4xx_固件库使用指南_Rev1.2。1.GD232F4xx的Keil芯片支持包。2.标准固件库和示例程序。]]></description><category></category></item><item><title><![CDATA[《博客继续更新说明》]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/131876590</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/131876590</guid><author>Eterlove</author><pubDate>Sun, 23 Jul 2023 11:33:58 +0800</pubDate><description><![CDATA[有得有失，2021年参加电赛，痛失国赛，只拿了省二，电赛是奇数年国赛，偶数年省赛，故2022年大学生电赛还是又去参加了一次，斩获省一，蓝桥杯也去搞了一次，也拿了奖，自此大学生活就结束了，不得不说，时间过得真快。自2022.6.20起，本人优快云博客断更了，故很多粉丝的私信没有看到，非常抱歉哈，简单叙说下这一年经历，当时大三后期原本想法是直接找嵌入式实习的，哈哈，后来想再读个研究生沉淀一下，就开始备考西安的某211学校的电子科学与技术王牌专业，自此开始静下心开始复习，停更了博客。]]></description><category></category></item><item><title><![CDATA[《从0开始设计和实现CPU》bus总线顶层模块设计]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/124512289</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/124512289</guid><author>Eterlove</author><pubDate>Sat, 30 Apr 2022 16:09:33 +0800</pubDate><description><![CDATA[1.总线Code管理

首先，对前面编写的代码进行一个管理创建一个文件夹命名为bus存放总线设计的代码,

在此目录下创建inc文件夹来存放bus所需要的头文件，
总线的实现的代码放在bus文件下。




2.总线设计概要
1.  bus_arbiter.v ：实现了总线总裁器的设计，解决了4个总线主控在请求总线时，总线该赋予哪个主控的仲裁问题。
2.  bus_master_mux：实现了总线主控多路复用器的设计，这个是基于总线仲裁器的总线赋予信号：赋予信号一旦选择某个主控，该主控成为总线的使用者，该主]]></description><category></category></item><item><title><![CDATA[《从0开始设计和实现CPU》总线设计（四）之总线从属多路复用器的实现]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/124205921</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/124205921</guid><author>Eterlove</author><pubDate>Fri, 15 Apr 2022 23:03:38 +0800</pubDate><description><![CDATA[实现功能：总线从属多路复用器的实现

1.程序源码
  /****功能：总线从属多路复用器的实现****/ 
`include "stddef.h"
`include "global_config.h"

`include "bus.h"

module bus_slave_mux(
      /****0号总线从属****/ 
		input wire                 s0_cs_,     //片选
		input wire [`WordDataBus]  s0_rd_data, //]]></description><category></category></item><item><title><![CDATA[《从0开始设计和实现CPU》总线设计（三）之地址解码器的实现]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/124205541</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/124205541</guid><author>Eterlove</author><pubDate>Fri, 15 Apr 2022 22:38:48 +0800</pubDate><description><![CDATA[功能：地址解码器的实现
1.总线框图
2.程序源码
  /****功能：地址解码器的实现****/ 
`include "stddef.h"
`include "global_config.h"

`include "bus.h"

module bus_addr_dec(

     /****总线从属共享信号****/
	  input wire [`WordAddrBus]  s_addr,    //地址 29：0
	  /****总线从属0~7号****/
	  output reg       ]]></description><category></category></item><item><title><![CDATA[《从0开始设计和实现CPU》总线设计（二）之总线主控多路复用器的实现]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/124205442</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/124205442</guid><author>Eterlove</author><pubDate>Fri, 15 Apr 2022 22:33:03 +0800</pubDate><description><![CDATA[1.开发工具

Quartus (Quartus Prime 18.1) Standard Edition
Modelsim SE-64 10.4
Icarus Verilog + gtkwave(开源)

2.总线框图

3.程序源码
`include "stddef.h"
`include "global_config.h"

`include "bus.h"

module bus_master_mux(      	  
       /****0号总线主控****/
	   input wire ]]></description><category></category></item><item><title><![CDATA[《从0开始设计和实现CPU》总线设计（一）之总线仲裁器的实现]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/124176453</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/124176453</guid><author>Eterlove</author><pubDate>Thu, 14 Apr 2022 18:39:06 +0800</pubDate><description><![CDATA[（一）总线的实现

总线由总线仲裁器，总线主控多路复用器，地址解码器，总线从属多路复用器组成，本文记录总线仲裁器的实现。


原理请看书《CPU自制入门》，书中通俗易懂，图文并茂。

（二）程序源码
1.定义bus_arbiter.h（书中定义为bus.h）
`ifndef __BUS_ARBITER_HEADER__
`define __BUS_ARBITER_HEADER__


`define BUS_MASTER_CH       4     //总线主控通道数
`define BUS_MASTER]]></description><category></category></item><item><title><![CDATA[《从0开始设计和实现CPU》专栏相关声明]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/124174451</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/124174451</guid><author>Eterlove</author><pubDate>Thu, 14 Apr 2022 16:39:03 +0800</pubDate><description><![CDATA[1.专栏声明

该专栏源于图灵程序设计丛书《CPU自制入门》，笔者学习此书来弥补对计算机底层原理的知识空白。所观，所感，所调试程序源码做下笔记于此。文笔有限，敬请谅解。
程序源码均来自《CPU自制入门》（个别Testbench除外，因为没有，笔者调试过程中自己写）。
该专栏免费和持续更新（停更会发出声明），只用于学习用途，欢迎大家一起讨论。
笔者也是初学者，对CPU和FPGA只是学了皮毛，故专栏记录一下以下内容：程序源码 ， 问题疑惑， 离散知识点 ， 调试经验。
若有问题疑惑，请阅读《CPU自制入门》。
]]></description><category></category></item><item><title><![CDATA[《从0开始设计和实现CPU》32寄存器堆_记录篇（1）]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/124088562</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/124088562</guid><author>Eterlove</author><pubDate>Sun, 10 Apr 2022 23:40:59 +0800</pubDate><description><![CDATA[声明:代码片段来自于《CPU自制入门》这本书。笔者最近对这方面感兴趣，故想亲自试一试，记录相关笔记
1-1 regfile.h
`ifndef __REGFILE_HEADER__
`define __REGFILE_HEADER__

/*******信号电平******/
`define  HIGH      1'b1
`define  LOW       1'b0

/*******逻辑值******/
`define  ENABLE    1'b0   //有效（负逻辑）
`define  DISA]]></description><category></category></item><item><title><![CDATA[《嵌入式蓝桥杯》STM32单片机+USART2+DMA+IDLE空闲中断来接收数据]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/123962163</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/123962163</guid><author>Eterlove</author><pubDate>Thu, 07 Apr 2022 21:01:09 +0800</pubDate><description><![CDATA[作者 : Eterlove .一笔一画，记录我的学习生活！站在巨人的肩上Standing on Shoulders of Giants!该文章为原创，转载请注明出处和作者. 
你是怎么接收一帧数据的（这个其实不应该由面试官问，而是由你自己补充全面），如果你说采用帧头、帧尾判断的方式接收的，那么这道题还是给你50分，但是你说用空闲中断，那么70分以上，如果你说用DMA+空闲中断的方式接收的，那么90分以上...]]></description><category></category></item><item><title><![CDATA[《嵌入式蓝桥杯》定时器TIM3的PWM输出和TIM2的输入捕获测量频率记录]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/123957933</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/123957933</guid><author>Eterlove</author><pubDate>Mon, 04 Apr 2022 18:33:46 +0800</pubDate><description><![CDATA[作者博客主页
  作者 : Eterlove 
一笔一画，记录我的学习生活！站在巨人的肩上Standing on Shoulders of Giants!
该文章为原创，转载请注明出处和作者

声明：这段时间较忙，相关知识点分析讲解后面抽时间补上。
1.学习记录
&nbsp;&nbsp;&nbsp;&nbsp;用定时器TIM3来产生一个PWM的波形【频率可调，占空比可调–&gt;相对可调】,然后用TIM2的输入捕获功能测量该波形的频率。

PA1----&gt;TIM2_CH2
PA2----&gt;TI.]]></description><category></category></item><item><title><![CDATA[问题记录：error: #268: declaration may not appear after executable statement in block]]></title><link>https://blog.youkuaiyun.com/Eterlove/article/details/123953146</link><guid>https://blog.youkuaiyun.com/Eterlove/article/details/123953146</guid><author>Eterlove</author><pubDate>Mon, 04 Apr 2022 14:25:45 +0800</pubDate><description><![CDATA[//编译代码错误
..\Sre\Input_Capture.c(29): error:  #268: declaration may not appear after executable statement in block
  		GPIO_InitTypeDef GPIO_InitStructure;
..\Sre\Input_Capture.c(36): error:  #268: declaration may not appear after executable statement in bl]]></description><category></category></item></channel></rss>