
-
UID:1023450
-
- 注册时间2011-12-16
- 最后登录2022-04-17
- 在线时间2350小时
-
-
访问TA的空间加好友用道具
|
—
本帖被 香瑶 设置为精华,作者+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文件夹中,文件内容如下: - [url=u.php?uid=1170495]@echo[/url] off
- rem: Note %~dp0 get path of this batch file
- rem: Need to change drive if My Documents is on a drive other than C:
- set driverLetter=%~dp0
- set driverLetter=%driverLetter:~0,2%
- %driverLetter%
- cd %~dp0
- rem: the two line below are needed to fix path issues with incorrect slashes before the bin file name
- set str=%4
- set str=%str:/=\%
- :FLASH
- echo f >stm32.jlink
- echo loadfile %str%,%6 >>stm32.jlink
- echo r >>stm32.jlink
- echo g >>stm32.jlink
- echo qc >>stm32.jlink
- GOTO UPLOAD
- :RAM r13(sp) r15(pc)
- GOTO UPLOAD
- :NOR
- GOTO UPLOAD
- :OTHER
- rem and other here
- :UPLOAD
- rem "%ProgramFiles%\SEGGER\JLink_V614b\JLink.exe" -device STM32F103ZE -If SWD -Speed 4000 -CommanderScript stm32.jlink
- jlink\JLink.exe -device %5 -If SWD -Speed 4000 -CommanderScript stm32.jlink
- :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跳线。
|