V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
aiwha
V2EX  ›  奇思妙想

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

  •  
  •   aiwha · 2015-01-07 22:29:44 +08:00 via Android · 3746 次点击
    这是一个创建于 3404 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手机、平板、路由器之类的嵌入式设备,都是将一个闪存设备按物理偏移地址分为不同的功能区域,甚至连wifi硬件地址和imei之类的也存储其上,经常导致一不小心就刷成砖或丢失硬件数据!

    我就奇怪了,为何不单独搞块存储器来固化刷机程序和硬件重要数据呢?这样的话,系统加电启动时从主存贮器引导,按某功能键加电启动时就从刷机程序启动,无论用户如何乱刷也不会成砖。刷机程序应该尽量简单,识别特定文件系统并读取固件,dd到主存贮器上即可。
    26 条回复    2015-01-11 15:38:19 +08:00
    aiwha
        1
    aiwha  
    OP
       2015-01-07 22:33:21 +08:00 via Android
    这究竟是不可为还是厂家故意的?貌似这类设备的厂家都不喜欢用户自己刷固件。
    wy315700
        2
    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
        3
    billlee  
       2015-01-07 22:50:44 +08:00
    加块 ROM 体积要增大好多,PCB 也复杂好多,可靠性会降低,成本上升,嵌入式设备无法接受啊
    EPr2hh6LADQWqRVH
        4
    EPr2hh6LADQWqRVH  
       2015-01-07 22:54:29 +08:00
    不要中二了,你以为手机平板路由器之类的设备做出来就是给用户刷flash芯片用的?

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

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

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

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

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

    openwrt路由器,如果是SPI Flash,就是那个8脚芯片的,可以自己改双芯片,用EN脚选择启用哪个Flash,刷坏一个可以用另一个启动再强行刷。
    loveminds
        18
    loveminds  
       2015-01-08 04:31:32 +08:00
    360那玩意就是 双芯片
    aiwha
        19
    aiwha  
    OP
       2015-01-08 08:41:25 +08:00 via Android
    @zhujinliang 嗯,又一个专业的回复!我其实对电子不熟,但又喜欢折腾软件,电烙铁都没玩过,自己改难度大了点,真有这能耐,我就不需要这个了,搞成砖了直接上编程器。。。
    aiwha
        20
    aiwha  
    OP
       2015-01-08 08:43:28 +08:00 via Android
    @loveminds 那个好像己经下市了吧?
    bugeye
        21
    bugeye  
       2015-01-08 10:08:50 +08:00
    1. 厂商本来就不想让用户刷,用户自己蠢,刷坏了,照样找厂商保修。一款产品如果保修率上升5%,基本就是亏本的。

    2. boot locker本来就可以实现你说的这些,不让用户刷关键的区,但用户非要解锁。不解锁还要闹。

    3. 你说的方案也解决不了你所谓的关键区不会被解锁用户刷掉的问题,就如同想把PC 上的bios刷死是非常简单的一件事一样。

    4. 增加一块芯片的想法肯定是电子学外行。我大二上电路实验的时候,老师第一句话就是,电子工程师的设计任务就是能省一个电阻,就省一个电阻,能省一个电容,就省一个电容。一个产品卖得多以后,这些节约下来的成本是百万,千万。电子工业在最近几十年的进步如果可以打100分的话,那么95分是因为集成(意味着元件越用越少)。
    0x61
        22
    0x61  
       2015-01-08 17:19:34 +08:00
    其中一个非常重要的原因是防止复制!
    aiwha
        23
    aiwha  
    OP
       2015-01-08 18:13:04 +08:00 via Android
    @bugeye 3、我所说的固化是指真正的不可刷写!为了节省成本,还可以集成到SoC中。

    4、正是因为过度cost-down,国产电子产品才这么容易损坏,尤其是电网不稳定的地方,如果电源、主板保护电路不省料,也不至于经常坏。。。。。以前用过一个中兴n880s,就因为手贱尝试修改data分区大小刷机,结果就成砖了,浪费呀。。。。
    Halry
        24
    Halry  
       2015-01-08 20:08:41 +08:00 via Android
    @lightening 刷bootloader才会刷坏,其他的不会
    lightening
        25
    lightening  
       2015-01-08 21:53:58 +08:00
    @aiwha 世界上哪有真正不可刷写的芯片,如果有,厂商如何写数据进去?本来厂商是有锁的,可是你们非要去解锁。
    loveminds
        26
    loveminds  
       2015-01-11 15:38:19 +08:00 via Android
    我想楼主想说的是类似某品牌主板的TwinBios
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1338 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 386ms · UTC 17:09 · PVG 01:09 · LAX 10:09 · JFK 13:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.