音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

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

IAR的__regvar __noinit__ unsigned char saved_TWDR @ 13;GCC寫

作者:zx1221 欄目:單片機(jī)
IAR的__regvar __noinit__ unsigned CHAR saved_TWDR @ 13;GCC寫
__regvar __noinit__ unsigned CHAR saved_TWDR @ 13;
__regvar __noinit__ unsigned CHAR saved_TWSR @ 14;
__regvar __noinit__ unsigned CHAR prefetch @ 15;
如題,我用的WINAVR2005版本的,用AVRSTUDIO直接調(diào)用GCC!
只知道這個(gè)是IAR的語法!不知道如何轉(zhuǎn)換成GCC語音!

__regvar  把這變量分配到寄存器里   
__no_init 對這個(gè)變量不做初始化   
@         變量絕對定位  

還有
#pragma location=0x1E80
const unsigned int __FLASH__ sffA0Flash[256]
這個(gè)#pragma location=0x1E80在GCC里如何定義EEPROM地址哪?

GCC提示所有錯(cuò)誤都與這3句有關(guān):
Build started 18.10.2006 at 13:42:11
avr-gcc.exe  -mmcu=ATmega88 -Wall -gdwarf-2 -O0 -MD -MP -MT twsiSlave.o -MF dep/twsiSlave.o.d  -c  ../twsiSlave.c
In file included from ../twsiSlave.c:13:
../phy107x.h:540: warning: ignoring #pragma location  
../phy107x.h:813: warning: ignoring #pragma location  
../phy107x.h:948: warning: ignoring #pragma location  
../phy107x.h:1222: warning: ignoring #pragma location  
../phy107x.h:1400: warning: ignoring #pragma location  
../phy107x.h:1447: warning: ignoring #pragma location  
../twsiSlave.c:41: warning: type defaults to `int' in declaration of `__regvar'
../twsiSlave.c:41: error: parse error before "unsigned"
../twsiSlave.c:41: error: stray '@' in program
../twsiSlave.c:42: warning: type defaults to `int' in declaration of `__regvar'
../twsiSlave.c:42: error: parse error before "unsigned"
../twsiSlave.c:42: error: stray '@' in program
../twsiSlave.c:43: warning: type defaults to `int' in declaration of `__regvar'
../twsiSlave.c:43: error: parse error before "unsigned"
../twsiSlave.c:43: error: stray '@' in program
../twsiSlave.c:142: warning: return type defaults to `int'
../twsiSlave.c: In function `SIGNAL':
../twsiSlave.c:143: error: section attribute cannot be specified for local variables
../twsiSlave.c:144: warning: `progmem' attribute ignored
../twsiSlave.c:153: error: `saved_TWDR' undeclared (first use in this function)
../twsiSlave.c:153: error: (Each undeclared identifier is reported ONLY once
../twsiSlave.c:153: error: for each function it appears in.)
../twsiSlave.c:154: error: `saved_TWSR' undeclared (first use in this function)
../twsiSlave.c:155: error: `prefetch' undeclared (first use in this function)
../twsiSlave.c:440: warning: `section' attribute does not apply to types
../twsiSlave.c:445: warning: `section' attribute does not apply to types
../twsiSlave.c:450: warning: `section' attribute does not apply to types
../twsiSlave.c:464: warning: `return' with no VALUE, in function returning non-void
make: *** [twsiSlave.o] Error 1
Build failed with 12 errors and 15 warnings...


2樓: >>參與討論
zsmbj
問題:
第一個(gè)問題:
register unsigned CHAR saved_TWDR asm("r13");

第二個(gè)問題:
POROGMEM    unsigned int sffA0Flash[256];   //定義在FLASH

EEMEM    unsigned int sffA0Flash[256];   //定義在EEPROM


winavr20060421


3樓: >>參與討論
zx1221
感謝zsmbj
感謝zsmbj第一個(gè)問題解決了!但第二個(gè)問題我不是說如何定義在EEPROM.html">EEPROM里和FLASH里,這個(gè)我用的宏定義:
#define __FLASH__  __attribute__ ((progmem)) //變量定義在FLASH
#define __EEPROM.html">EEPROM__ __attribute__ ((section (".EEPROM.html">EEPROM"))) //變量定義在EEPROM.html">EEPROM
我的意思是如何定義數(shù)組的絕對地址:
#pragma location=0x1E80
const unsigned int __FLASH__ sffA0Flash[256]
象這個(gè)的#pragma location一樣在GCC里給FLASHEEPROM的絕對地址定義0x1E80 !
必須用
void EEPROM.html">EEPROM_read_block (void buf, const void addr, size_t n)
這樣才能分配地址嗎?

4樓: >>參與討論
zx1221
還有個(gè)指針的
   unsigned CHAR __EEPROM.html">EEPROM__ *EEPROM.html">EEPROMPtr;
   unsigned CHAR __FLASH__  *FLASHPtr;
   EEPROM.html">EEPROMPtr = (unsigned CHAR __EEPROM.html">EEPROM__  *)&sffA2upperDataEeprom;
這個(gè)指針怎么定義放在EEPROM里哪?

5樓: >>參與討論
zhiwei
既然用GCC
就詳細(xì)看文檔,不要這樣搞移植。嵌入式C雖然都是自己是標(biāo)準(zhǔn)ANSI什么的,但是那個(gè)沒有搞擴(kuò)展,,針對不同編譯器要知道它是怎么擴(kuò)展、實(shí)現(xiàn)?纯葱舅嚨哪潜緯。

6樓: >>參與討論
zx1221
謝謝zhiwei
謝謝zhiwei的建議!我現(xiàn)在也覺得從IAR移植到GCC好像有很多問題不能解決的!只因?yàn)樽约簩?shí)力還不能達(dá)到寫這么大的程序才考慮走直接移植的!看樣這次真要被逼完全自己寫了!

7樓: >>參與討論
zsmbj
EEPROM里的變量是自動(dòng)分配的,不知如何固定某一個(gè)位置。
有知道的說一聲。


8樓: >>參與討論
農(nóng)民講習(xí)所
unsigned CHAR __EEPROM__ * __EEPROM__ EEPROMPtr;試試
*前是指針類型,*后是存放位置。

9樓: >>參與討論
zx1221

unsigned CHAR __EEPROM__ * __EEPROM__ EEPROMPtr;
還是不行,我基本放棄了,IAR到GCC實(shí)在太多需要修改的地方了!并且有許多都不能實(shí)現(xiàn)的!郁悶啊!
../twsiSlave.c:143: error: section attribute cannot be specified for local variables


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
MEGA128的電路板為何有的時(shí)候程序會(huì)丟失,重新燒程序后正常?
AVR Studio 4的BUG
WinAVR 可以把當(dāng)前的編譯日期和時(shí)間寫到代碼當(dāng)中去嗎?
請高手指點(diǎn)modbus協(xié)議
幫忙介紹一本關(guān)于AVR的簡單的C語言的書!
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)