文章10
标签6
分类2

骁龙845吃上Windows on ARM后

背景资料

何为骁龙845(Snapdragon 845/850, Refer Wikipedia):

2017年5月5日,高通官网公布新处理器的命名方案SDM845,为首个采用ARMv8.2指令集的Cortex-A75和A55修改后的Kryo 385 Gold / Silver 核心的CPU的骁龙800系列的系统单片机,CPU部分特别新增了三级缓存,搭配的存储器也多了系统缓存。Geekbench4跑分的部分,单核部分约2500分,多核部分为8500分。

2018年6月,高通于台北国际电脑展览会发表骁龙850,为设计给Windows系统的笔记本电脑处理器,规格大致上为845的高频版本。比起之前采用高通骁龙835处理器的Windows系统笔记本电脑有不少的性能提升。骁龙850相较于手机的骁龙845运算速度再快上30%,且使用时间将高达25小时,人工智能性能同时也成长三倍,最高支持网络将达到1.2 Gbps,将为准5G连网速度。骁龙850移动平台可以让用户体验更轻薄、携带便利的无散热风扇设计。同时骁龙850芯片可支持设备内置的AI体验,而用户能体验到相机、语音、电池续航力等方面的提升。高通本次携手微软Windows 10打造的骁龙850芯片,也可支持微软人工智能语音助理Cortana。

何为 Windows on ARM Refer Wikipedia

2016年12月7日,微软在中国深圳的Windows硬件工程大会上宣布与移动技术公司高通开展合作。微软宣布其在ARM架构设备上使用虚拟机运行Win32应用程序的计划。进行展示的特里·迈尔森在演讲中提到,这一项目将提高基于骁龙处理器的Windows移动设备的生产力,使其能直接运行大多数既有的Windows应用程序,同时这些设备的无线连接、能源消耗方面相比搭载英特尔硬件的设备更优。

2017年12月,微软与高通正式发布了Windows 10 on ARM以及搭载Snapdragon 835处理器"Always Connected PC"系列的电脑产品。

2018年5月,微软发布了Windows 10 on ARM的操作系统对程序集的支持情况以及目前存在问题的帮助:

2020年,受到苹果电脑M1处理器Mac Mini影响开发仿64位版本已经可以运行64位的程序。

1.硬件驱动仅支持针对ARM64平台编写的驱动程序。
2.针对虚拟机运行的Win32应用程序仅支持仿32位版本,2020年受到苹果电脑M1处理器影响开发仿64位版本已经可以运行64位的程序。
3.使用OpenGL1.1之后的游戏或程序,以及部分使用DRM/反作弊系统的游戏或程序不能运行。
4.输入法、系统辅助软件、以及云存储应用程序可能不能正常工作。
5.不支持针对移动设备开发的APP。(如Windows Phone/Windows Mobile应用)
6.不支持Hyper-V虚拟机。

可行性研究

由上述背景资料可知,骁龙850规格大致上为845的高频版本,且市面上早已有骁龙850的量产机。因此,驱动和ACPI问题我们可以照葫芦画瓢来解决。另外,由于其他SoC没有这种得天独厚的条件(仍有部分7系SoC有类似条件),运行Windows的可行性并不大,但仍可以尝试运行mainline kernel。

事实上,项目 Renegade Project 就致力于完善UEFI和WOA的驱动适配。该post也着重讲这个有趣的项目。
目前该项目主要适配了机型:

OnePlus 6 (enchilada)
OnePlus 6T (fajita)
Xiaomi MIX 3 (perseus)
Xiaomi PocoPhone F1 (beryllium)
Meizu 16th (m1882)
Meizu 16th Plus (m1892)
Smartisan R1 (trident)
BlackShark One (skr-a0)
OPPO Find X (pafm00)
Xiaomi MIX 2S (polaris)
LG G7 (judyln)
Samsung Galaxy S9+ (star2qltechn)
Xiaomi MI 7 (dipper-old)
Xiaomi MI 8 (dipper)
Nubia X (nx616j)
Nokia9 PureView (olympic)
ASUS ZenFone 5Z (draco)
Vivo NEX Dual Display (pd1821)


成果展示

我是在设备Oneplus 6T上运行WOA的,目前一加系与小米系支持相对完善,均支持GPU和蜂窝数据流量的使用,且Synaptics机型触控已进行适配。

首先我针对散热系统进行了改良,选用了主流的半导体制冷片方案,顺便还能作为支架一用。oneplus6T

