切换到宽版
  • 4281阅读
  • 20回复

[ARM]用J-Link 在arduino 中一键烧写程序(首创) [复制链接]

上一主题 下一主题
离线huaweiwx
 

发帖
1040
M币
7091
专家
39
粉丝
169
— 本帖被 香瑶 设置为精华,作者+3000M币+5专家(2017-04-12) —
序:由于一元pos中的gd32f103ret6可以烧个jlink用用,使得jlink一下子就用得多起来了,而且缺省jlink功能比stlink不是强大一点点,便想解决 jlink 在arduino 中的一键烧写程序的问题。

在我的板子:迟交的作业:组合一个带板载调试器的STM32F407VET6开发板 做好后,由于在arduino(arm)中还没有集成jlink烧写程序的功能,网上也没有找到arduino中直接烧写的方法,只能通过导出执行代码,再用jlink烧写,这样显得有点麻烦;以前也没有仔细研究jlink的相关软件,事实上jlink的软件编写得比stlink要好多了,既支持窗口运行,也支持命令行运行,而且很多参数可以自行控制,如果是仅烧写程序,则控制是非常方便的,有命令行工具,就可以集成到arduino中。以下是我的添加过程:
    
以上一个帖子的stm32F407vet6板子组合了一个jlink(ob)v2.1为例:

一、在hardware\arm\Maple_STM32F4\board.txt中开头,有烧写工具的选择菜单项:

menu.device_variant=Variant
menu.osc_speed=OSC Speed(Hz)
menu.cpu_speed=CPU Speed(Hz)
menu.upload_method=Uploadmethod


二、 在对板子 YL138_F407VET6 配置段中增加jlink的相关选项如下:

############################ YL138_F407VET6#############################
F407VE.name=F407V
F407VE.build.core=maple
F407VE.build.board=YL138VET6
F407VE.build.variant=F407V

F407VE.build.mcu=cortex-m4
F407VE.build.extra_flags=-DMCU_STM32F407VE -mthumb-DSTM32_HIGH_DENSITY -DSTM32F4

F407VE.build.ldscript=ld/F407xE.ld
F407VE.build.variant_system_lib=lib_f407.a
F407VE.build.vect=0x8000000L
F407VE.build.uploadadr=0x8000000L
F407VE.build.density=STM32_HIGH_DENSITY

F407VE.menu.device_variant.YL138=VET6_YL138(512K 128+64Kram)
F407VE.menu.device_variant.YL138.build.error_led_port=GPIOA
F407VE.menu.device_variant.YL138.build.error_led_pin=6
F407VE.menu.device_variant.YL138.build.board=YL138VET6

F407VE.menu.device_variant.V11=VET6_V11  (512K 128+64Kram)
F407VE.menu.device_variant.V11.build.error_led_port=GPIOA
F407VE.menu.device_variant.V11.build.error_led_pin=6
F407VE.menu.device_variant.V11.build.board=V11VET6

F407VE.menu.cpu_speed.f168=168M
F407VE.menu.cpu_speed.f168.build.f_cpu=168000000L
F407VE.menu.cpu_speed.f216=216M (overdrive)
F407VE.menu.cpu_speed.f216.build.f_cpu=216000000L

F407VE.menu.osc_speed.hse8=HSE(8M)
F407VE.menu.osc_speed.hse8.build.f_osc=8000000L

F407VE.upload.ram.maximum_size=128800
F407VE.upload.flash.maximum_size=524288
F407VE.upload.maximum_size=524288

F407VE.menu.upload_method.jLinkMethod=JLink
F407VE.menu.upload_method.jLinkMethod.upload.tool=jlink_upload
F407VE.menu.upload_method.jLinkMethod.upload.protocol=jlink
F407VE.menu.upload_method.jLinkMethod.upload.device=STM32F407VE

F407VE.menu.upload_method.STLINK=Stink
F407VE.menu.upload_method.STLINK.upload.tool=stlink_upload
F407VE.menu.upload_method.STLINK.upload.protocol=stlink


其中jlinkMethod.upload.device=STM32F407VE 是jlink烧写需要知道的设备名称;

通过增加这个选项,在arduino的工具菜单中(下图1 )就能出现Jlink的选项了。



三、但现在还无法烧写程序,因为系统还不知道如何启动jlink

这部分在hardware\arm\Maple_STM32F4\platform.txt 中定义,我们在这个文件的最后增加以下定义:#jLINK/V21 uploadtools.jlink_upload.cmd=jlink_uploadtools.jlink_upload.cmd.windows=jlink_upload.battools.jlink_upload.path.windows={runtime.ide.path}/hardware/tools/wintools.jlink_upload.path.macosx={runtime.ide.path}/hardware/tools/macosxtools.jlink_upload.path.linux={runtime.ide.path}/hardware/tools/linux tools.jlink_upload.upload.params.verbose=-dtools.jlink_upload.upload.params.quiet=tools.jlink_upload.upload.pattern="{path}/{cmd}"{serial.port.file} {upload.altID} {upload.usbID}"{build.path}/{build.project_name}.hex" {upload.device}{build.uploadadr} {build.vect}

