<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[weixin_49406449的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/weixin_49406449</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_49406449]]></copyright><item><title><![CDATA[[x86 ubuntu]安装ubuntu22.04手动分区示例]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/158730898</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/158730898</guid><author>weixin_49406449</author><pubDate>Fri, 06 Mar 2026 10:02:15 +0800</pubDate><description><![CDATA[交换空间，系统进入 S4 必须要有的分区，如果内存低的话（1-4G），建议为物理内存的两倍；安装系统的分区，这个分区的大小就看情况而定了，如果装的软件多就大点。/boot分区，/boot分区在挂载点选项中，这个也是必须的，存放的是linux内核和启动引导文件。保留BIOS启动分区，这个是必须的，但是只要求大于1M就行，我给32M，使用的主分区。EFI系统分区，这个也是必须的，也不用太大，给512M就行，逻辑分区。如果原始硬盘有其他分区，请先删除分区，只剩一块空闲区域，如下所示。填写信息和密码，点击“继续”]]></description><category></category></item><item><title><![CDATA[[x86 ubuntu]内核升级教程]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/158730786</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/158730786</guid><author>weixin_49406449</author><pubDate>Fri, 06 Mar 2026 09:57:52 +0800</pubDate><description><![CDATA[修改如下所示，将“GRUB_DEFAULT=0”改成“GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-3-generic"”，然后执行“sudo update-grub”，即可每次重启系统都选择“6.8.0-3-generic”内核启动。安装后，重启系统不断按下“Shift”，即可选择新安装的内核版本启动系统。将内核 deb 包安装进系统后，每次在系统重启都要按“Shift”选择新的内核版本进行启动，如下所示，很麻烦。]]></description><category></category></item><item><title><![CDATA[MCU 固件拼接定制方法]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/158697363</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/158697363</guid><author>weixin_49406449</author><pubDate>Thu, 05 Mar 2026 15:24:31 +0800</pubDate><description><![CDATA[合成的“out/gd32_mcu.bin”MCU固件，前8k是LOADER固件，后56k是app固件，“out/gd32_mcu.hex”固件的起始地址设置为0x08000000，因为MCU的flash起始地址为 0x08000000。“hotkey_Ctrl_Alt_P.hex”与“hotkey_P_W.hex”的差异如下图所示，差异为将MCU_USB_MOD_KEY寄存器的值由0x00该成0x05、将MCU_USB_KEY2寄存器的值由0x57改为0x00。MCU_USB_MOD_KEY寄存器的值。]]></description><category></category></item><item><title><![CDATA[[rk3588]机器静置一段时间内核崩溃解决方案]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/158696961</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/158696961</guid><author>weixin_49406449</author><pubDate>Thu, 05 Mar 2026 15:12:15 +0800</pubDate><description><![CDATA[方案 1、 替换 DDR bin 文件为 rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.22_dmc_off_sr_on.bin。方案 2、 替换 MiniLoaderAll.bin 为 rk3588_spl_loader_v1.21.114_sr_on_dmc_off.bin。以上两个方案都是对 DDR 关闭变频，开启自刷新，成功解决机器静置一段时间内核崩溃的问题。内核崩溃日志是随机的，这里给出两次不同的日志。以上方法都不能解决内核崩溃的问题。4、DDR 定频、降频。]]></description><category></category></item><item><title><![CDATA[使用ESP32实现UDP通信]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/158696844</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/158696844</guid><author>weixin_49406449</author><pubDate>Thu, 05 Mar 2026 15:07:31 +0800</pubDate><description><![CDATA[ESP32本身自带WIFI模块，可以连接网络。本文主要是用ESP32连接手机热点，利用UDP协议将ESP32作为服务端，电脑利用网络助手软件作为客户端与ESP32通信，从而通过无线通信去控制ESP32上的LED灯的亮灭。]]></description><category></category></item><item><title><![CDATA[使用ESP32实现蓝牙通信]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/158696822</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/158696822</guid><author>weixin_49406449</author><pubDate>Thu, 05 Mar 2026 15:06:35 +0800</pubDate><description><![CDATA[蓝牙是一种无线通讯技术，可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之间的BR/EDR蓝牙称为传统蓝牙，而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。目前，蓝牙技术已经应用到各个领域，并已经成为接入物联网的主要技术。如今，借助于ESP32平台，MicroPython中也能够使用蓝牙BLE协议进行通信。这对MicroPython平台而言，自然丰富了其生态，增强了其技能，反过来讲，蓝牙BLE能够在MicroPython中得以集成，借助Python语言的易用性，亦将大大降低其入门门槛。]]></description><category></category></item><item><title><![CDATA[ESP32使用MiroPython编程环境搭建]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/158696731</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/158696731</guid><author>weixin_49406449</author><pubDate>Thu, 05 Mar 2026 15:05:28 +0800</pubDate><description><![CDATA[本次实验用到MQTT协议，同样，我用miropython编写程序实现，最终可以通过腾讯连连微信小程序添加设备来发布主题消息给腾讯云，ESP32负责订阅腾讯云主题消息，当收到某订阅消息时，来控制ESP32设备上LED灯的亮灭。]]></description><category></category></item><item><title><![CDATA[ubuntu rules 使用规则]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/149087864</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/149087864</guid><author>weixin_49406449</author><pubDate>Thu, 03 Jul 2025 09:56:01 +0800</pubDate><description><![CDATA[该目录下的 .rules 文件是 Linux 发行版或软件包（如硬件驱动、虚拟化工具等）预定义的设备管理规则，用于标准化设备初始化流程。]]></description><category></category></item><item><title><![CDATA[[x86 ubuntu22.04]进入S4失败]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/145459705</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/145459705</guid><author>weixin_49406449</author><pubDate>Wed, 05 Feb 2025 18:32:48 +0800</pubDate><description><![CDATA[将“/etc/default/grub”文件的“GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"”改成“GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda3"”，指定交换分区的位置为“/dev/sda3”，然后执行“update-grub”命令并重启，即可解决问题。安装成功后，使用“swapon --show”命令查看交换分区，可以看到有/dev/sda3 交换分区，而且类型为partition。]]></description><category></category></item><item><title><![CDATA[[x86 ubuntu22.04]双触摸屏的触摸事件都响应在同一个触摸屏上]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/144696113</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/144696113</guid><author>weixin_49406449</author><pubDate>Tue, 24 Dec 2024 15:44:49 +0800</pubDate><description><![CDATA[使用“xinput”命令查看输入设备，可以看到只有一个 touch，而且还有一个警告。将 wayland 关闭，修改“/etc/gdm3/custom.conf”配置文件，配置文件如下所示，将“#WaylandEnable=false”改为“WaylandEnable=false”，重启系统，即可关闭 wayland。使用“xrandr”命令可以查看屏幕的名称，最终知道“eDP-1”触摸屏对应的触摸 id 是 14，“DP-1”对应的触摸 id 是 16，使用以下命令成功解决了 bug。]]></description><category></category></item><item><title><![CDATA[[x86 ubuntu22.04]投影模式选择“只使用外部”，外部edp屏幕无背光]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/144560168</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/144560168</guid><author>weixin_49406449</author><pubDate>Wed, 18 Dec 2024 14:26:22 +0800</pubDate><description><![CDATA[默认情况下内部 edp 屏幕（eDP-1）为主屏幕，外部 edp 屏幕（DP-1）为次屏幕，将外部屏幕设置为主屏幕，命令为“xrandr --auto --output DP1 --primary”，投影模式选择“只使用外部”，效果也是内部 edp 屏幕灭，外部 edp 屏幕无背光，修改内部 edp 屏幕背光调节节点的值，外部 edp 屏幕背光无变化。在投影模式为“镜像”或者“拼接显示器”模式下时，修改内部 edp 屏幕背光调节节点的值，命令如下所示，两个 edp 屏幕的背光一起变化。]]></description><category></category></item><item><title><![CDATA[[linux 驱动]PWM子系统详解]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/143481424</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/143481424</guid><author>weixin_49406449</author><pubDate>Mon, 04 Nov 2024 12:30:03 +0800</pubDate><description><![CDATA[搜索“rockchip,rk3328-pwm”，发现在./drivers/pwm/pwm-rockchip.c 出现，所以 pwm6 的驱动是pwm-rockchip。任何 PWM 设备实例都可以被注册到 pwm_class 下，用户空间应用可以通过 /sys/class/pwm 访问这些设备，实现对 PWM 功能的控制。struct pwm_device *pwm: 这是指向 PWM 设备结构体的指针，该结构体是在调用 pwm_request 函数时获取的。这是指向该控制器的 PWM 通道的数组或链表。]]></description><category></category></item><item><title><![CDATA[[linux 驱动]gpio子系统详解与实战]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/142956032</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/142956032</guid><author>weixin_49406449</author><pubDate>Tue, 15 Oct 2024 15:42:10 +0800</pubDate><description><![CDATA[struct gpio_device 为 GPIO 设备提供了一个全面的描述，包括其基本属性、管理信息以及与其他内核子系统（如字符设备、Pin Control 等）的交互能力。指向与该 GPIO 引脚关联的 gpio_device 结构体的指针。指向 gpio_desc 结构体数组的指针，存储与该 GPIO 设备相关的所有 GPIO 引脚的描述信息。一个指向用户自定义数据的指针，可以用于存储与 GPIO 设备相关的额外信息，供驱动程序或其他组件使用。该 GPIO 设备管理的 GPIO 引脚的起始索引。]]></description><category></category></item><item><title><![CDATA[[linux 驱动]网络设备驱动详解]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/142826109</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/142826109</guid><author>weixin_49406449</author><pubDate>Thu, 10 Oct 2024 16:50:07 +0800</pubDate><description><![CDATA[当发送数据包时，Linux内核的网络处理模块必须建立一个包含要传输的数据包的sk_buff，然后将sk_buff递交给下层，各层在sk_buff中添加不同的协议头直至交给网络设备发送。3）设备驱动功能层的各函数是网络设备接口层net_device数据结构的具体成员，是驱使网络设备硬件完成相应动作的程序，它通过hard_start_xmit（）函数启动发送操作，并通过网络设备上的中断触发接收操作。它主要用于调整 sk_buff 的数据指针，以便在数据包的前面插入新的数据。]]></description><category></category></item><item><title><![CDATA[[linux 驱动]input输入子系统详解与实战]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/142653690</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/142653690</guid><author>weixin_49406449</author><pubDate>Mon, 30 Sep 2024 11:54:30 +0800</pubDate><description><![CDATA[方法（2）：使用sudo hexdump 命令打开/dev/input/下设备文件，然后分别操作各个输入设备，如果有输出16进制数，说明此时打开的设备文件就对应于当前的输入设备。方法（1）：使用sudo cat 命令打开/dev/input/下的设备节点文件，然后分别操作各个输入设备，如果有输出有乱码，说明此时打开的设备文件就对应于当前的输入设备。: 将 input_dev 的父设备设置为传入的设备 dev，确保设备之间的关系正确设置，有利于设备树的管理和资源的分配。通知事件层对输入事件进行 处理。]]></description><category></category></item><item><title><![CDATA[[rk3588 debain]cpu死锁问题解决]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/142633858</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/142633858</guid><author>weixin_49406449</author><pubDate>Sun, 29 Sep 2024 14:01:53 +0800</pubDate><description><![CDATA[应用程序功能是：ip摄像头推流，通过rtsp协议拉流，对视频流做裁剪，缩放工作。首先，根据视频帧率每秒钟处理25张图片。其次，每张图片都会做颜色转换和缩放。最后，会根据图像里人的个数并行执行:颜色转换，裁剪，缩放。总体流程:取流，vpu解码，gpu图像处理，npu算法分析。原来系统的rknpu版本为0.82，版本太低了，更新 rknpu的版本为 0.96 解决该问题，更新的代码文件如下所示。rk3588机器上运行客户如下程序程序发生“BUG: spinlock recursion on CPU#0”]]></description><category></category></item><item><title><![CDATA[[kylin D2000]麒麟系统飞腾D2000下LVDS屏幕BIOS下能亮系统下不亮问题解决方法]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/142628728</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/142628728</guid><author>weixin_49406449</author><pubDate>Sun, 29 Sep 2024 10:04:53 +0800</pubDate><description><![CDATA[结构体 mode_parameter_t 定义了一种模式参数，通常用于描述显示设备（如液晶显示器或其他图形显示设备）的时序和频率设置。将代码放到麒麟系统下，使用 make 命令编译代码，会生成smifb.ko 驱动模块。通过以下命令拉取代码或者使用smifb2.zip 文件解压。执行以下命令替换驱动，重新启动机器，屏幕就成功点亮了。]]></description><category></category></item><item><title><![CDATA[[linux 驱动]regmap子系统详解与实战]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/142489712</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/142489712</guid><author>weixin_49406449</author><pubDate>Tue, 24 Sep 2024 14:51:41 +0800</pubDate><description><![CDATA[Linux 内核引入了 regmap 模型，regmap 将寄存器访问的共同逻辑抽象出来，驱动开发人员不需要再去纠结使用 SPI 或者 I2C 接口 API 函数，统一使用 regmapAPI 函数。regmap_bus 的结构体，它用于描述一种与寄存器映射（regmap）交互的硬件总线或接口的属性和功能。regmap 提供了最核心的两个读写操作：regmap_read 和 regmap_write。]]></description><category></category></item><item><title><![CDATA[[linux 驱动]块设备驱动详解与实战]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/142486560</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/142486560</guid><author>weixin_49406449</author><pubDate>Tue, 24 Sep 2024 12:34:42 +0800</pubDate><description><![CDATA[②块设备在结构上是可以进行随机访问的，对于这些设备的读写都是按块进行的，块设备使用缓冲区来暂时存放数据，等到条件成熟以后再一次性将缓冲区中的数据写入块设备中。但是对于机械硬盘这样带有磁头的设备，读取不同的盘面或者磁道里面的数据，磁头都需要进行移动，因此对于机械硬盘而言，将那些杂乱的访问按照一定的顺序进行排列可以有效提高磁盘性能，linux 里面针对不同的存储设备实现了不同的 I/O 调度算法。这些函数实现了设备的打开、关闭、读写、I/O控制等功能，使得不同的块设备能够通过统一的接口与内核进行交互。]]></description><category></category></item><item><title><![CDATA[[linux基础知识]教你使用vim和ctags阅读linux内核源码]]></title><link>https://blog.youkuaiyun.com/weixin_49406449/article/details/142259693</link><guid>https://blog.youkuaiyun.com/weixin_49406449/article/details/142259693</guid><author>weixin_49406449</author><pubDate>Sat, 14 Sep 2024 15:28:04 +0800</pubDate><description><![CDATA[有时候某个符号有很多索引，使用“Ctrl+]”会跳转错误，这时候可以全局查询指定符号，vim 下使用 ts 命令全局查询指定符号。：ls（查看缓冲区） ：e+文件名（打开文件） ：b+缓冲区序号或文件名（跳转到其他缓冲区）gg（移动到文本开头）、G（移动到文本末尾）、zz（将本行移动到中间）Ctrl+w+w（切换窗口） ：vs+文件名（打开文件并新建一个窗口）Ctrl+w+s（水平分割） ctrl+w+v（垂直分割）移动：h（左）、j（下）、k（上）、l（右）dd（删除本行）、x（删除后一个字符）]]></description><category></category></item></channel></rss>