搜索
bottom↓
回复: 25

一个MAKEFILE,个人觉得还蛮好用的。(适用WinAVR2007)

[复制链接]

出0入0汤圆

发表于 2007-8-19 20:42:13 | 显示全部楼层 |阅读模式
一个MAKEFILE,个人觉得还蛮好用的。(适用WinAVR2007,根据论坛某位高手的MAKEFILE修改而成)。

设置下源文件路径,自动查找源文件。



比如,要编译得到usmartx在ATmega64上的库文件,只需设置:

MCU                  = atmega64

TARGET               = usmartx

MAKE_LIB_EN        =1                //生成库文件使能

VPATH                =./src                //指定源文件(.c,.cpp,.S,.o,.a)路径,多个路径用:隔开,

INCLUDE_PATH        =./inc                //头文件路径,多个路径用:隔开



然后MAKE就行了。



点击此处下载armok01167275.rar

出0入0汤圆

 楼主| 发表于 2007-8-19 20:46:52 | 显示全部楼层
需要设置的地方



TCHAIN                = avr

MCU                  = atmega16

CPU_FREQ             = 8000000UL

TARGET               = demo

OPTIMIZATION         = s



EX_INPUT_LIB_EN=1    //外部库文件(路径由EX_INPUT_LIB_PATH指定)连接禁止

LC_INPUT_LIB_EN=1    //本地库文件(路径由VPATH指定)连接使能

LC_INPUT_OBJ_EN=1    //本地目标文件(路径由VPATH指定)连接使能



MAKE_ELF_EN=1      //生成ELF使能   

MAKE_EEP_EN=1      //生成EEP使能

MAKE_HEX_EN=1      //生成HEX使能

MAKE_LST_EN=1      //生成LST使能

MAKE_ASM_EN=1      //生成ASM使能

MAKE_LIB_EN=1      //生成LIB使能

MAKE_SIZE_EN=1     //显示代码大小使能



DEFINITION=        //宏定义



VPATH                =          //指定源文件(.c,.cpp,.S,.o,.a)路径,多个路径用:隔开

INCLUDE_PATH        =          //头文件路径,多个路径用:隔开



EX_INPUT_LIB_PATH=              //外部库文件历经,多个路径用:隔开

EX_INPUT_LIB=                   //外部库文件名,多个文件用空格隔开



CUSTOM_CFLAGS =



CUSTOM_AFLAGS=



CUSTOM_LDFLAGS=

出0入0汤圆

发表于 2007-8-19 23:12:25 | 显示全部楼层
正在用winavr

不错,收藏了!

出0入0汤圆

发表于 2007-8-20 14:52:27 | 显示全部楼层
嗯,收藏了~~



把programming部分也加进去,编程才方便~~





还有里面的这句第305行:   $(SIZE) -C --mcu=${MCU} ${OUTPUT_ELF}



avr-size并没有 -C 这个参数吧?



       size [-A│-B│--format=compatibility]

            [--help]

            [-d│-o│-x│--radix=number]

            [-t│--totals]

            [--target=bfdname] [-V│--version]

            [objfile...]

出0入0汤圆

发表于 2007-8-20 16:45:25 | 显示全部楼层
avr-size -C --mcu=${MCU} ${TARGET}

   参考avr_studio4.13+winavr2007自动生成的MAKEFILE。



其他CFLAGS,AFLAGS,LDFLAGS,都是参考avr_studio4.13自动生成的MAKEFILE。



楼上:把programming部分也加进去,编程才方便~~

程序下载到板子上?

没用过用MAKEFILE下载程序。

出0入0汤圆

发表于 2007-8-20 17:22:34 | 显示全部楼层
WinAVR 的 Makefile不是在 MFile中设置的么,那个菜单也方便的啊,不知道还要手动到Makefile文件中改么?

出0入0汤圆

发表于 2007-8-20 19:27:18 | 显示全部楼层
Mfile自带的那个makefile_template里面就有这部分



#---------------- Programming Options (avrdude) ----------------



# Programming hardware: alf avr910 avrisp bascom bsd

# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500

#

# Type: avrdude -c ?

# to get a full listing.

#

AVRDUDE_PROGRAMMER = stk200



# com1 = serial port. Use lpt1 to connect to parallel port.

#AVRDUDE_PORT = '/dev/parport0'    # programmer connected to serial device



AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex

#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep





