自己DIY一个pinephone——debian与主线linux在红米2(msm8916)上的移植 (二)

玩转96boards之(一)---高通410c板硬件 csdn上花了点积分,下载的原理图 lm25-p0436-1_a_db410c_schematic.pdf: 参考https://download.youkuaiyun.com/download/lvshuxun/10120602 https://developer.qualcomm.com/hardware/dragonboard-410c 官方默认使用APQ8016 管脚兼容MSM8916(对比了一下两者的手册管脚,虽然是pin-to-pin兼容,但是有一些电源部分还是不同的,有一些管脚8916是接电源,而80 阅读详情
AI摘要

本文介绍了将红米2手机移植到主线Linux系统的过程,包括充电芯片驱动、屏幕适配、音频问题解决、摄像头驱动挑战及kexec引导方式的探索。作者分享了在移植过程中遇到的困难与解决方案,并提供了系统镜像和相关资源,旨在打造一个低成本的树莓派替代方案。

简介

​ 近段时间,msm8916-mainline项目的大佬们又为红米2完成了充电芯片的驱动,这意味着可以在主线内核中能够正常充电和检测电池容量,还有otg的供电。距离完整可用的主线Linux手机又进了一步。

​ Postmarketos项目的那帮大佬也不知道最近在整什么新的功能,导致edge版本的postmarketos要么会在构建rootfs时对包的checksum报错,要么刷进去产生一些稀奇古怪的bug,体验很差,也许基于musl libc的alpine linux可能真的不太适合手机这种设备,postmarketos的稳定版还没有完全准备好的情况下,想要让这些老爷机发挥余热也只能继续造新的轮子了。

​ 另外,针对于移动端的debian衍生版mobian也推出了搭载sdm845芯片手机的支持。终于有了与msm8916芯片相似度更高的平台出现,这也使我的移植更为轻松了,为了方便起见,我没有完成msm8916平台支持包的打包,而是在mobian一加6的刷机包上进行修改,最终形成一个个人觉得很稳定的debian刷机包,这个基本上可以算的上是一个最廉价的带屏幕的树莓派代替方案了,除了没有使用chroot方案安卓层的性能损耗和一个完整的,带systemd的文件系统,它还拥有比各种派更多的传感器和电池等一大波外设,最终完成了这么一个刷机包,(⊙v⊙)嗯~想想还有点小激动。

我最终解决了前篇文章中提到的一些致命的问题,使得不是那么令人抓狂的、可以使用的小型linux设备成为可能。

最终的系统镜像会分享给大家,Have Fun ~~

目前硬件支持的程度

支持的

  • wifi
  • 蓝牙
  • 重力传感器
  • gpu
  • 显示
    • 某些红米2的屏幕驱动暂时不能正确处理屏幕休眠,休眠唤醒之后可能会有轻微的残影或者闪屏现象
    • 已知完美的屏幕有 mdss_dsi_nt35521_720p_video 不会闪屏和残影。
    • 屏幕型号请参见lk2nd的PANEL那一栏。
  • 充电 & 电量显示
  • otg usb
  • 触摸屏
  • 放音 & 录音
  • gps
  • 旁边的音量键和电源键

不支持的

  • 前后摄像头 (调了几天,结果相机模块连电都通不了,果真还是自己太菜了~)
  • modem (通话、发短信、流量)<-- 自己用不到就没有调~~
  • 面板上的三大功能键(反正这个系统里面这几个键没什么用了)
  • 光线传感器 (懒得调,主线linux有驱动)
  • 磁场传感器(懒得调,主线linux有驱动)
  • 休眠(容易睡死,可能很长时间才会唤醒,建议关掉休眠)

填坑

解决debian的ramdisk挂载不上文件系统的问题

