淺談ARM和程式下載
1.ARM是什麼?
大家對微控制器最熟悉的應該就是51微控制器了吧,事實上51微控制器指的是一個系列的微控制器,有很多種。百度百科上面是這麼說的:對所有相容intel 8031指令系統的微控制器的總稱。所以大家會在市面上買到英特爾的80C51 87C51艾德梅爾的89C51 89S52 STC(國產巨集晶)微控制器 89C51 89C52 89C516 等等都是51微控制器。所以說用51核心(相容intel 8031指令系統)的微控制器都是51微控制器。
ARM就是所有支援RISC指令集(精簡指令集)的處理器,也就是說運用ARM核心的控制器都屬於ARM。ARM核心就是控制器運算的地方,由ARM公司開發。不同的公司對ARM核心加上I/O控制器,AD/DA模數數模轉換模組,UART串列埠模組,IIC,SPI,CAN等等的通訊模組,也就是說不同的公司對ARM處理器進行了二次開發。ARM進行了二次開發之後就變成了SOC(system on chip)片上系統,比如說STM公司對ARM處理器的Contex-M3版本進行了二次開發得到了自己公司的STM32,飛思卡爾公司(2015年3月被恩智浦收購2016年9月被高通收購)對ARM處理器的Contex-M4版本進行二次開發得到了自己公司的K60。
2.ARM相比其它型別處理器為什麼處理速度更快?
ARM的定義是:ARM就是所有支援RISC指令集(精簡指令集)的處理器。顯然ARM的優點就和它的特點(支援RISC指令集)有關係。不懂得這一點的一般就是不懂RISC指令集是個什麼東東?先說一下指令集是什麼吧。指令集是儲存在CPU內部(對於ARM處理器就是儲存在ARM核心裡面的)硬程式,精簡指令集實質是對老指令集也就是複雜指令集進行了刪減。我們的CPU執行指令的時候是將指令和內部的指令集裡的指令一個個進行對比,當找到對應的指令就去執行相應的操作。如果我們指令集裡需要對比指令少了,那我們將我們寫入到CPU的指令和指令集的指令對比成功的這段時間就會被縮短,所以我們CPU處理指令的速度也就快了。然而有一些非常不常用的指令放到另一個地方,如果CPU在被刪減的指令裡面找不到對應上的指令就去那個不常用指令的地方再去對比查詢(90%的情況都會找到,幾乎不會在不常用指令出再對比)
3.怎麼將程式下載到ARM控制器裡面?
一般用JTAG下載器下載,也可以用USB,也可以用網路。(USB下載和網路下載都需要ARM控制器裡面有boot程式支援)
4.下載到ARM的程式是怎麼存放的?
裸機程式:用JTAG下載是下載到flash裡面,支援直接下載裸機程式,程式從可以放置到NorFlash也可放到Nandflash(下載時可以在下載軟體的選項上選擇)優點:穩定,可靠 缺點:相比網路和USB下載速度極慢(ARM下載裸機程式只能用JTAG下載)
USB下載或者網路下載:這種下載需要板子裡面有程式配合,也就是所謂的boot程式(boot程式一定是JTAG下載到板子裡的),如果boot程式在NorFlash則通過這種方式把需要下載的程式下載到NandFlash,反之則下載到NorFlash
5.下載程式到NorFlash和NandFlash的區別?
NorFlash:CPU可以直接執行程式,並且NorFlash的0地址就是CPU認為的0地址
NandFlash:CPU不能直接執行,硬體自動把NandFlash的程式複製到SDRAM裡,然後再執行。
6.NandFlash和NorFlash的小介紹(Flash分為NandFlash和NorFlash)
NandFlash:容量大,廉價,一般ARM上帶512M的NandFlash,程式下載到NandFlash要比下載到NorFlash要快。但是不能直接在NandFlash裡面執行程式,因為容量大,廉價的緣故,買到NandFlash裡面存在壞塊是正常現象,不影響使用,使用NandFlash還需要一個NandFlash控制器使用(三星公司ARM9核心的s3c2440就就集成了NandFlash控制器)
NorFlash:容量小,價格高,一般ARM控制器帶2M,可以直接執行程式