BES 平台 SDK之代码架构讲解二

news2024/10/6 8:26:01

本文章是基于BES2700 芯片,其他BESxxx 芯片可做参考,如有不当之处,欢迎评论区留言指出。

BES 平台 SDK之代码架构讲解一_谢文浩的博客-CSDN博客

上篇文章粗略的对整个SDK 目录下的文件进行了说明,接下来会对SDK 比较详细的介绍。

一. 关于Target.mk 脚本

   

CHIP ?= best1306 :编译的目标平台,在编译指令里面对应 make T=best1306 

DEBUG ?= 1: 开启调试模式

export LIBC_OVERPRIDE ?= 1: 定义宏并赋值为1,等同于#define LIBC_OVERPRIDE    1

export LIBC_OVERPRIDE ?= 0: 删除宏定义,等同于 #undef LIBC_OVERPRIDE 

ifeq ($(BT_FA_ECC),1) : 条件编译,判断BT_FA_ECC 是否为1

KBUILD_CPPFLAGS += -DGET_PEER_RSSI_ENABLE :定义宏GET_PEER_RSSI_ENABLE

$(error 此处可自定义提示的错误信息): 编译报错提示!

其他的类似这个道理,在此补充一句,调试打印的波特率也是在这个脚本里面设置的。设置如下:

export TRACE_BAUD_RATE ?= 10*115200

当时也是费了一点时间才找到这里。

二. 关于Common.mk 脚本

BES平台宏开启与关闭,通用配置脚本。

三.关于Makefile 

        1.项目开发过程避免不了需要新建文件,那么如何将新增文件加入到当前工程并编译的呢,详细可参考下面文章。

        BES代码编译和链接说明_小小的代码里面挖呀挖呀挖的博客-CSDN博客

四. main 函数

1. main 函数位于目录platform/main 下的main.cpp 文件。如下所示:

 int main(void) 函数本身也是一个线程,它是由Rtx.lib.c 文件创建的。(目录位于/Rtos/Rtx5/Rtx.lib.c),如下截图所示:

 

2.main 函数里面开启看门狗、硬件GPIO、定时器、app_init(应用层) 等,最后进入while(1)循环等待是否关机。等待是通过evt = osSignalWait(0x0, osWaitForever); 函数,永久等待,直到收到线程通知后才会跳出while 循环。

五. 自写编译脚本(build.sh)

1. 该脚本主要是用来方便调试用,避免反复上下翻找指令,可copy 下来直接使用。

#/bin/bash
#./build.sh  编译正常固件
#./build.sh  test 编译测试固件
#./build.sh  ota  编译带OTA 固件
#./build.sh  xxx  提示非法输入参数

if [ x$1 == x ]
then
        echo ">>>>>>>>build bin>>>>>>>>>>"
        make T=best1306_ibrt -j40 DEBUG=1 OTA_CODE_OFFSET=0 FLASH_SIZE=0x400000 POWER_ON_ENTER_TWS_PAIRING_ENABLED=1 BLE_AUDIO_ENABLED=1 GFPS_ENABLE=1
elif [ $1 == "test" ]
then
        echo ">>>>>>>>build test bin>>>>>>>>"
        make T=prod_test/ota_copy CHIP=best1306 FLASH_SIZE=0x400000 BES_OTA=1 OTA_BIN_COMPRESSED=1 FLASH_REMAP=0
elif [ $1 == "ota" ]
then
        echo ">>>>>>>>build OTA bin>>>>>>>>>>"
        make T=best1306_ibrt -j40 DEBUG=1 OTA_CODE_OFFSET=0x10000 FLASH_SIZE=0x400000 POWER_ON_ENTER_TWS_PAIRING_ENABLED=1 BLE_AUDIO_ENABLED=1 GFPS_ENABLE=1 OTA_BIN_COMPRESSED=1
else
        echo ">>>>>>> invalid parameter"
fi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/820569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言实用调试详解

目录 什么是bug? 调试是什么?有多重要? 调试是什么? 调试的基本步骤 Debug和Release的介绍 Windows环境调试介绍 调试环境的准备 学会快捷键 调试的时候查看程序当前信息 查看临时变量的值 查看内存信息 查看调用堆栈 查看汇编信息 查看寄存器信息 一些调试…

HCIP 重发布+路由策略总结

重发布 在同一个网络拓结构中,如果存在多种不同的路由协议,由于不同路由协议的机制各有不同,对路由的处理也不相同,这就在网络中造成了路由信息的隔离,在路由器的边界路由器上,将某种路由协议的路由信息引…

[网络工程师]-网络规划与设计-网络故障分析与处理

网络环境越复杂,发生故障的可能性越大,引发故障的原因也就越难确定。网络故障往往具有特定的故障现象。这些现象可能比较笼统,也可能比较特殊。利用特定的故障排查工具及技巧,在具体的网络环境下观察故障现象,细致分析,最终必然可以查出一个或多个引发故障的原因。一旦能…

gitlab上传代码

