0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

零基础开发小安派-Eyes-S1【入门篇】——工程文件架构

AIoT行业洞察 2024-11-06 16:10 次阅读

AiPi-Eyes-S1是安信可开源团队专门为Ai-M61-32S设计的一款开发板,支持WiFi6、BLE5.3。所搭载的Ai-M61-32S 模组具有丰富的外设接口,具体包括 DVP、MJPEG、Dispaly、AudioCodec、USB2.0、SDU、以太网 (EMAC)、SD/MMC(SDH)、SPI、UARTI2C、I2S、PWM、GPDAC、GPADC、ACOMP 和 GPIO 等。

AiPi-Eyes-S1集成了SPI屏幕接口,DVP摄像头接口,外置ES8388音频编解码芯片以及预留TF卡座,并且引出USB接口,可接入USB摄像头。

从零开始学习小安派:

1、零基础开发小安派-Eyes-S1【入门篇】——初识小安派-Eyes-S1

2、零基础开发小安派-Eyes-S1【入门篇】——安装VMware与Ubuntu

3、入门篇:零基础开发小安派-Eyes-S1——新建工程并烧录调试

4、零基础开发小安派-Eyes-S1入门篇——Win下SSH连接Linux

5、零基础开发小安派-Eyes-S1【入门篇】——Samba共享文件夹

新建的工程包含多个文件和文件夹,作为初学者第一次接触,下面浅聊一下我对工程文件的了解,若有不对的地方请大家多多指正。

一、build 文件夹

该文件夹是编译后生成的 bin 文件存储的地方,如本工程文件的文件名作为 Helloworld,编译后的 bin 文件也是以工程名 + 芯片命名。

生成的 bin 文件存储在 build/build_out 下,可以看见有多个类似的文件,这里我们烧录取 bin 文件,这里可以看到在 hellowworld 工程编译生成的 bin 文件命名为 helloworld_bl616.bin,因为 bl616 和 bl618 的芯片其实在软件上的区分很小,他们通用同一个 SDK,在硬件上的区分在于 616 的 IO 口数量不如 618,由于使用同一套 SDK,所以 bl616 和 618 的固件是可以通用的,这里无需过多计较区别。

注意,这里的 bin 文件在博流的烧录工具上并不是合成的 bin 文件,这里对应的 bin 文件是图中的 firmware 目录下的 bin 文件,还需要其他的如 boot2 等文件,那么问题来了,使用 Single Download Options 烧录的合成 bin 文件在哪里,其实是在 SDK 中,具体的路径为:

aithinker_Ai-M6X_SDK/tools/bflb_tools/bouffalo_flash_cube/chips/bl616/img_create/whole_flash_data.bin

如果需要使用 Windows 下的烧录工具烧录 bin 文件,选择这个路径下的 whole_flash_data.bin 即可。

二、CMakeLists.txt

CMake 是一个跨平台、开源的构建系统,它可以帮助我们管理好工程里的软件架构。CMakeLists.txt 文件相当于执行的列表,它可以调用其他的.h 头文件和.so/.a 库文件,生成 Makefile,将.cpp/.c/.cc 文件编译成可执行文件或新的库文件。我们从简单的 helloworld 工程学习,先打开 CMakeLists.txt 查看里面的语句。

BouffaloSDK 中封装了以下函数接口,基本满足常用场景使用。

三、flash_prog_cfg.ini

BouffaloSDK 采用新的 flash tool(bouffalo_flash_cube),并且烧录依赖 flash prog cfg.ini 文件。我们的烧录命令 make flash 就是依赖这个文件执行的。它也有自己的语法。

正常使用只需要创建一个 KEY,例如 [FW],并且填写 filedir 和 address 就可以使用了。

其中 filedir 的填写方式有以下几种:

  • bin 文件全路径 + bin 文件名称
  • bin 文件相对路径 + bin 文件名称
  • bin 文件名称添加 _$(CHIPNAME) 后缀可以自动识别成不同芯片(仅在 bin 文件名称前缀不同的时候使用)
  • bin 文件名称添加 * 通配符,可以自动补全 bin 文件名称(仅在 bin 文件名称前缀不同的时候使用)

1.模组作为 MCU(不使用无线功能)

只需要和 helloworld 工程一样修改 filedir 的文件名即可。

[cfg]

# 0: no erase, 1:programmed section erase, 2: chip erase

erase = 1

# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated

skip_mode = 0x0, 0x0

# 0: not use isp mode, #1: isp mode

boot2_isp_mode = 0

[FW]

filedir = ./build/build_out/xxx*_$(CHIPNAME).bin

address = 0x0000

2.模组作为 IOT(开启无线功能)

[cfg]

# 0: no erase, 1:programmed section erase, 2: chip erase

erase = 1

# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated

skip_mode = 0x0, 0x0

# 0: not use isp mode, #1: isp mode

boot2_isp_mode = 0

[boot2]

filedir = ./build/build_out/boot2_*.bin

address = 0x000000

[partition]

filedir = ./build/build_out/partition*.bin

address = 0xE000

[FW]

