目录

HC32L110 在 Ubuntu 下使用 J-Link 烧录

以下说明在 Ubuntu 下如何配置 HC32L110 的烧录环境, 当前使用的是 JLink

硬件准备

  • 开发板, 可以用

    • LilyGo 的 T-HC32 开发板, 这个开发板用的就是 CSP16封装的 HC32L110B6
    • 或者用泽耀的2.4G模块套件底板AS06-VTB07H. 套件9.9还送一片Si24R1. 这个底板最早使用的是STM8S, 现在改成 QFN20 的 HC32L110C4UA
    • 以上在某宝上都能买到
  • 烧录卡: 某宝上最常见的 J-Link OB

软件

  • JLink安装包, 从 Segger官网下载
  • HC32L110_IDE_Rev1.0.3.zip 需要其中的算法文件

安装 JLink

对下载的JLink安装文件, 直接通过dpkg安装

sudo -i JLink_Linux_V770a_x86_64.deb

其默认安装位置在 /opt/SEGGER/JLink_V770a, 并且会创建一个link路径 /opt/SEGGER/JLink 指向实际目录, 方便版本变更时升级无需修改路径.

添加 HC32L110 硬件

将 HC32L110_IDE_Rev1.0.3.zip 在Win10下安装pack后得到的两个flash算法文件复制到 /opt/SEGGER/JLink/Devices下, 结构为

/opt/SEGGER/JLink_V770a/Devices$ tree
.
├── Altera
│ └── Cyclone_V
│ └── Altera_Cyclone_V_QSPI.elf
...
├── HDSC
│ ├── HC32L110B4_C4.FLM
│ └── HC32L110B6_C6.FLM
├── Infineon

修改 /opt/SEGGER/JLink_V770a/JLinkDevices.xml, 和 Win10 下一样, 在</DataBase>之前增加设备信息

  <!--                 -->
<!-- Huada (HDSC) -->
<!-- -->
<Device>
<ChipInfo Vendor="HDSC" Name="HC32L110x4" WorkRAMAddr="0x20000000" WorkRAMS
ize="0x800" Core="JLINK_CORE_CORTEX_M0"/>
<FlashBankInfo Name="Flash_16K" BaseAddr="0x0" MaxSize="0x4000" Loader="Devi
ces/HDSC/HC32L110B4_C4.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/
>
</Device>
<Device>
<ChipInfo Vendor="HDSC" Name="HC32L110x6" WorkRAMAddr="0x20000000" WorkRAMS
ize="0x1000" Core="JLINK_CORE_CORTEX_M0"/>
<FlashBankInfo Name="Flash_32K" BaseAddr="0x0" MaxSize="0x8000" Loader="Devi
ces/HDSC/HC32L110B6_C6.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/
>
</Device>

运行 J-Flash 烧录

经过上面的配置, 就可以通过J-Link对HC32L110进行烧录了.

Ubuntu下开一个终端窗口直接运行 /opt/SEGGER/JLink/JFlashExe, 窗口和 Win10 下是一样的

在 Target 对话框中, Device 输入 HC32 就能看到刚才添加的设备, 如果是 HC32L110B6 就选择 HC32L110x6, 如果是 HC32L110C4 就选择 HC32L110x4

连接好开发板和JLink, 点击 Target -> Connect, 能看到连接信息

选择要烧录的hex文件, 点击 Target -> Production Programming 或者按 F7, 就会进行烧录

默认的烧录完成后不会立即运行, 需要配置一下, 在 Options -> Project Settings -> Production, 勾选 Start Application

将 JFlash 添加到桌面应用

每次开一个命令行运行 JFlashExe 还是很不方便的, 可以给它创建一个桌面应用, 这样就能直接从 win 键调出应用列表中运行了

sudo vi /usr/share/applications/jflash.desktop

添加如下内容

[Desktop Entry]
Version=1.0
Type=Application
Name=JFlash
Exec="/opt/SEGGER/JLink/JFlashExe"
Comment=J-Flash
Categories=Development;
Terminal=false

这是没有图标的, 如果需要图标, 可以自己造一个icon.png 放到 /opt/SEGGER/JLink/ 下, 然后添加一行

Icon=/opt/SEGGER/JLink/icon.png

命令行烧录

在开发环境用界面进行烧录比较繁琐, 一般会需要用命令行集成到Make或IDE环境, 这时候就会需要使用命令行的烧录方式

JLink提供了 JLinkExe 这个命令行工具, 对于 HC32L110 可以用下面的命令和jlink脚本进行烧录