​ 最主要的问题是msm8916的mmc设备号在启动的时候不是固定的,有时候是mmc1,有时候是mmc0。postmarketos的解决方案是魔改initramfs,同时把system(看安装的分区来定也可能是userdata)划分为两个分区,一个叫pmos_boot,一个叫pmos_root,分别存储内核、alpine的initramfs和rootfs。在boot分区中的initramfs在启动时会按照卷标名去查找目标分区,然后引导真正的initramfs,这种解决方案巧妙之处就在于可以适用于各种空间大小的boot.img分区,不至于initramfs太大而刷不进去。

​ 一开始我就放弃了,因为如果要学postmarketos的方案的话就需要自己构建initramfs,直到无聊的我在GPT分区的archlinux执行了cat /proc/cmdline这个指令

guo@handsomelaptop cat /proc/cmdline            
BOOT_IMAGE=/boot/vmlinuz-linux-lts root=UUID=e7c0a739-2da2-4422-b936-f3a0ccd8914b rw loglevel=3 quiet

​ 原来initramfs可以通过指定UUID的方式来确定root分区,使用userdata分区的UUID来生成新的boot.img,一切就迎刃而解了!还好老米的boot分区管够,轻松放下一个包含所有内核模块的标准Debian Initramfs。。。

mkbootimg --base 0x80000000 \
        --kernel_offset 0x00080000 \
        --ramdisk_offset 0x02000000 \
        --tags_offset 0x01e00000 \
        --pagesize 2048 \
        --second_offset 0x00f00000 \
        --ramdisk initrd \
        --cmdline "console=tty0 root=UUID=9086bed9-957e-46e8-8beb-32b3727cc753 rw loglevel=3 splash"\
        --kernel kernel-dtb -o boot.img

解决没有声音的问题

​ 事实上,我还没能完全解决声音的问题,插入耳机切换好像仍然没有工作,如果要使用耳机需要在设置里面手动设置,其他完美。在msm8916-mainline项目里面把ucm文件拷到/usr/share/alsa就可以使用了。

​ msm8916声卡ucm文件

驱动摄像头(尚未完成)

​ 整个postmarkos社区至今为止都没有人跑通过任何一款msm8916手机的摄像头,但是摄像头的驱动在主线中存在很久了,主要是供DragonBoard使用的。主要的难点主要有三个,一个是控制相机的供电,还有就是驱动和firmware。

​ 高通的相机i2c(cci)在安卓内核里面是没有办法通过i2c-tools读取的,所以我连i2c到底什么地址上接了什么都摸不太清,只能把相机的供电调好才能够知道两个摄像头的i2c地址,可是在目前的状态下i2c下,还是什么设备都没有。看原厂的内核日志,在摄像头启动的时候还加载了固件进去,而且固件还不止一个,可能跑起来有一定的难度。

​ 但是通过分析原厂内核源码和设备树,还是大体能够知道摄像头的一些信息。红米2后摄像头是ov8865,还挂了一颗eeprom,可能需要魔改驱动才能用上这颗eeprom里面的校准数据。前摄是ov5670。幸运的是我找到了后摄像头在安卓用户层的驱动(就vendor里面的动态链接库)的源码,应该需要稍微亿些些研究才能够跑通吧。

ov8865源码

eeprom源码

另外的一些尝试

​ 基于lk2nd的引导方法还是太过固定和死板了,还是安卓的那一套,采用boot.img的方法来加载内核使得内核的更新不是那么的通用(相较于其他单板电脑来说)。所以,一种新的引导方式的存在便极为重要了,也可使从sd卡引导系统和更为通用和统一的文件系统构建方法成为可能。

基于kexec的bootloader

​ 安卓的boot分区的设计初衷就是需要有一个被上一级bootloader加载的内核和ramdisk。而从2.x的linux内核开始linux就引入了kexec功能,使得一个linux内核可以引导另一个linux内核进行启动。若使用一个带kexec的内核和携带相应用户层工具的ramdisk便可以从任何分区引导任何合法的内核镜像,让多系统共存成为可能。但是单纯的从上一级原厂lk bootloader里传来的内核参数也许对于主线内核来说还是少了些东西,还是要让lk2nd把正确的参数传给这个主线内核,但是这个启动的过程就变得更加复杂了,好处就是比较好实现~

