自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(211)
  • 收藏
  • 关注

原创 Linux任务调度探秘(续):截止时间调度器(DL)

• 在 task_tick_dl 中调用:task_tick_dl 是调度器的周期性回调,由内核时钟中断定期触发,因此 update_curr_dl 会按固定时间粒度(通常为 tick 或高精度定时器)更新 runtime 消耗,实现基于时钟周期的精确计费。例如,在大小核架构中,大核和小核即使执行相同的时间,实际完成的工作量也不同。• 通过更新当前任务函数(update_curr_dl)与时钟滴答函数(task_tick_dl),剖析运行时间(runtime)的计费机制、周期重置逻辑以及限流的实现原理。

2026-01-07 22:29:51 499

原创 新年致格友: 从格物致知到以物为师

以我的亲身经历来说,大学里学的X86+DOS,加一点Windows,工作多年做的也主要是X86,创业这几年,做的很多产品都是ARM + Linux。要探究ARM的A系统,那么有GDK8,有幽兰,要探究RISC-V和AMP,那么有GDK5。正立的用于指导学习,也是AI训练的方法,也就是要从“物”和实例下手,从看得见摸得到的实物开始学习,这样不空洞,不乏味,具体而生动。格物者,格,尽也,须是穷尽事物之理。那么格致学都学哪些内容的,包含今天的物理和化学是比较确定的,其实还不止于此,再看一张图吧。

2026-01-02 13:00:14 630

原创 RK3568 RISC-V核UART5输入功能排查纪实

整个过程证明了在异构多核平台上进行驱动调试时,对特定核心(如RISC-V)基础BSP代码(尤其是中断、异常等底层机制)进行验证的必要性,以及当高级抽象机制失效时,逐层深入分析直至硬件操作层面的调试方法的价值。问题始于RK3568 RISC-V MCU核上的RT-Thread系统,把UART5用作RT-Thread的串口终端时,UART5串口呈现“单向通讯”状态:发送(TX)功能正常,但接收(RX)功能完全失效。:RT-Thread串口框架内部对中断信号量的依赖,在中断失效时意外阻塞了轮询路径。

2025-12-29 13:31:15 991

原创 Linux任务调度探秘(下):实时调度(RT)

• 若属于不同调度类,则比较调度类的优先级层级:当被唤醒任务的调度类优先级高于当前任务(例如rt>cfs),则调用 resched_curr() 设置 TIF_NEED_RESCHED 标志,表明当前任务应被重新调度,以便高优先级任务及时获得CPU。现在我们知道:调度的基本单元是 sched_rt_entity,调度的场所是 rt_rq,而调度的方法由 rt_sched_class提供。在介绍调度实体 sched_rt_entity 时,其结构中包含一个指向所属实时运行队列的 rt_rq 字段。

2025-12-28 09:52:29 406

原创 引脚复用之困:当UART5在RK3568上患上“选择性耳聋”

在开发板的世界里,引脚(Pin)堪称最抢手的“剑门蜀道”。GDK5开发板的精妙之处在于,它让强大的ARM Cortex-A核运行Linux,同时让旁边高效的RISC-V MCU核运行RT-Thread实时操作系统,二者组成一个AMP(非对称多处理)异构系统,堪称学习嵌入式高级架构的理想实验场。在GDK5的AMP架构中,A核(Linux)和RISC-V核(RT-Thread)是共享部分底层硬件资源的,A核对引脚的重新配置,直接影响了RISC-V核的UART5控制器接收数据的能力。:这是“功能组”的定义。

2025-12-26 14:30:08 826

原创 《格友》十年:人生最贵有恒

就像买书,买时兴致很高,但读书很慢,把买来的书读完不容易。Bjarne先生出生于1950年,1979年29岁时,开始设计和研发一门新的语言,1983年定名为C++,1985年发布第一个版本。今年也刚好是《格友》公众号10年,10年时间,《格友》坚持自己的特色,认真撰写每一篇文章.......读书、工作、结婚生子,世界这么大,要四处走走,太多的事要做了。于是,开头的命题就变成了,我们能否坚持把一件事做好,做得有头有尾,不要虎头蛇尾。第一眼看到这个印章,它就打动了我的心,我将它拍下来,送给了我的小女儿。