/opt/SEGGER/JLink/JLinkExe -device HC32L110x4 -if swd -speed 4000 -CommanderScript download.jlink

编写download.jlink文件

erase
loadfile gpio_inout.hex
reset
exit

因为erase已经对MCU reset + halt, 在 loadfile 写入时可以不 reset + halt, 第二行可以改成

loadfile gpio_inout.hex 0 noreset

命令说明

  • Erase Erase flash (range) of selected device, 加 noreset 表示不需要重启
  • LoadFile Load data file into target memory, 可以写入 .hex, .bin, .elf 文件, 如果指定地址, 只对 bin 文件有效, 其他格式, 地址参数会被忽略
  • SaveBin Save target memory range into binary file
  • VerifyBin Verfy if specified bin file is at the specified target memory location
  • Go 简写为G, Start CPU if halted
  • Reset 简写为R Reset CPU
  • Exit 退出

详细的命令, 可以在 Segger 官网WIKI上查看 https://wiki.segger.com/J-Link_Commander

执行记录为

SEGGER J-Link Commander V7.70a (Compiled Aug 10 2022 16:32:44)
DLL version V7.70a, compiled Aug 10 2022 16:32:29 J-Link Command File read successfully.
Processing script file...
J-Link>erase
J-Link connection not established yet but required for command.
Connecting to J-Link via USB...O.K.
Firmware: J-Link ARM-OB STM32 compiled Aug 22 2012 19:52:04
Hardware version: V7.00
J-Link uptime (since boot): N/A (Not supported by this model)
S/N: 20090928
License(s): RDI,FlashDL,FlashBP,JFlash,GDB
VTref=3.300V
Target connection not established yet but required for command.
Device "HC32L110X4" selected. Connecting to target via SWD
Found SW-DP with ID 0x0BC11477
DPv0 detected
CoreSight SoC-400 or earlier
Scanning AP map to find all available APs
AP[1]: Stopped AP scan as end of AP map has been reached
AP[0]: AHB-AP (IDR: 0x04770031)
Iterating through AP map to find AHB-AP to use
AP[0]: Core found
AP[0]: AHB-AP ROM base: 0xE00FF000
CPUID register: 0x410CC601. Implementer code: 0x41 (ARM)
Found Cortex-M0 r0p1, Little endian.
FPUnit: 4 code (BP) slots and 0 literal slots
CoreSight components:
ROMTbl[0] @ E00FF000
[0][0]: E000E000 CID B105E00D PID 000BB008 SCS
[0][1]: E0001000 CID B105E00D PID 000BB00A DWT
[0][2]: E0002000 CID B105E00D PID 000BB00B FPB
Cortex-M0 identified.
No address range specified, 'Erase Chip' will be executed
'erase': Performing implicit reset & halt of MCU.
Reset: Halt core after reset via DEMCR.VC_CORERESET.
Reset: Reset device via AIRCR.SYSRESETREQ.
Erasing device...
J-Link: Flash download: Total time needed: 0.159s (Prepare: 0.072s, Compare: 0.000s, Erase: 0.065s, Program: 0.000s, Verify: 0.000s, Restore: 0.022s)
Erasing done.
J-Link>loadfile gpio_inout.hex
'loadfile': Performing implicit reset & halt of MCU.
Reset: Halt core after reset via DEMCR.VC_CORERESET.
Reset: Reset device via AIRCR.SYSRESETREQ.
Downloading file [gpio_inout.hex]...
J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (3584 bytes)
J-Link: Flash download: Total: 0.595s (Prepare: 0.034s, Compare: 0.098s, Erase: 0.128s, Program: 0.257s, Verify: 0.053s, Restore: 0.023s)
J-Link: Flash download: Program speed: 13 KB/s
O.K.
J-Link>reset
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
Reset: Halt core after reset via DEMCR.VC_CORERESET.
Reset: Reset device via AIRCR.SYSRESETREQ.
J-Link>exit Script processing completed.

结束

以上是使用JLink的烧录方式, 使用 DAP-Link 的烧录方式未测试成功, 待有进展后更新

