住:Debug其实不是很推荐使用,虽然比较高效,建议利用串口的信息输入输出(以后会介绍),这是因为在进入系统的嵌入后,常规的debug经常会无法使用。
实际的命令会是
avarice -g -j usb --erase --program --filemain.hex :4242
不过如果makefile里已经写好的话直接输入sudo make debug就可以了
下面为命令的结果
现在属于等待GDB,可视化的话就是DDD的状态中了
比如在gdb.conf中添加
file main.elf
target remotelocalhost:4242
启动DDD
ddd–-debugger “avr-gdb -x gdb.conf”
也可以手起动,然后配置,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); //程序挂起 }