庐山派K230学习日记1 从点灯到吃灰

1 简介​

庐山派以K230为主控芯片,支持三路摄像头同时输入,典型网络下的推理能力可达K210的13.7倍(算力约为6TOPS)。支持CanMV,可作为AI与边缘计算平台

图 0

K230简介

K230芯片集成了两颗RISC-V处理器核心,双核玄铁C908,12nm 制程工艺,主频高达1.6GHz,是全球首款支持RISC-V Vector 1.0标准的商用SOC,配备第三代KPU处理单元,专为图像、视频、音频处理和AI加速设计,提供强劲的本地AI推理能力。支持三路MIPI CSI视频输入,最大分辨率可达4K。K230支持常见的AI计算框架如TensorFlow和PyTorch。下面是该处理器的框架图:

图 2

2 开发前准备​

序号名称数量
1️⃣立创·庐山派-K230-CanMV开发板 主板1片
2️⃣GC2093||OV5647 摄像头(22P 0.5mm间距)1块
3️⃣TF卡(2G以上 class10等级以上)1片
4️⃣Type-C数据线(用来连接电脑)1条
5️⃣TF 卡读卡器(把固件烧录进TF卡)1个

安装CanMV IDE K230,下载链接,写本文时最新版本为4.0.7,大家下载时下载最新的就可以了,单击下图中的CanMV IDE K230 for windows就可以把安装包下载到本地进行安装了。

图 3

打开后按照提示进行安装就可以了,注意安装到你知道的目录,建议不要安装到C盘。

图 4

安装成功之后可以在win11系统左下角的搜索栏中点击搜索找到CanMV IDE K230,我电脑这里的CanMV IDE是给K210使用的,如果大家也用过k210的话在打开IDE的时候需要注意,只有后面带K230标识的才支持我们的立创·庐山派-K230-CanMV开发板。如果搜索不到大家也可以直接去自己的安装目录的bin目录下的canmvide.exe文件。

图 5

3 获取及烧录固件​

3.1 获取固件​

固件获取链接

1️⃣ 【从嘉楠开发者社区获取最新固件】 (推荐)

点击这个链接,在资料下载栏目->K230->Images->CanMV->Micropython->CanMV-K230_LCKFB_micropython_v1.2-0-g9e4d9ca_nncase_v2.9.0.img.gz。

2️⃣ 【从Github仓库获取最新固件】

点击这个[链接](Releases · kendryte/canmv_k230),下载最新固件注意需要下载里面带LCKFB字符的固件。

3️⃣ 【从我们的资料包中获取】

在我们的离线资料里面的 【1】固件 目录里面寻找。

需要注意,不管是从Github下载下来的还是从我们资料包中获取的都是压缩包,解压出来的才是固件镜像。

⚠️警告:

.gz后缀结尾的是压缩包,.img后缀结尾的才是固件。只能往 TF卡 中只能烧录 .img文件 格式的固件,如果直接烧录 .gz文件 可能会造成开发板损坏。

如下图中的,1是固件镜像,2是压缩包,1是2解压得出来的文件。

图 6

3.2 烧录固件​

下载烧录工具Rufus,下载地址:Index of /downloads,如果网络不通畅的话也可以从我们的离线资料里面的 【0】工具/【2】烧录工具/【1】Rufus 目录中获取,这个软件是免安装的,下载下来后直接双击打开就可以了。我这里用的是4.5版本,界面如下:

图 7

此时把你的TF卡插入读卡器,然后把读卡器插入电脑,我这里使用的是4G的TF卡,插入后Rufus软件界面的设备列表栏会显示一个设备,并且左下角也会提示可以检测到设备,此时就可以点击镜像文件(请选择)后方的选择按钮来选择我们要烧录的镜像了,就选择我们在上一小节中获取到的 CanMV-K230_LCKFB_micropython_v1.1-0-g5a6fc54_nncase_v2.9.0.img 文件就可以了,选择后如下图所示:

图 8

正确选择固件镜像文件后我们直接点击右下角的开始按钮,继续操作会造成TF内所有内容全部消失,需要确保你这个TF卡内部没有重要数据,然后等待烧录完成就可以了。当Rufus软件的状态那一栏走完进度条,提示准备就绪时就表示成功烧录固件了,如下图所示:

图 9

此时我们就可以按以下步骤操作:

步骤:

  1. 关闭Rufus软件。
  2. 在电脑上软件弹出我们的读卡器 。
  3. 拔出读卡器。
  4. 从读卡器上拔出我们烧录号固件镜像的TF卡。
  5. 在 立创·庐山派-K230-CanMV开发板 未供电状态插入TF卡。