2025-12-25 21:52:32 94

原创 Linux 任务调度探秘(中):完全公平调度器(CFS)

现在我们可以大致理解为何需要“调度实体”这一结构:任务(task_struct)和任务组(task_group)是两种不同的数据结构,为了在调度过程中实现统一处理,内核将它们共有的调度相关信息封装起来,抽象出一个通用的结构——即“调度实体”。简单说:CFS调度总是选择 vruntime 最小的任务来运行——也就是红黑树中最左侧的节点,但也会结合调度器的提示(如 next、last、skip 等),在不破坏公平性的前提下,适当优化响应性和调度效率。中间的孩子“装备简陋”,nice值低,她跑得比较慢。

2025-12-23 22:05:23 703

转载 定位和求解Debian 13 下 PipeWire 无声问题

然而,由于ARM 生态中的声卡驱动(ASoC)与 PC 架构(HDA Intel)存在巨大差异,使用ARM硬件的用户常遇到“无声”问题。典型的症状是系统可以识别到底层 ALSA 设备,但 PipeWire 无法将其抽象为可用的“接插器”(Sink),导致桌面音量图标失效,无法播放声音。但 RK3588 的声卡驱动暴露的控制项(Controls)往往不标准,导致 ACP 无法构建出立体声(Stereo)或 5.1 声道配置,最终放弃接管该设备。模式,从而绕过复杂的场景检测,直接驱动 PCM 硬件。

2025-12-19 21:13:51 58

原创 Linux 任务调度探秘(上):调度框架与优先级仲裁

因此,我们改为直接遍历各调度类的子队列(如 cfs_rq、rt_rq、dl_rq),避免全量扫描任务链表。简单解释一下这个过程:先把当前任务用prev存起来,然后调用pick_next_task()来选出下一个任务,最后在context_switch()执行上下文切换的时候,会修改curr,指向选出的下一个任务。调度类中 pick_next_task()用于选择下一个任务,那么遍历调度类的顺序则决定了优先级,顺序在前的调度类,它的pick_next_task()会被优先调用,优先级就更高。

2025-12-03 22:35:12 881

原创 李逵遇李鬼:实战图形驱动混搭导致的系统黑屏

(版本单向满足,比如引用方需要符号版本,但定义方不需要,或者引用方不需要版本,但定义方提供的符号版本也在要求的范围内),但如果符号版本完全无法匹配,那么就不会设置备用符号,直接返回空指针。所以,要是符号正确,那么符号的哈希一定能匹配上掩码,但有没有可能错误的哈希也匹配上呢,也是可能的,不过在哈希的加持下概率是很小的,但是无法匹配上的哈希,那就一定错误的。当定义方的符号版本是弱符号时,这个符号会被留下来,如果后面没有匹配到强符号时才会时候,如果定义方的符号就是强符号,那么这个符号会立即返回使用。

2025-11-28 22:40:03 631

原创 谁说空指针不能访问的?

在C语言这种手动管理内存的程序语言中,一般会按照默认的规则将空指针视为不可访问。去查找VMA,如果VMA可用,那么就按照指定地址分配,这个时候内核会直接返回指定的地址,但如果通过指定的地址申请内存失败,那么这个内核会按照默认的逻辑自顶向下的查找可用内存区域,此时就不会根据指定地址进行分配了,而且在自顶向下查找的过程中,内核会通过。内存分配涉及到物理内存这种宝贵的物理资源,这种敏感的资源一般都是由内核管理的,进程想要访问内存,需要先通过系统调用向内核提出申请,应用程序是无法访问未经内核同意的内存区域的。

2025-11-16 23:05:04 586

原创 LINUX内核驱动的一处神来之笔

