avr系列的编译烧录调试方法(2)

住:Debug其实不是很推荐使用,虽然比较高效,建议利用串口的信息输入输出(以后会介绍),这是因为在进入系统的嵌入后,常规的debug经常会无法使用。

实际的命令会是

avarice -g -j usb --erase --program --filemain.hex :4242  

不过如果makefile里已经写好的话直接输入sudo make debug就可以了

下面为命令的结果

avr系列的编译烧录调试方法

现在属于等待GDB,可视化的话就是DDD的状态中了

比如在gdb.conf中添加 

file main.elf

target remotelocalhost:4242

启动DDD

ddd–-debugger “avr-gdb -x gdb.conf”

avr系列的编译烧录调试方法

也可以手起动,然后配置,ui界面比较友好。

还有一句话。makefile里面已经把上步骤都做好了~当然会根据需求要求更改的。尤其是debug的时候。

总结:本文所说有些简略了,Linux开发的困难主要在于搭建环境,因此需要多看一下相关的官方手册。

测试代码:

main.c

// avr-gcc application builder : 2011-11-1     // Target : M16    // Crystal: 12.000Mhz       #include <avr/io.h>    #include <util/delay.h>    #define SET(a,b) a|(1<<b)    #define CLR(a,b) a &~(1<<b)    void port_init(void)   {    DDRA  = 0xff;//将PA0定义为输出     PORTA = 0xff;    PORTB = 0x00;    DDRB  = 0x00;    PORTC = 0x00; //m103 output only     DDRC  = 0x00;    PORTD = 0x00;    DDRD  = 0x00;   }      //call this routine to initialize all peripherals    void init_devices(void)   {    //stop errant interrupts until set up     //CLI(); //disable all interrupts     port_init();    MCUCR = 0x00;    GICR  = 0x00;    TIMSK = 0x00; //timer interrupt sources    // SEI(); //re-enable interrupts     //all peripherals are now initialized    }      //    void main(void)   {    init_devices();    //insert your functional code here...     PORTA = CLR(PORTA,3);    while(1);  //程序挂起          }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ppfps.html