这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » =**=手机厂商是怎样往Flash里烧写程序的?=**=

共20条 2/2 1 2 跳转至
菜鸟
2006-10-13 18:15:00     打赏
11楼

对,是象NAND FLASH那种串行存取数据的存储器不能执行程序,我上面的说法是理论性的错误。


菜鸟
2006-10-14 08:38:00     打赏
12楼
[em17]

菜鸟
2006-10-17 00:31:00     打赏
13楼
以下是引用twentyone在2006-10-10 23:44:00的发言:

我来回答吧:

对一般的手机来说,用的CPU的芯片里都会有片上ROM,另外,还有外部存储FLASH芯片。ROM里面会有一个简单的程序,叫BOOTTRAP,FLASH里有另外一个程序叫BOOTLOADER. BOOTTRAP是上电首先执行的程序,这个程序提供最基本的功能,USB通信和FLASH烧写。HOST可以通过USB和BOOTTRAP交互,发送一定的命令,通过BOOTTRAP来烧写FLASH. BOOTTRAP一般是在出产的时候就固化在手机里面的,可以说是一百年不变。另外一个是BOOTLOADER,BOOTLOADER一般在FLASH里面,BOOTTRAP启动完毕后,会把控制交给BOOTLOADER,BOOTLOADER装载手机软件,然后把控制交给手机软件。BOOTLOADER还有另外的作用-用来升级手机软件。BOOTLOADER一般也不会轻易换。但如果发现BOOTLOADER有很严重的BUG的话,可以通过BOOTTRAP来升级BOOTLOADER.

基本上,就是这么一个结构。每个手机厂商,都会有自己专门的工具的。而且现在的手机厂商越来越重视安全性能,对所有软件都是要加密的,添加数字签名,防止手机软件被修改。



如果要破译手机里面的某些算法,需要怎样进行呢?


菜鸟
2006-10-31 21:29:00     打赏
14楼

一般说来pc可以通过usb hub扩展,hub连hub,然后hub上再接usb设备,这里就是手机,最多可以接127设备(至少usb1.1是这样)。每个usb设备接入后,系统会通过消息管道给这个usb设备分配一个地址,以区分其他usb设备。每个手机应该通过编程器烧入bootloader或者出厂时候就有,这个bootloader应该往pc发一个消息,告诉有usb设备插入,然后通过自己定义好的协议,和pc传输。估计pc端有个start all之类的,然后就将kernel和file system烧入手机中。


菜鸟
2006-11-29 18:11:00     打赏
15楼
现在很多手机都支持USB烧写的啊

菜鸟
2007-01-18 02:52:00     打赏
16楼

烧写好flash

直接焊接上去ok 3


菜鸟
2007-01-18 22:14:00     打赏
17楼

[em06]可以写,也叫做ROM,那是因为几个原因: ①不能像RAM那样快速的写.②可能需要特殊的擦写电压.③可能需要特殊的擦写时序.④可能需要在写之前进行擦除操作.⑤擦写次数有限,不像RAM那样可以随意写而不损坏.⑥掉电后数据不会丢失.⑦有些可写的存储器只能写一次(OTP)。

而现在有铁电存储器,习惯上叫做RAM,可以像RAM那样操作,但是掉电后像ROM一样数据还不丢失.

能够使用USB下载,那么必然在手机内部已经有一个BOOT LOADER了,它负责使用USB总线跟PC打交道.

USB之所以叫做总线而不叫做接口(当然,现在总线和接口越来越难分或者不分了),就是因为它可以在上面同时挂接多个不同的设备.

将多个手机连到HUB上,PC会分别识别到每个设备,并且分配不同的地址.而上位机可以遍历这些设备,将需要的程序下载给手机.只要做好了一个手机的下载部分,那么多个设备同时连接,就没有什么难度了,这个过程PC已经帮你做好了,会产生多个设备,就好比你同时插几块U盘到电脑中一样。

如楼上所说,USB协议上支持最多127个设备(因为设备地址是7bit,而地址0为保留地址,在设备接入时使用),但是实际上是不能挂上这么多设备的。由于集线器也算是一个USB设备,所以它也要占用设备地址。一般PC上,一个USB主控制器(我的主板上有三个主控制器)下面有一个根集线器,这个根集线器使用地址1,根集线器上出来两个USB口.这时只可以连接两个设备。如果再连接集线器的话,还可以多扩展出更多的USB接口。但是USB集线器一般最多只有7个下行接口,(USB协议还限制了HUB的层数(1.1最多为4层,2.0最多为6层)),并且每接入一个集线器,就要占用一个设备地址,所以实际上是不可能同时在一个USB主控制器上挂接127个设备的。

[em04] [align=right][color=#000066][此贴子已经被作者于2007-1-18 14:17:34编辑过][/color][/align]

菜鸟
2007-01-24 23:50:00     打赏
18楼
对头

助工
2012-02-23 09:34:50     打赏
19楼
对于非常大量的量产,一般可以先通过烧写器(一次可以写十到几十不等)烧写好,然后在贴片。
这对于CPLD也适用。
如果是小批量,可以先把空片子焊上去,然后通过专门软件烧写。

如果通过JTAG烧写,则可以不要求CPU已经运行。我们就给很多公司做这种方案。
这种方案也不需要FLASH座子。
特别是需要维修时(比如FLASH内部被破坏),别的方法都不行(CPU一点代码都执行不了),而JTAG可以。通过我们的软件可以回读FLASH内容(即使CPU死机),可以判断FLASH内容是否被意外修改。
同时,我们还提供JTAG测试,可以发现短路、虚焊等情形,为调试维修提供极大便利。

工程师
2012-03-02 10:48:49     打赏
20楼
这个不大一致吧,有的是直接将代码弄到存储芯片,然后焊接。

共20条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]