而Windows驱动则不然,它会遍历所有表项,如果发现表项中描述的端口号超过了端口数,那么就报告枚举失败,罢工而退。USB总线始于1995年,30年里一路走来,经历了很多个版本,从控制器角度来看,有OHCI、UHCI、EHCI、XHCI等。考虑到硬件成本和使用场景,XHCI的端口可以具有不同的能力,比如幽兰代码本的USB口就有支持USB 3.0,也有只支持USB 2.0。这样单独为了兆芯的硬件而增加代码成本有点高,由此而看,上面的while循环中的break,不仅优雅,而且通用,真是妙极,神乎其技!

2025-11-13 22:20:44 302

原创 Linux系统的设备总线(/sys/bus)原理与实践

当一个设备被添加到系统时,会调用 device_add() 函数,而 device_add() 的核心动作之一,就是主动将设备交由其所属总线进行处理——通过调用 bus_probe_device(),总线正式介入设备注册流程,主导后续的驱动匹配过程。该命令以树形结构展示了 /sys/bus 目录下所有已注册的总线类型(如 pci、usb、platform、i2c 等),并对每种总线分别列出其管理的设备和已加载的驱动程序,清晰呈现了系统中各类总线与其关联设备和驱动之间的层次关系与组织结构。

2025-11-10 11:06:03 671

原创 Linux系统的设备类(/sys/class)原理与实践

在 /sys/devices 那片由总线、控制器、地址交织而成的密林中,/sys/class 如同一张精心绘制的地图——不展示每一条小径的曲折,只标注“此处有网卡”“彼处是电池”。概而言之,/sys/class 忽略物理连接,只按设备的 “功能用途” 分组,每个功能目录下的文件以链接形式直接指向 /sys/devices 中对应的真实设备节点,这种方式极大降低了设备访问的复杂度。就像诗句中在人潮中执着寻找 “那人”,满脑子都是 “他该在灯火最亮的地方”,却没料到答案偏偏藏在看似清冷的 “阑珊处”。

2025-10-31 22:55:54 382

转载 为AMP而生,GDK5套件细节公布

某种程度来说,AI革命对很多程序员喜忧参半,AI的编程能力与日俱增,与程序员抢饭碗是不争的事实。而且,这个趋势不可阻挡,如何在这场变革中找到自己的机会是关键,AMP便是给底层技术人的一个机遇,衷心希望格友们能抓住这个机遇。AMP在机器人、电力系统、自动驾驶、精密机床等产业中都有非常高的匹配度,AMP技术提供的"让Linux和RTOS无缝并行运行"的能力,是这样行业所亟需的。概而言之,它们既需要。的时代里,它的优点再次凸显出来,正在受到越来越多的青睐。屏线前请务必确认电压选择跳线帽配置正确!

2025-10-18 08:29:24 96

原创 Linux 系统的设备树(sys/devices)原理与实践

从名字就能看出:"5-1"中的"5" 对应 _usb5(USB 总线 5),"1" 表示插在根集线器的 1 号端口,等于告诉系统:"我插在它的 1 号口,归它管"。在探究 /sys/devices 的过程中,我从 kobject 的字段定义、kset 的集合管理,一路追踪到 kernfs_create_dir_ns 的目录创建过程,最终在 fc880000.usb 与 _usb5 的父子关系中,清晰印证了内核设计的精密逻辑。在做这个任务的过程中,我做好了前面的部分便停止了。中,并没有做层级的区分。

2025-10-17 18:07:14 689

原创 AMP的道与器

从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(全球软件战役研究峰会)、《感受和思考调试器的威力》(优快云 SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软“深入研究Windows内部原理系列”的一部分)等。,主要功能:加载固件,启动和停止远程处理器,使用的内存,中断控制器和中断分发,时钟,

2025-10-16 17:43:26 311

转载 具身智能下的实时陷阱:线程风暴致系统卡死

很多工具验证、系统实验、性能分析都是在它上面完成的 (图中是我在幽兰笔记本上编译 Wireshark 并进行 USB 抓包的画面,用于分析 USB 调试链路) 在这个过程中,它不仅是一台设备,更像是一位沉默的搭档,默默见证着我的成长和进步。尤其是在算法侧常用的并发库(如 ONNX Runtime、OpenMP、TBB)与实时任务混跑的场景下,一旦调度属性被无意间继承,就可能引发一场“看似网卡掉线,实则CPU被锁死”的事故。当你再遇到那种“莫名卡死”的系统时,也许答案并不在外设,而藏在。网口无法ping通。

