手头有个以前开发自动跟随拍的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)相关推荐

  1. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  2. 全新 AI 语音芯片、双麦 AIoT 模组,科大讯飞硬核技术助力智能家电创新

    据艾瑞咨询的数据显示,2017 年中国智能家居市场规模为 3342.3 亿元,其中智能家电规模为2828.0亿元,占比87%.预计到 2020 年智能家电的市场规模将达到 5155.0 亿元. 智能家 ...

  3. 快速开发GD32和涂鸦CBU模组通信

    MCU和CBU模组通信 采用兆易创新的GD32单片机和涂鸦 CBU (低功耗嵌入式Wi-Fi+BLE 双协议)模组进行通信. 本文将教大家如何从0开始上手GD32系列单片机,并移植涂鸦MCU-SDK来 ...

  4. 中国联通虚商用户接近1800万:试点模组套餐转售模式

    2016年1月25日,中国联通携手虚拟运营合作伙伴在北京召开"合作共赢.突破进取--中国联通移动转售政策发布及业务推进会".会议发布了最新的移动转售政策.工业和信息化部通信发展司陈 ...

  5. 小米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% ...

  6. 芯片、模组、开发板的区别与联系-结合ESP32浅谈(转载)

    1.从外形说起: 1.1芯片 没错,这块黑色的小硅片就是"芯片"本体(通常比大拇指还小,内部集成了实现特定功能的硬件集成电路). 1.2模组 由上述芯片研发的模组是这样的: 从外形 ...

  7. Windows下搭建ESP-IDF开发环境,适合ESP32/S2/C3/S3系列模组二次开发

    前言 本教程适用于以下两种用户: ①无Linux环境搭建经验或搭建Linux开发环境不成功: ②使用安信可windows一体化环境IDE V1.5开发环境搭建不成功: 本教程提供了windows下搭建 ...

  8. 【BW16 应用篇】安信可BW16模组与开发板更新固件烧录说明

    目录 前言 1 硬件准备 1.1 硬件准备 1.2 接线说明 1.3 固件烧录说明 1.3.1 设置模组或开发板进入烧录模式 1.3.2 烧录固件 注意 2 固件烧录完成验证操作 联系我们 前言 本文 ...

  9. 基于涂鸦模组和ITOP4412开发板的宠物喂食器

    文章目录 基于涂鸦模组和ITOP4412开发板的宠物喂食器 1.作品描述 2.作品介绍 2.1 开发环境 2.1.1硬件设备 2.2 主要实现的功能 2.3 后续更新 3.开发流程 3.1 使用涂鸦I ...

最新文章

  1. 高性能Mysql主从架构的复制原理及配置详解
  2. 开源交换需新框架 技术团队也待整合
  3. Oracle怎么查外键建在哪个表上
  4. 成功解决成功解决return _iterencode(o, 0) ValueError: Circular reference detected
  5. 基于MATLAB的信号与系统实验指导,《信号与系统及MATLAB实现》实验指导书
  6. 遍历同辈节电的方法_JQuery遍历DOM节点的方法
  7. 作业2 分支循环结构
  8. 如何在Java中同步ArrayList?
  9. DENIED Redis is running in protected mode because protected mode is enabled
  10. 前沿 | NVIDIA PyTorch库让3D深度学习研究更简单!
  11. 【物流选址】基于matlab佛洛依德算法求解物流选址问题【含Matlab源码 892期】
  12. riot修改服务器,riot改地区教程
  13. 读书随笔《36岁, 半熟人生》
  14. android 8.0手机无法更新版本,微信8.0安卓机怎么安装更新 安卓微信更新不了8.0解决办法一览...
  15. 已解决ModuleNotFoundError: No module named ‘frontend‘
  16. c语言中优先级劣后级,基金优先级与劣后级的区别,看完就能明白
  17. 基于51单片机信号发生器仿真设计
  18. 6张图!5G六大细分领域产业图谱
  19. Git for windows 和 cygwin
  20. 苹果Airplay2学习

热门文章

  1. 近似概率编程文献综述
  2. fooview辅助功能 shell_Fooview:一款功能超多的桌面悬浮球,帮你摆脱多余操作
  3. Gorilla源码分析之gorilla/context源码分析
  4. alpha测试和beta测试Gamma测试的区别是什么?
  5. [教程]HP Envy J/K/Q/N系列Haswell平台 Clover引导安装黑苹果
  6. Curio for Mac(头脑风暴思维导图)
  7. R语言中如何编写自己的函数初步入门
  8. 访问www.baidu.com全过程
  9. 华为云如何绑定/解绑二次验证码/虚拟MFA/谷歌身份验证器?
  10. 万科又出新招,小市民只有看热闹的份