烧录:SN 序列号 ================================= 如需要在 HT32 中烧录设定自定义的序列号,主要分为两个部分 - 使用 **HOPE3200** 软件 搭配 烧录器 **e-writer32** ,烧录 SN 序列号; - 程序中通过读取 MCU FLASH 中 SN 序列号 的地址,来获得 SN 序列号; 烧录 SN 序列号 ----------------------------------- HOPE3200 + e-writer32 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. 使用 **HOPE3200** 软件 搭配 烧录器 **e-writer32** ,使用 ``智能烧录`` 模式来设定烧录 SN 序列号。 .. figure:: ../_static/image/Tools/Writer_SN/image001.png :width: 80% :align: center :alt: HOPE3200 智能烧录设定 HOPE3200 智能烧录设定 2. 在 ``智能烧录`` 的流程中,增加 ``用户自定订数据`` 流程,并选择 ``设置`` 。 .. figure:: ../_static/image/Tools/Writer_SN/image002.png :width: 80% :align: center :alt: HOPE3200 用户自定订数据 HOPE3200 用户自定订数据 3. 设置 ``用户自定订数据`` ,其中 ``起始地址`` 需要和程序定义的 :ref:`SN 存储地址 ` 对应。 .. figure:: ../_static/image/Tools/Writer_SN/image003.png :width: 80% :align: center :alt: 用户自定订数据设置 用户自定订数据设置 4. 将当前的 ``智能烧录`` 配置,设置到当前的烧录器 **e-writer32** 。 .. figure:: ../_static/image/Tools/Writer_SN/image004.png :width: 80% :align: center :alt: 设置烧录器 设置烧录器 5. 点击 烧录器 **e-writer32** 上的 **红色按钮** 进行智能烧录,在LCD上可显示当前的烧录情况。 .. figure:: ../_static/image/Tools/Writer_SN/image005.png :width: 60% :align: center :alt: 智能烧录 智能烧录 HT32_ICP_tool + e-Link32Pro ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. 使用 **HT32_ICP_tool** 软件 搭配 **e-Link32Pro** ,烧录 SN 序列号。 2. 打开 ``Options`` 选项,勾选 ``Write Software Serial Number``,使能 ``Software Serial Number(SN)`` , 并设置 SN 序列号,其中 ``起始地址`` 需要和程序定义的 :ref:`SN 存储地址 ` 对应。 .. figure:: ../_static/image/Tools/Writer_SN/image006.png :width: 80% :align: center :alt: HT32_ICP_tool 设定 HT32_ICP_tool 设定 批量烧录 SN 序列号 ----------------------------------- 1. 用户自行批量烧录用全自动/半自动烧录台机 搭配 设定好的烧录器 **e-writer32** 。 2. 合泰代理商提供代烧录服务,详细请跟购买IC的代理商沟通。 程序定义和读取 SN 序列号 ------------------------------- .. _SN 存储地址: 1. 在用户程序中,读取 FLASH 中,SN 存储地址数据,可存储 HEX 、 ASCII ... 读取 **FLASH address : 0x0000 0400** 中存放的 32bit 数据的 SN 序列号 : .. code-block:: C #define SN_ADDR (0x400) #define GET_SN() (*(vu32*)SN_ADDR) const u32 SN_Table __attribute__ ((at(SN_ADDR))) = { 0xFFFFFFFF }; u32 SN_Value; int main(void) { SN_Value = GET_SN(); // Read SN Value while (1) ; }