2025-10-13 13:08:07 59

转载 调试神秘的EL3

进一步说,不同的代码运行在不同的级别。应用程序运行在级别最低的EL0,操作系统运行在EL1,VMM运行在EL2,最高级别的EL3留给系统固件,一般称为ATF(ARM Trusted Firmware),也称TZM(Trust Zone总督)。NDB迅速响应,通过ADI接口与SoC对话,让对方进入调试模式,一切就绪后,NDB显示出命令行提示符,等待更多命令。我在U-Boot课程中,曾经翻来覆去、浓墨重彩的讲过MaskROM,简单说,它是SoC厂商在出厂前烧到芯片内的一段程序,它以可信固件的身份工作EL3。

2025-09-09 11:28:29 91

原创 Indler漏洞更新

概括一下,Indler漏洞已经报告,某些内核已经修正这个问题,比如幽兰代码本使用的内核是修正了这个问题的,但是内核的主线代码还没有修正。这个漏洞的另外一个危害就是会导致内核不稳定,一旦触发,那么内核数据被意外覆盖,导致莫名其妙的BUG,这也正是格蠹当初注意到它的原因。Kees向我要了重现步骤,我把本来中文写的重现步骤翻译为英文后发给了他,他回复说,他会把这件事加到他的计划里。关于这个漏洞的危害,至今没有已知的RCE(远程执行代码)利用方法,但是DoS攻击的方法是比较多的。Kees可能是忙不过来了。

2025-09-07 11:47:45 728

原创 新版微信的374崩溃

可能是释放的块本身有问题,比如参数是野指针,多次释放,也可能是其它代码把堆搞坏了,这次调用触发了问题,冤枉背锅。堆的问题也常常反应了代码中的一些深层问题,比如频繁的动态分配,分配释放逻辑混乱等。归纳一下,这次崩溃是因为新版微信进程内的进程堆发生故障,在Weixin.dll释放堆块时触发了NTDLL的堆检查机制,报告致命错误,打开桌子边上的《格蠹新编》,翻到94页,图15-2,调用栈里,主程序就是WeChat。双击报告附带文件中的dmp文件,WinDBG被唤起,自动打开了这个转储文件,让我禁不住看了几眼。

2025-09-03 14:23:54 842

原创 U-BOOT构建脚本闪退之谜

主线代码反向移植到幽兰代码本本来使用的v2017版本时,遇到构建脚本闪退的问题。因为这个问题涉及到多种程序文件和配置文件的配合,比较新颖,所以特别将其记录下来。如果大家想重现和体验这个问题,那么非常简单,只要打开toosl/Kconfig, 找到config MKIMAGE_DTC_PATH这一行,将其修改为。函数的参数是个很大的params结构体。回头追查产生命令的代码,仔细看snprintf的第一个动态内容,来自一个名叫。看起来是调用dtc来编译设备树文件的命令行,但是却没有关键的dtc程序名。

2025-08-26 10:38:08 338

原创 在调试器下理解Linux内核的追踪事件和追踪器

【RZ】是有关联的两个概念,事件是基本的信息提供器,tracer是一种追踪信息定制机制,内部常称为plugin,tracer可以和事件关联,比如graph_trace tracer与graph_trace_entry_event和graph_trace_ret_event是关联的。Linux内核的追踪机制是实现系统调试和优化的一项关键设施,也是很多上层工具赖以生存的基础,包括eBPF、trace_cmd、Kernel Shark、其中1号栈帧的lk!在追踪机制中,追踪事件和追踪器是一对有关联的关键概念。

2025-08-25 15:18:09 770

原创 格蠹之役何茫茫?

