<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[oqqGuMu的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/oqqGuMu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; oqqGuMu]]></copyright><item><title><![CDATA[国产MCU打印调试工具Segger RTT]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/156948333</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/156948333</guid><author>oqqGuMu</author><pubDate>Wed, 14 Jan 2026 16:43:30 +0800</pubDate><description><![CDATA[以上是STM32芯片的配置，像STM32是很通用的mcu了，jlink支持也很到位，市面上用的芯片都可以直接选择。项目开发的时候，调试阶段除了用调试工具打断点外，可以用UART 串口输出打印，但是需要硬件预留好调试口，最近发现一个工具不依赖硬件也能实现打印输出调试，效率极高，就是Segger RTT.后续国产mcu更新到到jlink列表里，估计就可以找到对应的型号，就简单省事多了。比如杰发科的AC7840X，我用的就是如下配置是可以正常输出的。将其中的文件加入的工程里，配置好头文件路径。]]></description><category></category></item><item><title><![CDATA[windows平台下python毫秒级延时实现]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/148737121</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/148737121</guid><author>oqqGuMu</author><pubDate>Wed, 18 Jun 2025 12:09:37 +0800</pubDate><description><![CDATA[用win32api.GetSystemTime()不是太精确，值15毫秒才变一下，最好用time.clock()，这个能到毫秒级，最精确的办法是用QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数。用CPU周期计时，很精确。2.0.1ms左右精度。]]></description><category></category></item><item><title><![CDATA[python自动化测试工具]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/148736010</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/148736010</guid><author>oqqGuMu</author><pubDate>Wed, 18 Jun 2025 11:49:40 +0800</pubDate><description><![CDATA[有了这些工具结合中断用户使用场景可以做一些压力测试组合。]]></description><category></category></item><item><title><![CDATA[mcu开发中关于数据一致性的问题]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/142181448</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/142181448</guid><author>oqqGuMu</author><pubDate>Thu, 12 Sep 2024 18:05:27 +0800</pubDate><description><![CDATA[一句简单的赋值语句，涉及全局数据的操作，有2个执指令：一个是存执半字 16bit数据一个是存储8bit，目标变量共使用了20bit，所以这里一个半字+字节操作需要2个操作才能完成。可以得出的结论是，对VehCommData.BAT_HIGH_VOLTAGE_1.signal.LBMS_LinkVltg_V的赋值不是原子的，需要2条指令才能完成。]]></description><category></category></item><item><title><![CDATA[S19文件修改和校验和python代码]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/130646112</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/130646112</guid><author>oqqGuMu</author><pubDate>Fri, 12 May 2023 16:58:13 +0800</pubDate><description><![CDATA[功能：将原始S19中的特定内容替换成指定的字符串，并重新计算校验和后，输出到新文件。]]></description><category></category></item><item><title><![CDATA[关于mcu启动中内存数据搬运的总结]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/127118985</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/127118985</guid><author>oqqGuMu</author><pubDate>Fri, 30 Sep 2022 10:30:13 +0800</pubDate><description><![CDATA[mcu启动前数据搬运]]></description><category></category></item><item><title><![CDATA[freeRTOS系统栈与任务栈]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/126622114</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/126622114</guid><author>oqqGuMu</author><pubDate>Wed, 31 Aug 2022 13:28:27 +0800</pubDate><description><![CDATA[freeRTOS系统栈与任务栈]]></description><category></category></item><item><title><![CDATA[RH850 F1L freeRTOS 任务栈的切换]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/126622054</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/126622054</guid><author>oqqGuMu</author><pubDate>Wed, 31 Aug 2022 13:27:02 +0800</pubDate><description><![CDATA[RH850 freeRTOS任务栈的切换]]></description><category></category></item><item><title><![CDATA[RH850 F1L text段代码与S19文件解析]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/126617651</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/126617651</guid><author>oqqGuMu</author><pubDate>Wed, 31 Aug 2022 09:49:32 +0800</pubDate><description><![CDATA[代码段提取]]></description><category></category></item><item><title><![CDATA[RH850 F1L LP PC SP寄存器与函数调用分析]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/126617308</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/126617308</guid><author>oqqGuMu</author><pubDate>Wed, 31 Aug 2022 09:33:32 +0800</pubDate><description><![CDATA[RH850 F1L SP]]></description><category></category></item><item><title><![CDATA[freeRTOS的任务抢占和时间片轮转]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/126600609</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/126600609</guid><author>oqqGuMu</author><pubDate>Tue, 30 Aug 2022 11:41:27 +0800</pubDate><description><![CDATA[freeRTOS 任务抢占与时间片轮转过程]]></description><category></category></item><item><title><![CDATA[RH850F1L 移植freeRTOS]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/126547091</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/126547091</guid><author>oqqGuMu</author><pubDate>Fri, 26 Aug 2022 17:26:56 +0800</pubDate><description><![CDATA[RH850 F1L freeRTOS移植笔记]]></description><category></category></item><item><title><![CDATA[中断函数的出栈和入栈学习]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/125101762</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/125101762</guid><author>oqqGuMu</author><pubDate>Thu, 02 Jun 2022 15:53:06 +0800</pubDate><description><![CDATA[中断函数 底层出栈入栈的实现过程]]></description><category></category></item><item><title><![CDATA[dtc 编译命令]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/91346377</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/91346377</guid><author>oqqGuMu</author><pubDate>Sat, 08 Jun 2019 17:47:44 +0800</pubDate><description><![CDATA[设备树编译
设备树的编译器是dtc，源代码目录kernel\scripts\dtc，只要编译过内核，就会生成dtc，
dtc编译器可以把dts文件编译成为dtb，也可把dtb编译成为dts文件，编译命令格式如下：
dtc [-I input-format] [-O output-format][-o output-filename] [-V output_version] input_filen...]]></description><category></category></item><item><title><![CDATA[ubuntu 16.04 + linux 5.0]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/90814830</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/90814830</guid><author>oqqGuMu</author><pubDate>Tue, 04 Jun 2019 22:47:53 +0800</pubDate><description><![CDATA[完整的记录了qemu搭建arm开发环境的过程：

以下内容转载：

作者：海枫
来源：优快云
原文：https://blog.youkuaiyun.com/linyt/article/details/42504975




本文记录用ubuntu16.04搭建qemu的过程：

参考出处：https://blog.youkuaiyun.com/linyt/article/details/42504975

...]]></description><category></category></item><item><title><![CDATA[linux内核主线了解dts]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/90796335</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/90796335</guid><author>oqqGuMu</author><pubDate>Tue, 04 Jun 2019 18:28:32 +0800</pubDate><description><![CDATA[http://events.linuxfoundation.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf
=============================================

原版在上面的地址上，这个是转载别人翻译好的，dts的用法说的很详细，还有2个疑问

第一，bootloader 在R2...]]></description><category></category></item><item><title><![CDATA[（最新内核3.4）Linux 设备树加载I2C client adapter 的流程（内核3.4 高通）]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/90757097</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/90757097</guid><author>oqqGuMu</author><pubDate>Mon, 03 Jun 2019 18:57:34 +0800</pubDate><description><![CDATA[原文地址：https://blog.youkuaiyun.com/lsn946803746/article/details/52515225

BLSP(BAM Low-Speed Peripheral) ， 每一个BLSP含有两个QUP, 每一个QUP可以被配置为I2C， SPI, UART, UIM接口， BLSP是高通对于低速接口的一种管理方式。

  i2c@f9923000 { /* BLSP-...]]></description><category></category></item><item><title><![CDATA[i2c client的adapter如何生成]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/90756559</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/90756559</guid><author>oqqGuMu</author><pubDate>Mon, 03 Jun 2019 18:44:41 +0800</pubDate><description><![CDATA[先来看下i2c transfer函数，如下：

ret = i2c_transfer(client-&gt;adapter, &amp;msg, 1);

其中重要的参数是client-&gt;adapter，今天想了解下这个adapter是在哪里生成的。

上个文章说的是设备驱动的注册过程，今天来看看i2c控制器驱动的注册过程。

首先在dts里配置



	i2c0: i2c@11007000...]]></description><category></category></item><item><title><![CDATA[linux设备树DTS到是是啥玩意]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/90697849</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/90697849</guid><author>oqqGuMu</author><pubDate>Thu, 30 May 2019 15:23:05 +0800</pubDate><description><![CDATA[一直想搞明白，自从linux开始使用设备树后，从哪里开始加载和bootloadt kenel之间怎么关联，然后总线驱动如何将这些设备挂上去的。

下周开始总结。

先转载一些基本概念：



简介
dts
硬件的相应信息都会写在.dts为后缀的文件中，每一款硬件可以单独写一份xxxx.dts，一般在Linux源码中存在大量的dts文件，对于arm架构可以在arch/arm/boot/dts找到相...]]></description><category></category></item><item><title><![CDATA[i2c 设备注册过程]]></title><link>https://blog.youkuaiyun.com/oqqGuMu/article/details/90676255</link><guid>https://blog.youkuaiyun.com/oqqGuMu/article/details/90676255</guid><author>oqqGuMu</author><pubDate>Wed, 29 May 2019 18:28:06 +0800</pubDate><description><![CDATA[设备模型

由总线（bus_type）+设备（device）+驱动（device_driver）组成，在该模型下，所有的设备通过总线连接起来，即使有些设备没有连接到一根物理总线上，linux为其设置了一个内部的、虚拟的platform总线，用以维持总线、驱动、设备的关系。

因此，对于实现一个linux下的设备驱动，可以划分为两大步：

1、设备注册；

2、驱动注册。

下面是i2c...]]></description><category></category></item></channel></rss>