<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tengtext的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tengtext</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tengtext]]></copyright><item><title><![CDATA[（5）瑞芯微开发工具 v2.92 的使用教程和分区烧录]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/163476057</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/163476057</guid><author>tengtext</author><pubDate>Tue, 04 Aug 2026 17:50:38 +0800</pubDate><description><![CDATA[讲解和演示每一个功能首先按住maskrom按键再上电，也是直接发现设备了因为现在是在maskrom状态中，现在切换到高级功能选项卡里面，点那些按钮都没用的。简单来说，MaskROM 就是固化在 SoC 芯片内部硬件里的一段不可篡改的初始启动代码。芯片上电瞬间，CPU 内核（比如 RK3506 的 Cortex-A7）从 0 地址开始执行的第一行代码，就是 MaskROM。它的任务非常纯粹：把接力棒交给下一阶段的引导程序（DDR / Bootloader）。因为现在是空的，所以啥功能都没有。勾选第一个，地址0]]></description><category></category></item><item><title><![CDATA[buildroot自定义]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/163444263</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/163444263</guid><author>tengtext</author><pubDate>Tue, 04 Aug 2026 17:50:12 +0800</pubDate><description><![CDATA[分析/target/etc/init.d/S99appinit文件，这个文件是系统启动时会运行的文件，查看他的内容：/bin/shcase $1 instart);;stop);;*);;esac就是执行了/oem/RkLunch.sh这个文件，顾名思义就是Rk启动lunch时的文件，所以更改这个文件就能实现自己需要的启动时逻辑了。]]></description><category></category></item><item><title><![CDATA[（3）buildroot编译记录]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/163337499</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/163337499</guid><author>tengtext</author><pubDate>Tue, 04 Aug 2026 15:56:04 +0800</pubDate><description><![CDATA[这个sh实际去执行sdk根目录下的/device/rockchip/common/post-build.sh（/device/这个目录是瑞芯微存放编译uboot、kernel、buildroot、debian\ubuntu这些需要用到的脚本或者参数总的目录），然后这个sh最后执行了。RK_UBOOT开头的就是编译uboot用到的参数，RK_BOOT开头的是编译kernel时有用的参数，RK_ROOTFS开头的就是编译根文件系统有用的参数，​​​​​​。然后把这些配置写入到。后面再输出了全局的配置参数，]]></description><category></category></item><item><title><![CDATA[（2）kernel编译记录]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/163475689</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/163475689</guid><author>tengtext</author><pubDate>Tue, 04 Aug 2026 15:54:18 +0800</pubDate><description><![CDATA[这章记录kernel的编译，首先最后我们编译出来的结果是在sdk的kernel文件夹下面生成一个zboot.img，这个zboot.img就是最后可以直接烧录的文件。对比了正点原子的atk_dlrk3506_linux6.1_release_v1.3.1_20260326和合众恒跃HZ-RK3506_MiniEVM_LINUX_SDK_v1.3.0这两个sdk编译kernel的过程，发现还是正点原子的sdk的编译过程输出的log更详细方便理解整个编译过程，实际上大差不差毕竟都是瑞芯微提供的。]]></description><category></category></item><item><title><![CDATA[（1）uboot编译记录]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/162845215</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/162845215</guid><author>tengtext</author><pubDate>Tue, 04 Aug 2026 15:50:45 +0800</pubDate><description><![CDATA[进入u-boot目录，先清除之前编译出的内容，保证目录纯净然后编译根据传入的参数alientek_rk3506，会去找u-boot/configs路径下的alientek_rk3506_defconfig这个文件。对比了正点原子的alientek_rk3506_defconfig这个文件，和同路径下瑞芯微自身提供的rk3506_defconfig进行文本差异对比，发现本质上就两处差异。]]></description><category></category></item><item><title><![CDATA[单片机mcu（stm32）计算生成二维码]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/156274617</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/156274617</guid><author>tengtext</author><pubDate>Thu, 25 Dec 2025 17:22:38 +0800</pubDate><description><![CDATA[二维码的标准版本共有40个，从版本1到版本40，每个版本对应不同的尺寸和数据容量。版本越高，二维码的矩阵越大，能存储的信息也越多，但图案也更复杂，需要更高的扫描精度。]]></description><category></category></item><item><title><![CDATA[c语言自己实现一个printf函数]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/154427145</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/154427145</guid><author>tengtext</author><pubDate>Wed, 05 Nov 2025 09:38:03 +0800</pubDate><description><![CDATA[定义了一个 512 字节的字符数组作为临时缓冲区，用来存放格式化后的字符串，数据长度不能超过512，或者修改数组长度以支持更长的数据发送。这是一个可变参数函数，用法和printf函数一样，所以可以直接替换printf函数，在keil里面都可以不用勾选微库。]]></description><category></category></item><item><title><![CDATA[WT588E02B-8S语音芯片播放和下载]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/149386728</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/149386728</guid><author>tengtext</author><pubDate>Wed, 16 Jul 2025 09:21:50 +0800</pubDate><description><![CDATA[2. 把宏定义UC16由原来的unsigned int改为uint16_t，UC32也改成uint32_t了。这在32位单片机上很重要，否则在stm32上更新语音的时候会出错。1. 对GPIO的操作改为hal库的方式，对GPIO的拉高拉低也改为宏的方式。]]></description><category></category></item><item><title><![CDATA[tps5430一脚在哪里？]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/149345096</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/149345096</guid><author>tengtext</author><pubDate>Tue, 15 Jul 2025 08:46:43 +0800</pubDate><description><![CDATA[在这里（确认）]]></description><category></category></item><item><title><![CDATA[stm32使用hal库模拟spi模式3]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/148423198</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/148423198</guid><author>tengtext</author><pubDate>Wed, 04 Jun 2025 11:29:33 +0800</pubDate><description><![CDATA[初始化cs，clk，miso，mosi四个io。miso配置为输入，cs、clk、mosi配置为推挽输出。模式3的时序图，在clk的下降沿切换电平状态，在上升沿采样， SCK空闲为高电平。因为网上模拟spi模拟的都是模式0，很少有模式3的。]]></description><category></category></item><item><title><![CDATA[（二）stm32使用4g模块(移远ec800k)连接mqtt]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/148367344</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/148367344</guid><author>tengtext</author><pubDate>Sun, 01 Jun 2025 16:42:12 +0800</pubDate><description><![CDATA[因为订阅了test/topic这个主题，所以向这个主题发送信息，自己也马上接收到了信息，也就完成回环测试。2.发送AT+QMTCFG指令配置参数，配置内容是+QMTRECV:收到消息，把消息体的长度也附带输出。3.发送AT+QMTCLOSE=1，关闭通道1，确保是一个新的连接。7.AT+QMTPUBEX，订阅上了，就向这个主题发送一条信息。6.AT+QMTSUB，连接上了，就订阅主题topic。5.AT+QMTCONN=1，通道1的mqtt连接。4.AT+QMTOPEN=1，打开通道1。]]></description><category></category></item><item><title><![CDATA[（一）腾讯云(debian)上搭建MQTT服务端（mosquitto）]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/148218934</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/148218934</guid><author>tengtext</author><pubDate>Mon, 26 May 2025 10:07:32 +0800</pubDate><description><![CDATA[可以看到这里支持的mqtt协议是5.0和3.1.1和3.1这些，有的系统版本低的如debian10安装的mosquitto 可能只支持3.1.1和3.1，后面用mqtt客户端软件连接时可别搞错了。允许1883端口的连接，不然是连接不上的，阿里云的服务器应该也要在防火墙里打开端口才能连上，如果服务器是国外主机商的倒是不用配置什么防火墙。添加好后，按ctrl+o再按回车保存文件内容，再按ctrl+x退出文件编辑。修改完配置文件，需要重启一下mosquitto。没有配置用户名和密码用来测试够了。]]></description><category></category></item><item><title><![CDATA[1mb的flash，4kb一页，每一页起始地址和结束地址对照表]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/143850062</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/143850062</guid><author>tengtext</author><pubDate>Mon, 18 Nov 2024 11:22:33 +0800</pubDate><description><![CDATA[标准输出：Page 1: Start = 0x00000000, End = 0x00000FFF。1mb的flash，4kb一页，每一页起始地址和结束地址对照表，方便查询。]]></description><category></category></item><item><title><![CDATA[stm32的flash（128kb容量）每页起始地址和结束地址对照表，每页1kb，共128页]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/140177961</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/140177961</guid><author>tengtext</author><pubDate>Thu, 04 Jul 2024 14:02:49 +0800</pubDate><description><![CDATA[64kb的flash地址也相同。]]></description><category></category></item><item><title><![CDATA[c语言实现WGS-84、GCJ-02、BD-09互转]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/138717458</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/138717458</guid><author>tengtext</author><pubDate>Sat, 11 May 2024 15:23:52 +0800</pubDate><description><![CDATA[1,WGS-84: 原始GPS坐标系, Google Earth坐标系, 微软Bing地图坐标系, 国际通用标准.2,GCJ-02: 火星坐标系, 高德坐标系, 腾讯soso坐标系(国内), 谷歌坐标系(国内), 国测局坐标.3,BD-09: 百度地图坐标系.]]></description><category></category></item><item><title><![CDATA[usb做虚拟串口时与uart的一些不同]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/138181462</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/138181462</guid><author>tengtext</author><pubDate>Thu, 25 Apr 2024 10:40:17 +0800</pubDate><description><![CDATA[所以我猜测，是用的局部变量数组做为发送缓冲区，虽然调用了usb的发送函数，但很快啊还没等usb发送完，上一层函数执行完毕，出栈，局部变量数组的缓冲区被回收，usb此时还在发，但此时的缓冲区数据已经不可靠了，可能被另作他用了，所以出现只发了一半正常的内容后面的内容变乱码了。后面改用全局变量作为发送缓冲区，情况得以改善。]]></description><category></category></item><item><title><![CDATA[jflash给复旦微fm33单片机烧录程序]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/136762273</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/136762273</guid><author>tengtext</author><pubDate>Sat, 16 Mar 2024 14:34:45 +0800</pubDate><description><![CDATA[jflash默认支持的单片机列表里是找不到复旦微fm33单片机的，需要手动修改文件添加支持的单片机。3. JLinkDevices.xml文件替换到SEGGERJlink_V632H路径下，覆盖原文件。2. FMSH文件夹添加到SEGGER\JLink_V632H\Devices路径下。1. Segger版本为Jlink_V632H为例。]]></description><category></category></item><item><title><![CDATA[极海apm32和stm32实际使用发现的区别]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/135814094</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/135814094</guid><author>tengtext</author><pubDate>Wed, 24 Jan 2024 09:34:15 +0800</pubDate><description><![CDATA[没有调用MX_IWDG_Init()函数初始化看门狗，在主循环内调用HAL_IWDG_Refresh(&hiwdg)喂狗，apm32不会出现问题代码能继续跑，但stm32会运行出错进入HardFault_Handler中断函数。apm32和stm32是pin2pin的，但是实际使用的时候发现独立看门狗的区别。]]></description><category></category></item><item><title><![CDATA[关于单片机低功耗的一些处理]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/135264409</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/135264409</guid><author>tengtext</author><pubDate>Thu, 28 Dec 2023 11:09:25 +0800</pubDate><description><![CDATA[1.使用到串口的io引脚，进入休眠之前一定要复位，否则一个引脚会带来1.5mA的消耗，其他外设的引脚最好都复位。因为设备使用电池供电，所以对功耗要求很低，在休眠状态下，需要到达uA级别。2.4g模块，nb模块，该关电的关电，该进入休眠的进入休眠。]]></description><category></category></item><item><title><![CDATA[关于stm32的usb需要重新插拔电脑才能识别的问题]]></title><link>https://blog.youkuaiyun.com/tengtext/article/details/135263657</link><guid>https://blog.youkuaiyun.com/tengtext/article/details/135263657</guid><author>tengtext</author><pubDate>Thu, 28 Dec 2023 10:50:45 +0800</pubDate><description><![CDATA[使用stm32的usb，每次烧录代码后都要重新插拔才能识别，usb两个引脚上电拉低了再延迟一段时间，还是识别不了，后面发现原来延迟时间太长了，延迟10ms就行，延迟100ms就不行了，这样每次上电，usb两个引脚拉低10ms的样子就能识别到了，不用重新插拔usb线了，唉😔，又吃了没文化的亏。]]></description><category></category></item></channel></rss>