最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請教GCC問題

作者:BitFu 欄目:單片機(jī)
請教GCC問題
在WINAVR里如何定義和初始化EEPROM數(shù)據(jù),使它生成*_E.HEX文件?
還有一個(gè)問題就是,EEPROM操作API的地址參數(shù)直接給數(shù)據(jù)如:
EEPROM_read_byte((unsigned CHAR *)1);
就會有警告,為什么?
而若給變量地址 如 :
unsigned CHAR EVAL __attribute__((section(".EEPROM")));
EEPROM_read_byte(&EVAL);
就沒有警告但是
這時(shí)&EVAL的值總是大于0X80為什么?

2樓: >>參與討論
BitFu
自己頂!
 
3樓: >>參與討論
john_lee
回答
定義EEPROM數(shù)據(jù)只能在變量名后加__attribute__((section(".EEPROM"))),就象你寫的那樣,如果要初始化,就和一般的變量定義一樣,賦個(gè)初值就可以了,例如:unsigned CHAR EVAL __attribute__((section(".EEPROM"))) = 20;

要生成含有EEPROM數(shù)據(jù)的hex文件,只要執(zhí)行:“avr-objcopy -O ihex -j .EEPROM INPUTFILE OUTPUTFILE”
但要注意,如果生成的hex文件里有這樣一行“:02000004008179”的話,要把這一行刪掉。

編譯警告應(yīng)該不會有,不知道你遇到的警告是什么?

&EVAL的值是肯定>0x80的,而且是>=0x810000的,因?yàn)間cc本身只支持統(tǒng)一的地址空間尋址,不支持象AVR,51等非線性空間的數(shù)據(jù)訪問(代碼地址和數(shù)據(jù)地址有重疊,但空間不同,特別是訪問各個(gè)存儲空間的指令都不同),為了讓gcc支持avr,把gcc移植到AVR的那個(gè)人,將avr的各個(gè)存儲空間重新依次排列:
FLASH rom        -> 0x000000
REGS & I/O & RAM -> 0x800000
EEPROM           -> 0x810000
這樣,所有的地址空間就都是線性的了(地址的有效部分仍然與各實(shí)際空間對應(yīng)),但這樣做僅能解決連接器(ld)定址的問題,還不能解決不同的尋址指令的問題,所以,只有使用宏、內(nèi)嵌匯編指令和函數(shù)的方式來解決(pgm_read_*,EEPROM_read_*之類)。


4樓: >>參與討論
tczgg
多謝,又學(xué)了一招
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
問:雙龍有沒有ATtiny12V/L賣?
開發(fā)AVR,大家的開發(fā)調(diào)試軟件都選什么?
MEGA8的AREF和AVCC不用的話該怎么接??
有關(guān)MEGA128程序下載問題。〖
用過adc的朋友幫幫我?在線~~~~~~~
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號