对,是象NAND FLASH那种串行存取数据的存储器不能执行程序,我上面的说法是理论性的错误。
我来回答吧:
对一般的手机来说,用的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.
基本上,就是这么一个结构。每个手机厂商,都会有自己专门的工具的。而且现在的手机厂商越来越重视安全性能,对所有软件都是要加密的,添加数字签名,防止手机软件被修改。
如果要破译手机里面的某些算法,需要怎样进行呢?
[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个设备的。
这对于CPLD也适用。
如果是小批量,可以先把空片子焊上去,然后通过专门软件烧写。
如果通过JTAG烧写,则可以不要求CPU已经运行。我们就给很多公司做这种方案。
这种方案也不需要FLASH座子。
特别是需要维修时(比如FLASH内部被破坏),别的方法都不行(CPU一点代码都执行不了),而JTAG可以。通过我们的软件可以回读FLASH内容(即使CPU死机),可以判断FLASH内容是否被意外修改。
同时,我们还提供JTAG测试,可以发现短路、虚焊等情形,为调试维修提供极大便利。
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |