iPhone的IOS系統還真的是一臺一臺刷進去的,只不過可以透過電腦和專用的刷機機架一次刷很多臺iPhone,這個過程就是量產。通常手機量產刷入系統就意味著離打包發貨僅有一步之遙了。
iPhone刷機和量產跟Recovery模式和DFU模式有關
iPhone新使用者或許會對Recovery模式和DFU模式一知半解,但iPhone老鳥就非常清楚了,一旦自己的iPhone遇到了刷機、重置系統的時候就會用到這兩個模式。
Recovery模式也就是恢復模式,也稱iBoot模式,通常手機需要刷機或者升級、降級的時候就會用到這個模式。DFU模式一般是在iPhone無法使用Recovery模式的情況下使用。DFU模式的全稱是Device Firmware Upgrade,也叫開發者模式,可以強制地進行升降級,通常升級IOS系統出現白蘋果或者黑屏的情況下就會用到DFU模式。
當然iPhone刷入IOS系統之後沒有按快捷鍵並不會隨意地進入Recovery模式或者DFU模式,但沒有刷入IOS系統之前開機預設就會進入DFU模式,這樣為手機刷入系統提供了便利。
沒有刷入IOS的iPhone如何做硬體測試呢?
自己拆過機或者看過別人拆機的小夥伴們就知道手機有各種器件,PCB板裡面也佈滿了各種元器件。PCB板印刷廠印錯了,元器件上料上錯了(比如1歐姆上成10歐姆),焊接虛焊或者短路等等情況總不能照個X光來放大了來逐個檢查,安裝現在積體電路的複雜程度和密集規模照X光放大來檢查幾乎是不可能的一件事。
這時最直接的方式就是上電測試,把所有的外圍晶片、所有的連線都輪巡一遍,看連線是不是通的,再將不同的結果進行彙總分析,檢視問題點出在哪裡,再改進。這個過程就是測試軟體該乾的事了,由於測試校準都是I/O密集型而不是CPU密集型工作,所以軟體最好是能跑多執行緒並行才能節省更多的時間。所以就需要有一個小的OS加上所有的外設驅動以及測試程式,通常這樣一個小的OS僅有1~2M或者幾十M就可以了。
十幾年前的手機image不過是幾M,用920kbps的串列埠就可以滿足系統寫入的需求。十幾年前的手機晶片根本就不支援USB,僅支援串列埠和jtag。但現實的需求開始倒逼晶片廠商和手機廠商,因為現在一個系統動不動就幾個GB了,甚至快到10GB了,想要更快地寫入系統只能透過USB下載。USB也是需要透過程式驅動,於是手機廠商就得先寫一個二級loader,先透過串列埠把這個二級loader下載進去驅動USB,當然也有用MIPI。
iPhone是這樣的,Android也是這樣的,至於具體的測試流程、寫入系統的流程取決於生產線。
手機可以像電腦一樣將系統提前燒入儲存晶片上嗎?
手機、電腦遵循馮·諾依曼體系結構,手機的loader也有類似電腦BIOS的引導方式。所以將手機的系統提前燒入儲存晶片是可行的。
以前也確實有手機廠商是這樣做,但現在幾乎沒有手機廠商會這樣去做。因為複雜程度上升了,以前的手機非常簡單,網路可能也就一個GSM,也沒有什麼定製軟體,手機賣出去之後可能用到壞都不用升級軟體,現在則不同了運營商多,網路制式多,消費者非常喜歡升級,所以每一代產品的生命週期都會累積好幾個系統版本。實際一點就是在手機全面檢測完,組裝好,快出廠的時候統一燒入系統。