ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

开始烧录:

< 1 > 在一个终端下执行:

openocd -f openocd.cfg

出现:

Open On-Chip Debugger 0.7.0 (2013-05-15-17:28)  
    Licensed under GNU GPL v2  
    For bug reports, read  
        http://openocd.sourceforge.net/doc/doxygen/bugs.html  
    Info : only one transport option; autoselect 'jtag'  
    adapter speed: 500 kHz  
    adapter_nsrst_delay: 100  
    jtag_ntrst_delay: 100  
    cortex_m3 reset_config sysresetreq  
    Info : clock speed 500 kHz  
    Info : JTAG tap: stm32f1x.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)  
    Info : JTAG tap: stm32f1x.bs tap/device found: 0x06414041 (mfg: 0x020, part: 0x6414, ver: 0x0)  
    Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints  

没有提示出错,就表示连接上STM32了 .如果出现出错,就在开发板上按下RESET 键复位,查看BOOT0和BOOT1有没有设置出错.

< 2 > 在另一个终端下,输入:

telnet localhost 4444

依次输入:

reset halt  
    flash probe 0  
    stm32f1x mass_erase 0  
    flash write_bank 0 /you_stm32_project_dir/main.bin 0  
    reset run  
``
程序就烧好了,按下reset键,就开始运行了.

 要输入这么多命令太麻烦了,写个perl脚本使它一步运行.

首先安装perl-telnet

sudo apt-get install libnet-telnet-perl


  在工程目录下新建do_flash.pl文件

#!/usr/bin/perl
use Net::Telnet;

$numArgs = $#ARGV + 1;  
if($numArgs != 1){  
   die( "Usage ./do_flash.pl [main.bin] \n");  
}  

$file = $ARGV[0];  
$ip = "127.0.0.1";  
$port = 4444;  
$telnet = new Net::Telnet (  
   Port => $port,  
   Timeout=>10,  
   Errmode=>'die',  
   Prompt =>'/>/');  

$telnet->open($ip);  

print $telnet->cmd('reset halt');  
print $telnet->cmd('flash probe 0');  
print $telnet->cmd('stm32f1x mass_erase 0');  
print $telnet->cmd('flash write_bank 0 '.$file.' 0');  
print $telnet->cmd('reset halt');  
print $telnet->cmd('exit');  

print "\n";  


   在根目录下的Makefile文件里面加入这段语句:

flash:all
./do_flash.pl $(TOP)/main.bin

“`

这样只要,执行make flash就可以直接运行第二步了,方便简介.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值