前面的一大批初始化程序 --> lk --> lk2nd --> kexec --> 目标内核
开启simple-framebuffer

​ 高通在主线的drm十分的奇怪,不能编译成内建的模块也就是选项,否则这个模块就会加载失败,还有就是不能在wifi不工作的情况下运行,wifi必须在正常加载firmware并运行的情况下drm才能正常运行,还有就是所有的panel和drm模块加载的顺序是确定的,panel与drm加载的顺序不对也是没有显示的。(来自postmarket os wiki)

​ 所以若是要在空间有限的情况下完成显示,使用drm是不太现实的,最好的情况是使用来自bootloader初始化好的framebuffer,经过多次尝试,对红米2的设备树修改如下。使用的是dragonPi项目中我移植msm8916-mainline项目的一部分特性的5.10内核。

	reserved-memory {
		/delete-node/ wcnss@89300000;
		/delete-node/ venus@89900000;
	// 让内核不要动framebuffer的内存
	+ framebuffer@83000000 {
	+   	reg = <0x0 0x83000000 0x0 0x1400000>;
	+   	no-map;
	+ };

		mpss_mem: gps_mem: mpss@86800000 {
			status = "disabled";
			reg = <0x0 0x86800000 0x0 0x5100000>;
			no-map;
		};

		wcnss_mem: wcnss@8b900000 {
			reg = <0x0 0x8b900000 0x0 0x600000>;
			no-map;
		};

		venus_mem: venus@8bf00000 {
			reg = <0x0 0x8bf00000 0x0 0x600000>;
			no-map;
		};
	};
	
// chosen 加入以下内容	
	chosen {
		stdout-path = "serial0";
		
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		framebuffer0: framebuffer@83200000 {
			status = "okay";
			compatible = "simple-framebuffer";
			reg = <0x0 0x83200000 0x0 (720 * 1280 * 3)>;
			width = <720>;
			height = <1280>;
			stride = <(720 * 3)>;
			format = "r8g8b8";
			power-domains = <&gcc MDSS_GDSC>;
			// 不要让系统重新初始化这些时钟
			clocks = <&gcc GCC_MDSS_AHB_CLK>,
				 <&gcc GCC_MDSS_VSYNC_CLK>,
				 <&gcc GCC_MDSS_AXI_CLK>,
				 <&gcc GCC_MDSS_MDP_CLK>,
				 <&gcc GCC_MDSS_BYTE0_CLK>,
				 <&gcc GCC_MDSS_PCLK0_CLK>,
				 <&gcc GCC_MDSS_ESC0_CLK>;
		};

	};
	// 弄掉高通的mipi驱动和gpu驱动 把mdss和gpu有关的节点都设为disabled

至此,我们的bootloader便可以丢掉一大波多余的内核模块了~

魔改jumpdriver

​ jumpdriver是postmarketos社区和danct12大佬弄出来的一个给pinephone刷机的小型linux系统,仅仅只带了一个busybox,用于把内置的emmc挂载成电脑u盘。buildroot对于这种简单用途来说显然是太肥了,所以我魔改了jumpdriver,让它能够在msm8916的机器上运行,带有kexec-tools和kexecboot等必要的软件,作为kexec bootloader的主体部分,执行例如扫描硬盘和开始kexec的操作。(kexec-tools暂时还用不了libz,所以还不支持以gz压缩的内核镜像)

DragonRoot

修改kexecboot

​ kexecboot是一个很老的项目,不太著名的项目maemo leste的driod4移植就是使用的kexecboot,这个应用程序能够自动挂载各种格式的分区然后在分区里面寻找包含引导项的配置文件,再通过配置文件作为kexec的参数执行kexec引导新的内核。

