0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

454398 来源:wv 2019-10-10 15:27 次阅读

步骤1:

对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步:尝试测试

该软件附带了大量测试。它们位于代码中的( 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:

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

第4步:如何为我工作

您可以在命令行上指定要模拟芯片,并可以为其创建目标文件由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,解决它会花费我更多的时间-这样一来,它只需花费几分钟就可以启动并运行,并找到我的问题。我强烈建议您尝试一下!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11310

    浏览量

    209621
  • 代码
    +关注

    关注

    30

    文章

    4790

    浏览量

    68654
收藏 人收藏

    评论

    相关推荐

    嵌入式工程师都在找的【Linux内核调试技术】建议收藏!

    嵌入式系统的开发Linux内核调试是一个至关重要的环节。 随着处理器技术的不断进步和嵌入式领域的蓬勃发展,掌握有效的内核调试技术成为
    发表于 11-28 15:37

    是德示波器音频设备调试的作用

    是德示波器音频设备调试的具体应用,包括信号分析、故障诊断、参数测量等方面。 一、音频设备调试的挑战与需求 现代音频设备,从耳机、音箱到专业音频接口,其内部电路复杂,涉及模拟和数字信
    的头像 发表于 11-26 16:48 251次阅读
    是德示波器<b class='flag-5'>在</b>音频设备<b class='flag-5'>调试</b><b class='flag-5'>中</b>的作用

    鸿蒙Flutter实战:08-如何调试代码

    。 方案二 适应DecEco运行鸿蒙项目,注意需要打开的是ohos鸿蒙目录代码,待IDE分析结束后,点击运行。 当app鸿蒙设备上启动成功后,立即在 Vscode 调出 Command Pallet
    发表于 10-23 16:29

    【AI技术支持】ESP32C3 开发板Linux环境下,进行JTAG 调试演示

    启明云端/01JTAG调试工具本教程主要演示ESP32C3开发板linux环境下,通过vscode的ESP-IDF插件使用JTAG调试工具。ESP32C3不但内置了USB-JTAG,
    的头像 发表于 10-17 08:01 1561次阅读
    【AI技术支持】ESP32C3 开发板<b class='flag-5'>在</b><b class='flag-5'>Linux</b>环境下,进行JTAG <b class='flag-5'>调试</b>演示

    Linux查看IP地址的方法

    ifconfig是一个网络管理工具,用于配置、控制和查询网络接口。许多旧的Linux发行版,ifconfig是查看和配置网络接口的主要工具。
    的头像 发表于 08-07 15:16 7606次阅读
    <b class='flag-5'>在</b><b class='flag-5'>Linux</b><b class='flag-5'>中</b>查看IP地址的方法

    Linux服务器上使用IAR Build Tools实现DevOps和CI/CD

    近些年来,随着嵌入式软件越来越复杂,DevOps和CI/CD也开始被引入到嵌入式软件开发,越来越多的自动化构建(Build)和测试都放到Linux服务器上来提升研发效率。为了帮助用户更好地
    的头像 发表于 07-25 10:22 976次阅读
    <b class='flag-5'>在</b><b class='flag-5'>Linux</b>服务器上使用IAR Build Tools实现DevOps和CI/CD

    esp32c3怎样保护flash代码不被拷贝?

    想知道这个c3怎样保护flash代码不被拷贝。这个内置flash代码有没有可能被拷贝出来,如果可以拷贝,应该
    发表于 06-19 06:32

    用aurix development studio调试代码时,导致调试中断的原因?

    当我用 aurix development studio 调试代码时,总是出现严重错误,导致调试中断,我不得不重启 studio,然后重新开始调试。 当我点击进入某些
    发表于 06-03 08:11

    ILLD库调试发送通信的代码时,发现代码在这两个地方循环,但没有读取发送的数据,为什么?

    ILLD 库调试发送通信的代码时,发现代码在这两个地方循环,但没有读取发送的数据。 请帮助分析一下原因?
    发表于 05-24 08:00

    使用 PREEMPT_RT Ubuntu 构建实时 Linux 内核

    的实时内核补丁来完成。简介我们曾介绍过Ubuntu22.04启用实时Linux内核有多简单,因为Canonical已将该内核列为一个选项。但要为默认Linux
    的头像 发表于 04-12 08:36 2536次阅读
    使用 PREEMPT_RT <b class='flag-5'>在</b> Ubuntu <b class='flag-5'>中</b>构建实时 <b class='flag-5'>Linux</b> 内核

    怎么才能实现eclipse+jlinkRAM调试代码

    使用eclipse+jlink下载到flash调试stm32g0已经可以,现在想把代码放到RAM调试,改了3个地方,但失败了,请问有研究
    发表于 03-08 07:20

    嵌入式Linux C语言编程程序调试与宏定义

    Linux使用gcc编译程序的时候,对于调试的语句还具有一些特殊的语法。gcc编译的过程,会生成一些宏,可以使用这些宏分别打印当前源文件的信息,主要内容是当前的文件、当前运行的函数
    发表于 03-01 11:41 1025次阅读

    如何使用linux下gdb来调试python程序

    如何使用linux下gdb来调试python程序  Linux下,可以使用GDB(GNU调试器)来调试
    的头像 发表于 01-31 10:41 2638次阅读

    linux用gdb调试遇到函数调用怎么办?

    linux用gdb调试遇到函数调用怎么办? Linux上使用GDB调试时,遇到函数调用是一个常见的情况。函数调用可能涉及到多个函数、多个文
    的头像 发表于 01-31 10:33 725次阅读

    电流探头电机调试的具体测试方法和操作步骤

    电流探头电机调试的重要性 电流探头电机调试的具体测试方法和操作步骤  电流探头
    的头像 发表于 01-08 15:40 631次阅读