查看Arduino bootloader 的烧写的源代码
←
Arduino bootloader 的烧写
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
=== FTDI FT232RL === 准备一个 USB 转串口板,此处我们使用一个 FT232RL USB 转串口板,此物某宝有售:[http://s.click.taobao.com/bPo0xTx FT232RL USB 转串口板] [[文件:Ft232.jpg]] 日本一哥们的实现如右:[http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html] (需 FuckGFW)他给 avrdude 添加了一些 patch 使其能使用 FT232RL 的 bitbang 模式来实现烧写 鉴于 FuckGFW 的麻烦,将其配套的可执行文件和源码包放在:[[文件:Avrdude-serjtag.rar]] (目前支持 win32 平台) <b>引脚连线</b> *RI ---> RESET *DSR ---> SCK *CTS ---> MISO *DCD ---> MOSI 特别地,Arduino Duemilanove 这个老版本的板子,在 FT232RL 的片子边上预留了一个 4 针的接口(原理图中标为 X3),4 个针脚分别编号为 1, 2, 3, 4,对应将 FT232RL 的 CTS, DSR, DCD, RI 引出: [[文件:Duemilanove-ft232r-con.jpg]] [[文件:Duemilanove-ft232r-isp-pin.JPG]] 则可将其直接连到 ICSP 的针脚上,直接用 Duemilanove 的 FT232RL 烧写 bootloader: *4 (RI) --> RESET (RST) *3 (DCD) --> MOSI (11) *2 (DSR) --> SCK (13) *1 (CTS) --> MISO (12) [[文件:Duemilanove-ft232r-isp.JPG ]] <b>烧写步骤</b> * 将 FT232R 小板上的 6 针对应连上目标板 * USB 接入 PC * avrdude 命令: <source lang=bash> $ cd /path/to/avrdude-sertag $ avrdude -v avrdude.exe: Version 5.3.1, compiled on Jun 20 2007 at 00:30:58 ... ... $ avrdude -p m328p -c ft232r -P ft0 -B 115200 avrdude: BitBang OK avrdude: pin assign miso 3 sck 5 mosi 6 reset 7 avrdude: drain OK ft245r: bitclk 76800 -> ft baud 38400 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e950f avrdude: safemode: Fuses OK avrdude.exe done. Thank you. 如果连接失败,avrdude 会打印出: avrdude: ft245r_program_enable: failed avrdude: initialization failed, rc=-1 # 进入命令行模式 $ avrdude -p m328p -c ft232r -P ft0 -B 115200 -t avrdude: BitBang OK avrdude: pin assign miso 3 sck 5 mosi 6 reset 7 avrdude: drain OK ft245r: bitclk 76800 -> ft baud 38400 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e950f avrdude> # dump 出待烧写单片机当前熔丝位 avrdude> d hfuse >>> d hfuse 0000 d9 avrdude> d lfuse >>> d lfuse 0000 62 avrdude> d efuse >>> d efuse 0000 07 avrdude> d lock >>> d lock 0000 3f # help 可列出支持的命令 avrdude> help Valid commands: dump : dump memory : dump <memtype> <addr> <N-Bytes> read : alias for dump write : write memory erase : perform a chip erase sig : display device signature byte part : display the current part infromation send : send a raw command : send <b1> <b2> <b3> <b4> ...... # 将 328p 的熔丝位设置为 hfuse = 0xda, lfuse = 0xff, efuse = 0x05 $ avrdude -p m328p -c ft232r -P ft0 -B 115200 -Uhfuse:w:0xda:m -Ulfuse:w:0xff:m -Uefuse:w:0x05:m # 先将 bootloader 区解锁 lock = 0x3f,写入 bootloader 文件,再将 bootloader 区加锁 lock = 0x0f $ ./avrdude -p m328p -c ft232r -Pft0 -b 115200 -e -u -Ulock:w:0x3f:m -U flash:w:ATmegaBOOT_168_atmega328.hex -Ulock:w:0x0F:m avrdude.exe: BitBang OK avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7 avrdude.exe: drain OK ft245r: bitclk 230400 -> ft baud 115200 avrdude.exe: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude.exe: Device signature = 0x1e950f avrdude.exe: erasing chip ft245r: bitclk 230400 -> ft baud 115200 avrdude.exe: reading input file "0x3f" avrdude.exe: writing lock (1 bytes): Writing | ################################################## | 100% 0.02s avrdude.exe: 1 bytes of lock written avrdude.exe: verifying lock memory against 0x3f: avrdude.exe: load data lock data from input file 0x3f: avrdude.exe: input file 0x3f contains 1 bytes avrdude.exe: reading on-chip lock data: Reading | ################################################## | 100% 0.03s avrdude.exe: verifying ... avrdude.exe: 1 bytes of lock verified avrdude.exe: reading input file "ATmegaBOOT_168_atmega328.hex" avrdude.exe: input file ATmegaBOOT_168_atmega328.hex auto detected as Intel Hex avrdude.exe: writing flash (32670 bytes): Writing | ################################################## | 100% 17.27s avrdude.exe: 32670 bytes of flash written avrdude.exe: verifying flash memory against ATmegaBOOT_168_atmega328.hex: avrdude.exe: load data flash data from input file ATmegaBOOT_168_atmega328.hex: avrdude.exe: input file ATmegaBOOT_168_atmega328.hex auto detected as Intel Hex avrdude.exe: input file ATmegaBOOT_168_atmega328.hex contains 32670 bytes avrdude.exe: reading on-chip flash data: Reading | ################################################## | 100% 7.97s avrdude.exe: verifying ... avrdude.exe: 32670 bytes of flash verified avrdude.exe: reading input file "0x0F" avrdude.exe: writing lock (1 bytes): Writing | ################################################## | 100% 0.05s avrdude.exe: 1 bytes of lock written avrdude.exe: verifying lock memory against 0x0F: avrdude.exe: load data lock data from input file 0x0F: avrdude.exe: input file 0x0F contains 1 bytes avrdude.exe: reading on-chip lock data: Reading | ################################################## | 100% 0.02s avrdude.exe: verifying ... avrdude.exe: 1 bytes of lock verified avrdude.exe done. Thank you. </source> 至此即可完成 bootloader 的烧写 avrdude 官方从 5.11 起开始支持 bitbang 模式,试了一下,烧写的速度奇慢,不建议使用 <br><br>
返回到
Arduino bootloader 的烧写
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面