输入 git clone https地址,此地址可以在,gitlab项目上拷贝到本地,看本地电脑会出现在gitlab上新建的项目,并进入该目录下 将要上传的代码拷贝到该目录 依次输入一下代码 git init (用于在目录中创建新的 Git 仓库。…

打造独一无二的花店小程序,轻松搭建步骤详解

随着移动互联网的快速发展,花店也开始意识到拥有一个专属的小程序能够提升用户体验、增加销售额。那么,如何快速搭建一个漂亮、实用的花店小程序呢?下面就为大家介绍一下具体的步骤。 第一步,使用第三方制作平台。如乔拓云网是一个…

setEagerlyType字段理解

官方文档介绍:V5.0.4版本开始一对一关联预载入支持两种方式:JOIN方式(一次查询)和IN方式(两次查询),如果要使用IN方式关联预载入,在关联定义方法中添加。 这句话的意思是jion方式关联…

阿里云服务器免费试用及搭建WordPress网站

文章目录 前言一、免费试用1、选择使用产品2、进行产品配置3、远程连接阿里云服务器①、重置实例密码②、SecureCRT 远程链接③、Workbench 远程链接二、搭建 WordPress 网站1、开放搭建 WordPress 需要的端口2、搭建 LAMP 环境①、Linux 系统升级和更新源②、安装 Apache2③、…

【Excel】记录Match和Index函数的用法

最近一直用到的两个处理EXCEL表格数据的函数向大家介绍一下,写这篇博文的目的也是为了记录免得自己忘记了,嘻嘻。 先上百度的链接 Match函数的用法介绍:https://jingyan.baidu.com/article/2fb0ba40b4933941f3ec5f71.html 小结:…

Java从入门到精通(二)· 基本语法

Java从入门到精通(二) 基本语法 一 变量 1.字面量 计算机是用来处理数据的,字面量就是告诉程序员:数据在程序中的书写格式。 特殊的字符: \n 表示换行, \t 表示一个制表符,即一个tab 2.变量…

【JVM】什么是双亲委派机制

文章目录 1、类加载机制2、双亲委派模型2.1、介绍2.2、为什么需要双亲委派2.3、源码解析 3、破坏双亲委派3.1、介绍3.2、破坏实现3.3、破坏双亲委派的例子 4、线程上下文类加载器 1、类加载机制 类加载阶段分为加载、连接、初始化三个阶段,而加载阶段需要通过类的全…

【Ansible】Ansible自动化运维工具之playbook剧本搭建LNMP架构

LNMP 一、playbooks 分布式部署 LNMP1. 环境配置2. 安装 ansble3. 安装 nginx3.1 准备 nginx 相关文件3.2 编写 lnmp.yaml 的 nginx 部分3.3 测试 nginx4. 安装 mysql4.1 准备 mysql 相关文件4.2 编写 lnmp.yaml 的 mysql 部分4.3 测试 mysql5. 安装 php5.1 编写 lnmp.yaml 的 …

健身时戴什么耳机比较好、健身用的运动耳机推荐

运动健身已经成为一种潮流,有的人为了追求马甲线和八大块腹肌,还有的人为了缓解学习和工作的压力。但你在运动健身的时候难免会有烦躁、疲惫的时候,如果这时有音乐的加入那就完美了,因为美妙的歌声能冲淡这种疲惫感,让…

面向金融科技方向选手!一级学会背书,AI选股与可视分析大赛来啦

金融量化领域邂逅人工智能,将会迸发出怎样的火花? 在深度学习、强化学习和自然语言处理等技术取得不断突破和创新的今天,AI如何赋能量化投资领域,助力开发者打造表现优异,更加安全可靠的量化模型? 第四届CS…

回收站清空的文件怎么恢复?文件恢复,就靠这3个方法!

“不小心把回收站清空了怎么办?之前在回收站里的文件还能恢复吗?诚心发问,希望大家给我出出主意。” 文件被删除之后通常在电脑的回收站中还可以还原。但实际使用电脑时,很多朋友为了释放电脑内存,都会有定期清空回收站…

【Redis】内存数据库 Redis 进阶

目录 分布式缓存 RedisRedis 持久化RDB (Redis DataBase)RDB执行时机RDB启动方式——save指令save指令相关配置save指令工作原理save配置自动执行 RDB启动方式——bgsave指令bgsave指令相关配置bgsave指令工作原理 RDB三种启动方式对比RDB特殊启动形式RDB优点与缺点 AOF (Appen…

租赁固定资产管理

智能租赁资产管理系统可以为企业单位提供RFID资产管理系统。移动APP资产管理,准确总结易损耗品和固定资金,从入库到仓库库存实时跟踪,控制出库和入库的全过程。同时,备件和耗材与所属资产设备有关,便于备件的申请和管理…

指针进阶详解续---C语言

❤博主CSDN:啊苏要学习 ▶专栏分类:C语言◀ C语言的学习,是为我们今后学习其它语言打好基础,C生万物! 开始我们的C语言之旅吧!✈ 目录 前言: 一.函数指针数组 二.指向函数指针数组的指针 三.回调函数 …

3D WEB轻量化渲染引擎Communicator发布冲突检测库!增加客户端和服务器端冲突检测功能

​HOOPS Communicator是Tech Soft 3D旗下的主流产品之一,具有强大的、专用的高性能图形内核,专注于基于Web的高级3D工程应用程序。其由HOOPS Server和HOOPS Web Viewer两大部分组成,提供了HOOPS Convertrer、Data Authoring的模型转换和编辑工…

【Java练习题汇总】《第一行代码JAVA》综合测试二,汇总Java练习题

Java练习题 综合测试二 1️⃣ 综合测试二 1️⃣ 综合测试二 下面( )不属于面向对象的特点。 A. 封装 B. 转型 C. 继承 D. 多态 下面关于类与对象的描述正确的是( )。 A. 任何情况下必须先有类再有对象,对象只能够调用类中定义的方法,不能够调用属性 B.…

大家知道AI智能绘画是什么吗?我将为你解答

最近,我经常看到朋友在朋友圈上一直发美女图,我在想“这小子现在怎么回事,天天发女孩子的图片”。 便去询问了一下,他却笑着对我说;“这些都不是真人,是我ai智能绘画出图的”。 顿时,我就有点懵…