filedir = ./build/build_out/xxx*_$(CHIPNAME).bin

address = 0x10000

[mfg]

filedir = ./build/build_out/mfg*.bin

address = 0x210000

- cfg 表示烧录时的一些配置,正常不需要改动

- FW 要烧录的应用固件,必须使用 FW 名称。

filedir 表示应用固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。_$(CHIPNAME).bin 用于区分不同芯片。xxx 表示应用固件名称,与 CMakeLists.txt 中 project(xxx) 中名称一致。

address 由 partition_xxx.toml 指定

- boot2 要烧录的 boot2 固件,必须使用 boot2 名称。

filedir 表示 boot2 固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。自动从 bsp/board/board_name/config 目录拷贝。

address 必须使用 0 地址

- partition 要烧录的 partition 固件,必须使用 partition 名称。

filedir 表示 partition 固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。自动从 bsp/board/board_name/config 目录 partition_xxx.toml 转换成 bin 文件并拷贝。

address 由 partition_xxx.toml 指定

- mfg 要烧录的 mfg 固件,必须使用 mfg 名称。mfg 可选,可以不烧录

filedir 表示 mfg 固件所在相对路径,正常来说是编译完后放在 build/build_out 目录。自动从 bsp/board/board_name/config 目录拷贝。

address 由 partition_xxx.toml 指定

(备注:如果使用了 partition,address 可以使用 @partition 代替绝对地址,@partition 将会自动从 partition_xxx.toml 找到对应的地址)

3.多个运行固化烧录

禁止使用通配符 * 以及 _$(CHIPNAME) 前缀,因为 bin 文件名称前缀相同。

[cfg]

# 0: no erase, 1:programmed section erase, 2: chip erase

erase = 1

# skip mode set first para is skip addr, second para is skip len, multi-segment region with ; separated

skip_mode = 0x0, 0x0

# 0: not use isp mode, #1: isp mode

boot2_isp_mode = 0

[FW1]

filedir = ./build/build_out/xxx0.bin

address = 0x00000

[FW2]

filedir = ./build/build_out/xxx1.bin

address = 0x10000

[FW3]

filedir = ./build/build_out/xxx2.bin

address = 0x20000

四、main.c

main.c,主程序运行的文件。

五、Makefile

编译的文件,其指定了一系列以赖关系和依赖规则。指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,可以实现自动化编译,一旦写好,只需要一个 make 命令,整个工程完全自动编译,极大的提高了软件开发的效率。

目前来说只需要修改第二行 BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../aithinker_Ai-M6X_SDK 的编译路径设置即可。

六、proj.conf

前面在 CMakeLists.txt 中提到的组件的使用,当我们需要使用各种组件或开启一些配置功能时,需要进入这个文件中添加。

举例:需要添加 SD 卡,或者 LVGL。需要在 proj.conf 中

set(CONFIG_FATFS 1)
set(CONFIG_LVGL 1)

七、README.md

README 相当于一个说明书,由工程的管理者进行编写,包括该工程一些简介,使用方法,注意事项等等。

md 文件后缀的格式并不是什么高大上的文件,只是一种编辑的语法,可以使用记事本打开,也可以在 VS 中安装 Markdown Preview 插件。

这样查看 README 时可以右键点击 MPE:打开侧边预览,可以方便我们查看 README。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源硬件
    +关注

    关注

    8

    文章

    208

    浏览量

    29807
收藏 人收藏

    评论

    相关推荐

    零基开发小安-Eyes-S1外设——I2S

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP摄像头接口,外置ES8388音频编解码芯片以及预留TF卡座,并且引出USB接口,可接入USB摄像头。 从开始学习小安
    的头像 发表于 12-13 18:02 926次阅读
    <b class='flag-5'>零基</b>础<b class='flag-5'>开发</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>外设<b class='flag-5'>篇</b>——I2<b class='flag-5'>S</b>

    电子DIY作品 小安R1做个86盒中控

    前言 笔者之前看小安的开源资料, 就对 R1 这个板子情有独钟 这就是为 86 盒而生啊 刚好安信可社区一直有积分兑换活动 (https://bbs.ai-thinker.com/) 这次就用
    的头像 发表于 12-05 14:34 154次阅读
    电子DIY作品 <b class='flag-5'>小安</b><b class='flag-5'>派</b>R<b class='flag-5'>1</b>做个86盒中控

    零基开发小安-Eyes-S1【外设】——FLASH

    。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP摄像头接口,外置ES8388音频编解码芯片以及预留TF卡座,并且引出USB接口,可接入USB摄像头。 从开始学习小安
    的头像 发表于 12-05 14:31 167次阅读
    <b class='flag-5'>零基</b>础<b class='flag-5'>开发</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>【外设<b class='flag-5'>篇</b>】——FLASH

    零基入门PCB工程

    各位前辈大家好,零基入门PCB工程师,有什么学习资料推荐吗?
    发表于 11-27 16:54

    零基开发小安-Eyes-S1 外设 ——I2C

    。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP摄像头接口,外置ES8388音频编解码芯片以及预留TF卡座,并且引出USB接口,可接入USB摄像头。 从开始学习小安
    的头像 发表于 11-27 16:39 208次阅读
    <b class='flag-5'>零基</b>础<b class='flag-5'>开发</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b> 外设<b class='flag-5'>篇</b> ——I2C

    小安 AiPi-Eyes-R2 玩植物大战僵尸

    - Eyes-R1 带外置 ES8388 音频芯片,支持两路音频输入输出。小安 - Eyes-R2 采用内置 CodeC,支持单路音频输入输出。 如果是编译带 8388
    的头像 发表于 11-06 16:10 208次阅读
    用<b class='flag-5'>小安</b><b class='flag-5'>派</b> AiPi-<b class='flag-5'>Eyes</b>-R2 玩植物大战僵尸

    零基开发小安-Eyes-S1【外设】——PWM

    小安-Eyes-S1入门篇】——初识小安-Eyes-S
    的头像 发表于 11-06 16:10 145次阅读
    <b class='flag-5'>零基</b>础<b class='flag-5'>开发</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>【外设<b class='flag-5'>篇</b>】——PWM

    零基开发小安-Eyes-S1外设——GPIO中断编程

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP摄像头接口,外置ES8388音频编解码芯片以及预留TF卡座,并且引出USB接口,可接入USB摄像头。 产品资料:https://docs.ai-thinker.com/eyes
    的头像 发表于 10-29 14:56 744次阅读
    <b class='flag-5'>零基</b>础<b class='flag-5'>开发</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>外设<b class='flag-5'>篇</b>——GPIO中断编程

    零基开发小安-Eyes-S1外设——GPIO 输入输出

    等。 AiPi-Eyes-S1集成了SPI屏幕接口,DVP摄像头接口,外置ES8388音频编解码芯片以及预留TF卡座,并且引出USB接口,可接入USB摄像头。 从开始学习小安
    的头像 发表于 10-25 13:50 1013次阅读
    <b class='flag-5'>零基</b>础<b class='flag-5'>开发</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>外设<b class='flag-5'>篇</b>——GPIO 输入输出

    开发教程 零基开发小安-Eyes-S1入门篇——Win下SSH连接Linux

    AiPi-Eyes-S1 是安信可开源团队专门为Ai-M61-32S设计的一款开发板,支持WiFi6、BLE5.3。所搭载的Ai-M61-32S 模组具有丰富的外设接口,具体包括 DV
    的头像 发表于 09-24 14:31 292次阅读
    <b class='flag-5'>开发</b>教程 <b class='flag-5'>零基</b>础<b class='flag-5'>开发</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b><b class='flag-5'>入门篇</b>——Win下SSH连接Linux

    20.2-电磁杆在磁轨道的测试 零基入门智能车竞赛 STM32电磁小车

    20.2-电磁杆在磁轨道的测试 零基入门智能车竞赛 智能车竞赛 电磁杆原理图 电磁循迹小车 智能车电磁组 STM32电磁小车 电磁循迹小车 电磁循迹算法 智能车环岛 智能车比赛规则 智能车竞赛
    的头像 发表于 08-20 10:52 631次阅读
    20.2-电磁杆在磁轨道的测试 <b class='flag-5'>零基</b>础<b class='flag-5'>入门</b>智能车竞赛 STM32电磁小车

    【飞腾4G版免费试用】飞腾4G版开发板套装测试及环境搭建

    时,调试串口位置为 J2,串口终端程序必须设置为:波特率:115200;数据位:8;奇偶校验:无;停止位:1 8TX10RX12地 飞腾4G版开发板套装文件下载链接: 百度网盘链接:
    发表于 01-22 00:47

    功德+1,用小安-Eyes-S1做一个电子木鱼

    2024积德累功,心想事成!接下来 看看如何用小安-Eyes-S1做一个电子木鱼 。 01、GUI-Guider 页面设计 先新建一个工程。 直接进入 UI 设计界面,这里用到了两个
    的头像 发表于 01-16 14:33 740次阅读
    功德+<b class='flag-5'>1</b>,用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>做一个电子木鱼

    如何用小安-Eyes-S1做一个电子木鱼?

    2024年的第一教程来了,本篇学习如何添加LVGL事件,并制作完成一个电子木鱼(小美苦苦哀求,我略微出手而已)。祝大家2024积德累功,心想事成!接下来看看如何用小安-Eyes-S1
    的头像 发表于 01-13 15:18 1019次阅读
    如何用<b class='flag-5'>小安</b><b class='flag-5'>派</b>-<b class='flag-5'>Eyes-S1</b>做一个电子木鱼?

    用安信可的小安小安,DIY个简单的CC表

    本作品由安信可社区用户 bzhou830 制作 原贴地址:【DIY电子作品】电压与电流CC表 基于小安AiPi-Eye-S1 汇总 https://bbs.ai-thinker.com
    的头像 发表于 12-25 17:07 690次阅读
    用安信可的<b class='flag-5'>小安</b><b class='flag-5'>派</b><b class='flag-5'>小安</b><b class='flag-5'>派</b>,DIY个简单的CC表