本帖最后由 传说哥 于 2023-8-17 12:59 编辑
本帖最后由 传说哥 于 2023-8-17 12:50 编辑
本帖最后由 传说哥 于 2023-8-17 12:40 编辑
本帖最后由 传说哥 于 2023-8-15 20:38 编辑
本帖最后由 传说哥 于 2023-8-15 20:28 编辑
本帖最后由 传说哥 于 2023-8-15 20:27 编辑
代码是如何组织的
参考坛内大佬的教程http://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=282,可以看出,小安派(BL618)的代码似乎是以make组织的。
但这只是表象,观察Makefile文件,make只负责找到sdk,设置环境变量,进行一些mcu,工具链的配置,并没有与c代码相关的东西。
SDK_DEMO_PATH ?= .
BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../aithinker_Ai-M6X_SDK
export BL_SDK_BASE
CHIP ?= bl616
BOARD ?= bl616dk
CROSS_COMPILE ?= riscv64-unknown-elf-
# add custom cmake definition
#cmake_definition+=-Dxxx=sss
include $(BL_SDK_BASE)/project.build
最后一行引入的project.build,位于sdk目录下,显示出最终代码是以cmake组织的。make只负责向cmake传递一些参数,构建好烧录指令。
而CLion对cmake的支持远好于make,要想在CLion下获得良好的开发体验,需要跳过make,直接让CLion直接接管cmake,把原来make的工作在cmake里实现,好在这很简单。
构建优雅的开发环境
这一步如果不想自己搞,可以直接下载我预先做好的压缩包。
https://www.123pan.com/s/3z9rVv-ywAHd.html 提取码: FtkP
目前小安派以git submodule的方式,把代码和sdk,以及linux下的工具链放到了一个仓库里,我不喜欢这种拖家带口的感觉。
另外很多教程都把gcc和make,ninja等放到PATH中,个人不认同这种做法,很多开发环境都对make等软件的版本有要求,把他们直接放到PATH中可能会影响其他软件的正常运行,也不利于工具链的版本切换。
下面就把sdk和工具链两者下载下来放到一起,由于以后不需要用git升级,所以删除.git文件夹。同时自带的是linux工具链,也用不到。注意这时bash脚本。
TODO 目前小安派SDK没有版本号,暂时直接拉最新版
git clone --recurse-submodules --shallow-submodules --depth=1 -b release/AiPi_Eyes_SDK https://github.com/Ai-Thinker-Open/aithinker_Ai-M6X_SDK
git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/bouffalolab/toolchain_gcc_t-head_windows.git
rm -rf ./*/.git
rm -rf ./*/toolchain
这时配合一个bat,把gcc和SDK临时放到PATH中,这也是esp-idf的做法。
以后每次需要开发小安派,就先执行这个bat,把相关环境变量自动临时的配置好,这些配置只在打开的cmd内有效,关了就没了。
@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.
CLion内添加小安派工具链
CLion支持从一个bat脚本中导入工具链,以后每次build时,都会先执行这个脚本,按下图添加一个小安派的工具链,bat就是上一步的bat。
导入工程
以AiPi-Eyes_weather为例,直接用CLion打开工程目录。
由于项目里同时有Makefile和CMakeList,会让你选make还是cmake,选cmake即可。
工具链选刚刚新建的小安派。构建目录手动输入build,因为sdk中很多硬编码的地方,必须在build目录下构建。
修改CMakeList
由于我们跳过了make像cmake传参数的步骤,这直接构建cmake是会报错的,需要在cmakelist里完成原来make的工作,补全参数。
这些参数来自project.build和Makefile中。
可以修改COMX来改变下载串口
# 把这些加到cmakelist第二行
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 115200)
set(COMX COM18)
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 app combine
)
下载
首先让开发板进入下载模式,按住burn,按一下reset,松开burn即可进入。
接好串口,target 选 flash,点击小锤子,就能下载了。