linux avr,怎样使用Simavr在Linux中调试AVR代码

描述

步骤1:

131507db6ecb60ee49ee7d2c01a58836.png

对Ubuntu有一些依赖性(这就是我所依赖的)一直使用):

sudo apt-get install avr-libc libelf-dev \

libglut3-dev gtkwave git build-essential我必须在10.10中删除一些不适用于OpenGL的Mesa符号链接。仅在与-lGL有关的编译问题上执行此操作,

sudo rm /usr/lib/libGL.so

cd /usr/lib

sudo ln -s libGL.so.1 libGL.so

cd最后,使用git下载源代码:

git clone git://gitorious.org/simavr/simavr.git

现在,构建它。

cd simavr

make

如果有任何错误,请给我评论。我很乐意提供帮助。完成后,您应该在simavr子目录中有一个名为 run_avr 的新程序。

第2步:尝试测试

2f289dc7064075675df7c0ae950cf542.png

该软件附带了大量测试。它们位于代码中的( surprise !)测试子目录中。您可以这样运行:

。/run_avr 。./tests/atmega88_example.axf

您应该看到类似这样的内容:

AVR_MMCU_TAG_VCD_TRACE 00c6:00 - UDR0

AVR_MMCU_TAG_VCD_TRACE 00c0:20 - UDRE0

Loaded 1760 .text

Loaded 114 .data

Loaded 4 .eeprom

Starting atmega88 - flashend 1fff ramend 04ff e2end 01ff

atmega88 init

avr_eeprom_ioctl: AVR_IOCTL_EEPROM_SET Loaded 4 at offset 0

Creating VCD trace file ‘gtkwave_trace.vcd’

Read from eeprom 0xdeadbeef -- should be 0xdeadbeef.。

Read from eeprom 0xcafef00d -- should be 0xcafef00d.。

simavr: sleeping with interrupts off, quitting gracefully

注意它已制成VCD跟踪文件?让我们看看GTKWave的样子!

步骤3:

643e61b5f662c63f8939ae47523fdcb5.png

gtkwave gtkwave_trace.vcd您可以通过Waves对话框将左侧的Signals拖放到Signals列表中,以使其显示起来。您也可以右键单击信号并更改其属性(例如使它们以二进制显示)。

第4步:如何为我工作

6f0d8af4bd098fb3a6504685c2fc100d.gif

您可以在命令行上指定要模拟的芯片,并可以为其创建目标文件由avr-gcc(ELF格式)运行。我还在这里将频率指定为8Mhz。

run_avr -mcu attiny85 -freq 8000000 -t ~/repos/life/code/avr/tutorials/ctc_ledblink.o这产生了一个很棒的输出:

AVR_MMCU_TAG_VCD_TRACE 0053:00 - TCCR0B

AVR_MMCU_TAG_VCD_TRACE 004a:00 - TCCR0A

AVR_MMCU_TAG_VCD_TRACE 0038:01 - tick

AVR_MMCU_TAG_VCD_TRACE 0038:02 - reset_timer

AVR_MMCU_TAG_VCD_TRACE 0038:08 - OC0A

Loaded 136 .text

Starting attiny85 - flashend 1fff ramend 025f e2end 01ff

attiny85 init

Creating VCD trace file ‘gtkwave_trace.vcd’

avr_timer_configure-0 TOP 31250.00Hz = 256 cycles

avr_timer_configure-0 TOP 488.28Hz = 16384 cycles

avr_timer_configure-0 TOP 488.28Hz = 16384 cycles

avr_timer_configure-0 A 2450.98Hz = 3264 cycles

avr_timer_configure-0 TOP 31250.00Hz = 256 cycles

avr_timer_configure-0 A 156862.75Hz = 51 cycles

simavr: sleeping with interrupts off, quitting gracefully

现在我有了跟踪文件,我像在步骤3中一样用gtkwave对其进行了查看。我使用了数据表,并将寄存器与期望值进行了比较,然后将定时器寄存器向后设置!哎呦!无论如何,如果没有simavr,解决它会花费我更多的时间-这样一来,它只需花费几分钟就可以启动并运行,并找到我的问题。我强烈建议您尝试一下!

打开APP阅读更多精彩内容

点击阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值