​ 但是在archlinux gcc版本升级到了11,引入了一些稀奇古怪的特性,比如说不能在多个c文件里声明同一个名字的公有变量,这使得kexecboot在arch里面编译不过去了。稍微修了一波,可以完美编译了,我也尝试着向kexecboot项目pull request了,但是估计是我太菜这个pull request一直就没接受~~

​ 如有需要的话可以使用我的fork

能运行,但没完全运行~
kexecboot

kexec-hardboot ?

​ 捣鼓出来能够boot到kexecboot阶段的bootloader以后,它能够正确挂载sd卡和emmc,正确加载里面的文件,但是没有办法引导新的内核,主要是由于kexec没有办法重置cpu核心,内核一直都在报cpus are stuck in the kernel的错误。看了下相关的代码这也许是由于缺少psci功能的trustzone firmware导致的,试着把dragonboard 410c的trustzone刷到红米2里面,结果红米2的分区太小刷不进去。只能去寻找另一个方法 kexec-hardboot。

Kexec-hardboot patch adds a real device restart to that process, so that all the drivers can be properly reinitialized. It stores new kernel to RAM, reboots the device as usual, and kernel from boot partition immediately jumps to the one which was stored to RAM before reboot.

​ 这个办法是在nexus5时代著名的MultiROM所采用的,它在整个kexec过程中加入了重启,确保整个硬件在新内核中能够正确的被初始化,看了下红米2早就有MultiRom支持了,这个要对主线内核和kexec-tools做一些修改,限于时间问题也只能作罢。

U-boot 支持

如果想实现像传统arm linux的那种引导方式又不想在整个引导环境中引入更多的环节,也可以使用u-boot来代替lk2nd的工作。一个印度老哥做了一个移植,试了一下用串口可以正常操作uboot终端,但是屏幕是不工作的,而且在archlinux上编译的u-boot启动不了。这个移植现在可以正确的为主线内核配置mac地址,但是好像不能给主线内核传电池配置和mipi panel相关的参数,有时间我在修一下这个方案,感觉比kexecboot的那个更麻烦一点。
U-boot-wt88047项目

效果展示

看B站
流畅能看

mesa的3d测试
mesa
python+opencv+usb摄像头测试
opencv
支持自动翻转屏幕
横屏

搜狗输入法(工作不正常而且会破坏屏幕键盘的一些功能)
搜狗

关于DragonPi项目

​ 为了探索高通骁龙手机的主线内核类似树莓派的玩法,我创建了DragonPi项目。未来主要会放出一些linux发行版的构建系统源码(buildroot、armbian)和一些bootloader实现还有内核源码,目前的计划是专心做好红米2的主线方案,跑通尽可能多的外设,为大家带来便宜又好玩的硬件,觉得我这个项目对你有所帮助的话,你也可以资助我们的项目,让它变得更好!

DragonPi项目

刷机包下载

Qualcomm msm8916 MIPI to RGB 调试 简介 屏的接口种类非常多,常见的包括 RGB、HDMI、VGA、LVDS、EDP、MIPI等接口。 其中,在 Android 移动设备上,大多采用的是MIPI接口。 某些时候,由于某种需求,需要将 Android 设备上的 MIPI 数据显示到其他接口的屏上,此时,则需要利用相关转换芯片将 MIPI 接口的数据转换成其他接口的数据。 在 msm8916 上有过这样的需求:将 MIPI 数据转换成... 阅读详情

相关推荐

高通开发系列 - linux kernel内核升级msm-3.xx升至msm-4.xx(1)

高通开发系列 - linux kernel更新msm-3.18升至msm-4.9

fulinux的博客 2984

骁龙865和骁龙765g哪个好

