![]() 亮灯实验结果AG32VF407启动与探究0. 申请理由
0.0 感谢在此,衷心感谢电子发烧友平台提供的免费试用名额,让我有机会体验和评估AG32VF407开发板。这不仅为我的嵌入式开发学习提供了宝贵的实践机会,也可以让我深入理解了该开发板的功能和特性,同时,也给我们学校的教学研究提供了帮助。在申请、沟通过程中,我深感电子发烧友平台的积极支持和促进技术交流的努力,期待未来能有更多合作与交流的机会。 0.1 开发板概述基于国产异构双核(RISC-V+FPGA)处理器,AG32VF407系列32位微控制器相当于主频248MHZMCU+2KLES(FPGA)。内部通过AHB总线,把MCU和FPGA链接在一起,速度比传统SPI快很多倍,可单独运行也可交互运行。MCU初始与STM32管脚兼容,但可通过配置文件全部灵活重定义主频达248MHZ。 ![]() 加法实验亮灯二进制展示 |
1. 环境搭建 1.1 软件安装 1.1.1 VSCode的安装 功能 :Visual Studio Code(VSCode)是一款由微软开发的轻量级代码编辑器,支持多种编程语言的开发,并提供强大的扩展功能。它不仅可以用于编写代码,还可以进行调试、版本控制和代码格式化等。 特点 : 跨平台 :VSCode可在Windows、macOS和Linux上运行,便于开发者在不同操作系统中工作。 扩展性 :通过安装扩展,用户可以增加支持更多语言、工具和功能。例如,可以通过安装PlatformIO插件来提升嵌入式开发的体验。 集成终端 :VSCode内置终端,方便开发者在编辑代码的同时运行命令。 1.1.2 PlatformIO插件的安装 功能 :PlatformIO是一个开源的嵌入式开发生态,提供了一个跨平台的开发环境,支持多种开发板和框架。通过PlatformIO插件,用户可以直接在VSCode中进行项目管理、编译和上传代码。 特点 : 库管理 :PlatformIO内置库管理工具,简化了依赖库的安装和更新。 多框架支持 :支持Arduino、ESP-IDF、Zephyr等多种框架,用户可以根据项目需求选择合适的框架。 自动化构建 :平台提供自动化构建和上传功能,极大地提升了工作效率。 |
1. 环境搭建 1.1 软件安装 1.1.1 VSCode的安装 功能 :Visual Studio Code(VSCode)是一款由微软开发的轻量级代码编辑器,支持多种编程语言的开发,并提供强大的扩展功能。它不仅可以用于编写代码,还可以进行调试、版本控制和代码格式化等。 特点 : 跨平台 :VSCode可在Windows、macOS和Linux上运行,便于开发者在不同操作系统中工作。 扩展性 :通过安装扩展,用户可以增加支持更多语言、工具和功能。例如,可以通过安装PlatformIO插件来提升嵌入式开发的体验。 集成终端 :VSCode内置终端,方便开发者在编辑代码的同时运行命令。 1.1.2 PlatformIO插件的安装 功能 :PlatformIO是一个开源的嵌入式开发生态,提供了一个跨平台的开发环境,支持多种开发板和框架。通过PlatformIO插件,用户可以直接在VSCode中进行项目管理、编译和上传代码。 特点 : 库管理 :PlatformIO内置库管理工具,简化了依赖库的安装和更新。 多框架支持 :支持Arduino、ESP-IDF、Zephyr等多种框架,用户可以根据项目需求选择合适的框架。 自动化构建 :平台提供自动化构建和上传功能,极大地提升了工作效率。 |
1.1.3 Python 3.10的安装 - 功能 :Python是一种高级编程语言,广泛应用于科学计算、数据分析、机器学习等领域。在嵌入式开发中,Python常用于编写自动化脚本、工具和测试程序。 特点 : - 易学易用 :Python语法简洁,适合快速开发和原型设计。 - 丰富的库支持 :拥有丰富的第三方库,如NumPy、Pandas、Matplotlib等,能够满足各种不同的开发需求。 跨平台 :Python支持在各种操作系统上运行,便于开发者使用。 |
1.1.4 AgRV PlatformIO SDK的安装 - 功能 :AgRV PlatformIO SDK是基于PlatformIO的专门为特定硬件平台(如AG32VF407)定制的SDK,提供与该硬件平台相关的驱动、库和示例代码,帮助开发者快速上手。 - 特点 : 硬件抽象 :提供对底层硬件的抽象,简化用户的开发流程,让开发者专注于应用逻辑的实现。 示例代码 :包含丰富的示例代码和项目模板,可以帮助用户快速了解和使用特定功能。 社区支持 :通过PlatformIO的社区和文档,用户可以获得及时的帮助和更新支持。 |
1.3 代码编写编译 1.3.1 代码编写 功能说明 - #include "example.h":引入头文件,包含示例程序的函数声明和硬件接口定义。 - printf("Testing gpio\\\\n");:向控制台输出调试信息,便于观察程序执行状态。 - while (1):进入无限循环,使程序持续运行,通常用于实时监控或控制。 - UTIL_IdleUs(100e3);:调用一个延时函数,使程序在每次切换GPIO状态之前暂停一定时间,避免过于频繁的状态切换。 - GPIO_Toggle(GPIO4, EXT_GPIO_BITS);:切换GPIO4的状态,实现LED闪烁。 |
1.3.2 代码编译 执行pio run -e release -v 命令后,编译流程如下: 环境配置加载 :PlatformIO 会读取 platformio.ini 文件,加载指定的 release 环境配置,包括库依赖、框架选项和编译器设置。 依赖解析 :PlatformIO 检查项目依赖的库和组件,下载缺失的库并更新已有的库。 编译文件 :编译器逐个处理源代码文件,生成目标文件。对于每个文件,PlatformIO 会在输出中显示相关信息,可以查看编译进度。 链接过程 :所有目标文件会被链接为一个单一的可执行文件。此过程会根据环境配置进行优化,以提高最终的运行效率。 编译结果输出 :编译完成后,运行PIO的Create Batch生成Bin文件。 |
2. 程序烧录 2.1 bin文件生成 “Create Batch”按钮是PlatformIO插件中的一个功能,允许开发者通过简单的点击操作来批量创建以及管理构建任务。在创建批处理后,VSCode将为项目生成多个构建配置的二进制文件,便于进行后续的上传和测试。 |
2.3 对下载器进行烧录 在一些嵌入式开发场景中,使用下载器(如AGM下载器)进行程序烧录是常见的方式。离线烧录可以实现快速批量编程,尤其适用于量产的情况。此次试用,官方提供了AGM专用下载器,简化了烧录的过程。 2.3.1 连接下载器 对下载器进行上电,并检查指示灯正常亮起闪烁,等待下载。 |
2.3 对下载器进行烧录 在一些嵌入式开发场景中,使用下载器(如AGM下载器)进行程序烧录是常见的方式。离线烧录可以实现快速批量编程,尤其适用于量产的情况。此次试用,官方提供了AGM专用下载器,便于烧录。 2.3.1 将程序上传到AGM下载器中 准备工作 : AGM下载器上电,LED灯闪烁。 使用AGM下载器软件 : 打开AGM下载器的配套Downloader. 在软件中找到之前生成的.bin 文件,选择。 开始烧录 : 点击Update Offline File。把目标程序加载到AGM下载器的内存中。 完成后,确认没有错误,结束上传。 |
2.4 离线烧录 2.4.1 连接AGM专用下载器与AG32VF407开发板 连接硬件 : 将AGM下载器与AG32VF407开发板连接。确保连接稳固,接口没有松动。 设置开发板 : 在烧录之前,将开发板上电,确保启动完成。 确认开发板电源正常,并且状态指示灯工作正常。 启动离线烧录 : 按下AGM下载器上SW_IO按钮,将会向开发板发送所加载的程序,并进行烧录。 验证程序 : 烧录完成后,AGM下载器会自动进行程序的校验,以确保写入的程序与源文件一致。 当第一个LED灯常亮时,校验通过,烧录完成,断开AGM下载器与AG32VF407的连接。 |
4.RISCV相关部分探索 4.1 RISCV初步介绍 RISC-V的指令集设计遵循了简化指令集计算(RISC)的原则,旨在提供高效、易于实现的指令。以下是RISC-V指令集的一些主要特点和组成部分: 4.1.1. 基本指令集 RISC-V的基本指令集包括一组整数指令,通常被称为RV32I(对于32位架构)和RV64I(对于64位架构)。这些基本指令涵盖了常见的操作,例如: - 数据传送:LOAD和STORE指令,用于在寄存器和内存之间传递数据。 - 算术运算:加法、减法、乘法、除法等指令。 - 逻辑运算:AND、OR、XOR等。 - 控制流:条件跳转、无条件跳转和函数调用。 4.1.2. 扩展指令集 RISC-V支持多种扩展,以满足特定应用的需求。这些扩展可以选择性地实现,常见的扩展包括: M扩展(乘法与除法):提供乘法和除法指令。 A扩展(原子操作):包含原子读取-修改-写入操作,适用于多线程编程。 F扩展(单精度浮点运算):支持单精度浮点数运算。 D扩展(双精度浮点运算):支持双精度浮点数运算。 C扩展(压缩指令):提供16位的压缩指令,以减少代码占用空间。 4.1.3. 自定义指令 由于RISC-V是开放的,任何人都可以定义和实现自己的扩展指令。这使得特定行业或应用可以根据需求定制指令集。 4.1.4. 地址模式 RISC-V支持多种地址模式,包括立即寻址和基址寻址,这些模式可以灵活地访问内存。 4.1.5. 寄存器 RISC-V提供了32个通用寄存器(在64位架构中为64个),用于存储数据和地址。它还定义了一些特定功能的寄存器,如程序计数器(PC)和异常处理寄存器。 4.1.6. 目标准则 RISC-V设计的指令集采用固定长度的指令格式(主要为32位),同时支持可选的16位和其他长度的指令,以增强性能和灵活性。 |
4.2 测试RISC-V基础整数指令加法 4.2.1 实验设计 由于该开发板不方便可视化程序结果,但我们可以利用开发板的LED灯。利用管脚映射使用LED的闪烁来显示输出结果。可见开发板有4盏LED灯,可以令4盏LED灯代表4位二进制数,每次对二进制数加一,从而亮起对应结果的LED灯。例如,当计算结果为15时,4盏LED灯同时亮起;当计算结果为7时,LED的显示为“灭亮亮亮”对应“0111”。 |
4.2.2 代码实现 在实现过程中,使用GPIO_SetHigh(GPIO_TypeDef *gpio, uint8_t bits)函数来实现对高电平的设置,使用GPIO_SetLow(GPIO_TypeDef *gpio, uint8_t bits)函数来实现对低电平的设置。实际测试发现LED灯的控制码为5位,最低位对于LED控制为虚位。例如:11110为同时选中4盏灯,10010代表选中第1、4盏灯。代码实现如下图。 |
扫一扫,分享给好友
电子发烧友网
电子发烧友开云(中国)官方