4 立创·庐山派 启动​

完成以上操作后,我们就可以给开发板上电了。用Type-C数据线将开发板连入电脑。

如果正常启动,板子上的红色指示灯(红灯)就会自动点亮,稍微等待一会后(十秒内)。我们就可以在设备管理器中看到一个 新的USB串行设备(COMx),同时我们电脑的也会出现一个CanMV设备,可以当做U盘来访问开发板内的文件。

图 10

⚠️注意:

在第一次上电时,庐山派开发板会自动将TF卡除固件镜像外的剩余空间格式化为fat,并挂载在/data文件夹,格式化会占用一些时间并且会主动进行一次重启。后续上电时不会再进行这个操作,所以第一次上电会稍微慢一点。

当然,如果你已经安装了CanMV IDE K230,打开IDE,当 立创·庐山派-K230-CanMV开发板 正常启动后,左下角的连接图标的右上脚就会出现一个USB标志,如果没有出现则表示开发板启动失败或未成功连接电脑。下图的左边是未接入开发板的IDE,右边是接入了开发板的IDE。

图 11

5 运行例程​

目前烧录固件的TF卡内有所有嘉楠官方提供的例程,源码+模型文件+字体等都在TF卡中,当立创庐山派开发板连接电脑后,用户可以直接在电脑的CanMV设备中的sdcard文件夹中找到所有文件

图 12

⚠️注意:

  1. 不要使用IDE自带的例程,版本太老可能无法直接运行,需要使用固件自带的例程。
  2. 例程默认的摄像头使用的是CSI2,就是开发板正面的那个立式的22P摄像头座,在运行和摄像头有关的例程时需要注意。
  3. 为了避免占用USB传输带宽,建议将例程拷贝至电脑本地存储后再打开复制。

其历程examples,libs,res目录结构如表所示:

