为什么 arm 架构的设备需要各种适配?

2020-12-03 21:57:30 +08:00
 wszgrcy

对于一个普通的电脑用户,我对 cpu 的理解基本上就处在他就是一个用于计算的……

cpu 从赛扬换成酷睿(同主板),直接开机就 ok,哪怕是换主板了,把原来硬盘换上去,也可以开机(当然,并不是 100%…)

但是到了 arm 这里,不说手机,因为不同的驱动太多,没法照顾。

一些开发板,或者机顶盒,比如 s905 到 s912 固件就不通用,甚至不同厂商同一处理器也不行,又或者 rk3288 rk3399 他们的固件也并不对等的……

不知道为什么会这样?我想程序员应该不是会偷懒把固件写死型号把……那么造成这个问题的是什么?

4727 次点击
所在节点    硬件
27 条回复
billlee
2020-12-04 01:40:53 +08:00
1. 板级固件以标准化的 ACPI 接口提供了诸如内存的物理地址在哪里,插了那些 PCIe 设备等信息
2. I/O 控制器的接口很多也是标准化的,如硬盘控制器都是 AHCI/NVMe, 显卡都兼容 VESA, 键盘鼠标都是 PS/2 或 HID
3. bootloader 的接口也是标准化的,操作系统把自己的启动代码写到 EFI 分区 /MBR 就可以了
nguoidiqua
2020-12-04 02:01:56 +08:00
arm 一般是用在低功耗且集成很多外围组件且硬件资源比较紧缺的设备上,且设备之间差异比较大,都有各自鲜明的定位。

像手机的传感器比一台 PC 兼容机多多了,而且手机很多东西本身就是专门定制和别人不兼容的,谷歌发布系统的时候怎么能知道下游会搞出什么新硬件呢。

而且由于低功耗和资源紧张的原因,开发商自己弄个集成一大堆用不上的驱动的系统不但浪费自己时间也会浪费用户的时间和硬件资源,甚至增加额外的问题。实际上有些 arm 设备倒有通用刷机包,那些一般都是换壳产品,硬件差异极小。
singerll
2020-12-04 06:34:55 +08:00
@wszgrcy #13 不是只有网卡显卡才需要驱动,存储,内存,陀螺仪,相机,等等,甚至一个二极管都需要驱动,win 即插即用是因为都实现了 pcie,usb 这类通用接口,但大部分也需要安装厂家自己的驱动。
julyclyde
2020-12-04 11:18:51 +08:00
各芯片之间的连接关系,在 x86 世界都是统一的
嵌入式世界你可以随便接,然后就需要在软件层面也写成和硬件连接关系对应的

这个东西叫 device tree bindings
maemolee
2020-12-04 15:58:48 +08:00
@julyclyde 没想到,bindings 这个词语,竟然是一个 base64 转码后的结果,非常巧合

https://pic.railgun.tech/uPic/2020-12-04-rOz3cV.png
xz410236056
2020-12-04 18:03:02 +08:00
因为 ARM 是 RISC 啊,X86 是 CISC 。没有指令怎么用?
Cu635
2020-12-28 11:41:44 +08:00
@xz410236056
跟这个没啥关系……
现在 RISC 和 CISC 也是在相互杂交,并不是原教旨主义的了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/731911

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX