查看: 432|回复: 6

[原创] MCX先手尝鲜--7.一键启动ISP模式

[复制链接]
  • TA的每日心情
    慵懒
    2024-2-8 09:39
  • 签到天数: 217 天

    [LV.7]常住居民III

    92

    主题

    1114

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7686

    热心会员

    最后登录
    2024-4-29
    发表于 2024-1-20 14:21:04 | 显示全部楼层 |阅读模式
    本帖最后由 az158 于 2024-1-20 14:20 编辑

    在先手尝鲜第4篇(MCX先手尝鲜--4.USB烧录)与第5篇(MCX先手尝鲜--5.USB烧录脚本),我们解决了ISP烧录的问题,但是,进入ISP模式还是太麻烦了,而且在焊接完排母后,按键附近的空间比较小,手指难以施展。

    今天咱们就尝试通过软件的方式进入ISP模式,最终实现按一下SW3按键,就进入ISP烧录。
    这次代码在MCX先手尝鲜--6.按键输入的基础上进行修改。

    从例程包(SDK_2_13_1_MCX-N9XX-BRK\devices\MCXN947\drivers\romapi)里面,复制下面两个文件夹到工程里面。
    微信截图_20240120141103.png

    配置头文件目录
    微信截图_20240120141141.png

    加入c文件
    微信截图_20240120141154.png

    编写中断代码
    1. void BOARD_SW3_IRQ_HANDLER(void)
    2. {
    3.     GPIO_GpioClearInterruptFlags(BOARD_SW3_GPIO, 1U << BOARD_SW3_GPIO_PIN);
    4.    
    5.     user_app_boot_invoke_option_t arg = {.option = {.B = {
    6.                                                         .tag            = 0xEBu,
    7.                                                         .mode           = 1,
    8.                                                         .boot_interface = 0,
    9.                                                     }}};
    10.     bootloader_user_entry(&arg);
    11.     SDK_ISR_EXIT_BARRIER;
    12. }
    复制代码
    这次代码核心很简单,就是按键下降沿中断,然后调用启动ISP的代码。

    我又根据我的需求改写了一下烧录bat文件
    1. @set "VID=0x1FC9"
    2. @set "PID=0x0021"
    3. @set "HEX_NAME=out\project.hex"

    4. @chcp 65001
    5. blhost.exe -u 0x1fc9,0x014f -- get-property 1
    6. @echo.
    7. @if %ERRORLEVEL% neq 0 (
    8.         echo 未发现芯片
    9.         goto error
    10. ) else (
    11.         echo 连接成功
    12. )
    13. blhost.exe -u 0x1fc9,0x014f -- flash-erase-all
    14. @echo.
    15. @if %ERRORLEVEL% neq 0 (
    16.         echo 擦除失败
    17.         goto error
    18. ) else (
    19.         echo 擦除成功
    20. )
    21. blhost.exe -u 0x1fc9,0x014f -- flash-image %HEX_NAME%
    22. @echo.
    23. @if %ERRORLEVEL% neq 0 (
    24.         echo 烧录失败
    25.         goto error
    26. ) else (
    27.         echo 烧录成功
    28. )
    29. blhost.exe -u 0x1fc9,0x014f -- reset
    30. @echo.
    31. @if %ERRORLEVEL% neq 0 (
    32.         echo 复位失败
    33.         goto error
    34. ) else (
    35.         echo 复位成功
    36. )
    37. goto success

    38. :error
    39. @pause
    40. exit

    41. :success
    42. exit
    复制代码
    现在烧录成功的话,将自动退出cmd界面,失败则停留在错误的那一步。

    代码如下,没有1.27间距烧写器的小伙伴一定要试试,一键启动ISP,双击自动烧录的感觉实在太爽了。
    7.一键ISP.zip (1.05 MB, 下载次数: 3)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2024-2-5 12:06
  • 签到天数: 627 天

    [LV.9]以坛为家II

    94

    主题

    1628

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4429

    热心会员

    最后登录
    2024-2-5
    发表于 2024-1-22 17:18:26 | 显示全部楼层
    好样的  不错 手头没有1.27的JTAG线 确实比较麻烦  进入ISP模式 我是先按下SW3 然后在插上USB线就好了
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-8 09:39
  • 签到天数: 217 天

    [LV.7]常住居民III

    92

    主题

    1114

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7686

    热心会员

    最后登录
    2024-4-29
     楼主| 发表于 2024-1-22 19:11:54 | 显示全部楼层
    胤幻1988 发表于 2024-1-22 17:18
    好样的  不错 手头没有1.27的JTAG线 确实比较麻烦  进入ISP模式 我是先按下SW3 然后在插上USB线就好了 ...

    哈哈,可以试试一“线”开发,连串口都省了
    MCX先手尝鲜--10.小结与一“线”开发
    https://www.nxpic.org.cn/module/ ... amp;fromuid=3469866
    (出处: 恩智浦技术社区)
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 684 天

    [LV.9]以坛为家II

    12

    主题

    3044

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3683
    最后登录
    2024-4-29
    发表于 2024-3-9 15:21:51 | 显示全部楼层
    我用的是Win10 家用版,使用SW3和SW2,按照楼主所述操作,设备管理器总是不停扫描,无法识别为USB-HID设备。
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    5 天前
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2024-4-29
    发表于 2024-4-17 10:24:45 | 显示全部楼层
    为什么我移植的时候不加下面这句,就没法一键ISP呢?
    CLOCK_EnableClock(kCLOCK_Gpio0);
    按键中断跟时钟有什么关系呢
    力求进步
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-8 09:39
  • 签到天数: 217 天

    [LV.7]常住居民III

    92

    主题

    1114

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7686

    热心会员

    最后登录
    2024-4-29
     楼主| 发表于 2024-4-17 11:22:31 | 显示全部楼层
    eefocus_3965801 发表于 2024-4-17 10:24
    为什么我移植的时候不加下面这句,就没法一键ISP呢?
    CLOCK_EnableClock(kCLOCK_Gpio0);
    按键中断跟时钟有 ...

    不开对应的时钟,对应的外设无法运行,这里就是开启的按键的GPIO使用的时钟
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    5 天前
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    2

    主题

    16

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2024-4-29
    发表于 2024-4-17 13:55:22 | 显示全部楼层
    az158 发表于 2024-4-17 11:22
    不开对应的时钟,对应的外设无法运行,这里就是开启的按键的GPIO使用的时钟 ...

    明白了,感谢解答!
    力求进步
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 21:04 , Processed in 0.131432 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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