【祖传点灯】安信可Ai-M61-32S + Clion环境配置 + 点自己的灯

[复制链接]
查看948 | 回复6 | 2024-5-13 17:58:03 | 显示全部楼层 |阅读模式

本帖最后由 盛夏i 于 2024-6-29 00:08 编辑

本帖最后由 盛夏i 于 2024-5-13 17:56 编辑

【祖传点灯】安信可Ai-M61-32S + Clion环境配置 + 点自己的灯

前言

在五一假期的时候就收到了M61开发板,在尝试了vscode、ubuntu和Clion各种搭建环境之后,也算是把该踩不该踩的坑全踩了一遍。。。但是,对比了三种环境,还是觉得Clion使用起来比较舒服,因此这篇文章主要记录一下在Windows系统下搭建Clion环境以及部分坑。(搭建环境时候遇到的报错都没有记录,只能想起来什么写什么了)。

在这里列出搭建环境时的参考帖子:

http://bbs.aithinker.com/forum.php?mod=viewthread&tid=282&_dsign=7fea3002

https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=329&highlight=Clion

https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44045&highlight=Clion

一、搭建开发环境

1.安装git

git工具是必要的,拉取代码和管理代码的功能,小安派的源码全都是放在git远程仓库上,想要下载源码,必须使用git工具。

下载链接:https://github.com/git-for-windows/git/releases/download/v2.41.0.windows.3/Git-2.41.0.3-64-bit.exe

2.克隆源码

在自己想要放置工程的文件夹空白位置处,单击鼠标右键,选择Open Git bash here(正确安装git,注意别选错了),弹出安装好的git工具。检查一下显示的路径正确后,输入指令:git clone https://gitee.com/Ai-Thinker-Open/AiPi-Open-Kits.git -b master,等待克隆结束即可。克隆下来的文件夹目录应该是这样的:

image.png

如果发现文件夹目录不一样,检查输入的指令后面的 -b master

3.拉取M61的SDK子模块

在拉取 SDK 之前,需要修改一下子模块的来源,不然可能会因为网络问题拉取失败。进入 AiPi-Open-Kits 中,用文本打开 .gitmodules 文件url参数中的 github.com 改成 gitee.com

image.png

继续在git工具中依次输入:

cd AiPi-Open-Kits/
git submodule init
git submodule update

4.克隆适用Windows的编译工具链

继续在刚刚的git工具中输入:

git clone https://gitee.com/bouffalolab/toolchain_gcc_t-head_windows.git -b master

二、配置Clion开发环境

Clion的安装建议自行去百度。如果之前配置过vscode的开发环境会发现需要添加三条系统环境变量,而Clion则不需要,这也是我选择Clion的原因之一(安装的东西太多,环境变量乱糟糟的)。

1.新建bat文件

第一步需要在 AiPi-Open-Kits\aithinker_Ai-M6X_SDK文件夹下新建一个文本文档,内容为:

@echo off
set PATH=%~dp0toolchain_gcc_t-head_windows\bin;%PATH%

set BL_SDK_BASE=%~dp0\aithinker_Ai-M6X_SDK
set PATH=%BL_SDK_BASE%\tools\make;%PATH%
set PATH=%BL_SDK_BASE%\tools\ninja;%PATH%
set PATH=%BL_SDK_BASE%\tools\cmake\bin;%PATH%
set PATH=%BL_SDK_BASE%\tools\openocd;%PATH%

echo add SDK and toolchain to PATH successfully.

这是参考其他帖子的,但是在实际运行中发现还是存在找不到路径的报错,所以我将其中部分改为绝对路径,参考如下:

@echo off
set PATH=E:\vscode\esp_workplace\AiPi-Open-Kits\aithinker_Ai-M6X_SDK\toolchain_gcc_t-head_windows\bin;%PATH%

set BL_SDK_BASE=E:\vscode\esp_workplace\AiPi-Open-Kits\aithinker_Ai-M6X_SDK

剩下的不需要改。

2.Clion工具链

打开Clion后,在 设置->构建..->工具链中,可以新添加一个MinGW工具链,配置可以参考其他帖子中的这张图片:

3.导入工程

选择导入 AiPi-Open-Kits目录下的 project_basic项目,以后新建工程也可以直接复制这个文件夹,写自己的代码。打开时可能会提示cmake或者Makefile,选择cmake即可。

打开 文件->设置,还是之前的位置下面,配置cmake,工具链选择自己创建的:

4.修改CMakeLists.txt

# ############################ 保持默认 #######################