上周四周五(8.14-15)两天,我在南京一家公司里讲调试课,周五中午课间休息时,上海的同事发来一条消息:“收到一个快递”,并且附带了一张照片。这两年,AI技术大兴其道,加上外企裁员,一些技术同行失业了,更多的同行则受到了心理上的影响,对编程和软件技术的热情下降,失去斗志,切换到“躺平”模式。打开我电脑上存放《格蠹汇编》书稿的文件夹,还有一个postpub目录,里面放着一些照片,拍的是《格蠹汇编》出版后的一个签售会。讲座现场,大约有几十个人参加,大多是喜爱调试的同行,特别是《高端调试》网站的一些网友。

2025-08-24 11:32:01 987 1

原创 PC经验和U-BOOT的启动菜单

我尝试关闭SMART监视,然后退出BIOS,重新启动,很有效果,刚才的报警消息没有了,屏幕上显示操作系统的徽标,过一会后,成功进入系统,虽然本地屏幕花屏了,但是我可以通过网络远程登录。幽兰使用的U-Boot代码来自瑞芯微开发的一个分支,这个分支是基于U-Boot主代码树的2017版本,因为此,这个分支的代码的版本号里有个明显的v2017标记。在我看来,不管是普通用户,还是专业用户,当他遇到眼前的计算机罢工,无法启动而焦急万分无计可施时,你告诉他,可以进到BIOS做某某设置,他都会眼前一亮。

2025-08-22 22:38:21 1055

转载 英特尔对LINUX的真爱是普渡众生还是养虎为患?

从下面这张我维护多年的Linux内核发展表可以清楚看到,2000年是个重要分水岭,2000年之前,Linux的体量就那么一点,2000年之后则高速发展。我在英特尔工作时,曾经从这里飞到硅谷区域的英特尔行政总部,英特尔的研发中心有大巴坐到机场,拿着英特尔的胸卡就可以登机,特别的方便。一个简单的解释是,如果没有Linux,那么小的芯片厂商根本没有机会进入高端的计算市场,因为没有操作系统支持它,它自己没有能力研发操作系统,微软这样的操作系统厂商也不可能支持它们。但其实圈里人都知道,投入最大的就是英特尔。

2025-08-10 11:33:53 56

原创 让人撇嘴的崩溃和让人叹服的可调试性

我特意“打开所在的文件夹”,看了一眼刚刚下载好的文件,对它说:“你好啊,美国来的客人,上海欢迎你!新版本装好后,启动wpa,界面果然和以前不一样,布局更漂亮了,右侧还多了个“欢迎使用的新的启动器!更难得的是,把鼠标移到变量上,立刻显示出了变量的值,XPerfProcessingSource.XPerfAddInDirectory的值确实是我安装WPT的路径。我估计VS要忙一会,就切到微信界面,看了几条消息。为此,我特意把安装程序复制到一个新的本子上,重复上面的步骤,结果还是同样的症状,致命的异常,崩溃。

2025-07-12 17:34:07 876

转载 AI时代,编程已死?不,它比以往任何时候都更重要!

如果没有专业开发者的严格数据治理和算法监控,AI可能被喂入毒数据(Poisoned Data)或脏数据(Dirty Data),轻则导致模型失效,重则可能被恶意利用 - 比如生成虚假信息、操纵金融系统,甚至干扰关键基础设施,这些都将对社会秩序造成严重威胁。例如:2023年,Stack Overflow的一项调查显示,87%的开发者使用AI辅助编程,但其中76%的人表示仍需手动修改AI生成的代码。这说明,AI目前只能作为“然而讽刺的是,那些宣称“AI取代编程”的人,可能从未真正理解AI是如何被创造出来的。

2025-06-28 08:50:53 168

原创 让人喷饭的BUG在哪里?

回过头来看,这个表面上非常明显的BUG,实际上还是有些复杂的,不是简单的单点错误,而是牵涉到多个函数。对于这样的BUG,不上调试器的话,是不太容易看出来的。踪时,我发现事件的pmu_name属性不为空,而且大核的叫cpu_core,小核的叫cpu_atom。,更重要的是,当场证明了这一定是BUG,因为眼力过人的李博士看出是用小核的时钟数去除大核的指令数,指桑骂槐,张冠李戴。对于大矩阵乘法的1号算法,大核的IPC为2.46,小核的IPC为0.73,大核的表现优于小核。函数中遍历事件列表,搜索指定类型的事件。

