Miku – SMC Firmware for Loongson-3A4000

最开始拿到龙芯3A4000 PMON Bootloader代码的时候,我是震惊的,一眼看过去又全部是汇编,从DDR训练到HT和7A初始化,属实带工程。真的很佩服龙芯那些工程师,是我用汇编写这么大个工程早就写出114514个Bug了。不过里面有段汇编出乎我意料,名叫ls132_core.S,结合之前在Lemote看到的资料,推测这就是3A4000内置的GS132管理核的代码。一波通读,说实话看不懂,大致明白了主要实现了DVFS功能,运行时重设PLL和FreqScale寄存器进行调频,并通过I2C指挥PMIC进行调压,这不和AMD SMU在做差不多的事么?之前各种折腾SMU,感叹于其功能之强大,但是看着这段汇编,实在和强大扯不上半点关系,于是就萌生了重构管理核中代码的想法,我称之为Project Miku。这个管理核,我们称之为SMC,目前项目已经初具雏形,可以见GitHub

继续阅读“Miku – SMC Firmware for Loongson-3A4000”

Enable A2DP AAC for Blueteeth Headset on Linux

现在许多蓝牙设备往往是一个”Mutiple Role”设备,但是bluz默认只连接设备的首要Role。对于我手上这个蓝牙耳机首要Role是HSP/HFP,音质就不说了。启用A2DP之后,就可以用高级的Codec,传输高质量音频啦。而要启用A2DP,那就必须连接上需要的Role,并且使用修改过的pulseaudio bt以启用相应codec。

继续阅读“Enable A2DP AAC for Blueteeth Headset on Linux”

在Linux上为AMD Raven Ridge (ThinkPad E485) 做的一些研究

农企翻身啦!Ryzen发布之后,作为AMD的铁杆粉,我购入了两台AMD设备。分别是R3 2200G + Asrock AB350M-HDV的台式机和R7 2700U的ThinkPad E485笔记本。都是Ryzen的Raven Ridge系列APU产品。选择Raven是因为一来我不需要特别高的Gaming性能,也就玩玩KSP,Overwatch这点需求,Raven的Vega GFX足以满足我的图形需求,而Zen的核保证了CPU的性能我也可以接受;二来,Raven Ridge的UMA VRAM结构从IC的角度上来讲实在是非常惊艳,我对他赞赏有加。
继续阅读“在Linux上为AMD Raven Ridge (ThinkPad E485) 做的一些研究”

龙芯3B1500开核记 – Reverse engineering PMON Bootloader on MIPS/Loongson

前言

最近有一批龙芯3B1500主板低价处理,型号是Lemote-A1310,我也买了块,美中不足的是由于芯片一个硬件设计Bug,默认由Bootloader屏蔽了2个核心,也就是说只有6个核心开放给用户使用。经过一些调查,我认为通过软件绕过硬件的限制,将那两个核心开放是可行的,也因为群里呼声巨大,所以我开始着手于解放这些核。
继续阅读“龙芯3B1500开核记 – Reverse engineering PMON Bootloader on MIPS/Loongson”