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

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

AVR GCC warning 求教

作者:blackhill 欄目:單片機
AVR GCC warning 求教
本人做一GCC MEGA8 測試程序如下:
#include <stdio.h>
#include <avr/io.h>
#include <avr/EEPROM.html">EEPROM.h>

void (*bootload)(void)=0x1C00;

void main( void )
{
EEPROM.html">EEPROM_read_byte(0x04);
     
}
編譯后有如下內(nèi)容


-------- begin --------
avr-gcc (GCC) 3.4.3
COPYRIGHT (C) 2004 Free SOFTWARE Foundation, Inc.
This is free SOFTWARE; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Size before:
demo.elf  :
section           size      addr
.text              126         0
.data                2   8388704
.bss                 0   8388706
.noinit              0   8388706
.EEPROM.html">EEPROM              0   8454144
.debug_aranges      20         0
.debug_pubnames     40         0
.debug_info        159         0
.debug_abbrev      111         0
.debug_line        222         0
.debug_str         106         0
Total              786


AVR MEMORY Usage:
-----------------
DEVICE: atMEGA8

Program:     128 bytes (1.6% Full)
(.text + .data + .bootloader)

Data:          2 bytes (0.2% Full)
(.data + .bss + .noinit)



Compiling: demo.c
avr-gcc -c -mmcu=atMEGA8 -I. -gdwarf-2 -DF_CPU=8000000UL  -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=demo.lst  -std=gnu99 -MD -MP -MF .dep/demo.o.d demo.c -o demo.o
demo.c:10: warning: initialization makes pointer from integer without a cast
demo.c:14: warning: return type of 'main' is not `int'
demo.c: In function `main':
demo.c:15: warning: passing arg 1 of `EEPROM.html">EEPROM_read_byte' makes pointer from integer without a cast

Linking: demo.elf
avr-gcc -mmcu=atMEGA8 -I. -gdwarf-2 -DF_CPU=8000000UL  -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=demo.o  -std=gnu99 -MD -MP -MF .dep/demo.elf.d demo.o --OUTPUT demo.elf -Wl,-Map=demo.map,--cref    -lm

Creating load file for FLASH: demo.hex
avr-objcopy -O ihex -R .EEPROM.html">EEPROM demo.elf demo.hex

Creating load file for EEPROM: demo.eep
avr-objcopy -j .EEPROM.html">EEPROM --set-section-flags=.EEPROM.html">EEPROM="alloc,load" \
--change-section-lma .EEPROM.html">EEPROM=0 -O ihex demo.elf demo.eep

Creating Extended Listing: demo.lss
avr-objdump -h -S demo.elf > demo.lss

Creating Symbol Table: demo.sym
avr-nm -n demo.elf > demo.sym

Size after:
demo.elf  :
section           size      addr
.text              126         0
.data                2   8388704
.bss                 0   8388706
.noinit              0   8388706
.EEPROM.html">EEPROM              0   8454144
.debug_aranges      20         0
.debug_pubnames     40         0
.debug_info        136         0
.debug_abbrev       96         0
.debug_line        222         0
.debug_str          97         0
Total              739


AVR MEMORY Usage:
-----------------
DEVICE: atMEGA8

Program:     128 bytes (1.6% Full)
(.text + .data + .bootloader)

Data:          2 bytes (0.2% Full)
(.data + .bss + .noinit)


-------- end --------





其中有以下警告內(nèi)容,應(yīng)該如何消除,請高手指教
demo.c:10: warning: initialization makes pointer from integer without a cast
demo.c:14: warning: return type of 'main' is not `int'
demo.c: In function `main':
demo.c:15: warning: passing arg 1 of `EEPROM.html">EEPROM_read_byte' makes pointer from integer without a cast














2樓: >>參與討論
hudaidai
可以改成這樣
#include <stdio.h>
#include <avr/io.h>
#include <avr/eeprom.h>

void (*bootload)(void)=(void*)0x1C00;

int main(void)
{
    eeprom_read_byte((uint8_t*)0x04);
}

其中將0x1c00轉(zhuǎn)換成函數(shù)指針用了一個偷懶的辦法,正規(guī)方法應(yīng)該是typedef一個函數(shù)指針類型。

typedef void (*PFUNC)(void);
void (*bootload)(void)=(PFUNC)0x1C00;

不過好像麻煩了點。。。

另:消除掉所有警告確實是很重要的良好編程習(xí)慣。

* - 本貼最后修改時間:2005-12-7 9:54:40 修改者:hudaidai

3樓: >>參與討論
blackhill
多謝多謝!
 
4樓: >>參與討論
blackhill
照您的指導(dǎo),果然搞定,我想了好幾天了,多謝
 
5樓: >>參與討論
qjy_dali
其實就是要看懂E文
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求助!avr的162串口問題
MEGA48的eeprom怎么也寫不進(jìn)去,照著手冊寫的。!
在學(xué)AVR,第一次用ICCAVR編程就碰到麻煩,請教!!
測默認(rèn)為輸入的IO,得到任意值?
ATMEGA8的ADC(REF=1.024V)在10度以下竟然工作不正常!
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號