骁龙765G基本数据制作工艺:7NM EUV技术 架构方面:kry475架构,最高主频为2.4GHzGPU:Adreno620 我用的手机就是活动时8折抢购的 点击开抢 https://shouji.jd.com 这是一款全新的5G集成芯片,在手机的制作工艺上采用最新的7nm euv技术,采用和骁龙855处理器相同的架构kry475,处理器的主频方面最高可达2.4GHz,GPU为Adreno620。在手机的网络方面,支持SA和NSA双模组网。理论上下载速度可达3.710Gbps,上传速度可达1.6Gbps。

m0_51392343的博客 1952

OPPO A37(MSM8916方案)原厂原理图及维修指南

本文还有配套的精品资源,点击获取 简介:本文深入解析了OPPO A37(MSM8916方案)原厂原理图维修图,旨在帮助读者理解手机的工作原理并提供维修指导。文章详细解读了骁龙410处理器的性能特点,PCB布局图中的元件位置和走线路径,以及电源管理系统的设计细节。同时,通信模块、显示驱动、触摸屏控制器和音频处理等关键部分的原理图也被详细分析。维修人员可以依据这些原理图快速定位...

weixin_42497762的博客 1999

4G全网通模块 高通骁龙410系列-MSM8916(M9+) Cortex-A53架构

核心板特性 产品尺寸小,便于客户集成,减少产品体积; 支持4G LTE超高速上网,单板兼容移动/联通/电信2G/3G/4G; 多达21个接口,丰富的接口配置,满足大多数客户需求...

counai4985的博客 1231

C51:PWM+舵机角度控制

PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%.脉冲宽度调制通过占空比编码模拟信号一个周期内,高电平占据时长的百分比如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制。

qq_73379310的博客 3388

智能车竞赛新手必看:用AD21从零画一块英飞凌TC264核心板(附开源PCB文件)

本文详细介绍了使用Altium Designer 21(AD21)从零开始设计英飞凌TC264核心板的完整流程,涵盖原理图绘制、PCB布线到最终DRC检查的全过程。针对智能车竞赛新手,提供了实用的硬件设计技巧和开源PCB文件,帮助快速掌握TC264核心板开发。

weixin_27017211的博客 246

自己DIY一个pinephone——debian与主线linux在红米2(msm8916)上的移植

这里有个标题会比较厉害 pine64出品了一个基于全志a64的soc全开源手机,搜了下某宝竟然要接近2000大洋,即使几年前的高通的处理器的性能都可以完爆全志了,搞一个可以运行“正常”linux的高通手机应该还是蛮有意思的。 目前以主线linux为主的比较大规模的linux移动发行版就只有postmarketos,做的真的还可以,用python写的部署工具(pmbootstrap)能够做到一个工具构建文件系统和烧录,但是postmarketos基于的发行版Alpine Linux的软件包都是用musl的c库

HandsomeHacker的博客 1万+

学Simulink——十二脉波整流电路(移相变压器)谐波抵消仿真

Y:Δ = 1:√3(若 DC 同压)— 此处同相电压故 220V(Y)=220V(Δ phase)Y(相电压=220V)、Δ(线电压=380V ⇒ 相=220V,30° 移相)可经 Lbal​=0.5mH(平衡电抗)或直接短(大 L_dc 下均流尚可)✅ 直流输出纹波频率 = 12·f_line(vs 6·f_line)直流输出 → Ldc​=50mH→Cdc​=2200µF→R=30Ω。Line‑Line RMS = 380 V(⇒ 相=220V)Vdc​≈1.35⋅380≈513V(同 6‑脉波)

xiaoheshang_123的博客 59

安卓4.4.4修改设备树教程(以MSM 8916为例)

把新生成的dtb文件替换掉第2步解包出来的unpack文件夹中对应的dtb文件,将替换后的unpack文件夹复制到dtbToolCM文件夹中,其中的output文件夹删掉,执行以下代码进行打包。把新生成的boot.img-dtb替换掉第1步解包出来的unpack文件夹中的boot.img-dtb,并将unpack文件夹复制到mkbootimg所在文件夹,执行以下代码进行打包。反编译会报出大量警告,出来的dts存放在output文件夹中,使用你趁手的文本编辑器打开即可修改。(数量不固定,以实际情况为准)

