在單片機(jī)開發(fā)中NOR_FLASH的應(yīng)用
在單片機(jī)開發(fā)中,NOR_FLASH常用的有4M和8M的大小:
4M的FLASH在程序中可以這樣表示:Ptr < 0x220000
8M的FLASH在程序中可以這樣表示:Ptr < 0x400000(最大只能讀到0x3fffff)
有了這個(gè)關(guān)系,在判斷NOR_FLASH好壞的方法上我們可以采用計(jì)算checksum的方式來校驗(yàn)。
在程序中,我們一般把地址的指針定義為unsigned short *ptr 類型。然后通過指針不斷的往后移動(dòng)可以簡(jiǎn)引用獲取到FLASH中的每一個(gè)byte,如果此時(shí)定義成unsigned short類型,那么用一個(gè)temp變量來接收的話,一次是可以接收到2個(gè)byte的數(shù)據(jù),如果此時(shí)定義成unsigned long類型,同樣用temp變量來接收這時(shí)一次性可以讀到4個(gè)byte的數(shù)據(jù),所以在處理數(shù)據(jù)方面可以采用位運(yùn)算來進(jìn)行處理。
以下這段程序是每1024byte獲取前16個(gè)byte的數(shù)據(jù)依次累加返回,注意,這里累加是以word的形式累加,1 word = 2byte,所以讀512相當(dāng)于讀了1024byte
注意,這里的單片機(jī)是16位的,其它的可能不同,不要類比,需要重新計(jì)算相應(yīng)數(shù)據(jù)類型的值。