为嘛嵌入式设备不学 PC 的 BIOS 搞个独立芯片固化刷机程序?

2015-01-07 22:29:44 +08:00
 aiwha
手机、平板、路由器之类的嵌入式设备,都是将一个闪存设备按物理偏移地址分为不同的功能区域,甚至连wifi硬件地址和imei之类的也存储其上,经常导致一不小心就刷成砖或丢失硬件数据!

我就奇怪了,为何不单独搞块存储器来固化刷机程序和硬件重要数据呢?这样的话,系统加电启动时从主存贮器引导,按某功能键加电启动时就从刷机程序启动,无论用户如何乱刷也不会成砖。刷机程序应该尽量简单,识别特定文件系统并读取固件,dd到主存贮器上即可。
3841 次点击
所在节点    奇思妙想
26 条回复
aiwha
2015-01-07 22:33:21 +08:00
这究竟是不可为还是厂家故意的?貌似这类设备的厂家都不喜欢用户自己刷固件。
wy315700
2015-01-07 22:44:21 +08:00
系统启动的时候读取的内容的确是固化的,固化在rom里,而一般rom是封装在CPU里的。


BL0(1st boot loader)是固化在内部ROM上电就执行的一小段程序。BL0从系统指定的外部存储器件(NAND、SD/MMC、OneNAND与USB)中加载第二个引导程序BL1到内部RAM,同时对BL1进行安全检验。
billlee
2015-01-07 22:50:44 +08:00
加块 ROM 体积要增大好多,PCB 也复杂好多,可靠性会降低,成本上升,嵌入式设备无法接受啊
EPr2hh6LADQWqRVH
2015-01-07 22:54:29 +08:00
不要中二了,你以为手机平板路由器之类的设备做出来就是给用户刷flash芯片用的?

给用户刷flash用的那个叫闪存编程器
11
2015-01-07 22:55:02 +08:00
成本考虑,稳定性考虑,都是问题。。为什么51单片机现在还有人用?其中一个原因就是因为稳定,经得住考验
nicai000
2015-01-07 22:55:19 +08:00
你说的这个, 在嵌入式开发中太常见了遍地都是...

所谓一不小心刷成砖, 要么是操作不当, 要么是那设备根本就没给你"刷机"做优化.
dacapoday
2015-01-07 22:56:36 +08:00
外围设备不是pc这样标准化的,是要自己弄的,而且soc里有rom,eerom 甚至有固化的驱动程序库,没必要再弄个外置的
aiwha
2015-01-07 23:00:19 +08:00
@avastms 不要理解错了,我知道厂商要维护自己的利益最大化。我只是想探讨一下这一硬件方案的可行性,广东山寨电子厂多,正规厂商不做,山寨厂可做出来呀,只卖硬件,软件让用户自己折腾。。。。
aiwha
2015-01-07 23:04:09 +08:00
@wy315700 这个很专业!那就是两个存储芯片上都有BL1,引导哪个让BL0根据加电时的功能键状态来选择。
aiwha
2015-01-07 23:12:28 +08:00
@dacapoday 唉,也是,嵌入式设备太不标准化了!说句阴谋论,这类设备一箭双雕,既给厂商的利益最大化带来了保证(流氓软件),又给暴力机器提供了很好的信息收集渠道。标准化的PC可难控制多了,用户装个稀罕的系统的话,再流氓的软件也没奈何。。。。
aiwha
2015-01-07 23:15:28 +08:00
@nicai000 你说的是开发板?
wy315700
2015-01-07 23:20:04 +08:00
@aiwha 就是因为PC是标准化的,利润又不高,所以发明PC的那个公司把PC卖掉了。
ooxxcc
2015-01-07 23:21:00 +08:00
成本啊

然后谁家路由器是专门为了用户刷机设计的……
wwqgtxx
2015-01-08 00:03:41 +08:00
加一个rom不要钱呀…
芯片要钱
电路要钱
烧写芯片要钱
干啥花这些冤枉钱?
nicai000
2015-01-08 00:11:47 +08:00
@aiwha 不是, 成品中这种设计也常见, Android的recovery不就是这样么, 平时启动到系统, 按某个键的话启动到recovery识别rom刷系统... 当然加锁有证书之类本来就不想让你刷的另说
lightening
2015-01-08 00:15:46 +08:00
现在这些手机空间这么紧张,连内存芯片都放不下了,哪有空专门搞个偶尔才会用到的芯片?

现在一般 android 刷机是刷不坏的,只有你刷 recovery 才会刷坏。就算有两块芯片,也防不了你去刷那个引导用的芯片啊!
zhujinliang
2015-01-08 00:30:41 +08:00
PC的BIOS是CPU可以直接读取到的,硬盘不是,需要较复杂的驱动程序。
嵌入式中存储器是CPU可以直接读取的,而且一般不需要大容量需要驱动程序的存储器。

地址分区的模式足够好用了,用户刷机不属于开发者要考虑的情况。
就算有BIOS,也保不齐有手欠的刷BIOS。

openwrt路由器,如果是SPI Flash,就是那个8脚芯片的,可以自己改双芯片,用EN脚选择启用哪个Flash,刷坏一个可以用另一个启动再强行刷。
loveminds
2015-01-08 04:31:32 +08:00
360那玩意就是 双芯片
aiwha
2015-01-08 08:41:25 +08:00
@zhujinliang 嗯,又一个专业的回复!我其实对电子不熟,但又喜欢折腾软件,电烙铁都没玩过,自己改难度大了点,真有这能耐,我就不需要这个了,搞成砖了直接上编程器。。。
aiwha
2015-01-08 08:43:28 +08:00
@loveminds 那个好像己经下市了吧?

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

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

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

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

© 2021 V2EX