AG32在VSCode下的使用入门(六)

浏览: 作者:LiLy 来源: 时间:2024-10-16 分类:软件使用手册
AG32 使用入门(六)

微信图片_20240723155136

脱机烧录

脱机烧录前需要先编译出最终 bin(这个 bin 是 code 和 ve 整合后的 bin)。

方式如下:

c

编译完成后,可以在工程路径下找到生成的 xxxx_release_batch.bin。

然后,运行 PC 下载工具(该工具在 SDK 安装路径下):

下载方式可选 4 种

18


19


挑选对应的方式。

然后点左边“Query Device ID”按钮,如果连接正常的话,会显示正常 ID:

(4 种方式,连接正常的话,都能获取到设备 ID)

(注意,如果选串口方式,要 boot1 接地, boot0 接高




20

然后,点右下角“download”按钮下载程序。

如果成功,可以看到成功信息;

如果失败,会有红色报错信息。



更多:芯片 flash 的大小与两个 bin:

关于芯片 flash 大小:

不管所选型号的 flash 是多大,请注意最后 100K 是留给 fpga/cpld 使用的。

如果使用的芯片是 256K 的 flash,那么就是 156K 程序+100K fpga,用户程序不能超过 156K。如果超过 156K 编译是可以通过的,但烧录后会冲掉 ve 配置部分。

ve 配置被冲掉后,程序运行会表现出各种异常(通常是系统时钟初始化失败)。如果程序使用的空间较大,fpga 又刚好比较小,可以调整这个界限的值。调整方法如下:

board_logic.compress = true //(可选)对 fpga 部分进行压缩,更省空间

board_upload.logic_address = 0x80034000 //根据实际情况调整该边界值flash 的大小是在 agrv2k_103.json 中定义的。

flash 起始地址是 0x80000000,ram 是 0x20000000。

关于 2 个 bin 的说明:

其他常用 mcu(如 ST、GD),工程编译后只有一个 bin。

而 AG32 工程则会编译出来 2 个 bin。一个是代码的 bin,一个是逻辑的 bin。称之为 code.bin 和 logic.bin。

AG32 芯片运行时,需要两个 bin 全部烧录下去。

code.bin 容易理解,是软件代码的 bin,等价于 st 编译后的那种 bin。

Logic.bin 是多出来的一个 bin,这个 bin 是什么呢?

这个 bin 其实是 fpga/cpld 部分编译出来的 bin。在上边第三章节里描述 VE 配置时,说到 gpio/spi/iic 等这些外设的引脚需要在 VE 文件里配置后,才能最终使用。里边提到的“烧录 VE”,其实就是编译并烧录这个 logic.bin。

这个 bin 并不是在 mcu 里运行的,而是在 cpld 模块里运行的。

拓展下:AG32 的芯片并不止是传统意义的一颗 mcu,而是 传统意义的 mcu 芯

+cpld 芯。而两部分各需一个 bin。于是整颗芯片需要 2 个 bin。

如果只使用 mcu(没接触过 cpld),不理解上述描述也没关系。只要知道,相比传统 mcu,AG32 需多做一个步骤:配置 VE 引脚并烧录 VE。

这里的两个 bin,在生产时烧录两次岂不是很不方便?上边第九章脱机烧录,描述的过程,就是把两个 bin 二合一,合并成一个 bin 的。




更多:了解 platformIO


这里描述下 platformIO 是什么。

在环境安装时,安装完 VSCode 后,首先下载的插件就是 platformIO IDE。

它是 VScode 的一款第三方插件,这款插件本身就是一套 IDE 开发环境。

访问 platformIO 的官网就知道,它是一套开放的 Iot 集成环境平台,允许芯片厂商通过配置和对接,方便地搭建自己芯片的开发环境。

也就是说,VSCode + platformIO + 芯片厂商配置 = 该芯片的 IDE 编译环境。

在嵌入式开发中,大家比较熟悉的 IDE 会有 Keil、IAR。而上边构建出来的 IDE 环境就是类似 Keil、IAR 的一整套可开发仿真的环境。只是这套环境比 Keil 和 IAR 更强大。

既然 AG32 芯片是基于 platformIO 平台的开发环境,那么项目中的配置就是围绕platformIO 展开的,上边章节描述的 platformio.ini 配置(配置编译、烧录、仿真等的配置项)就是用在这里的。

扩展信息:

查看 platformIO 的官网:platformIO 的定位是新一代的 IoT 集成开发环境。它是基于VSCode 的一款插件。VSCode 这款强大的文本编辑器辅以 PlatformIO 插件就可以化身为一款强大的 MCU 开发环境,支持绝大多数流行的单片机平台。

我们知道,嵌入式 Iot 开发中,最让人不舒服的就是不同厂家的芯片要使用不同的集成开发环境。例如:STM32 要使用 Keil 或 IAR,Arduino 默认使用自家 Arduino 开发环境,ESP32 要使用 linux 环境或者在 windows 下部署 eclipse 再用交叉编译。那么,有没有一个IDE 可以大一统起来,集成大多数常用的芯片和模块的开发任务,只要配置完成之后就一劳永逸的呢?没错,那就是 PlatformIO。PlatformIO 试图整合起目前所有主流的硬件平台:TI/ST/EspressIf/Intel/Silicon/… 等,并且提供更便利的接口和更友好的交互,以提高开发效率。

关于 platformIO,有兴趣可以去官网获取更多的信息:https://platformio.org/

前边说到,每一款芯片在 PlatformIO 中需要配置,按照 PlatformIO 的格式配置后,才能被正常使用(platformio.ini 有大量的标准的控制选项,可进入官网查看)。

官方配置:https://docs.platformio.org/en/latest/projectconf/index.html#projectconf

在实际使用中,除了官方标准配置(编译、烧录)外,芯片方也会在这个开放平台上自定义一些自己特有的配置项。




小结

本章节主要展示和示范AG32使用的脱机烧录,flash 的大小与两个 bin, 更多:了解 platformio 插件,如需要了解更多信息,或者订购芯片,欢迎联系海振远科技。