sdcard:
├─examples
│  ├─01-Micropython-Basics
│  │      demo_crc16.py
│  │      demo_files.py
│  │      demo_fs_info.py
│  │      demo_globals.py
│  │      demo_json.py
│  │      demo_logging.py
│  │      demo_sha256.py
│  │      demo_sys_info.py
│  │      demo_thread.py
│  │      demo_time.py
│  │      demo_view_mem.py
│  │      demo_yield.py
│  │      demo_yield_task.py
│  │
│  ├─02-Media
│  │      acodec.py
│  │      audio.py
│  │      mp4muxer.py
│  │      rtsp_server.py
│  │      video_decoder.py
│  │      video_encoder.py
│  │      video_player.py
│  │
│  ├─03-Machine
│  │  ├─adc
│  │  │      adc.py
│  │  │
│  │  ├─fft
│  │  │      fft.py
│  │  │
│  │  ├─fpioa
│  │  │      fpioa.py
│  │  │
│  │  ├─i2c
│  │  │      i2c_master.py
│  │  │      i2c_slave.py
│  │  │
│  │  ├─pin
│  │  │      pin.py
│  │  │
│  │  ├─pwm
│  │  │      pwm.py
│  │  │
│  │  ├─rtc
│  │  │      rtc.py
│  │  │
│  │  ├─spi
│  │  │      spi.py
│  │  │
│  │  ├─timer
│  │  │      timer.py
│  │  │
│  │  ├─touch
│  │  │      touch.py
│  │  │
│  │  ├─uart
│  │  │      uart.py
│  │  │      uart1.py
│  │  │
│  │  └─wdt
│  │          wdt.py
│  │
│  ├─04-Cipher
│  │      cipher.py
│  │
│  ├─05-AI-Demo
│  │      dynamic_gesture.py
│  │      eye_gaze.py
│  │      face_detection.py
│  │      face_landmark.py
│  │      face_mesh.py
│  │      face_parse.py
│  │      face_pose.py
│  │      face_recognition.py
│  │      face_registration.py
│  │      falldown_detect.py
│  │      finger_guessing.py
│  │      hand_detection.py
│  │      hand_keypoint_class.py
│  │      hand_keypoint_detection.py
│  │      hand_recognition.py
│  │      keyword_spotting.py
│  │      licence_det.py
│  │      licence_det_rec.py
│  │      nanotracker.py
│  │      object_detect_yolov8n.py
│  │      ocr_det.py
│  │      ocr_rec.py
│  │      person_detection.py
│  │      person_keypoint_detect.py
│  │      puzzle_game.py
│  │      segment_yolov8n.py
│  │      self_learning.py
│  │      space_resize.py
│  │      tts_zh.py
│  │
│  ├─06-Display
│  │      display_hdmi.py
│  │      display_lcd.py
│  │      display_virt.py
│  │
│  ├─07-April-Tags
│  │      find_apriltags.py
│  │      find_apriltags_3d_pose.py
│  │
│  ├─08-Codes
│  │      find_barcodes.py
│  │      find_datamatrices.py
│  │      find_qrcodes.py
│  │
│  ├─09-Color-Tracking
│  │      automatic_grayscale_color_tracking.py
│  │      automatic_rgb565_color_tracking.py
│  │      black_grayscale_line_following.py
│  │      image_histogram_info.py
│  │      image_statistics_info.py
│  │      multi_color_code_tracking.py
│  │      single_color_code_tracking.py
│  │
│  ├─10-Drawing
│  │      arrow_drawing.py
│  │      circle_drawing.py
│  │      cross_drawing.py
│  │      ellipse_drawing.py
│  │      flood_fill.py
│  │      image_drawing.py
│  │      image_drawing_advanced.py
│  │      image_drawing_alpha_blending_test.py
│  │      keypoints_drawing.py
│  │      line_drawing.py
│  │      rectangle_drawing.py
│  │      text_drawing.py
│  │
│  ├─11-Feature-Detection
│  │      edges.py
│  │      find_blobs.py
│  │      find_lines.py
│  │      find_rects.py
│  │      hog.py
│  │      lbp.py
│  │      linear_regression_fast.py
│  │
│  ├─12-Image-Filters
│  │      adaptive_histogram_equalization.py
│  │      blur_filter.py
│  │      color_binary_filter.py
│  │      color_light_removal.py
│  │      edge_filter.py
│  │      erode_and_dilate.py
│  │      gamma_correction.py
│  │      grayscale_bilateral_filter.py
│  │      grayscale_binary_filter.py
│  │      grayscale_light_removal.py
│  │      histogram_equalization.py
│  │      kernel_filters.py
│  │      lens_correction.py
│  │      linear_polar.py
│  │      log_polar.py
│  │      mean_adaptive_threshold_filter.py
│  │      mean_filter.py
│  │      median_adaptive_threshold_filter.py
│  │      median_filter.py
│  │      midpoint_adaptive_threshold_filter.py
│  │      midpoint_filter.py
│  │      mode_adaptive_threshold_filter.py
│  │      mode_filter.py
│  │      negative.py
│  │      perspective_and_rotation_correction.py
│  │      perspective_correction.py
│  │      rotation_correction.py
│  │      sharpen_filter.py
│  │      unsharp_filter.py
│  │      vflip_hmirror_transpose.py
│  │
│  ├─14-Socket
│  │      http_client.py
│  │      http_server.py
│  │      iperf3.py
│  │      network_lan.py
│  │      network_wlan_ap.py
│  │      network_wlan_sta.py
│  │      tcp_client.py
│  │      tcp_server.py
│  │      udp_clinet.py
│  │      udp_server.py
│  │
│  ├─15-LVGL
│  │  │  lvgl_demo.py
│  │  │  lvgl_touch_demo.py
│  │  │
│  │  └─data
│  │      ├─font
│  │      │      lv_font_simsun_16_cjk.fnt
│  │      │      montserrat-16.fnt
│  │      │
│  │      └─img
│  │              animimg001.png
│  │              animimg002.png
│  │              animimg003.png
│  │
│  ├─16-AI-Cube
│  │      ClassificationApp.py
│  │      DetectionApp.py
│  │      MultiLabelApp.py
│  │      OCR_Det.py
│  │      SegmentationApp.py
│  │      SelfLearningApp.py
│  │
│  ├─17-Sensor
│  │      camera_dual_bind_hdmi.py
│  │      camera_mirror_flip.py
│  │      camera_single_bind_hdmi.py
│  │      camera_single_bind_lcd.py
│  │      camera_single_show_hdmi.py
│  │      camera_single_show_lcd.py
│  │      camera_snapshot_and_save.py
│  │      camera_triple_bind_hdmi.py
│  │
│  ├─18-NNCase
│  │  │  ai2d+kpu.py
│  │  │  kpu.py
│  │  │
│  │  └─face_detection
│  │          face_detection_320.kmodel
│  │          face_detection_ai2d_input.bin
│  │          face_detection_ai2d_output.bin
│  │          prior_data_320.bin
│  │
│  ├─99-HelloWorld
│  │      helloworld.py
│  │
│  ├─ai_test_kmodel
│  │      embedding.kmodel
│  │      insect_det.kmodel
│  │      landscape_multilabel.kmodel
│  │      ocr_det_int16.kmodel
│  │      ocr_rec_int16.kmodel
│  │      ocular_seg.kmodel
│  │      veg_cls.kmodel
│  │
│  ├─ai_test_utils
│  │      0.jpg
│  │      1.jpg
│  │      2.jpg
│  │      3.jpg
│  │      4.jpg
│  │      5.jpg
│  │      6.jpg
│  │      7.jpg
│  │      8.jpg
│  │      dict.txt
│  │
│  ├─kmodel
│  │      cropped_test127.kmodel
│  │      eye_gaze.kmodel
│  │      face_alignment.kmodel
│  │      face_alignment_post.kmodel
│  │      face_detection_320.kmodel
│  │      face_landmark.kmodel
│  │      face_parse.kmodel
│  │      face_pose.kmodel
│  │      face_recognition.kmodel
│  │      gesture.kmodel
│  │      handkp_det.kmodel
│  │      hand_det.kmodel
│  │      hand_reco.kmodel
│  │      hifigan.kmodel
│  │      kws.kmodel
│  │      licence_reco.kmodel
│  │      LPD_640.kmodel
│  │      nanotracker_head_calib_k230.kmodel
│  │      nanotrack_backbone_sim.kmodel
│  │      ocr_det_int16.kmodel
│  │      ocr_rec_int16.kmodel
│  │      person_detect_yolov5n.kmodel
│  │      recognition.kmodel
│  │      yolov5n-falldown.kmodel
│  │      yolov8n-pose.kmodel
│  │      yolov8n_320.kmodel
│  │      yolov8n_seg_320.kmodel
│  │      zh_fastspeech_1_f32.kmodel
│  │      zh_fastspeech_2.kmodel
│  │
│  └─utils
│      │  dict.txt
│      │  fist.bin
│      │  five.bin
│      │  phone_map.txt
│      │  pinyin.txt
│      │  prior_data_320.bin
│      │  shang.bin
│      │  shear.bin
│      │  small_pinyin.txt
│      │  wozai.wav
│      │  xia.bin
│      │  you.bin
│      │  zuo.bin
│      │
│      ├─db
│      │      readme.txt
│      │
│      └─db_img
│              id_1.jpg
│              id_2.png
│
├─libs
│      AI2D.py
│      AIBase.py
│      PipeLine.py
│      RtspSever.py
│
└─res└─fontLICENSE.txtreadme.txtSourceHanSansSC-Normal-Min.ttf