# Uncomment the following if you want avrdude's erase cycle counter.

# Note that this counter needs to be initialized first using -Yn,

# see avrdude manual.

#AVRDUDE_ERASE_COUNTER = -y



# Uncomment the following if you do /not/ wish a verification to be

# performed after programming the device.

#AVRDUDE_NO_VERIFY = -V



# Increase verbosity level.  Please use this when submitting bug

# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>

# to submit bug reports.

#AVRDUDE_VERBOSE = -v -v



AVRDUDE_FLAGS = -p $(MCU) -c $(AVRDUDE_PROGRAMMER)

AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)

AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)

AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)





_____________________________________________________________________________________

# Program the device.  

program: $(TARGET).hex $(TARGET).eep

        $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)











──────────────────────────────────────────────────────────────────────────────────────────



我稍稍修改了一下,这样直接用make program就可以下载程序到芯片。

编程器也可以选用其他的,像uisp等,不过推荐avrdude,兼容性好,支持的协议也多。



调试程序时

$make clean

$make all

$make program

出0入0汤圆

发表于 2007-8-20 19:34:34 | 显示全部楼层
奇怪,查了一下avr-size的manual,的确没有-C这个参数。

难道是winavr才有的~~





avr-size -C --mcu=${MCU} ${TARGET} 这句是计算程序占芯片容量的百分比吗?

出0入0汤圆

发表于 2007-8-20 20:52:42 | 显示全部楼层
发现几处笔误的地方。更正一下。

点击此处下载armok01167648.rar



没搞过开发,不懂仿真器。只有一个ISP,可以用MAKEFILE下载程序到板子上?

出0入0汤圆

发表于 2007-8-20 21:09:51 | 显示全部楼层
avrdude支持stk200 ,stk300协议,用并口下载线就行了。

出0入0汤圆

发表于 2007-11-15 11:56:17 | 显示全部楼层
要生成.coff文件怎么加?

出0入0汤圆

发表于 2007-11-15 17:27:01 | 显示全部楼层
自己从头学makefile吧。

出0入0汤圆

发表于 2008-3-31 14:00:52 | 显示全部楼层
看看

出0入0汤圆

发表于 2008-3-31 14:08:53 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-22 17:00:23 | 显示全部楼层
mark一下 哈哈

出0入0汤圆

发表于 2009-3-22 17:12:43 | 显示全部楼层
还有人顶,就再更新一下(add makefile for WinARM and MSPGCC)

点击此处下载 ourdev_427166.rar(文件大小:3K) (原文件名:make.7z.rar)

出0入0汤圆

发表于 2009-11-25 17:18:52 | 显示全部楼层
太感谢了!!!

出0入0汤圆

发表于 2009-11-25 17:59:58 | 显示全部楼层
我用的你的makefile编译后发现场只要自修改一下程序就不能再次编译了,只有重新打开才能再次编译,请问题是什么原因呢?

出0入0汤圆

发表于 2009-11-25 18:09:13 | 显示全部楼层
现在已经很少用GCC。这个MAKEFILE已经没有维护了。

楼上上传一个最简工程,我试试看。

出0入0汤圆

发表于 2009-11-25 22:34:50 | 显示全部楼层
非常感谢 voidx void * 按照你说的我把问题给解决了。
不知道你编译我的程序没有,有个问题,我个程序是我在网上下载的,就接连stddef.h和string.h时出错了,试了很久,string.h 一直通不过,希望能够提点建议,先谢谢了。

出0入0汤圆

发表于 2009-11-25 23:53:23 | 显示全部楼层
memb.c最前面多了个m字母。

出0入147汤圆

发表于 2009-12-7 09:11:49 | 显示全部楼层
8楼的有处错误,导致不能生成depend文件

CFLAGS +=  -MD -MP -MT %.o -MF $(EXT_DEP_PATH)%.o.d

改为
CFLAGS +=  -MD -MP -MT $(*F).o -MF $(EXT_DEP_PATH)$(@F).d

就好了

出0入0汤圆

发表于 2009-12-19 09:55:01 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-12-19 12:27:16 | 显示全部楼层
学习了

出0入0汤圆

发表于 2009-12-19 14:00:36 | 显示全部楼层
路过盖个印

出0入0汤圆

发表于 2010-1-5 23:18:50 | 显示全部楼层
感觉ICC像keil用起来简单,用不着什么makefile
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-7 23:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表