cmake_minimum_required(VERSION 3.15)
set(CHIP bl616)
set(BOARD bl616dk)
set(CROSS_COMPILE riscv64-unknown-elf-)
set(CONFIG_USB_HS n)
set(CONFIG_ROMAPI y)
set(CONFIG_DEBUG y)
set(CONFIG_TLSF y)
set(BAUDRATE 2000000)
set(COMX COM5)
include(proj.conf)

find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})

# #############################################################

# 搜集所有的C文件( Collect source files)
file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/src/*.c")

# 添加头文件的引用路径(Add .h include directories)
sdk_add_include_directories(inc)

# 把C文件添加到工程里(Add .c file to the project)
target_sources(app PRIVATE ${sources})

# 设置main.c 的文件(Set the document source for main. c)
# 注意:不能和file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/components/*.c") 冲突(Note: Cannot conflict with “file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/components/*.c")”)
sdk_set_main_file(main.c)

# 设置工程名称,这个配置决定了编译出来的文件名。(Set the project name, which determines the compiled file name)
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
project(${PROJECT_NAME})


add_custom_target(flash
        COMMAND $ENV{BL_SDK_BASE}/tools/bflb_tools/bouffalo_flash_cube/BLFlashCommand.exe
        --interface=uart
        --baudrate=${BAUDRATE}
        --port=${COMX}
        --chipname=${CHIP}
        --cpu_id=${CPU_ID}
        --config=${CMAKE_SOURCE_DIR}/flash_prog_cfg.ini
        DEPENDS ${PROJECT_NAME}.elf combine
)

注意第12行的 set(COMX COM5),需要设置为自己电脑的串口号,可以在设备管理器中查看。

修改之后重新加载一下cmake,看看是否报错。

image.png

5.配置构建命令

这个配置主要是提供另一种烧录的方法(推荐)

image.png

配置选项参考:

其中,程序实参:

--interface=uart
--baudrate=2000000
--port=COM6
--chipname=bl616
--cpu_id=
--config=flash_prog_cfg.ini

注意串口号修改为自己的。

6.烧录

全部都配置好之后,点击绿色的三角号运行即可烧录。

一般来说,需要先按住IO2,再按一下EN,最后松开IO2进入烧录模式才可以进行烧录。但是在实际操作中发现,可以直接点击运行后,等到输出栏提示 Please Press Reset Key!后,按一下EN,也可以成功烧录。

烧录成功后,会输出 [All Success]。再按一下EN,就可以看到RGB的亮起。

三、我的点灯程序

#include "bflb_gpio.h"
#include "board.h"

struct bflb_device_s *gpio;

int main(void)
{
    board_init();

    gpio = bflb_device_get_by_name("gpio");
    printf("gpio output\r\n");
    bflb_gpio_init(gpio, GPIO_PIN_12, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
    bflb_gpio_init(gpio, GPIO_PIN_14, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
    bflb_gpio_init(gpio, GPIO_PIN_15, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);

    uint8_t rgb[3] = {
            GPIO_PIN_12,
            GPIO_PIN_14,
            GPIO_PIN_15
    };

    uint8_t rgb_state = 0;
    uint8_t rgb_tmp = 0;
    while (1)
    {
        rgb_state = rgb_state > 6 ? 0 : rgb_state + 1;
        rgb_tmp = rgb_state;

        for(uint8_t i = 0; i < 3; i++)
        {
            if(rgb_tmp & 0b001)
            {
                bflb_gpio_set(gpio, rgb[i]);
            }
            else
            {
                bflb_gpio_reset(gpio, rgb[i]);
            }
            rgb_tmp = rgb_tmp >> 1;
        }

        printf("RGB_PIN=%d\r\n", rgb[rgb_state]);
        bflb_mtimer_delay_ms(1000);
    }
}

写的不好见谅!

48415e4d2c1bf59aa12a-original-original~1.gif

回复

使用道具 举报

hrqwe | 2024-5-13 23:31:26 | 显示全部楼层
有源码好评
日拱一卒,功不唐捐
回复 支持 反对

使用道具 举报

1055173307 | 2024-5-14 11:26:17 | 显示全部楼层
回复

使用道具 举报

timo | 2024-5-27 11:11:10 | 显示全部楼层
大佬啊
回复

使用道具 举报

noonezero | 2024-6-23 10:13:59 | 显示全部楼层
厉害了
回复

使用道具 举报

知行合一 | 2024-7-2 20:11:33 | 显示全部楼层
点灯成功
回复

使用道具 举报

wukong50 | 2024-7-2 20:27:28 | 显示全部楼层
Clion啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则