打开CanMV IDE K230,找到你感兴趣的例程,复制粘贴去就好了(亦可以点击IDE左上角的文件->打开文件来加载需要用到的例程),比如我这里打开examples->05-AI-Demo->object_detect_yolov8n.py,复制进IDE里面,然后连接开发板后点击左下角的绿色运行小三角就可以使用了,如下动图所示:

图 13

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

活动预告 |【Part2】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识

课程介绍 通过参加“Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识”活动提升你的技能。在本次免费的介绍性活动中,你将获得所需的安全技能和培训,以创造影响力并利用机会推动职业发展。你将了解安全性、合规性和身份的基础知…

【PCIe 总线及设备入门学习专栏 4.5 -- PCIe Message and PCIe MSI】

文章目录 PCIe Message 与 MSIPCIe Message 和 MSI 的作用与关系MSI 的配置与寄存器MSI 和 ARM GIC 的关系示例:MSI 在 ARM GIC 的实际应用总结 PCIe Message 与 MSI 本文将介绍 PCIe message 的作用以及message 与 MSI 的关系,再介绍 MSI 如何配置以及…

C++11右值与列表初始化

1.列表初始化 C98传统的{} C98中一般数组和结构体可以用{}进行初始化。 struct Point {int _x;int _y; }; int main() {int array1[] { 1, 2, 3, 4, 5 };int array2[5] { 0 };Point p { 1, 2 };return 0; } C11中的{} C11以后统一初始化方式,想要实现一切对…

设计模式 创建型 建造者模式(Builder Pattern)与 常见技术框架应用 解析

单例模式(Singleton Pattern),又称生成器模式,是一种对象构建模式。它主要用于构建复杂对象,通过将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建出具有不同表示的对象。该模式的核心思想是将…

什么是Redis哨兵机制?

大家好,我是锋哥。今天分享关于【什么是Redis哨兵机制?】面试题。希望对大家有帮助; 什么是Redis哨兵机制? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 哨兵(Sentinel)机制是 Redis 提…

全国计算机设计大赛大数据主题赛(和鲸赛道)经验分享

全国计算机设计大赛大数据主题赛(和鲸赛道)经验分享 这是“和鲸杯”辽宁省普通高等学校本科大学生计算机设计竞赛启动会汇报—大数据主题赛的文档总结。想要参加2025年此比赛的可以借鉴。 一、关于我 人工智能专业 计赛相关奖项: 2022年计…