挂神的博客 6449

【系统移植】 移植主线U-Boot(v2024.01-rc3)到RK3399

[系统移植] 移植主线U-Boot(v2024.01-rc3)到RK3399

Systemcall名屋 1003

MATLAB点云处理(八):为点云添加高斯噪声

本文对如何借助MATLAB,为点云添加高斯噪声做出了说明,并给出实现代码。

孙悟空 2844

随身WIFI折腾日记(一)---霓虹灯

通过对高通410芯片的随身WIFI刷写Debain系统,我们已经拥有了一台带4G功能的迷你ARM64单板电脑。现在我们可以基于此此平台进行一下二次开发。因为此项目基于随身WIFI的优势就是价格低廉,性能和树莓派zero2、树莓派3b差不多。硬件配置如下:外设的io定义如下:我主要是想通过点亮LED灯学习一下Linux如何控制底层硬件设备。随身WIFI存在三个led灯,openstick作者设置默认blue表示wifi连接状态,red表示系统是否还处于正常运行状态。可以通过 echo > /sys/

weixin_41099712的博客 5976

从原理到落地:Mamba-YOLOv8 全面实战指南(源码 + 训练 + 部署一次学会)

在目标检测领域,CNN与Transformer的较量从未停歇。本文提出一种革命性的架构——,将状态空间模型(SSM)首次引入YOLO框架。实验表明,该模型在COCO数据集上达到54.3% mAP@0.5,推理速度达89 FPS(RTX 4090),相比原版YOLOv8提升12.7%精度与23%速度。本文将完整揭示其技术原理与工程实现,助您掌握这一前沿技术。

FJN110的博客 119

高通MSM8916芯片数据参考

高通MSM8916芯片数据参考 今天分享高通MSM8*16芯片的资料,本次有的资料是原理图,工作原理,设计指南,等多个压缩包的资料,满足您的开发需求,闯客网技术论坛关于高通的其他芯片资料还有很多,欢迎下载交流:613377058,以下是MSM8X16的简介和些许特点,想要更完整的资料可以在这里获取:https://bbs.usoftchina.com/thread-198974-1-1.h...

uuzz8888的博客 1万+

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box

内部函数方式获取工序包容盒(最低点和最高点)PTHDSP_ask_box。

成长需要沉淀。 397

使用 MATLAB/Simulink + Communications Toolbox + 5G Toolbox,构建一个2×2 MIMO-OFDM通信系统

本文通过Simulink+CommunicationsToolbox构建2×2 MIMO-OFDM通信系统,重点实现信道均衡滤波器(ZF与MMSE)的设计与应用。详细介绍了系统架构、建模步骤(包括信道估计、均衡器实现)和仿真场景设计,通过BER、星座图和EVM对比分析验证了MMSE均衡器在抑制噪声和信号恢复方面的优势。文章总结了MIMO均衡的核心原理与实践经验,并提出了扩展至大规模MIMO、深度学习均衡器等优化方向,为无线通信系统设计提供实用指导。

amy_mhd的博客 125

msm8916 MDP(mobile display processor) 简介

硬件上面,Msm8916只有一个mipi-dsi接口用于连接LCM,由MDP(mobile display processor)进行管理,大概硬件结构图如下: mdp提供图片格式转换,旋转,overlay(overlay技术)等功能,dsi提供传输数据。 注意:overlay主要为了满足多界面叠加的需求,可理解为pipe,MDP支持3个overlay pipe。

Eliot_shao的专栏 6250

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

高通 MSM 8916与MSM8926芯片的区别

