AI-K210 开发家庭万用宝模组(1)
手头有个以前开发自动跟随拍的K210器件(视频 https://www.douyin.com/video/6943813162625961252?previous_page=app_code_link )。
闲时无聊,决定用它改造一个万用宝,目标呢家里常用的小设备集成起来,省的家里一堆小东西。
功能:
1. 人脸识别:人脸定位 、 人脸特征点检测、特征点对比;
2. 生理参数检测:血压(个人数据关联分析加速检测速度至10~20秒测量)、心电图(ECG+心率+ST段分析+心律失常分析)、血氧(脉搏氧饱和度+脉率)、胎心率、血糖、体温(红外/热电偶);
3. 其他功能:环境温湿度、红外遥控器、二维码(后续想到啥再补充);
4. 系统:电阻屏 、RTT-OS + LVGL-GUI,TF卡数据存储、wifi数据同步,蓝牙网关。
需求大体如上,下面开始准备基础环境。
#############################################################################
一、搭建K210的基础开发环境
1.1 工具链准备
首先需要下载riscv交叉编译的工具链:https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v8.3.0-2.3/xpack-riscv-none-embed-gcc-8.3.0-2.3-linux-x64.tar.gz
根据Win、OSX、Linux平台32或64位版本具体选择对应的工具链,(原厂的工具链因libc链接库的问题无法编译RTT),因本人在Ubuntu20.04下开发,下面主要记录Linux下开发的环境。
下载后在工具链目录解压至 /opt目录:【 tar zxvf xpack-riscv-none-embed-gcc-8.3.0-2.3-linux-x64.tar.gz -C /opt/ 】
打开~/.bashrc文件,在文件末尾添加如下一行,将 /opt/kendryte-toolchain/bin 目录添加到PATH环境变量,并更新生效
export PATH=$PATH:/opt/xpack-riscv-none-embed-gcc-8.3.0-2.3/bin
$ source ~/.bashrc
1.2 下载RT-Thread源码
在开发目录下执行:【 git clone --recursive https://github.com/RT-Thread/rt-thread.git】命令等待下载完成。
1.3 SCONS配置
在下载好的rtt源码下找到k210的bsp,rt-thread/bsp/k210目录下打开rtconfig.py文件:
修改上图18行工具链的位置,屏蔽23、24行防止被RTT_EXEC_PATH替换。
修改上图54行,CXXFLAGS增加对c++17的支持(K210最新的sdk中nncase使用了c++17的语法)
在rt-thread/bsp/k210路径下执行:
$ sudo apt install scons (安装scons)
$ sudo apt install libncurses5-dev libncursesw5-dev(安装menuconfig必要的库)
$ scons --menuconfig
选择RT-Thread Components--> C++ features--> Support C++ features用以支持c++,
RTT全局对象构造函数的实现在 rt-thread\components\cplusplus 目录下的 crt_init.c 文件中,初始化方式如下:
链接脚本文件 rt-thread/bsp/k210/link.lds 为 C++ 全局构造函数的代码分配了段,为了使 C++ 全局对象构造函数链接后存放在指定的段中,需要修改link.lds:
使用该命令后会安装及初始化 Env 工具,并在 home 目录下面生成 “.env” 文件夹,此文件夹为隐藏文件夹,切换到 home 目录,使用 la 命令可查看所有目录和文件。
$ la ~/.env
env.sh local_pkgs packages tools
立即更新 env.sh 配置环境变量
$ source ~/.env/env.sh
使用 pkgs --update 命令下载软件包到 BSP 目录下的 packages 文件夹里
$ pkgs --update (每次执行pkgs命令前 需保证在执行source ~/.env/env.sh 后的环境)
输入命令code . 启动VSCode,点击TERMINAL。
现在VSCode中的终端就变成了env工具,可以直接在这个终端中进行env的一些操作。这里我们要先输入指令,scons --target=vsc -s。【这条指令能将在env中配置产生的头文件的搜索路径添加到vs code中,每次使用完env中的menuconfig功能后都要记得使用这个指令更新一下配置,否则可能会出现找不到头文件的错误】
1.4 编译下载
在VSCode终端输入:scons 编译RTT,但是发现出错
这个可能是rtt与工具链的冲突问题,临时解决办法如下:
打开 /opt/xpack-riscv-none-embed-gcc-8.3.0-2.3/riscv-none-embed/include/sys中的signal.h文件,屏蔽掉 union sigval、struct sigevent、以及 typedef struct siginfo_t;
//union sigval {
// int sival_int; /* Integer signal value */
// void *sival_ptr; /* Pointer signal value */
//};//struct sigevent {
// int sigev_notify; /* Notification type */
// int sigev_signo; /* Signal number */
// union sigval sigev_value; /* Signal value */#if defined(_POSIX_THREADS)
// void (*sigev_notify_function)( union sigval );/* Notification function */
// pthread_attr_t *sigev_notify_attributes; /* Notification Attributes */
#endif
//};/* Signal Actions, P1003.1b-1993, p. 64 */
/* si_code values, p. 66 */#define SI_USER 1 /* Sent by a user. kill(), abort(), etc */
#define SI_QUEUE 2 /* Sent by sigqueue() */
#define SI_TIMER 3 /* Sent by expiration of a timer_settime() timer */
#define SI_ASYNCIO 4 /* Indicates completion of asycnhronous IO */
#define SI_MESGQ 5 /* Indicates arrival of a message at an empty queue *///typedef struct {
// int si_signo; /* Signal number */
// int si_code; /* Cause of the signal */
// union sigval si_value; /* Signal value */
//} siginfo_t;
另外,把 rt-thread/bsp/k210/cconfig.h 中的下面三行注释掉(注意:这个文件是 rt_thread/tools/gcc.py 等生成的,如果想cconfig.h不生成 HAVE_SIGACTION、HAVE_SIGINFO、HAVE_SIGVAL三个宏的话,可以把/opt/xpack-riscv-none-embed-gcc-8.3.0-2.3/riscv-none-embed/include/sys/signal.h中注释的部分删除掉)。
//#define HAVE_SIGACTION 1
//#define HAVE_SIGINFO 1
//#define HAVE_SIGVAL 1
最后在VSCode终端中输入scons,编译成功:
现在需要烧写到k210里,先安装kflash.py,链接:https://github.com/kendryte/kflash.py,
sudo pip3 install kflash
sudo usermod -a -G dialout $(whoami)
至此RTT终于在K210上跑起来了,后续要在上面移植各类应用。欢迎关注交流.......
AI-K210 开发家庭万用宝模组(1)相关推荐
- 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)
实现的功能: l APP控制月球灯 l 本地月球灯控制 l APP控制"大白"颜色,实现各种颜色变身 l 门状态传感器状态APP显示 l 网络状态指示灯,连接服务器长亮, ...
- 全新 AI 语音芯片、双麦 AIoT 模组,科大讯飞硬核技术助力智能家电创新
据艾瑞咨询的数据显示,2017 年中国智能家居市场规模为 3342.3 亿元,其中智能家电规模为2828.0亿元,占比87%.预计到 2020 年智能家电的市场规模将达到 5155.0 亿元. 智能家 ...
- 快速开发GD32和涂鸦CBU模组通信
MCU和CBU模组通信 采用兆易创新的GD32单片机和涂鸦 CBU (低功耗嵌入式Wi-Fi+BLE 双协议)模组进行通信. 本文将教大家如何从0开始上手GD32系列单片机,并移植涂鸦MCU-SDK来 ...
- 中国联通虚商用户接近1800万:试点模组套餐转售模式
2016年1月25日,中国联通携手虚拟运营合作伙伴在北京召开"合作共赢.突破进取--中国联通移动转售政策发布及业务推进会".会议发布了最新的移动转售政策.工业和信息化部通信发展司陈 ...
- 小米wifi开发:初始配置wifi模组
[通用模组接入指南] 官方网址: (https://iot.mi.com/new/doc/04-%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91%E6%8C% ...
- 芯片、模组、开发板的区别与联系-结合ESP32浅谈(转载)
1.从外形说起: 1.1芯片 没错,这块黑色的小硅片就是"芯片"本体(通常比大拇指还小,内部集成了实现特定功能的硬件集成电路). 1.2模组 由上述芯片研发的模组是这样的: 从外形 ...
- Windows下搭建ESP-IDF开发环境,适合ESP32/S2/C3/S3系列模组二次开发
前言 本教程适用于以下两种用户: ①无Linux环境搭建经验或搭建Linux开发环境不成功: ②使用安信可windows一体化环境IDE V1.5开发环境搭建不成功: 本教程提供了windows下搭建 ...
- 【BW16 应用篇】安信可BW16模组与开发板更新固件烧录说明
目录 前言 1 硬件准备 1.1 硬件准备 1.2 接线说明 1.3 固件烧录说明 1.3.1 设置模组或开发板进入烧录模式 1.3.2 烧录固件 注意 2 固件烧录完成验证操作 联系我们 前言 本文 ...
- 基于涂鸦模组和ITOP4412开发板的宠物喂食器
文章目录 基于涂鸦模组和ITOP4412开发板的宠物喂食器 1.作品描述 2.作品介绍 2.1 开发环境 2.1.1硬件设备 2.2 主要实现的功能 2.3 后续更新 3.开发流程 3.1 使用涂鸦I ...
最新文章
- 高性能Mysql主从架构的复制原理及配置详解
- 开源交换需新框架 技术团队也待整合
- Oracle怎么查外键建在哪个表上
- 成功解决成功解决return _iterencode(o, 0) ValueError: Circular reference detected
- 基于MATLAB的信号与系统实验指导,《信号与系统及MATLAB实现》实验指导书
- 遍历同辈节电的方法_JQuery遍历DOM节点的方法
- 作业2 分支循环结构
- 如何在Java中同步ArrayList?
- DENIED Redis is running in protected mode because protected mode is enabled
- 前沿 | NVIDIA PyTorch库让3D深度学习研究更简单!
- 【物流选址】基于matlab佛洛依德算法求解物流选址问题【含Matlab源码 892期】
- riot修改服务器,riot改地区教程
- 读书随笔《36岁, 半熟人生》
- android 8.0手机无法更新版本,微信8.0安卓机怎么安装更新 安卓微信更新不了8.0解决办法一览...
- 已解决ModuleNotFoundError: No module named ‘frontend‘
- c语言中优先级劣后级,基金优先级与劣后级的区别,看完就能明白
- 基于51单片机信号发生器仿真设计
- 6张图!5G六大细分领域产业图谱
- Git for windows 和 cygwin
- 苹果Airplay2学习
热门文章
- 近似概率编程文献综述
- fooview辅助功能 shell_Fooview:一款功能超多的桌面悬浮球,帮你摆脱多余操作
- Gorilla源码分析之gorilla/context源码分析
- alpha测试和beta测试Gamma测试的区别是什么?
- [教程]HP Envy J/K/Q/N系列Haswell平台 Clover引导安装黑苹果
- Curio for Mac(头脑风暴思维导图)
- R语言中如何编写自己的函数初步入门
- 访问www.baidu.com全过程
- 华为云如何绑定/解绑二次验证码/虚拟MFA/谷歌身份验证器?
- 万科又出新招,小市民只有看热闹的份