STM32 + 移远EC800 4G通信模块数传

一、4G模块简述 EC800M-CN 是移远通信(Quectel)推出的一款高性能、超小尺寸的 LTE Cat 1 无线通信模块,专为 M2M(机器对机器)和 IoT(物联网)应用设计。它具有以下主要特点: 通信速率…

标准库以及HAL库——按键控制LED灯代码

按键控制LED本质还是控制GPIO,和点亮一个LED灯没什么区别 点亮一个LED灯:是直接控制输出引脚,GPIO初始化推挽输出即可 按键控制LED:是按键输入信号从而控制输出引脚,GPIO初始化推挽输出一个引脚以外还得加一个GPIO上拉输入 但是…

springboot525基于MVC框架自习室管理和预约系统设计与实现(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装自习室管理和预约系统软件来发挥其高效地信息处理的作用&am…

Unity Canvas中显示粒子特效

首先在场景中新建一个粒子特效 修改一下参数 1.改变粒子特效的渲染层级,层级修改为UI层,由UI相机渲染 使用粒子特效的Sorting Layer ID和Order In Layer,Sorting Layer ID设置为UI(如果没有UI层则新建就好了),对UI进行排序 对于要显示在前的UI组件添加Canvas组件,设置O…

Linux下部署Redis集群 - 一主二从三哨兵模式

三台服务器redis一主二从三哨兵模式搭建 最近使用到了redis集群部署,使用一主二从三哨兵集群部署redis,将自己部署的过程中的使用心得分享给大家,希望大家以后部署的过程减少一些坑。 服务器准备 3台服务器 ,确定主redis和从red…

服务器端请求伪造之基本介绍

一.服务器端请求伪造漏洞基础 1.客户端请求 客户端请求指的是由客户端设备(如个人计算机、智能手机、平板电脑等)或软件(浏览器、各种APP)发出的请求,以获取指定的网页、图片、视频或其他资源。比如当用户在浏览器中输…

akamai3.0反爬教程逆向分析9个视频汇总

目录 一、akamai2.0文章二、akamai3.0每月疑似改版点二、9个视频汇总如下 一、akamai2.0文章 文章1cookie反爬之akamai_2.0-上文章2cookie反爬之akamai_2.0-上文章3cookie反爬之akamai_2.0-上文章中akamai2.0对应调试html与js文件 二、akamai3.0每月疑似改版点 详细文字与2.…

2024年12月 Scratch 图形化(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共25题,共50分) 第 1 题 小猫初始位置和方向如下图所示,下面哪个选项能让小猫吃到老鼠?( ) A. B. C.

【74LS160+74LS273DW锁存器8位的使用频率计】2022-7-12

缘由 想知道这个数字频率计仿真哪里出现错误了,一直无法运行哎,如何解决?-运维-CSDN问答

系统思考—信任

《基业长青》作者指出:“在人生的重要十字路口,选择信任是一场赌注。信任带来的好处可能巨大,而失去信任的代价却相对有限。但如果选择不信任,最优秀的人才可能因失望而离开。” 在企业管理中,信任不仅是人际关系的纽…

推理加速:投机采样经典方法

一 SpecInfer 基于模型 SpecInfer([2305.09781] SpecInfer: Accelerating Generative Large Language Model Serving with Tree-based Speculative Inference and Verification) SpecInfer 投机采样利用多个小型模型(SSM)快速生…

深入理解Java中的Set集合:特性、用法与常见操作指南

一、HashSet集合 1.HashSet集合的特点 2.HashSet常用方法 ①:add(Object o):向Set集合中添加元素,不允许添加重复数据。 ②:size():返回Set集合中的元素个数 ③.remove(Object o): 删除Set集合中的obj对…

黑马Java面试教程_P10_设计模式

系列博客目录 文章目录 系列博客目录前言1. 工厂方法模式1.1 概述1.2 简单工厂模式1.2.1 结构1.2.2 实现1.2.3 优缺点 1.3 工厂方法模式1.3.1 概念1.3.2 结构1.3.3 实现1.3.4 优缺点 1.4 抽象工厂模式1.4.1 概念1.4.2 结构1.4.3 实现1.4.4 优缺点1.4.5 使用场景 总结&#xff0…

开源架构的容器化部署优化版

上三篇文章推荐: 开源架构的微服务架构实践优化版(New) 开源架构中的数据库选择优化版(New) 开源架构学习指南:文档与资源的智慧锦囊(New) 我管理的社区推荐:【青云交社区…