四、在这里又出现了一个文件:jlink_upload.bat,系统调用这个文件来烧写程序的,我们需要自己建一个,放在hardware\win文件夹中,文件内容如下:
  1. [url=u.php?uid=1170495]@echo[/url]       off
  2. rem: Note %~dp0 get path of this batch file
  3. rem: Need to change drive if My Documents is on a drive other than C:
  4. set driverLetter=%~dp0
  5. set driverLetter=%driverLetter:~0,2%
  6. %driverLetter%
  7. cd %~dp0
  8. rem: the two line below are needed to fix path issues with incorrect slashes before the bin file name
  9. set str=%4
  10. set str=%str:/=\%
  11. :FLASH
  12. echo f >stm32.jlink
  13. echo loadfile %str%,%6 >>stm32.jlink
  14. echo r >>stm32.jlink
  15. echo g >>stm32.jlink
  16. echo qc >>stm32.jlink
  17. GOTO UPLOAD
  18. :RAM r13(sp) r15(pc)
  19. GOTO UPLOAD
  20. :NOR
  21. GOTO UPLOAD
  22. :OTHER
  23. rem and other here
  24. :UPLOAD
  25. rem "%ProgramFiles%\SEGGER\JLink_V614b\JLink.exe"  -device STM32F103ZE -If SWD -Speed 4000 -CommanderScript  stm32.jlink
  26. jlink\JLink.exe                                    -device %5 -If SWD -Speed 4000 -CommanderScript  stm32.jlink
  27. :EXIT


该批处理文件首先根据系统传送过来的参数,自动建立一个脚本文件 stm32.jlink最后调用 jlink\jlink.exe 来完成任务。烧写显示信息1:


续:


五、 jlink工具可以直接调用 %ProgramFiles%\SEGGER\JLink_V614b\JLink.exe,也可以将 jlink.exe 和jlinkARM.dll拷贝过来,我是采用的后一种:在hardware\win\下建立了一个jlink的文件夹,并把上述两个文件拷贝过来。至此,定制工作全部完成。

用jlink烧写,比起串口烧写,速度快不是一点点,一个几十k的bin文件,几乎是妙传,更方便的是用jlink下载,是不需要改变boot0跳线。
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共8条打赏M币+121专家+1
jpdd521 M币 +30 老哥帖子,写得真厉害。 04-15
wjhwpp M币 +15 謝謝分享 04-13
weizaisifang M币 +15 謝謝分享 04-12
林师灏 M币 +15 最近想跑虚拟机了 04-12
cao57508 M币 +8 这个思路先进的不是一点二点。 04-12
hongo M币 +8 優秀文章 04-12
2545889167 专家 +1 长知识了,感谢分享 04-11
2545889167 M币 +30 长知识了,感谢分享 04-11
关键词: jlinkarduino
在线2545889167

发帖
11177
M币
31846
专家
138
粉丝
4370
只看该作者 1楼 发表于: 04-11
长知识了,感谢分享
便携式的jlink做了一堆了


本帖最近打赏记录:共2条打赏M币+23
weizaisifang M币 +15 謝謝分享 04-12
huaweiwx M币 +8 熱心會員 04-11
离线huaweiwx

发帖
1040
M币
7091
专家
39
粉丝
169
只看该作者 2楼 发表于: 04-11
回 2545889167 的帖子
2545889167:长知识了,感谢分享
便携式的jlink做了一堆了
[图片]
 (2017-04-11 16:30) 回 2545889167 的帖子

上面那个c8t6 可以烧个stlink(ob),多个模拟盘,直接把bin文件投放即可。也蛮好玩的。
离线huaweiwx

发帖
1040
M币
7091
专家
39
粉丝
169
只看该作者 3楼 发表于: 04-11
补个图:组合了Jlink(ob)的stm32f407vet6 开发板:


本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
在线2545889167

发帖
11177
M币
31846
专家
138
粉丝
4370
只看该作者 4楼 发表于: 04-11
回 huaweiwx 的帖子
huaweiwx:上面那个c8t6 可以烧个stlink(ob),多个模拟盘,直接把bin文件投放即可。也蛮好玩的。 (2017-04-11 16:55) 回 huaweiwx 的帖子

那个试过了,确实操作简便
离线fsss007

发帖
671
M币
6597
专家
2
粉丝
45
只看该作者 5楼 发表于: 04-11
感谢分享,只可惜一直没玩arduino
本帖最近打赏记录:共1条打赏M币+8
huaweiwx M币 +8 以后一起玩 04-12
在线cao57508

发帖
1830
M币
3232
专家
7
粉丝
61
只看该作者 6楼 发表于: 04-12
这个思路先进的不是一点二点。
本帖最近打赏记录:共1条打赏M币+8
huaweiwx M币 +8 板上没有带usb转串口,干脆板载个debug,也基本没多化钱。 04-12
离线林师灏

发帖
236
M币
3333
专家
6
粉丝
4
只看该作者 7楼 发表于: 04-12
最近想跑虚拟机了

发帖
9085
M币
568
专家
12
粉丝
128
只看该作者 8楼 发表于: 04-12
楼上的玩单片机的老师和师傅啊!!!学习!!!
离线zbtv520

发帖
383
M币
47
专家
0
粉丝
3
只看该作者 9楼 发表于: 04-12
快速回复
限80 字节
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
 
上一个 下一个