【先楫HPM6750测评】HPM SDK开发环境搭建和Hello World
<h1>【先楫HPM6750测评】HPM SDK开发环境搭建和Hello World</h1><p>上篇帖子中,我们介绍了如何下载HPM6750开发所需的资料,包括开发板资料和<strong>SEGGER Embedded Studio</strong>安装包,以及如何申请Embedded Studio激活码。本篇将会介绍如何安装<strong>SEGGER Embedded Studio</strong>,如何使用HPM SDK脚本创建<strong>SEGGER Embedded Studio</strong>项目,以及如何在<strong>SEGGER Embedded Studio</strong>中对项目进行编译和调试。</p>
<h2>安装Embedded Studio和FTDI驱动</h2>
<h3>安装<strong>SEGGER Embedded Studio</strong></h3>
<p>首先是<strong>SEGGER Embedded Studio</strong>的安装。双击打开Setup_EmbeddedStudio_RISCV_v622a_win_x64.exe文件,这个没什么难度,也基本上不会有问题,一路Next就好了。</p>
<p></p>
<p> </p>
<h3>激活SEGGER Embedded Studio</h3>
<p>上篇中我们介绍了,通过在hpmicro专属的激活网页填入个人信息之后,将会收到激活码邮件。本节将会介绍,如何使用邮件中的激活码,激活Embedded Studio。</p>
<p>打开Embedded Studio,通过菜单Tools→License Manager打开授权管理器界面:</p>
<p></p>
<p>点击“Activate SEGGER Embedded Studio”,在弹出的激活界面中粘贴邮件中的激活码:</p>
<p></p>
<p>点“Install License”即可,关闭Embedded Studio,下次打开时即为已激活状态。</p>
<p> </p>
<h3>解压HPM SDK</h3>
<p>上一篇帖子中,我们通过百度网盘下载的开发板资料中包含有sdk_env_0.9.0.zip文件:</p>
<p></p>
<p>这里,我们首先将这个文件解压开,放到一个路径没有空格和中文的目录,例如我这里解压到了<code>D:\\BaiduNetdiskDownload</code>目录,解压后可以看到里面有如下目录和文件:</p>
<p></p>
<h3>安装FTDI驱动</h3>
<p>在开始使用SEGGER Embedded Studio或者RT-Thread Studio对开发板进行设备调试之前,都需要确保本地PC上安装FTDI驱动。本节介绍,如何安装FTDI驱动。</p>
<p>sdk_env_v0.9.0.zip压缩包中,包含了FTDI驱动文件,具体路径为:</p>
<p></p>
<p>双击打开FTDI_InstallDriver.exe后,直接点击“下一步”,安装完成将会出现如下界面:</p>
<p></p>
<h2>创建Hello World项目并进行编译和调试</h2>
<h3>使用generate_project命令创建项目</h3>
<p>双击start_cmd.cmd脚本文件,将会打开一个命令行窗口,并显示如下内容:</p>
<p></p>
<p>这个脚本打开的命令行会设置一些环境变量,包括将generate_project.cmd所在目录加到PATH环境变量中。因此,我们可以在这个命令行窗口中使用generate_project命令。</p>
<p>接下来,查看通过generate_project的-h选项,我们查看generate_project命令支持哪些参数:</p>
<p></p>
<p>跳转到<em>hpm_sdk\samples\hello_world</em>目录后,执行<em>generate_project -b hpm6750evkmini -t flash_xip</em>命令创建hello_world项目:</p>
<p></p>
<p>打开hello_world目录后,可以看到新生成的目录hpm6750evkmini_build:</p>
<p></p>
<p>该目录中包含一个segger_embedded_studio目录,segger_embedded_studio目录中包含hello_world.emProject文件。该文件即为<strong>SEGGER Embedded Studio</strong>项目文件,双击即可使用<strong>SEGGER Embedded Studio</strong>打开hello_world项目:</p>
<p></p>
<h3>使用Embedded Studio编译项目</h3>
<p>使用Embedded Studio的Build→Build hello_world菜单,或者F7快捷键,即可编译项目:</p>
<p></p>
<p>编译成功后,将会看看到如下界面:</p>
<p></p>
<p>其中的,XPI0即为开发板上的8M闪存芯片的使用情况。</p>
<p>PS:</p>
<ol>
<li>因为我们generat_project使用的-t选项值是flash_xip,因此这里使用了片外闪存;如果选用debug,则会下载到片内RAM;</li>
<li>HPM6750有2MB片内SRAM,但是没有片内Flash;开发板搭载了一个8MB的闪存芯片,一个16MB的DRAM芯片;</li>
</ol>
<h3>使用Embedded Studio进行调试</h3>
<p>调试前行的准备工作:</p>
<ol>
<li>
<p>连接开发板到电脑</p>
<ul>
<li>
<p>**需要注意:**开发板上有两个USB-Type C口,需要连接标号“PWR-DEBUG”的</p>
</li>
<li>
<p>连接成功,且FTDI驱动安装成功后,将会看到如下两个端口出现:<br />
</p>
</li>
</ul>
</li>
<li>
<p>将BOOT拨码调到适当的位置</p>
<ul>
<li>**需要注意:**经过测试发现,拨码的设置和generate_project的-t参数有一定关系;</li>
<li>-t选项为带xip的,则拨码必须为00,否则无法正常调试;</li>
<li>-t选项为debug或release,拨码最好为10或者01,否则复位后启动闪存程序会对当前调试造成干扰;</li>
</ul>
</li>
</ol>
<p>准备工作完成后,开始使用Embedded Studio进行调试:<br />
</p>
<p>可以看到Embedded Studio的调试界面的功能还是非常齐全的,左边一列是反汇编窗口,中间是源码窗口、输出窗口、调用栈窗口,右边是局部变量窗口和寄存器窗口。</p>
<p>没错,可以单步调试(Step Into、Step Over、Step Out)、断点调试。Embedded Studio整体界面风格和Code Blocks比较相似,相比于基于Eclipse开发的IDE,整体体验上非常流畅、丝滑。</p>
<h3>使用Embedded Studio查看串口输出</h3>
<p>首选需要在Segger Embedded Studio 中配置串口参数。</p>
<p>通过Tools→Terminal Emulator→Properties菜单,打开串口配置界面:<br />
</p>
<p>先修改Baud Rate为115200,然后修改Port为你实际的串口号(和设备管理器中看到的对应),再点“OK”确认。</p>
<p>设置完成后,通过Tools→Terminal Emulator→Terminal Emulator菜单打开中断模拟器子窗口,点击“Connect”按钮,连接串口设备。继续调试程序,将会看到hello world输出:<br />
</p>
<h2>坑点总结</h2>
<p>本篇的大部分内容,参考了开发板用户手册。经实操验证发现,手册上的大体操作流程时没什么问题的,但仍热存在容易出现问题的地方。总体来说,比较容易掉坑是——BOOT拨码设置和generate_project的-t选项。</p>
<p>实际上,我们在创建项目前最好需要了解如下信息:</p>
<ol>
<li>BOOT拨码对应的启动模式,参考开发板使用手册:</li>
</ol>
<table>
<thead>
<tr>
<th>拨码状态</th>
<th>启动模式</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>00</td>
<td>XPI NOR启动</td>
<td>从连接在XPI0/1 上的串行NOR</td>
</tr>
<tr>
<td>FLASH 启动</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>01</td>
<td>串行启动UART0/USB-HID</td>
<td>从UART0/USB0 上启动</td>
</tr>
<tr>
<td>10</td>
<td>在系统编程(ISP)</td>
<td>从UART0/USB0 上烧写固件,OTP</td>
</tr>
<tr>
<td>11</td>
<td>保留模式</td>
<td>保留模式</td>
</tr>
</tbody>
</table>
<ol>
<li>
<p>generate_project的-t选项选择不同的值,编译后,内存使用统计图的显示也会不同(-t本身就是用于指定不同的存储设备配置的),经本人实验,发现-t选项的不同值的作用如下:</p>
<table>
<thead>
<tr>
<th>调试版</th>
<th>发布版(更小)</th>
<th>下载目标位置</th>
<th>程序运行内存</th>
</tr>
</thead>
<tbody>
<tr>
<td>debug</td>
<td>release</td>
<td>片内SRAM</td>
<td>片内SRAM</td>
</tr>
<tr>
<td>flash_xip</td>
<td>flash_xip_release</td>
<td>FLASH芯片</td>
<td>片内SRAM</td>
</tr>
<tr>
<td>flash_sdram_xip</td>
<td>flash_sdram_xip_release</td>
<td>FLASH芯片</td>
<td>DRAM芯片</td>
</tr>
</tbody>
</table>
</li>
<li>
<p>generate_project -t选项和BOOT拨码的对应关系</p>
</li>
</ol>
建好环境,事成了一半,加油,期待精彩作品。我其实也建好环境,可惜没中奖,恭喜您! <p>开发环境的建立应该进一步进行简化,提高易用性</p>
hustjtj0806 发表于 2022-10-30 19:54
开发环境的建立应该进一步进行简化,提高易用性
<p>硬件上一根USB线实现供电、烧录、调试,体验比较好。软件上,开发环境搭建的步骤确实有点多,有点烦。</p>
页:
[1]