|
|||||||||||
| 技術(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ī) |
__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 于 2006/10/19 12:34:00 發(fā)布:
問題: 第一個(gè)問題: register unsigned CHAR saved_TWDR asm("r13"); 第二個(gè)問題: POROGMEM unsigned int sffA0Flash[256]; //定義在FLASH里 EEMEM unsigned int sffA0Flash[256]; //定義在EEPROM里 winavr20060421 |
|
| 3樓: | >>參與討論 |
| 作者: zx1221 于 2006/10/19 17:18:00 發(fā)布:
感謝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里給FLASH和EEPROM的絕對地址定義0x1E80 ! 必須用 void EEPROM.html">EEPROM_read_block (void buf, const void addr, size_t n) 這樣才能分配地址嗎? |
|
| 4樓: | >>參與討論 |
| 作者: zx1221 于 2006/10/19 17:51:00 發(fā)布:
還有個(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 于 2006/10/19 17:56:00 發(fā)布:
既然用GCC 就詳細(xì)看文檔,不要這樣搞移植。嵌入式C雖然都是自己是標(biāo)準(zhǔn)ANSI什么的,但是那個(gè)沒有搞擴(kuò)展,,針對不同編譯器要知道它是怎么擴(kuò)展、實(shí)現(xiàn)?纯葱舅嚨哪潜緯。 |
|
| 6樓: | >>參與討論 |
| 作者: zx1221 于 2006/10/19 19:54:00 發(fā)布:
謝謝zhiwei 謝謝zhiwei的建議!我現(xiàn)在也覺得從IAR移植到GCC好像有很多問題不能解決的!只因?yàn)樽约簩?shí)力還不能達(dá)到寫這么大的程序才考慮走直接移植的!看樣這次真要被逼完全自己寫了! |
|
| 7樓: | >>參與討論 |
| 作者: zsmbj 于 2006/10/19 21:05:00 發(fā)布:
EEPROM里的變量是自動(dòng)分配的,不知如何固定某一個(gè)位置。 有知道的說一聲。 |
|
| 8樓: | >>參與討論 |
| 作者: 農(nóng)民講習(xí)所 于 2006/10/19 21:09:00 發(fā)布:
unsigned CHAR __EEPROM__ * __EEPROM__ EEPROMPtr;試試 *前是指針類型,*后是存放位置。 |
|
| 9樓: | >>參與討論 |
| 作者: zx1221 于 2006/10/20 9:32:00 發(fā)布:
唉 unsigned CHAR __EEPROM__ * __EEPROM__ EEPROMPtr; 還是不行,我基本放棄了,IAR到GCC實(shí)在太多需要修改的地方了!并且有許多都不能實(shí)現(xiàn)的!郁悶啊! ../twsiSlave.c:143: error: section attribute cannot be specified for local variables |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |