当前位置: 首页 > news >正文

嘉楠勘智k230开发板上手记录(二)--hello world

上次成功在k230上烧录sdk,这次准备实现hello world和ssh scp远程k230

主要是按照K230 SDK 基础教程的K230_实战基础篇_hello_world.md

一、PC连接k230

1. 初步准备

首先下载串口工具PuTTY,这个我个人感觉比较方便。

准备两根USB type-C数据线,一根连电源,一根连串口调试。还有Type C公头转网口线缆1根

 图里面网口连接的是小核

开发板上电,可以在设备管理看见COM4和COM5,COM4是小核,COM5是大核

2. PuTTY连接

小核的串口是COM4,速度115200 8N1

 连接过去后重启开发板可以看到输出,默认账号是root,没有密码

 仔细看这时候有输出udhcpc:no lease, failing,这是我们还没有连接上网络

3. k230共享PC网络

上面我们已经插上Type C公头转网口线缆,将线缆用网线与PC连接

然后打开win10的控制面板->网络和 Internet->网络连接

 重启开发板,这时就可以看到开发板的ip了

 4. 免密连接

在wsl中运行ssh-keygen -t rsa生成公钥,在k230中也运行ssh-keygen -t rsa。

把wsl的.ssh/id_rsa.pub中的内容复制到k230的/root/.ssh/authorized_keys中,没有authorized_keys这个文件就用vi新建。

二、代码编写

1. 小核linux编译

在docker中上创建一个C文件hello.c并加入如下代码

#include <stdio.h>
int main (void)
{printf("hello world\n");return 0;
}

运行小核linux工具链

/root/k230_sdk-main/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin/riscv64-unknown-linux-gnu-gcc hello_world.c -o hello

用scp拷到k230上

scp hello root@192.168.137.28:/root/

在k230上(也就是在用PuTTY串口工具打开的端口中),找到刚刚拷过来的hello

./hello

可以看到输出

2. 大核编译

大核的编译比小核麻烦点。下面是官方提供的案例,但是里面有很多的参数我们并不了解

k230_sdk/toolchain/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/riscv64-unknown-linux-musl-gcc -o hello.o -c -mcmodel=medany -march=rv64imafdcv -mabi=lp64d hello.ck230_sdk/toolchain/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/riscv64-unknown-linux-musl-gcc -o hello.elf -mcmodel=medany -march=rv64imafdcv -mabi=lp64d -T k230_sdk/src/big/mpp/userapps/sample/linker_scripts/riscv64/link.lds  -Lk230_sdk_src/big/rt-smart/userapps/sdk/rt-thread/lib -Wl,--whole-archive -lrtthread -Wl,--no-whole-archive -n --static hello.o -Lk230_sdk/src/big/rt-smart/userapps/sdk/lib/risc-v/rv64 -Lk230_sdk/src/big/rt-smart/userapps/sdk/rt-thread/lib/risc-v/rv64 -Wl,--start-group -lrtthread -Wl,--end-group

所以官方提供了另外一种scons的编译方式,Makefile的编译构建较为复杂,不是rt-smart官方提供的编译方式,感兴趣的可以参考src/big/mpp/userapps/sample中的Makefile结构来编译。

  1.  到k230_sdk/src/big/rt-smart/userapp目录下创建一个文件夹,命名为hello
    cd k230_sdk/src/big/rt-smart/userapp
    mkdir hello
    cd hello
  2. 创建以下三个文件
    hello.c
    #include <stdio.h>
    int main (void)
    {printf("hello world\n");return 0;
    }

    SConscript
     

    # RT-Thread building script for componentfrom building import *cwd = GetCurrentDir()
    src = Glob('*.c')
    CPPPATH = [cwd]CPPDEFINES = ['HAVE_CCONFIG_H',
    ]
    group = DefineGroup('hello', src, depend=[''], CPPPATH=CPPPATH, CPPDEFINES=CPPDEFINES)Return('group')

    SConstruct
     

    import os
    import sys# add building.py path
    sys.path = sys.path + [os.path.join('..','..','tools')]
    from building import *BuildApplication('hello', 'SConscript', usr_root = '../')
    
  3. 来到k230_sdk/src/big/rt-smart/目录下

    source smart-env.sh riscv64

  4. 进入k230_sdk/src/big/rt-smart/userapps目录,编译程序
     
    scons --directory=hello
  5. 编译好的程序在hello文件夹下
  6. 把编译好的hello.elf用scp上传到小核linux的/sharefs/app/中
  7. 用PUTTY连接到大核,因为sdk默认运行人脸识别程序,需要输入q+回车终止

  8. 在大核的sharefs/app中可以找到我们上传的hello.elf
  9. 运行hello.elf

