在看到norflash和nandflash的不同點之後,知道了norflash有個特性就是可以片上運行。網上大部分解釋就是說norflash一般用來存放啓動代碼,這樣啓動代碼就可以直接在norflash中運行了。那麼問題來了,既然代碼可以直接在norflash中運行那就把所有程序都放在norflash中不就好了嗎?是不是就不需要ram了呢?答案是否定的!
因爲norflash能片上運行指的是norflash可以直接像ram那樣可以給一個地址就能直接讀取到這個地址的數據,也就是可以隨機讀取數據。但是不能隨機寫如數據,norflash中寫入數據跟nandflash相像,需要遵循一定的命令才行。但是你想啊,我們程序運行的時候有很多的臨時變量什麼的,這些變量可是需要讀寫速度很快的才行啊。所以norflash中是不能用來存放數據區代碼的。所以norflash還是需要搭配ram才行,你可以看到bootloader裏面即使是從norflash中啓動也是需要初始化ram的。