我的其他工作:驱动签名(时间戳不受信任,合并注册表方可使用):https://github.com/xqymain/WOA-Drivers-signed

进入系统:LoadingTaskmgr

一切就绪后,进行了 DiskMark、Geekbench 和 Cinebench R20的测试,其中Cinebench运行在x86模拟环境下,结果如下:DiskMarkCinbenchR20

此外,日常的使用场景也基本能满足:
WebPageMusicPhotoshopPowerpoint

使用指南

大部分主流软件对WOA的支持不佳。下面列举一些原生支持ARM64的软件:7-zip、Bandizip、Putty、VS Code、MS Office(64位预览版支持较好)、Firefox、VLC。更详细的清单参见这个表格(已废弃)。

关于指令集的支持部分,Windows 11(22000.120)下可以模拟至SSE3。AVX指令集已实测无法调用,其他指令集并没有一一测试。日常使用并没有很大问题。AVXTEST

关于运行和开发环境,目前已测试Native WSL1、Python3.x、Go1.7、OpenJDK16、17和转译 VS2022rc、转译VC++2005-2019运行库,支持情况良好。

[4]:
https://tva4.sinaimg.cn/large/eb164320gy1h4fzr5zo4zj23wh2eou0x.jpg

RoboMaster 往事回忆

背景资料 Refer Wikipedia

机甲大师(RoboMaster)是由大疆创新(DJI)的创始人汪滔发起并承办、由共青团中央、全国学联、深圳市人民政府联合主办的年度机器人竞技赛事,为全国大学生机器人大赛旗下的四大赛事之一,并且是全球首个射击对抗类的机器人比赛。其在2015年诞生伊始就凭借其颠覆传统的机器人比赛方式、震撼人心的视听冲击力、激烈硬朗的竞技风格,吸引到数百所高等院校、近千家高新科技企业以及数以万计的科技爱好者的深度关注。除了大赛本身,还有机器人相关的夏令营、俱乐部、机器人课程等科技项目,旨在为科技爱好者提供一个全方位的平台来实现他们的机器人学理想。

P.S. 当然,限于学业与将来的发展,未来与 RoboMaster 或许并没有多少交集。但还是十分感谢朋友Artrix,没有他就不会有我的这次经历,希望他在大学一切都好;十分感谢2018年的高中生夏令营,让我切身体会到了“人外有人,天外有天”;也十分感谢当年与我同行的队友,当时我能力的不足极大拖累了项目的进程。


简洁叙事

你能想象一百多名高中生聚在一起,以机器人为主题来一场夏令营吗?在真正体验过之前,我也难以置信。
事情要从多年前的那个夏天说起……当时我初二,年少轻狂,以全栈自居,凭借过家家的功底侥幸通过筛选和面试。

第一个挑战,陌生的环境。不仅仅是深圳二高这样一个陌生的居住、研发环境,更包括完全陌生的Keil开发环境、嵌入式中我仅仅闻名的技术、全新的团队协作模式。二十多天的时间,在适应这些环境的同时,完成最终的任务,是极为考验自学能力和领导能力的。在这个过程中,我们队也发生了一些摩擦。与First系列的比赛不同,经过RM挑选敲定的成员不说是精英,在各自的圈子里至少也是有一定影响力的,面对一些决策不可避免会发生冲突。

第二个挑战,难度的提高。总的来说,难度来自两个方面:
1.我首次参与完成类似的项目(之前的项目,多少可以用“能用就行”来打发一下)。决赛的难度并不在视觉或者自动化方面,而在于设计一个可以稳定夹取的机械结构,而我并没有设计机械结构的经验,并没能帮上什么忙。
2.决赛和FRC类似的条条框框。

第三个挑战,语言的缺陷。当然这主要是我的问题,对比赛的影响也不算大。当时我的英语水平并不算高,尤其是相比年级更高、学习条件更好的其他人而言。不过虽然香港科技大学的课程和卡耐基梅隆大学的推介会是“听君一席话,胜听半席话”,DJI的中文课程还是听得很愉快的。

资料整理

开源资料:Github_Eastflow
图片资料:算是我做的不多的工作吧,虽然最后并没有落地使用Vision_Test
最后的成车,效果还不错(但是夹取部分还是出现了一些问题,很可惜)Machine
视频资料:Bilibili_Group 0x02
技术报告:Report

使用说明:以上资料仅供学习参考,以公开换取保护,所有权利归制作人员和大疆创新,未经授权禁止各种用途!


尾声

感谢当年陪伴在我身边的人。She