这里说一下为什么要免密登录,因为他默认是无密码的,但是我给他设置了密码,ssh远程过去的时候输入我设置的密码会报密码错误,所以我只能通过免密实现ssh 和scp

相关文章:

嘉楠勘智k230开发板上手记录(二)--hello world

上次成功在k230上烧录sdk&#xff0c;这次准备实现hello world和ssh scp远程k230 主要是按照K230 SDK 基础教程的K230_实战基础篇_hello_world.md 一、PC连接k230 1. 初步准备 首先下载串口工具PuTTY&#xff0c;这个我个人感觉比较方便。 准备两根USB type-C数据线&#…...

ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用全流程科研能力提升

查看原文>>>ArcGIS Pro实践技术应用——暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合能力 本文将利用ArcGIS Pro 将您的 GIS 工作组织到工程中&#xff0c;您可以使用 ArcGIS Pro 映射 2D 和 3D 数据。借助 ArcGIS Pro&#xff…...

学习pytorch

学习pytorch 1. 环境安装配置镜像源conda命令记录图像相关代码遇到的问题1. torch.cuda.is_available() False 1. 环境安装 B站小土堆视频 配置镜像源 conda config --show channels conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main…...

动态SQL实现原理一-动态SQL的使用

在介绍MyBatis动态SQL实现原理之前&#xff0c;我们先来了解一下MyBatis动态SQL的使用。顾名思义&#xff0c;动态SQL指的是事先无法预知具体的条件&#xff0c;需要在运行时根据具体的情况动态地生成SQL语句。 假设我们有一个获取用户信息查询操作&#xff0c;具体的查询条件…...

MyBatis动态sql标签帮你轻松搞定sql拼接

动态sql介绍 由于在开发过程不同的业务中会用到不同的操作条件&#xff0c;如果每个业务都拼接不同sql语句的话会是一个庞大的工作量&#xff1b;此时动态sql就能解决这个问题&#xff0c;可以针对不确定的操作条件动态拼接sql语句&#xff0c;根据提交的条件来完成业务sql的执…...

Java课题笔记~ 使用 Spring 的事务注解管理事务(掌握)

通过Transactional 注解方式&#xff0c;可将事务织入到相应 public 方法中&#xff0c;实现事务管理。 Transactional 的所有可选属性如下所示&#xff1a; propagation&#xff1a;用于设置事务传播属性。该属性类型为 Propagation 枚举&#xff0c; 默认值为 Propagation.R…...

UML—浅谈常用九种图

目录 概述: 1.用例图 2.静态图 3.行为图&#xff1a; 4.交互图&#xff1a; 5.实现图&#xff1a; 概述: UML的视图是由九种视图组成的&#xff0c;分别是用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、实施图。我们可以根据这9种图的功能和实现的目的…...

算法与数据结构-跳表

文章目录 什么是跳表跳表的时间复杂度跳表的空间复杂度如何高效的插入和删除跳表索引动态更新代码示例 什么是跳表 对于一个单链表来讲&#xff0c;即便链表中存储的数据是有序的&#xff0c;如果我们要想在其中查找某个数据&#xff0c;也只能从头到尾遍历链表。这样查找效率…...

微信小程序nodejs+vue+uniapp校运会高校运动会报名管理系统

3.1小程序端 小程序登录页面&#xff0c;用户也可以在此页面进行注册并且登录等。 登录成功后可以在我的个人中心查看自己的个人信息或者修改信息等 在广播信息中我们可以查看校运会发布的一些信息情况。 在首页我们可以看到校运会具体有什么项目运动。 在查看具体有什么活动我…...

varint原理 - 负数的编码和解码

前一篇博客 varint原理 - 正数的编码和解码_YZF_Kevin的博客-CSDN博客我们讲了varint的实现原理&#xff0c;举例也分析对于正数的编码&#xff0c;解码过程 本篇博客&#xff0c;我们开始举例分析负数的编码和解码&#xff0c;因为负数有原码&#xff0c;反码&#xff0c;补码…...

大学生口才培训需求分析

标题&#xff1a;大学生口才培训需求分析 摘要&#xff1a; 本论文旨在分析大学生口才培训的需求&#xff0c;通过对大学生口才培训的重要性、现状和挑战进行研究&#xff0c;并结合相关理论和实践经验&#xff0c;提出相应的培训需求和解决方案。通过本论文的研究&#xff0c…...

C++:合并集合(并查集)

合并集合 一共有n个数&#xff0c;编号是1~n&#xff0c;最开始每个数各自在一个集合中。 现在要进行m个操作&#xff0c;操作共有2种&#xff1a; 1.“M a b”&#xff0c;将编号为a和b的两个数的所在的集合合并&#xff0c;如果两个数已经在同一个集合中则忽略这个操作 2.“…...

【LeetCode】数据结构题解(10)[有效的括号]

有效的括号 &#x1f609; 1.题目来源&#x1f440;2.题目描述&#x1f914;3.解题思路&#x1f973;4.代码展示 &#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1…...

5G用户逼近7亿,5G发展迈入下半场!

尽管普遍认为5G投资高峰期正在过去&#xff0c;但是从2023年上半年的情况来看&#xff0c;我国5G建设仍在衔枚疾走。 近日举行2023年上半年工业和信息化发展情况新闻发布会上&#xff0c;工信部人士透露&#xff0c;截至今年6月底&#xff0c;我国5G基站累计达到293.7万个&…...

分布式问题

1. 分布式系统CAP原理 CAP原理&#xff1a;指在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、Availability&#xff08;可用性&#xff09;、Partitontolerance&#xff08;分区容忍性&#xff09;&#xff0c;三者不可得兼。 一致性&#xff08;C…...

教雅川学缠论06-中枢

本系列文章之前讲的内容都只有上升和下降两类趋势&#xff0c;并没有提及盘整&#xff0c;在缠论中&#xff0c;中枢这个新词汇用来定义盘整&#xff0c;中枢&#xff1a; 1.至少由5条线段&#xff08;或笔&#xff09;组成 2.中枢是有方向的&#xff0c;中枢左右两侧外面的线&…...

如何调教让chatgpt读取自己的数据文件(保姆级图文教程)

提示&#xff1a;如何调教让chatgpt读取自己的数据文件(保姆级图文教程) 文章目录 前言一、如何投喂自己的数据&#xff1f;二、调教步骤总结 前言 chatgpt提示不能读取我们提供的数据文件&#xff0c;我们应该对它进行调教。 一、如何投喂自己的数据&#xff1f; 让chatgpt读…...

React Native Camera的使用

介绍 React Native Camera是一个用于在React Native应用中实现相机功能的库。它允许你访问设备的摄像头&#xff0c;并捕获照片和视频。 使用 安装 npm install react-native-camera --save 安装完成后&#xff0c;你需要链接React Native Camera库到你的项目中。可以使用以…...

【Matlab】Elman神经网络遗传算法(Elman-GA)函数极值寻优——非线性函数求极值

往期博客&#x1f449; 【Matlab】BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值 【Matlab】GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值 【Matlab】RBF神经网络遗传算法(RBF-GA)函数极值寻优——非线性函数求极值 本篇博客将主要介绍Elman神…...

@ControllerAdvice注解使用及原理探究 | 京东物流技术团队

最近在新项目的开发过程中&#xff0c;遇到了个问题&#xff0c;需要将一些异常的业务流程返回给前端&#xff0c;需要提供给前端不同的响应码&#xff0c;前端再在次基础上做提示语言的国际化适配。这些异常流程涉及业务层和控制层的各个地方&#xff0c;如果每个地方都写一些…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...