<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mhj258258的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mhj258258</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mhj258258]]></copyright><item><title><![CDATA[Ethernet-APL 核心优势与特性总结]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/151829276</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/151829276</guid><author>mhj258258</author><pubDate>Thu, 18 Sep 2025 14:47:45 +0800</pubDate><description><![CDATA[ethernet-apl 优势 总结]]></description><category></category></item><item><title><![CDATA[RISCV下的调试功能个人总结———(下)关于断点功能]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/143859654</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/143859654</guid><author>mhj258258</author><pubDate>Thu, 21 Nov 2024 15:29:37 +0800</pubDate><description><![CDATA[这张图非常清楚的，描述了riscv调试模块和外部调试器通讯的框图。]]></description><category></category></item><item><title><![CDATA[RISCV下的调试功能个人总结———(中)DM模块]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/143773121</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/143773121</guid><author>mhj258258</author><pubDate>Mon, 18 Nov 2024 15:50:04 +0800</pubDate><description><![CDATA[寄存器访问：cmdtype=0，调试器可以访问 CPU 寄存器，并允许其执行程序缓冲区。存储器访问cmdtype=2，命令调试器可以执行存储器访问，这包括对 hart 本地内存映射寄存器的访问，等等。cmdtype=1属于快速访问，具体怎么访问的不是很清楚。例如写入寄存器：写入0x7A1地址写入数据0x28001004先写入数据：Abstract Data 0(0x04) 	--- 0x28001004。]]></description><category></category></item><item><title><![CDATA[RISCV下的调试功能个人总结———(上)关于GDB/OPENOCD/JTAG]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/143743197</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/143743197</guid><author>mhj258258</author><pubDate>Thu, 14 Nov 2024 15:42:42 +0800</pubDate><description><![CDATA[那些年我们一起踩过的坑…]]></description><category></category></item><item><title><![CDATA[Cortex-M0内核的remap寄存器是什么？]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/140918044</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/140918044</guid><author>mhj258258</author><pubDate>Mon, 05 Aug 2024 09:36:47 +0800</pubDate><description><![CDATA[这个寄存器通常是属于系统控制寄存器。在《Cortex-M0-M0+SystemDesignKit_ExampleSystemGuide_DUI0559D_r1p1-00rel0.pdf》中描述了这个寄存器。]]></description><category></category></item><item><title><![CDATA[没有调用memcpy却报了undefined reference to memcpy错误]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/140151662</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/140151662</guid><author>mhj258258</author><pubDate>Wed, 03 Jul 2024 14:38:41 +0800</pubDate><description><![CDATA[在你的代码中，虽然看起来没有显式调用 memcpy 函数，但可能有一些间接的调用或者编译器生成的代码引用了 memcpy，2.结构体复制: 如果你在其他地方使用了结构体，特别是复制结构体时，编译器可能会转换为 memcpy 的调用。1.字符串处理函数: 某些编译器在处理字符串时会调用 memcpy，尽管你的代码中没有直接调用字符串函数。3.优化问题: 某些优化级别下，编译器可能会重新组织代码，引入 memcpy 来优化内存操作。编译器会隐式地调用memcpy`函数，尤其是涉及到内存复制或者结构体操作时。]]></description><category></category></item><item><title><![CDATA[文本文件中回车及空格字符的删除(自用)]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/133125496</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/133125496</guid><author>mhj258258</author><pubDate>Thu, 21 Sep 2023 10:12:39 +0800</pubDate><description><![CDATA[本文用来自用记录]]></description><category></category></item><item><title><![CDATA[QT解决办法error: LNK2019: 无法解析的外部符号]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/131120359</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/131120359</guid><author>mhj258258</author><pubDate>Fri, 09 Jun 2023 09:18:47 +0800</pubDate><description><![CDATA[把代码中输入的中文字删除掉，包括注释的中文。提供一条思路，我遇到后的解决办法。]]></description><category></category></item><item><title><![CDATA[LAN9252 SSC生成工具报错System.ArgumentOutOfRangeException: InvalidArgument=“-1”的值对于“SelectionStart”无效的解决办法]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/131023722</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/131023722</guid><author>mhj258258</author><pubDate>Sat, 03 Jun 2023 17:39:05 +0800</pubDate><description><![CDATA[LAN9252 SSC工具]]></description><category></category></item><item><title><![CDATA[QT creator中加载VLC库的注意点]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/127897315</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/127897315</guid><author>mhj258258</author><pubDate>Thu, 17 Nov 2022 09:22:19 +0800</pubDate><description><![CDATA[vlc库注意点]]></description><category></category></item><item><title><![CDATA[解决ubuntu能登录但没有桌面图标的问题]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/123615988</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/123615988</guid><author>mhj258258</author><pubDate>Sun, 20 Mar 2022 16:47:47 +0800</pubDate><description><![CDATA[以下方法亲测有效。
桌面图标没显示，terminal也打不开。
1.这个时候，看你的网络有没有连上，如果有连上，可以通过SSH，直接登录你的账号进入terminal。
把原先在里头的.config文件删除，在重启。

2.如果网络没连，按ctrl+alt+F1 直接进入ubuntu的后台，
登录自己的账号 ，也能顺利进入terminal中，同样把.config文件删除，在重启。

...]]></description><category></category></item><item><title><![CDATA[SourceInsight出现光标爆闪程序卡死的现象解决办法]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/122452949</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/122452949</guid><author>mhj258258</author><pubDate>Wed, 12 Jan 2022 14:35:43 +0800</pubDate><description><![CDATA[我的现象是出现在.S文件中输入的时候，突然出现写入文字卡死的现象，光标闪动，但键盘输入无效，像是卡死一样。
解决办法：恢复下默认配置，然后把.s文件过滤放到从C/C++放到C中。



]]></description><category></category></item><item><title><![CDATA[解决The connected J-Link is defective,Proper operation cannot be guaranteed]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/122220585</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/122220585</guid><author>mhj258258</author><pubDate>Wed, 29 Dec 2021 17:32:48 +0800</pubDate><description><![CDATA[［１］错误提示：

这个错误一般是由于JLINK的版本和单片机内核版本不匹配导致的。
［２］解决办法：
降低ｓｅｇｇｅｒ的版本，试了好多版本，发现V5.00L版本兼容性比较强。

把ｓｅｇｇｅｒ文件夹中的JLｉｎｋARM.ｄｌｌ覆盖到ｋｅｉｌ的ｓｅｇｇｅｒ文件夹里。解决该报错。



...]]></description><category></category></item><item><title><![CDATA[GD代码工程打开后找不到对应device]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/117827388</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/117827388</guid><author>mhj258258</author><pubDate>Fri, 11 Jun 2021 21:49:41 +0800</pubDate><description><![CDATA[前提：MCU的pack已经安装了



]]></description><category></category></item><item><title><![CDATA[canopen学习总结（二）——PDO循环同步和非循环同步]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/117745161</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/117745161</guid><author>mhj258258</author><pubDate>Wed, 09 Jun 2021 17:13:08 +0800</pubDate><description><![CDATA[前言：
PDO  属于过程数据用来传输实时数据 ，即单向传输，无需接收节点回应CAN  报文来确认，属于“生产消费”模型。
PDO两种传输方式：同步传输和异步传输，今天我们主要讲解同步传输。
[1-1]同步传输分为：	周期传输（循环）和非周期传输（无循环）
同步传输：就是通过同步报文让所有节点能在同一时刻进行上传数据或者执行下达的应用指令。（有效避免异步传输导致的应用逻辑混乱和总线负载不平衡的问题。一般发送同步报文的节点是 NMT 主机。）


由上图我们可以看到，循环和非循环同步的区别。
无论循环还是非循]]></description><category></category></item><item><title><![CDATA[STM32的PWM互补输出的死区值计算]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/116130239</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/116130239</guid><author>mhj258258</author><pubDate>Sun, 25 Apr 2021 15:41:25 +0800</pubDate><description><![CDATA[话不多说，直接上步骤：
[1]步骤1：计算Tdts
比如TIM1挂载在APB2上，时钟72M，又此时TIM寄存器设置的分频为1
TIM_TimeBaseStructure.TIM_ClockDivision = IM_CKD_DIV1      ;          


那么此时Tdts就是1/72M = 13.78ns
[2]步骤2：死区时间DT

根据上表：DTG[7:0]被拆分成DTG[7:5]和DTG[4:0]
DTG是啥？
就是下列实例0x90的值。
TIM_BDTRInitStructure.]]></description><category></category></item><item><title><![CDATA[freertos不同heap.c的区别简述]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/115532247</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/115532247</guid><author>mhj258258</author><pubDate>Thu, 08 Apr 2021 22:10:17 +0800</pubDate><description><![CDATA[[1]heap1:
特点：没有free，直接再原有的基础上对齐累加。不花里胡哨，适合小型的不需要释放存储空间的代码。

[2]heap2:
有一个链表结构体，start和end，
缺点：是会引起内存碎片，
优点：相比于heap1多了free函数，是会自动释放之前申请的过大内存块。


[3]heap3:
大小由.s文件中的Heap_Size的堆大小决定，没特别的
[4]heap4:
比heap2多了处理内存碎片，他会把地址连续的内存块合并起来。
查找空闲插入点，检查要插入的内存块是否可以和前一个内存块合并。]]></description><category></category></item><item><title><![CDATA[canopen学习总结（一）——NMT网络管理]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/115455405</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/115455405</guid><author>mhj258258</author><pubDate>Tue, 06 Apr 2021 12:17:59 +0800</pubDate><description><![CDATA[[1] NMT网络管理
[1-1]概念：
NMT到底是啥？
答：简单理解就是由一台主机来管理从机，主机可以控制从机的状态。
那么到底由哪些状态呢？
答：看下面这图，总共就这些状态

[1-2]命令：
主机如何去控制状态切换呢？
答：
下图是NMT命令的格式：

[1-3]例程：
在canfestival代码中例如：
//设置了nodeID 为0x00
setNodeId(&amp;master_objdict_Data, 0x00); 
//初始化
setState(&amp;master_objdict_]]></description><category></category></item><item><title><![CDATA[ESP8266 wroom_02如何烧录AT固件，以及卡在等待同步下载问题处理]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/111310036</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/111310036</guid><author>mhj258258</author><pubDate>Thu, 17 Dec 2020 10:54:21 +0800</pubDate><description><![CDATA[一年多没玩8266都忘记咋烧录了，尴尬。我这边是用16Mbit为例子
如果你是8Mbit和32Mbit的8266那么更加简单，只需要去安信可官网下载关于AT的bin文件就行了，非常简单
他里头是打包好的bin文件，直接从0x0 地址直接烧录此单个bin文件即可。
https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB
[1]如何烧录AT固件
其实这个在《ESP8266快速入门指南》中就有介绍。
烧录的工具：建议用最新版的，因为我用老版]]></description><category></category></item><item><title><![CDATA[用DUGIHACK来修改linux命令行中字体颜色]]></title><link>https://blog.youkuaiyun.com/mhj258258/article/details/109346177</link><guid>https://blog.youkuaiyun.com/mhj258258/article/details/109346177</guid><author>mhj258258</author><pubDate>Wed, 28 Oct 2020 22:09:28 +0800</pubDate><description><![CDATA[使用方法：
把压缩包解压到linux中，然后执行第一个脚本

执行完成后，重新打开一个终端就发现颜色改变了

DUGIHACK下载

]]></description><category></category></item></channel></rss>