2025-06-12 22:18:10 1036

原创 破纪录的IPC和让人喷饭的BUG

但我觉得,VTune的信息有待更新,对于最新的微架构,IPC的理论上限应该是6。上午的第一讲讲的是时间测量,第二讲是时钟,第三讲是IPC,也就是每个时钟能执行的指令数(Instructions Per Cycle)。和前一天一样,大家使用自己喜欢的环境做试验,有的用至强,有的用酷睿,也有人用AMD的Ryzen(锐龙)和EPYC。正在这僵持的窘境,经常“语出惊人”的李博士给出了一个惊人的猜测:可能是用大核的指令数去除小核的时钟数了。看到10.83这样的结果,我是无论如何不相信的,坚信是哪里出了问题。

2025-06-10 22:02:02 357

原创 使用VTune远程优化LINUX程序

今天是第一天,北京的天气非常好,蓝天白云,晴空万里,天气有些热,还好室内中央空调充足,而且人手一把新款的“格物致知”扇子(^_^)。使用霄龙笔记本的同学在得意了好一阵子后,在做VTune试验时遇到问题了,VTune可以安装在AMD系统上,但是很多试验都无法做——报告不支持的处理器型号(^-^)。接下来,再刷新VTune的界面,就可以选择各种高级优化试验了,比如基于硬件事件的采样。上午从Intel的CPU讲起,回顾IA历程,介绍Core、UnCore,讲的有点多,只做了一个小试验(感受x86的变长指令)。

2025-06-06 22:56:28 697

转载 致广大而尽精微——读张银奎《软件简史·序》后感

我读了《序》和前两章,随后在动车上和飞机上,我每读一章前,我就再看一遍《序》,已经记不清楚读了多少遍《序》。每读一遍《序》,我就想到《典籍里的中国》中的编写典籍的那些先辈们在历史长河中躬身入局、身体力行地将文化和智慧保存下来,传承中国文化、传承中国精神,让我们薪火相传、接续前行。张银奎说:“历史本来就是有趣的,很多学科都是有趣的,我们应该发现它的趣味,归还它本来的趣味给每个喜欢求知的心灵。我想,他是以人文情怀审视软件的,他应该是想打破技术与人文的边界,想软件开发应关注人的需求、社会责任和文化价值。

2025-06-05 13:10:36 93

原创 全栈调试实战营之二线拍案惊奇

充电图标、Linux内核的电能管理、dynamic_debug、debugfs、动态启用、在命令行启用、通过虚文件看状态、供电给谁(supplied_to)和谁给我供电(supplied_from)、电池驱动、设备树脚本、解决问题和引入新的问题。补丁、脚本的扩展机制、调试bash脚本的挑战和策略。:内核启动失败、KASAN、越界、用户空间模拟、ASAN、谷歌的俄罗斯研发团队、指针数组、malloc和calloc、触发github的Blame视图、哪些人改过、众目睽睽之下的BUG、林纳斯法则为何失效?

2025-06-04 14:39:25 964

原创 从损坏的硬盘中抢救没有备份的书稿

敝帚自珍,自己写的东西再差,也是很珍惜的,不能轻易丢啊。接下来,我不使用比较重的ls命令了,直接使用cd切换目录,一级级的切换到包含书稿的目录,中间有时略有停顿,但是都有惊无险,成功切到vol3目录后,执行ls,可以看到期盼的那些书稿文件,它们似乎也在以期待的眼神看着我,仿佛被洪水围困的一群孩子看到了救援的队伍。是的,使用Linux,Linux也支持微软的文件系统(NTFS),最重要的时,Linux相对单纯,上面没有那么多的软件争着读硬盘,让它做什么就做什么,不像Windows上的软件自作主张,擅自妄为。

2025-06-03 19:10:21 648

原创 Git使用经验点滴

