完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
首先下载stlink的Linux的版本,下载地址。
然后解压到你所指定的路径下,参照其中的自述文件进行编译配置。如下:(笔者在此将对关键点进行标注) HOWTO == === 首先,您必须知道该软件支持几种板。 这些板使用芯片从 USB 转换为 JTAG 命令。该芯片 称为 stlink,有 2 个版本: 。 STLINKv1,存在于 STM32VL 探索套件中, 。 STLINKv2,出现在 STM32L 发现和更高版本的套件中。 使用了 2 个不同的传输层: 。 STLINKv1 通过 USB 使用 SCSI passthru 命令, 。 STLINKv2 使用原始 USB 命令。 共同需求(依赖环境) ~~~~~~~~~~~~~~~~~~~ 。 libu***-1.0 (你可能已经有了这个,但你需要 开发版才能编译) (这个工具只需要执行 sudo apt-get install libu***-dev && sudo apt-get install libu***-1.0-0-dev 这个命令分类。) 。pkg-config (这个工具一般Ubuntu都默认安装,注意变量PKG-CONFIG-PATH的设置) IF YOU HAVE AN STLINKv1 ~~~~~~~~~~~~~~~~~~~~~~~ STLINKv1 的 SCSI 仿真非常糟糕,所以最好的办法 是告诉您的操作系统完全忽略它。 选项(在插入之前执行其中一项) *) modprobe -r u***-storage && modprobe u***-storage quirks=483:3744:i 或 *)1。将“options u***-storage quirks=483:3744:i”添加到/etc/modprobe.conf *)2。modprobe -r u***-storage && modprobe u***-storage 或 *)1。cp stlink_v1.modprobe.conf /etc/modprobe.d *)2. modprobe -r u***-storage && modprobe u***-storage IF YOU HAVE AN STLINKv2(我们的开发板支持STLINKv2,所以这里不做配置) ~~~~~~~~~~~~~~~~~~~~ ~~~ 你准备好了 :) COMPILING(编译:下边3个清洗消毒) ~~~~~~~~~ 这个项目是由一个好心人转换成Autotools的。在 下面的步骤将构建项目给你。 $ 。/autogen.sh $ 。/configure $ make USING THE GDBSERVER(使用GDB调试服务) ~~~~~~~~~~~~~~~~~~~ 运行gdb服务器:(你不 权限设置正确就需要sudo ) (此时连上你的开发板,一般都要sudo) $ make && [sudo] 。/st-util 有几个选项: 。/st-util - 用法: -h, --help 打印此帮助 -vXX, --verbose=XX 指定特定的详细级别 (0..99) -v, --verbose 指定一般详细日志记录 -s X, --stlink_version=X 选择使用哪个版本的stlink,(默认为2) -1, --stlinkv1 Force stlink version 1 -p 4242, --listen_port=1234 设置gdb服务器监听端口。(默认端口:4242) -m, --multi 将 gdb 服务器设置为扩展模式。 st-util 将在断开连接后继续侦听连接。 -n, --no-reset 不要在连接时重置板。 要使用的 STLINKv2 设备可以在环境 变量 STLINK_DEVICE 中以 《USB_BUS》:《USB_ADDR》 格式指定。 然后,在你的项目目录中,像这样。..。.. (记住,你需要运行一个 _ARM_ gdb,而不是一个 x86 gdb) (重打开一个终端,找到你编译好的应用程序的目录,就是存在自己的文件地方) $ arm-none-eabi-gdb Fantasyblink.elf (开启调试) 。.. (gdb) tar extended-remote :4242 (连上 GDB 服务) 。.. (gdb) load Loading section .text, size 0x458 lma 0x8000000 加载部分 .data,大小 0x8 lma 0x8000458 起始地址 0x80001c1,加载大小 1120 传输速率:1 KB/秒,560 字节/写入。 (gdb) 。.. (gdb) 继续 玩得开心! 从 GDB 重置芯片 ============================ 如果需要,您可以使用 GDB 重置芯片。您将需要 在此会话中使用“target extended-remote”命令: (gdb) target extended-remote localhost:4242 Remote debugging using localhost:4242 0x080007a8 in _startup () (gdb) kill 杀死正在调试的程序?(y or n) y (gdb) run 启动程序:/home/whitequark/ST/apps/bally/firmware.elf 请记住,您可以缩短命令。`tar ext :4242‘ 对 GDB来说已经足够了。 设置 udev 规则 ==================== 为方便起见,您可以安装 udev 规则文件,49-stlinkv*.rules,位于 在存储库的根目录中。您需要将其复制到 /etc/udev/rules.d, 然后重新启动或执行 $ udevadm control --reload-rules $ udevadm trigger Udev 现在将创建一个 /dev/stlinkv2_XX 或 /dev/stlinkv1_XX 文件,适当的权限。 这是目前所有的设备,( 目前任何时候只支持每个版本的一个stlink ) 从SRAM运行程序(在RAM上运行) ================== ========== 如果需要,您可以直接从 SRAM 运行固件。就 在0x20000000链接,做 (gdb) loadfirmware.elf 就会加载,然后调整pc指向开始 代码,如果链接正确(即 ELF 具有正确的入口点)。 写入闪存(烧写Flash) ================ GDB 存根附带正确的内存映射,包括闪存区域。 如果您将可执行文件链接到 0x08000000,然后执行 (gdb) load firmware.elf, 那么它将被写入内存。 常见问题 === 问:我的断点根本不起作用或只起作用一次。 答:优化会导致严重的指令重新排序。例如, 如果你正在做类似`REG = 0x100;’ 在循环中,代码可以 分为两部分:将 0x100 加载到某个中间寄存器 并将该值移动到 REG。当你设置断点时,GDB 会 挂钩到第一条指令,如果有 足够的未使用寄存器,则可能只调用一次。根据我的经验,-O3 经常导致这种情况。 问:在某些时候,我使用 GDB 命令“next”,但它挂起。 A: 有时,当您尝试使用 GDB 的“next”命令跳过循环时, 它会使用一种相当低效的单步执行方式。 在这种情况下手动设置断点并执行“继续”。 当前已知的程序员和目标的工作组合 ========================================== ================== STLink v1(在 32VL Discovery 板上找到) 已知工作目标: * STM32F100xx(中等密度 VL) * STM32F103(根据 jpa- on # #stm32) 没有信息: * 其他一切! STLink v2(可在 32L 和 F4 探索板上找到) 已知工作目标: * STM32F0Discovery(STM32F0 探索板) * STM32F100xx(中密度 VL,如 32VL 探索板) * STM32L1xx(STM32L 探索板) * STM32F0STM7RC1、STM32F12F STM32L151RB、STM32F205RE 和 STM32F405RE 在定制板上 * STM32F303xx (STM32F3 Discovery board) * STM32F407 Discovery board (STM32F407带 LCD) * STM32F439VIT6(发现板重新安装 CPU) * STM32L151CB(定制板) * STM32L152RB(STM32L-Discovery 板,定制板) STLink v2-1(可在 Nucleo 板上找到) 已知工作目标: * STM32F401xx(STM32 Nucleo-F401RE 板) 请报告任何和所有已知的工作组合,以便我更新! 按照上边步骤编译配置,就可以调试和下载应用程序。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1561 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1501 浏览 1 评论
933 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
665 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1555 浏览 2 评论
1847浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
609浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
503浏览 3评论
507浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
488浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 14:37 , Processed in 0.494841 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号