<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[engineer0的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/engineer0</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; engineer0]]></copyright><item><title><![CDATA[JJJ：can工具canutils配置记录]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/154171018</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/154171018</guid><author>engineer0</author><pubDate>Fri, 31 Oct 2025 08:56:11 +0800</pubDate><description><![CDATA[源码地址：  http://public.pengutronix.de/software/libsocketcan/（64位linux上用的工具一般build都指定为aarch64，后面就是指定编译器、编译产物输出到指定的目录）类似于cangen、candump、canconfig这些用户态工具。1、先将 上面libsocketcan 里面的头文件。复制到 canutils 的 include 里面。需要下载两个开源代码包。]]></description><category></category></item><item><title><![CDATA[JJJ：mmc指令的类型]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/153725829</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/153725829</guid><author>engineer0</author><pubDate>Wed, 22 Oct 2025 10:31:34 +0800</pubDate><description><![CDATA[CMD10|请求卡发送 CSD（Card Specific Data Register，卡特定数据寄存器，包含卡的容量、读写速度等信息）。|[19:16]|卡支持的电压范围（如果卡支持主机请求的电压，它会原样返回主机发送的电压模式）||[39:8]|32位的OCR寄存器（主要用来判断卡的上电流程是否完成，以及支持的电压范围）||[15:0]|卡状态位（与R1的32位状态不同，这里只返回16位关键状态，比如卡是否就位）||[39:16]|卡返回的新的RCA（相对卡地址）（16位）|]]></description><category></category></item><item><title><![CDATA[JJJ：SD 卡中的 OCR（Operating Conditions Register）寄存器]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/153470460</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/153470460</guid><author>engineer0</author><pubDate>Fri, 17 Oct 2025 15:07:02 +0800</pubDate><description><![CDATA[OCR 是一个 32位（4字节） 的只读寄存器，位于 SD 卡内部。它的主要作用有两个：1、报告 SD 卡支持的工作电压范围。2、指示上电初始化过程是否完成。当主机（例如单片机、树莓派、手机）与 SD 卡通信时，首先需要读取 OCR 寄存器来确认双方是否“兼容”，并等待卡准备好接受后续命令。31:24只有最高位 位 31 是有意义的，其他位保留。位 31：卡上电状态位。0：卡仍在初始化过程中，繁忙。1：卡初始化过程完成，准备就绪。]]></description><category></category></item><item><title><![CDATA[JJJ：内核格式化输出]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/148303860</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/148303860</guid><author>engineer0</author><pubDate>Thu, 29 May 2025 09:56:03 +0800</pubDate><description><![CDATA[是 Linux 内核中用来打印 cpumask 的特殊格式字符串。（假设系统有 4 个 CPU（nr_cpu_ids = 4））是可选的，表示使用列表格式而不是十六进制掩码格式。：指向cpumask结构体中的位图的指针。表示以位图(bitmap)格式打印。表示需要两个参数：宽度和指针。：系统中cpu的数目。]]></description><category></category></item><item><title><![CDATA[JJJ：linux ida]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/147953323</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/147953323</guid><author>engineer0</author><pubDate>Wed, 14 May 2025 14:13:46 +0800</pubDate><description><![CDATA[ida使用起来很简单，就是先分配一个仓库一样的实例，再从这个仓库里面分配一个独一无二的整数id。]]></description><category></category></item><item><title><![CDATA[JJJ:linux如何修改网卡ip]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/147223881</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/147223881</guid><author>engineer0</author><pubDate>Mon, 14 Apr 2025 15:10:57 +0800</pubDate><description><![CDATA[首先确认一个空闲的ip地址，ping之不通，则说明是空闲的ip。比如这个ip为192.168.2.168，ping不通它。比如我要修改eth0这个网卡的ip为它。注意一定要先关闭网卡，在修改ip。]]></description><category></category></item><item><title><![CDATA[JJJ：generic netlink例程分析]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/147012637</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/147012637</guid><author>engineer0</author><pubDate>Sat, 05 Apr 2025 17:16:04 +0800</pubDate><description><![CDATA[（generic netlink协议在nl_table下面的sock由genl_init -》register_pernet_subsys -》genl_pernet_init -》  netlink_kernel_create中创建并放入到nl_table对应generic netlink下面的哈希表中）调用具体协议族的proto_ops的sendmsg hook，本次会调用发送方所属于的netlink协议族，netlink_sendmsg。#在自己构造的netlink数据结构中。]]></description><category></category></item><item><title><![CDATA[JJJ：linux idr]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/146886704</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/146886704</guid><author>engineer0</author><pubDate>Mon, 31 Mar 2025 22:12:21 +0800</pubDate><description><![CDATA[IDR（ID Radix Tree）是 Linux 内核中的一种整数管理机制，用于将整数 ID 与指针关联起来。IDR 提供了一种高效的方式来分配和管理唯一的整数 ID，并将这些 ID 映射到相应的指针。在 Linux 内核中，整数 ID 是用于唯一标识各种系统资源或对象的数字。通过将整数 ID 与指针关联，可以快速、高效地管理和访问内存中的资源或对象。这种机制简化了内核的资源管理过程，提高了系统的性能和可靠性。]]></description><category></category></item><item><title><![CDATA[JJJ:amixer指令简介]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/146229855</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/146229855</guid><author>engineer0</author><pubDate>Thu, 13 Mar 2025 14:20:10 +0800</pubDate><description><![CDATA[是Linux音频架构ALSA中的Alsa工具的其中一个，用于配置音频的各个参数。基于文本下的图形界面的，可以通过键盘的上下键，左右键等，很方便地设置需要的音量，开关某个switch（开关）等等操作。]]></description><category></category></item><item><title><![CDATA[JJJ：linux sysfs相关]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/146089159</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/146089159</guid><author>engineer0</author><pubDate>Fri, 07 Mar 2025 10:34:02 +0800</pubDate><description><![CDATA[sysfs是一个基于内存的虚拟的文件系统目录简介/sys/block存放块设备，提供一设备名(如sda)到/sys/devices的符号链接；/sys/bus按总线类型分类，在某个总线目录之下可以找到链接该总线的设备的符号链接，指向/sys/devices. 某个总线目录之下的drivers目录包含了该总线所需的所有驱动的符号链接。对应kernel中的struct bus_type；/sys/calss。]]></description><category></category></item><item><title><![CDATA[JJJ：fread返回值分析]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/145999430</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/145999430</guid><author>engineer0</author><pubDate>Mon, 03 Mar 2025 21:12:50 +0800</pubDate><description><![CDATA[当目标还有字节可读时，返回实际读到的字节数。尽量读参数指定的长度，不够的话就能读多少读多少。一共十个字节（可能是是一个，读到的第十一个字节ascii码为101）第二次读了3个字节，是： 9、0、换行。无字节可以读时，返回0或者负数。第三次就没字节可以读了，返回0。），fread返回值为8。]]></description><category></category></item><item><title><![CDATA[JJJ：linux时间子系统相关术语]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/145379678</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/145379678</guid><author>engineer0</author><pubDate>Mon, 27 Jan 2025 14:02:14 +0800</pubDate><description><![CDATA[在传统系统中，CPU 会定期接收时钟中断（ticks），即使它处于空闲状态。这些周期性的时钟中断会导致 CPU 不必要地从低功耗状态唤醒，增加了能耗并减少了电池寿命。通过减少不必要的时钟中断，使 CPU 能够更长时间地保持在低功耗状态。]]></description><category></category></item><item><title><![CDATA[JJJ：Linux - 高精度定时器 hrtimer]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/145334640</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/145334640</guid><author>engineer0</author><pubDate>Fri, 24 Jan 2025 09:19:34 +0800</pubDate><description><![CDATA[clock_dev硬件中断-》tick_handle_periodic-》tick_periodic-》update_process_times-》run_local_timers。如果你希望高精度定时器只执行一次而不是重复执行，可以在回调函数中返回 HRTIMER_NORESTART 而不是 HRTIMER_RESTART。用于在高精度定时器的回调函数中，向前推进定时器的到期时间。定时器回调函数在软中断上下文中执行，因此不应该在回调函数中执行可能会阻塞的操作。在回调函数中，你可以执行需要的操作。]]></description><category></category></item><item><title><![CDATA[JJJ:arm64架构下的asid相关]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/145285381</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/145285381</guid><author>engineer0</author><pubDate>Tue, 21 Jan 2025 16:02:27 +0800</pubDate><description><![CDATA[如果没有空闲的硬件ASID，把全局ASID版本号加1，重新从1开始分配硬件ASIDA.因为刚分配的ASID可能和某个进程的硬件ASID相同，只是ASID版本号不同，页表缓存可能包含了这个进程的页表项，所以必须把所有处理器的页表缓存清空。处理器给进程分配ASID时，如果ASID分配完了，那么把全局ASID加1，重新从1开始分配ASID，针对每个处理器，使用该处理器的reserved_asids保存该处理器正在执行的进程的ASID，并且把该处理器的active_asids设置0。]]></description><category></category></item><item><title><![CDATA[JJJ：per-cpu变量]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/145227874</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/145227874</guid><author>engineer0</author><pubDate>Sat, 18 Jan 2025 15:27:20 +0800</pubDate><description><![CDATA[在单处理器系统上，这个变量声明与常规的变量声明没有不同；再有若干cpu的SMP系统上，会为每一个cpu创建一个该变量的实例。所需的数据很可能存在于处理器的缓存中，通过自己的cpu来访问速度更快。若一个变量可以被多个cpu访问，那么可能会造成冲突。通过指定cpu的id来指定访问对应cpu上的实例。访问当前cpu上的这个变量实例。访问指定cpu上的变量实例。type是其数据类型。]]></description><category></category></item><item><title><![CDATA[JJJ：static_branch_unlikely和 static_branch_likely]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/145207350</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/145207350</guid><author>engineer0</author><pubDate>Fri, 17 Jan 2025 14:42:52 +0800</pubDate><description><![CDATA[如果静态键被启用（通过 static_branch_enable(&my_static_key)），则会执行 do_something_rare()；`static_branch_unlikely 是 Linux 内核中用于优化分支预测的一个宏，它与静态键（static key）机制结合使用，以提高代码性能。static_branch_unlikely(&my_static_key) 表示编译器应该假设这个条件分支不太可能为真。STATIC_KEY_INIT 初始化一个静态键，默认是禁用状态。]]></description><category></category></item><item><title><![CDATA[JJJ：linux等待队列用法 init_waitqueue_entry]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/144817550</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/144817550</guid><author>engineer0</author><pubDate>Mon, 30 Dec 2024 10:18:14 +0800</pubDate><description><![CDATA[函数用于初始化一个等待队列条目，设置其标志、私有数据和唤醒函数。这是 Linux 内核中管理进程睡眠和唤醒机制的基础部分，确保进程能够在适当的时候被唤醒并继续执行。]]></description><category></category></item><item><title><![CDATA[JJJ:scp发送文件]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/144803540</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/144803540</guid><author>engineer0</author><pubDate>Sun, 29 Dec 2024 12:24:43 +0800</pubDate><description><![CDATA[【代码】JJJ:scp发送文件。]]></description><category></category></item><item><title><![CDATA[JJJ：linux下解压缩-分散压缩文件]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/144803480</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/144803480</guid><author>engineer0</author><pubDate>Sun, 29 Dec 2024 12:17:38 +0800</pubDate><description><![CDATA[对于要把同一批的若干个分散压缩文件1.tgz00、1.tgz01、1.tgz02解压到一起去，可以。]]></description><category></category></item><item><title><![CDATA[JJJ：playback]]></title><link>https://blog.youkuaiyun.com/engineer0/article/details/144803413</link><guid>https://blog.youkuaiyun.com/engineer0/article/details/144803413</guid><author>engineer0</author><pubDate>Sun, 29 Dec 2024 12:11:02 +0800</pubDate><description><![CDATA[Playback一般意思是音视频的回放，即重新播放之前录制或存储的内容。]]></description><category></category></item></channel></rss>