吃过晚饭,我又尝试使用云上的虚拟机来下载,网速很快,5分钟左右就完成了大约30%,但是到了大约36%时,下载速度变成了0KB/S,git非常缓慢地更新接收的对象数,估计是在处理复杂的数据对象。对于某些开源项目,如果我们只想简单了解,不需要提交代码,那么就不必使用git clone这样的命令来克隆仓库,最快捷的方式就是下载代码的压缩包,在浏览器上操作一下就可以了。以上是一些点滴的经验,对于git高手来说,不值得一提,写出来只为分享给初学git的格友,如果大家有什么好的经验,也欢迎留言。

2025-05-21 12:03:45 778

原创 再战声卡无声难题(下)

方向上我是很认可的,如果没有给声卡提供合适的时钟信号,那么声卡是无法工作的。首先,我查找给声卡芯片提供时钟信号(MCLK)的管脚——GPIO1C2,这个管脚有多种用途,根据芯片手册,要通过BUS_IOC(总线IO控制器)的IOMUX寄存器来为其配置用途。用了大约1个小时时间开外壳,查电路,上示波器,经过实际测量,证明了E工的怀疑非常精准,确实是没有MCLK。上面的图是放大过的,实际芯片很小,只有4mmX4mm,也就是长和宽都是4mm,不到半厘米。)的幽兰,做同样的测量,可以得到一个有规律的波形。

2025-05-17 12:09:08 936

原创 再战声卡无声难题(中)

但是,我大脑中那些喜欢“追求完美”的细胞们站出来反对:“没有suspend会费电啊,不使用设备时也白白耗电,会减少电池待机时间,不利于节能和环保...”我深以为然,是啊,不能图一时简单,还是要选周全的方案。书归正传,改掉这个编译错误的方法倒也简单,加个参数就行了。我打开kernel.org,找到最新的6.15内核代码,粗略比较,确实比6.1的多了很多行代码,差异挺大,可能改掉了不少问题。声音子系统的特点是琐碎的东西很多,多声道,各种音频格式,传输接口,加上音量调节,去除噪声等等,当然还有静音(Mute)。

2025-05-15 18:38:07 887

原创 再战声卡无声难题

比较重要的一点是开源和AI两股力量都导致代码很容易得到,很容易得到就导致代码迅速聚拢和堆积,形成一个庞大的代码系统,这些代码有的来自开源,有的来自AI,有的来自人工。感觉有些疲倦后,我尝试使用第二个HDMI声音设备播放声音,另一端连接一个有音响的显示器,结果很正常,我播放的是horse.wav,可以听到马的一声长鸣,这个声音在寂静的办公室里响起,格外响亮。测试时,起初我用aplay播放小的wav文件,但是很快就结束了,后来改用mpv播放我喜欢的梁祝音乐,整个乐曲的长度大约4分多钟,足够测试用了。

2025-05-14 10:43:20 787

原创 光速角逐——纳秒级优化训练营(2025北京站)

DRAM组织、通道、Rank、Bank、行、列、DIMM、工作频率、传输率、页表结构、页表项、页错误、Major Fault和Minor Fault、页错误导致的延迟、大内存页原理、Linux系统的大内存页支持、分配大内存页、评估大页的性能、案例分析之DPDK、配置大内存页。前端、神秘的微码、MSROM (microcode sequencer ROM)、解码单元、分支预测单元(BPU)、微指令缓存、微指令队列、重命名、调度和发射、执行引擎、Golden Cove的执行端口。

2025-04-29 20:00:30 1143

原创 安装UBUNTU时遇到的黑手

泰勒当时使用的机器叫沈括,上面是双硬盘,坏的硬盘不能单独启动,另一个硬盘上又有别的系统。很快,我复现了泰勒说的缓慢问题,当我选择键盘布局,点击下一步时,下一个安装界面并没有很快出现,过了几分钟之后也还是如此。这是发生在上上周的一个故事,4月11日(周五),同事泰勒在构建安卓新镜像时遇到障碍,看到很多文件系统错误,怀疑硬盘坏了。UBUNTU,这是一个比较简单的任务,顺利的话,从准备安装U盘到安装完毕,10分钟左右就搞定了。基于这样的前提,我怀疑是安装优盘没有做好,重新下载安装文件,制作安装优盘。

2025-04-20 12:40:04 396

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除