<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Ubuntu上AVR單片機開發(fā)環(huán)境設(shè)置

          Ubuntu上AVR單片機開發(fā)環(huán)境設(shè)置

          作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
          操作系統(tǒng):ubuntu 13.04(32 bits)

          AVR單片機:ATmega644pa

          本文引用地址:http://www.ex-cimer.com/article/201611/318405.htm

          首先要明確,我們在Ubuntu(或者Linux)上開發(fā)AVR單片機應(yīng)包括兩大部分:

          程序編譯、程序下載。

          環(huán)境布置:

          程序編譯使用Linux下的編譯器——avr-gcc,通過以下指令安裝:
          sudo apt-get install gcc-avr   #這是avr的交叉編譯器

          sudo apt-get install avr-libc  #這是編譯要用的庫

          另外還有一個工具,目前感覺沒什么用,先記下來
          sudo apt-get install gdb-avr   #gdb反向調(diào)試工具,反匯編

          程序的下載使用avrdude,安裝命令:

          sudo apt-get install avrdude



          程序的編譯和下載步驟

          第一步:編譯程序

          avr-gcc -mmcu=atmega644p -Wall -Os -o main.o main.c

          第二步:到HEX文件里面


          avr-objcopy -j .text -j .data -O ihex  main.o main.hex

          至于這一步到底做了什么,我也只知道大概是把 .o 文件中的特定部分(例如 .text 和 .data段)

          到 .hex 文件中。

          詳見 avr-objcopy --help 和 readelf -a main.o

          第三步:下載程序到單片機


          sudo avrdude -p m644p -c usbasp -e -U flash:w:main.hex


          其中
          -p 表示選擇芯片,例如m644p
          -c 選擇下載器,例如usbasp
          -e 表示燒錄前清空
          -U 表示存儲器操作類型,使用方式:-U memtype:op:filename[:format]

          詳見 man avrdude

          另外,有時我們還需要讀取或者寫入單片機的熔絲位(熔絲高位:hfuse;熔絲低位:lfuse;熔絲擴展位:efuse)

          可以通過以下命令得到

          讀取熔絲高位

          sudo avrdude -p m644p -c usbasp -e -U hfuse:r:hfuse.hex:h

          寫熔絲位:

          sudo avrdude -p m644p -c usbasp -e -U hfuse:w:0xde:m


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();