硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1324|回复: 7
收起左侧

[玩转DAPLINK] H7-TOOL测试凌欧LKS32MC03x的骚操作玩法支持情况,不接硬件复位引脚,SWD上电100ms复用其他功能调试下载测试(已测试没问题)

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
发表于 2024-10-23 12:22:40 | 显示全部楼层 |阅读模式
【背景】

这个骚操作,骚就骚在SWD接口引脚复用其他功能了,板子还没有把硬件复位引脚接出来,硬件复位引脚是专治这种场景的。

虽然客户的程序搞了个上电后延迟100ms才复用,但JLINK,ULINK,STLINK,DAPLINK在MDK下都已经无法控制这个芯片下载,但使用第3方的烧录可以下载,且客户近期不方便提供他的测试程序让我们测试。

【解决办法】

1、测试代码, 使用芯片LKS32MC034DF6Q8B

swd.7z (311.11 KB, 下载次数: 2)

2、配置SWD 转 GPIO
[C] 纯文本查看 复制代码
// src file: main.c
#include "basic.h"
#include "hardware_init.h"
#include "hardware_config.h"
#include "lks32mc03x.h"
#include "rtt_debug.h"
#include "delay.h"

/* USER CODE BEGIN Includes */
void SWD_to_GPIO(void) {
    // 等待芯片上电复位后的100ms
        delay_ms(200);

    // 向SYS_IO_CFG寄存器的第6位写入0,开启复用功能
        SYS_WR_PROTECT = 0x7a83;
        SYS_IO_CFG &= ~BIT6;      /*SWD复用普通GPIO*/
        SYS_WR_PROTECT = 0;
        
    // 配置P1.8和P1.9为GPIO
    /* USER CODE END Main */
    Common_GPIOInit();
}
/* USER CODE END Includes */

/* USER CODE BEGIN Defines */

/* USER CODE END Defines */


int main()
{
    __disable_irq();
    Clock_Init();
    delay_init(MAIN_CLOCK);
    __enable_irq();
        
        SWD_to_GPIO();
        
    while(1)
    {
        /* USER CODE BEGIN MainWhile */
        
        /* USER CODE END MainWhile */
        PRINTF("run main.while()...\r\n");
        delay_ms(1000);
    }
}


/*************** (C) COPYRIGHT LINKO SEMICONDUCTOR *****END OF FILE**************/



3、配置后,确实如官方文件所说,任何LINK都无法使用MDK和IAR下载了,即使接上硬件复位并且配置使用硬件复位引脚也无法解决,比如jlink下载,效果如下:

212.png

211.png

4、使用我们H7-TOOL测试

复用后,TOOL的默认配置会提示芯片不存在

7777.png

(1)解决办法1:接硬件复位,并且这里选择硬件复位,可以反复烧录,烧录的程序是100ms复位的固件

1.png

动态效果

IMHEX2.gif

(2)解决办法2:不接硬件复位,这里选择断上电复位,也可以解决

2.png

动态效果

IMHEX2.gif

硬件接线实物图:

23.png



评分

参与人数 1金币 +20 收起 理由
gua + 20 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
 楼主| 发表于 2024-10-23 15:04:30 | 显示全部楼层
H7-TOOL脱机烧录解除读写保护和各种遇到情况解决办法汇总,含SWD接口锁,低功耗和看门狗(2023-08-01)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=118986
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
 楼主| 发表于 2024-10-24 01:48:42 | 显示全部楼层
LKS32的SWD接口复用问题说明

2356.png

23.png

回复

使用道具 举报

82

主题

503

回帖

749

积分

金牌会员

积分
749
发表于 2024-10-25 09:49:26 | 显示全部楼层
如果复位脚引出来,是不是可以在复位的状态下,通过swd接口连接芯片再操作?
程序里如果复位后有个100ms的延时再将swd配置成IO,应该是swd接口可以在复位的100ms内连上的啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
 楼主| 发表于 2024-10-25 09:53:54 | 显示全部楼层
tangqianfeng 发表于 2024-10-25 09:49
如果复位脚引出来,是不是可以在复位的状态下,通过swd接口连接芯片再操作?
程序里如果复位后有个100ms的 ...

是的,通过硬件复位可以控制硬件复位后,立即访问。没有硬件复位,没法控制在100ms内访问。

还有解决方法就是帖子里面提到的断电复位,这个也是可以的,上电复位后,控制在100ms内立即访问控制,很多家的芯片这么解决都没问题。我的LKS32板子还没到,到了准备写个程序测试下。
回复

使用道具 举报

82

主题

503

回帖

749

积分

金牌会员

积分
749
发表于 2024-10-25 10:02:33 | 显示全部楼层
eric2013 发表于 2024-10-25 09:53
是的,通过硬件复位可以控制硬件复位后,立即访问。没有硬件复位,没法控制在100ms内访问。

还有解决 ...

只要留有让SWD访问的时间,应该是可以连上的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
 楼主| 发表于 2024-10-25 10:10:36 | 显示全部楼层
tangqianfeng 发表于 2024-10-25 10:02
只要留有让SWD访问的时间,应该是可以连上的

是的,肯定是没问题的,只是预留时间长短的问题。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
 楼主| 发表于 2024-10-27 00:08:14 | 显示全部楼层
测试完毕,TOOL完全没问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-1 15:17 , Processed in 0.258933 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表