HC32L110 在 Ubuntu 下使用 J-Link 烧录的更多相关文章

  1. ubuntu下的烧录工具

    Flash Image Tool1.0 为了ubuntu下能够方便地烧录版本,我开发了Flash Image Tool.现在服务器(192.167.100.225)上有一份它的拷贝share/Tool ...

  2. ubuntu下postgreSQL安装配置

    一.安装并配置,并设置远程登陆的用户名和密码 1.安装postgreSQL sudo apt-get update sudo apt-get install postgresql-9.4 在Ubunt ...

  3. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  4. Ubuntu下sqlite3的安装及使用

    Sqlite是一款轻型的数据库,实现了多数SQL-92标准,包括事务(原子性,一致性,隔离性和持久性 ACID),触发器与多数复杂查询.对于一个移动手持设备的应用开发者,Sqlite是居家旅行必备数据 ...

  5. Ubuntu 下安装 使用 QQ

    在Ubuntu下使用QQ显得高端大气了.界面也清爽多了. 一: 首先得下一个WineQQ,不用找了地址在这里: http://pan.baidu.com/share/link?shareid=3303 ...

  6. LAMP开发之环境搭建(2014.12.7在ubuntu下)

    Ubuntu下搭建LAMP环境 前言:学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我搭建的是LAMP环境,即Linux.Apache ...

  7. Ubuntu下安装eclipse及PyDev插件注意事项

    一.安装eclipse前一定要先安装jdk 1.到http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880 ...

  8. c/c++使用VS2013连接MySQL与ubuntu下c链接mysql

    vs连接数据库事实上就是将mysql数据库.h头文件接口.lib链接文件和dll运行文件增加到项目中.以下是配置怎样增加. 转于http://www.cnblogs.com/justinzhang/a ...

  9. 在ubuntu下设置eclipse开发STM32等嵌入式设备

    之前为了能够让ROS与底层能够顺利通讯,我采用可开源开发板arduino ,因为arduino有ROS的库,能够按照ROS wiki上所给的教程就可以顺利的开发,但由于arduino的局限性,我觉得是 ...

随机推荐

  1. 碎碎念软件研发02:敏捷之Scrum

    一.什么是 Scrum 1.1 Scrum 定义 Scrum 是敏捷开发方法之一,它使用比较广泛. 敏捷的其它开发方法还有 XP(极限编程).FDD(特性驱动开发).Crystal(水晶方法).TDD ...

  2. Bean Validator

    Bean Validator 关于Jakarta EE 2018年03月, Oracle 决定把 JavaEE 移交给开源组织 Eclipse 基金会,并且不再使用Java EE这个名称. 因此jav ...

  3. 2021.10.19 CSP 模拟赛 总结

    T1 题意: \(n\) 个人摘苹果,跳起高度为 \(a_i\),苹果高度为 \(h_i\),高度小的先摘,摘了就没了 直接排序+双指针,复杂度 \(O(n+m)\) T2 题意:要轰炸一个有向图的所 ...

  4. Python数据分析--Numpy常用函数介绍(9)--Numpy中几中常见的图形

    在NumPy中,所有的标准三角函数如sin.cos.tan等均有对应的通用函数. 一.利萨茹曲线 (Lissajous curve)利萨茹曲线是一种很有趣的使用三角函数的方式(示波器上显示出利萨茹曲线 ...

  5. 字符串的操作、 Math类

    字符串的操作 我们先来定义一个字符串,如果来进行过去长度,获取内容. 我们来写一个小测试! public static void main(String[] args) { String aa = & ...

  6. 一个ES设置操作引发的“血案”

    背景说明 ES版本 7.1.4 在ES生产环境中增加字段,一直提示Setting index.mapper.dynamic was removed after version 6.0.0错误.但是我只 ...

  7. 【主流技术】ElasticSearch 在 Spring 项目中的实践

    前言 ElasticSearch简称es,是一个开源的高扩展的分布式全文检索引擎. 它可以近乎实时的存储.检索数据,其扩展性很好,ElasticSearch是企业级应用中较为常见的技术. 下面和大家分 ...

  8. Spring框架系列(3) - 深入浅出Spring核心之控制反转(IOC)

    在Spring基础 - Spring简单例子引入Spring的核心中向你展示了IoC的基础含义,同时以此发散了一些IoC相关知识点; 本节将在此基础上进一步解读IOC的含义以及IOC的使用方式.@pd ...

  9. linux安装源码包指定安装目录

    当下载完一个源码包并且解压后 文件夹下会有一个重要的文件configure configure 文件是一个可执行的脚本文件,它将检查目标系统的配置和可用功能,比如一些检查依赖或者启用禁用一些模块,它有 ...

  10. 论文阅读 Exploring Temporal Information for Dynamic Network Embedding

    10 Exploring Temporal Information for Dynamic Network Embedding 5 link:https://scholar.google.com.sg ...