高通8916与8926芯片的区别 8916是a53四核 gpu是306 支持1300像素 1080p全高清录像 64位 导航支持GLONASS、北斗8926是a7核心 gpu是305 支持800像素 720p全高清录像 32位共同点:持 LTE Cat.4(FDD/TDD) 网络,传输速率最高 150Mbps。 还支持 WiFi 802.11ac,蓝牙、FM、NFC等功能,支持 ...

aidunjie9205的博客 3171

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

高通骁龙MSM8916核心板 ARM Cortex-A53 四核 中文资料

技术支持:③②⑦②②③⑨零⑤零

graperain_cn的博客 8394

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

我的4g网卡运行着GNU/Linux -- 某4g无线网卡的逆向工程与主线Linux移植 (一)

最近,某鱼和某宝上开始出现一些基于高通处理器的4g无线网卡,有一些网卡采用的方案也就是我之前折腾过的红米2的主控msm8916。如果能够在这些无线网卡上跑起主线linux,这应该是世界上最便宜的arm64单板电脑了。但是这些板子的源码基本上就是个黑盒,把所有的功能都驱动起来可能有点麻烦。 First Look (板子图) 收到货首先就是把主板拆出来,可以看见主板上已经预留好串口和一些调试用的测试点,而且每一个点上都有标注这个点的功能,这让我的工作减轻了不少。在主板的背面还有一个按钮,没有标注任何文字,按着上

HandsomeHacker的博客 1万+

高通msm8916 LK阶段配置使用i2c5

背景: 在调试SLM753某客户项目LCM时,客户使用LVDS的LCM,而msm8916只有一个mipi的接口,所以就是用到了mipi-2-lvds转换芯片:icn6202。这颗芯片需要使用I2C进行配置LVDS屏的时钟和分辨率等信息,以至于LVDS屏可以正常显示。Kernel阶段i2c比较容易使用,只需在dts中配置一个i2c设备即可以使用对应的i2c接口进行数据传输,但是LK阶段的代码就显得

Eliot_shao的专栏 6025

随身wifi整体捣鼓总结|救砖|高通410|MSM8916|日志档 2024/5/22

随身wifi整体捣鼓总结,救砖,高通410,MSM8916,日志档。

梦境虽美,却不长. 3980

红米2 mobian(debian12)

具体参照大佬帖子:https://blog.youkuaiyun.com/github_38345754/article/details/119808446。系统链接:https://cloud.189.cn/t/FneAjmV7NzU3(访问码:1ncs)已知完美的屏幕有 mdss_dsi_nt35521_720p_video 不会闪屏和残影。某些红米2的屏幕驱动暂时不能正确处理屏幕休眠,休眠唤醒之后可能会有轻微的残影或者闪屏现象。果你的手机在插卡之后检测到卡但是没有信号,则你的手机型号是wt86047。

m0_67739052的博客 2197

随身WiFi刷Debian系统折腾指南

骁龙410随身WiFi刷Debian系统折腾指南,操作笔记,必坑指南。UFI001C_MB_V1.0

molun1101 5万+

[Linux] 红米2 安装 postmarketOS(基于 Alpine Linux)及后续玩法

本来笔者想买一个Armbian的斐讯N1盒子来运行一些docker容器,但是突然想到有一部闲置的红米2,于是乎便寻找方法看看能否将其刷入Linux解锁更多玩法。红米2增强版拥有2G RAM和 16G ROM 和晓龙410处理器,作为手机早已过时,但是作为一台ARM服务器则绰绰有余。 关机情况下,电源键+音量减进入fastboot模式,因为红米2 发行的年代尚且不流行BL锁,所以无需考虑解锁问题。固件下载地址:https://www.androidfilehost.com/?w=files&flid=3034

Franklins_Fan的博客 1万+
上一篇: 全志主线内核lradc 按键的一种调试方法
下一篇: Halium 9 尝鲜 -- 在小米平板4上的移植 (七)
HandsomeHacker
博客等级 码龄10年 345粉丝 22原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值