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

【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南

全志D1-H开发板【哪吒】使用Deabian系统入门

特别说明:

  1. 因为涉及到操作较多,博文可能会导致格式丢失

  2. 其中内容,会根据后续使用做优化调整

目录:

  • 参考资料
  • 固件烧录
  • 启动
  • 调教
  • 点灯
  • 问题

〇、参考资料

  1. 官方资料
    开发板-D1开发板【哪吒】
    全志在线开发者社区 - 资源下载
    RISC-V - Debian Wiki

  2. 学习资料
    参考的学习资料较多,感谢下列资料作者:
    Debian by Sipeed - D1-H
    D1 Nezha Debian镜像基础使用教程
    Nezha D1 debian镜像更新帖 - Sipeed 开源社区
    「RVBoards-哪吒」开启 SSH 和 VNC 远程访问,摆脱烦人的鼠标键盘显示器 | RVBoards 论坛
    【Station M2】打造开发人员专用最强便携小主机 - 广受欢迎的专业电子论坛!
    Debian安装中文支持 - Linux运维 - 运维网
    Habitat: Debian WQY
    debian stretch下的 lxde 配置 | Frapples的博客
    怎样在 Debian 11 上设置静态 IP | 月灯依旧
    全志D1开发板(哪吒 RISCV64)开箱评测_专栏RISC-V MCU中文社区
    生信之旅-debian11增加开机自启脚本
    How to Change Your MAC Address on Linux
    全志在线 D1哪吒开发板开机连接wifi热点, 启动 sshd 服务
    How to set up static IP address on Debian Linux 10/11 - nixCraft
    如何在Debian 10安装vscode | myfreax

一、固件烧录

  1. 官方指导
    Debian by Sipeed - D1-H

  2. 固件下载
    链接: https://pan.baidu.com/s/1-3CocbTUWPLi2XKrb87LpA 提取码:z4gn

  3. 烧录工具
    PhoenixCard.zip

  4. SD卡准备
    准备一张8G以上的SD卡,建议至少32G,以免后悔来不及

  5. 烧录

  • 将SD卡插到读卡器,连接到电脑
  • 打开PhoenixCard,选择好固件(需解压),确认自动选择的盘正确,勾选启动卡,点击烧录即可
  • 预计15到30分钟,先干点别的
  1. 分区大小调整
    务必要到Linux环境下,调整一下SD卡上分区的大小,不然后面的apt upgrade会挂了
# 查看sd卡挂载到哪个挂载点了,
sudo fdisk -l
Device            Start      End Sectors  Size Type
/dev/sda1   41464    49527     8064 3.9M Microsoft basic data
/dev/sda2   49528    50031      504 252K Microsoft basic data
/dev/sda3   50032    50535      504 252K Microsoft basic data
/dev/sda4   50536    71199    20664 10.1M Microsoft basic data
/dev/sda5   71200    72207     1008 504K Microsoft basic data
/dev/sda6   72208   100431    28224 13.8M Microsoft basic data
/dev/sda7  100432 16877647 16777216    8G Microsoft basic data
/dev/sda8 16877648 60504063 43626416 20.8G Microsoft basic data# sd卡会被分为八个区,sdX1-sdX8,将sdX替换为上一步实际显示的即可
sudo e2fsck -f /dev/sdX7
sudo resize2fs -p /dev/sdX7

二、启动:

  1. 插卡
    在背后插上SD卡,然后连接Type-C、网线,接上USB键盘,Type-C通电即可启动
    在这里插入图片描述

  2. 上电

  • 启动时,会显示SIPEED的图标;然后会进入登录界面;启动速度不是很快,耐心等待
  • 默认账户:
    sipeed / licheepi
    root / licheepi
  1. 远程ssh连接
  • 进入系统后,通过开始菜单中的Netwrok connection查看当前ip地址,然后连接
  • ssh sipeedd@ip

三、调教:

默认的系统,得好好调教才好使用

  1. 了解系统基本情况
sudo lsb_release -a
No LSB modules are available.
Distributor ID:   Debian
Description:  Debian GNU/Linux bookworm/sid
Release:   unstable
Codename:  sid
  • 通过以上输出,可以了解系统为Debian 开发版;sid表示开发版
  1. 设置默认shell使用bash
# 选择No即可
sudo dpkg-reconfigure dash# 查看默认shell,设置后,显示为 /bin/sh -> bash 
ls -l /bin/sh
  1. 设置ssh证书登陆
sudo vim /etc/ssh/sshd.conf
# -------- 取消下面这行的注释 --------
PubkeyAuthentication yes

重启sshd服务

sudo systemctl restart sshd# 设置当前用户的key登录
mkdir ~/.ssh
chmod 0700 ~/.ssh# 设置登录pub key
sudo vim ~/.ssh/authorized_keys
# -------- 将ssh登录的pub key拷贝到这里 --------
ssh-rsa 公钥 邮箱
  • 设置完成后,即可在主机或者其他电脑上,使用对应的私钥登录
  1. 时区设置
sudo tzselect# 依次选择4-Asia、9-China、1-Beijing Time、1-Yes# 设置当前环境时区:TZ='Asia/Shanghai'; export TZ# 查看当前时间:date# 执行下面的指令,并在最后添加时区设置sudo vim /etc/profile# -----------以下内容为添加内容-------------TZ='Asia/Shanghai'; export TZ# -----------以上内容为添加内容-------------
  1. 设置apt更新源
  • 列表访问:debian-ports阿里巴巴开源镜像站 (aliyun.com)
# 备份原有的更新源配置
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak# 使用阿里源,打开后输入i即可开始填写内容,按ESC,再按!wq回车,即可保存
sudo vim /etc/apt/sources.list
# -----------以下内容为填写内容-------------
deb https://mirrors.aliyun.com/debian-ports/ sid main
# -----------以上内容为填写内容-------------
  1. 更新系统
  • 先下载 https://www.ports.debian.org/archive_2022.key,然后导入并更新
sudo apt-key add archive_2022.key
sudo apt update
sudo apt upgrade -y    # 中途如弹出选择界面,直接回车即可
sudo apt autoremove
  1. 安装中文环境支持
  • 安装中文locale、字体,并启用中文支持
  安装localessudo apt install -y locales# 所有的选项,都选择zh_CN.UTF-8,然后等待完成sudo dpkg-reconfigure locales# 安装中文字体sudo apt install -y fonts-arphic-ukai fonts-arphic-gkai00mp fonts-arphic-bkai00mpsudo apt install -y xfonts-wqy ttf-wqy-microhei ttf-wqy-zenhei# 设置当前用户locale,按照如下信息进行设置vim /home/sipeed/.bashrcexport LC_ALL="zh_CN.UTF-8"export LANG="zh_CN.UTF-8"export LANGUAGE="zh_CN.UTF-8:zh:en_US.UTF-8:en"# 设置系统全局locale,按照如下信息进行设置sudo vim /etc/environmentLANGUAGE="zh_CN.UTF-8:zh:en_US.UTF-8:en"LANG="zh_CN.UTF-8"# 测试是否生效:设置生效后,执行data指令应返回中文source ~/.bashrcdate
  1. 启用开机脚本
  • 后续有不少操作,需要设置开机启动,所以此处县启动,方便后续操作
  • 在rc.local服务中添加下面的信息
sudo vim /lib/systemd/system/rc-local.service
# -----------以下内容为添加内容-------------
[Install] 
WantedBy=multi-user.target
# -----------以上内容为添加内容------------- # 设置/etc/rc.local启动脚本
sudo vim /etc/rc.local
# -----------以下内容为填写内容-------------
#!/bin/sh -e# 在这里输入需要自启的脚本
exit 0
# -----------以上内容为填写内容-------------   # 设置启动脚本执行权限
sudo chmod +x /etc/rc.local# 启动对应的服务
sudo systemctl enable rc-local  # 启用
sudo systemctl start rc-local.service # 开始运行
sudo systemctl status rc-local.service  # 查看状态
  1. 设置有线使用固定mac地址
  • 这块板子有个奇葩的地方,有线网卡的mac地址,重启一次变一次,通过下面的方式,设置为固定值即可
# 安装screen,防止网络更改中途失联,命令执行不完全sudo apt install -i screen macchanger# 开启screenscreen# 查看当前的eth0 mac addrsudo macchanger -s eth0Current MAC:   86:53:0e:f0:ee:29 (unknown)Permanent MAC: 00:00:00:00:00:00 (XEROX CORPORATION)# 将上一步中显示Current MAC,进行设置;请根据上一步显示的实际结果设置sudo macchanger -m eth0 86:53:0e:f0:ee:29 eth0Current MAC:   86:53:0e:f0:ee:29 (unknown)Permanent MAC: 00:00:00:00:00:00 (XEROX CORPORATION)New MAC:       86:53:0e:f0:ee:29 (unknown)It's the same MAC!!# 重启网络sudo /etc/init.d/networking restart# 写入到开机启动中,将下面的对应内容,添加到/etc/rc.local启动脚本sudo vim /etc/rc.local# 在这里输入需要自启的脚本# -----------以下内容为添加内容------------- # 设置网卡mac地址/usr/bin/macchanger -m 86:53:0e:f0:ee:29 eth0/etc/init.d/networking restart# -----------以上内容为添加内容-------------      exit 0
  • 设置完成后,可以尝试重启板子,查看mac地址是否已经固定
  1. 设置静态IP地址
  • 请根据实际情况,设置对应的ip、掩码、网关、DNS
# 备份默认配置sudo cp /etc/network/interfaces /etc/network/interfaces.baksudo vim /etc/network/interfaces# -------- 参考如下信息进行设置 --------#iface eth0 inet dhcp  # The loopback network interfaceauto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.1.141netmask 255.255.255.0gateway 192.168.1.1dns-domain wowodns-nameservers 192.168.1.1

11.远程桌面登录
11.1 安装vnc

apt install tigervnc-standalone-server -y

11.2 启停vnc

  • 首次启动时,会提示设置用户密码,请仔细设置
# 启动,可添加参数-geometry 1280x800设置分辨率
vncserver -localhost no -display :1# 查看
vncserver -list# 停止
vncserver -kill :1

11.3 设置开机启动

#在开机脚本exit 0前面添加下面的脚本
sudo vim /etc/rc.local
# -----------以下内容为添加内容-------------
echo "start vnc server"
export HOME=/home/sipeed
/usr/bin/sudo -u sipeed -i vncserver -localhost no -display :1 -geometry 1280x800
echo "vnc server started"
# 这里需要先配置 HOME 环境变量, vncserver 需要
# -----------以上内容为添加内容-------------
exit 0
  • 列表设置完成后,重启时,将会自动启动vnc server,方便远程桌面连接

11.4 远程连接:

  • 在其他电脑上,使用vnc viewer进行连接
  • 连接地址: http://开发板ip:5901

在这里插入图片描述

  1. 安装vscode[跳过]
  • 安装好vscode,就能当开发小强用了
  • vscode目前还没有提供Debian@risc-v的运行版本,以下操作跳过
# 导入微软GPG秘钥:
sudo apt install -y software-properties-common apt-transport-https curl
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -# 添加微软vscode安装源
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"# 更新安装源索引,并安装vscode
sudo apt update
sudo apt install code

四. 点灯

  • 最激动人心的时刻,不就是点个灯么;好在这个Debian by Sipeed已经提供了LED支持,使用下面的代码,就能很方便的点灯了
vim ~/test_led.sh# -----------以下内容为填写内容------------- #!/bin/bashfunction set_led(){echo $1 > /sys/class/leds/sunxi_led0r/brightnessecho $2 > /sys/class/leds/sunxi_led0g/brightnessecho $3 > /sys/class/leds/sunxi_led0b/brightness}let type=8for i in $(seq 1 1000);doif [[ $((i % type)) -eq 0 ]];thenset_led 0 0 0elif [[ $((i % type)) -eq 1 ]];thenset_led 255 0 0elif [[ $((i % type)) -eq 2 ]];thenset_led 0 255 0elif [[ $((i % type)) -eq 3 ]];thenset_led 0 0 255elif [[ $((i % type)) -eq 4 ]];thenset_led 255 255 0elif [[ $((i % type)) -eq 5 ]];thenset_led 255 0 255elif [[ $((i % type)) -eq 6 ]];thenset_led 0 255 255elif [[ $((i % type)) -eq 7 ]];thenset_led 255 255 255fisleep 0.5done# -----------以上内容为填写内容-------------     # 设置执行权限chmod a+x test_led.sh# 执行sudo ./test_led.sh

现在请看板子,板载WS2812 LED欢快的亮起来了,颜色还是变化的!

相关文章:

【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南

全志D1-H开发板【哪吒】使用Deabian系统入门 特别说明: 因为涉及到操作较多,博文可能会导致格式丢失 其中内容,会根据后续使用做优化调整 目录: 参考资料固件烧录启动调教点灯问题 〇、参考资料 官方资料 开发板-D1开发板【…...

Redis 8种基本数据类型及常用命令和数据类型的应用场景

小伙伴们好,欢迎关注,一起学习,无限进步 文章内容为学习的一些笔记及工作中遇到的一些问题 文章目录 Redis 五大数据类型keyStringListSetHashSorted Set 三种特殊类型Geospatial 地理位置HyperloglogBitmap Redis 五大数据类型 redis 官方网…...

JAVA内存模型与JVM内存结构

注意区分Java内存模型(Java Memory Model,简称JMM)与Jvm内存结构,前者与多线程相关,后者与JVM内部存储相关。本文会对两者进行简单介绍。 一、JAVA内存模型(JMM) 1. 概念 说来话长,由于在不同硬件厂商和…...

双导师的中国社科院与英国斯特灵大学创新与领导力博士

自1978年恢复高考之后,很长一段时间里我国的高校系统处于人才很匮乏的状态,那个时候很多高校招聘了大量硕士学历教师(其中很多人在留校后又读了在职博士),而且都是事业编制。那么接下来小编与中国社科院与英国斯特灵大…...

OpenXR 超详细的spec--API初始化介绍

3.API 初始化 3.1 Exported Functions 实现API loader的动态链接库(so/dll)必须export all core OpenXR API functions。然而application可以通过使用xrGetInstanceProcAddr()来获取指向extension函数的指针。 3.2 Function Pointers OpenXR所有函数的指针都可以通过函数xr…...

认识通讯协议——TCP/IP、UDP协议的区别,HTTP通讯协议的理解

目录 引出认识通讯协议1、TCP/IP协议,UDP协议的区别2、HTTP通讯协议的讲解 Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 认识通讯协议——TCP/IP、UDP协议的区别,HTTP通讯协议的理解 认识通讯协议 …...

谈一谈工作中的前后端功能开发范围

在BS开发中,往往都是团队开发,分为前端和后端,往往经常会遇到此处功能是前端进行功能开发还是后端进行功能开发的讨论,本文以我自己的观点进行论述。 笔者的观点是: 功能实现的优先性:您强调,无…...

Kubernetes 学习总结(46)—— Pod 不停重启问题分析与解决

我们在做性能测试的时候,往往会发现我们的pod服务,频繁重启,通过kubectl get pods 命令,我们来逐步定位问题。 现象:running的pod,短时间内重启次数太多。 定位问题方法:查看pod日志 kubectl get event …...

Vulnhub靶机:Bellatrix

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.4) 靶机:Bellatrix(10.0.2.9) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/hogwa…...

深入探讨 AutoGPT:彻底改变游戏的自主 AI

原文地址:Deep Dive into AutoGPT: The Autonomous AI Revolutionizing the Game 2023 年 4 月 24 日 AutoGPT 是一个功能强大的工具,它通过 API 使用 GPT-4 和 GPT-3.5,通过将项目分解为子任务并在自动循环中使用互联网和其他工具来创建完…...

Java Web之网页开发基础复习

tomcat之网页开发基础复习 **声明** :HTML标准规范 </!doctype> <html> : 根标签 <head>: 头部标签 内含<title><meta><link><style> <body>: 主体 <body></body> html标签 单标签: <标签名 \> 双标…...

华容道问题求解第一部分_详细设计(一)之棋子和游戏类_初始化部分

按&#xff1a;因为自控力和能力的原因&#xff0c;这个其实是在和代码同时进行的。 主要 类 说明 这一层是整个项目的基础&#xff0c;将对未来的算法的效率产生重要影响。为了和界面隔离&#xff0c;以及自身逻辑的清晰&#xff0c;下面的两个类是必须的&#xff0c;棋子类…...

【框架】Spring 框架重点解析

Spring 框架重点解析 1. Spring 框架中的单例 bean 是线程安全的吗&#xff1f; 不是线程安全的 Spring 框架中有一个 Scope 注解&#xff0c;默认的值是 singleton&#xff0c;即单例的&#xff1b;因为一般在 Spring 的 bean 对象都是无状态的&#xff08;在生命周期中不被…...

js中的内存泄漏

理解 内存泄漏是计算机,中由于疏忽或者错误造成程序未能释放已经不在使用的内存,知道浏览器结束 垃圾回收机制 js具有自动的垃圾回收机制,垃圾收集器会定期(周期性)的找出那些不在继续使用的变量,然后释放内存 常见的内存泄漏 意外的全局变量 function foo(){bar 123123…...

营业执照年报申报

姿势&#xff1a;营业执照年报申报 借鉴文章&#xff1a;个体工商户年报申报流程&#xff08;不要再花冤枉钱&#xff09; 1、国家企业信用信息公示系统 地址&#xff1a;https://www.gsxt.gov.cn/index.html 2、登录&#xff08;重庆的方式二简单&#xff09;...

Springboot教程(五)——单元测试

idea中一般使用JUnit进行单元测试 基本使用 我们可以在idea的test文件夹下的XXXXApplicationTests内进行单元测试&#xff1a; 可以在Test标注的方法上写测试代码&#xff1a; SpringBootTest class C0101ApplicationTests {Testfun contextLoads() {println("Hello …...

【Kotlin】函数

1 常规函数 1.1 无参函数 fun main() {myFun() }fun myFun() {println("myFun") // 打印: myFun } 1.2 有参函数 1&#xff09;常规调用 fun main() {myFun("myFun") // 打印: myFun }fun myFun(str: String) {println(str) } 2&#xff09;形参指定默…...

Unity生命周期函数解析

本文由 简悦 SimpRead 转码&#xff0c; 原文地址 mp.weixin.qq.com Unity生命周期函数解析 Unity 生命周期函数是在游戏对象的不同阶段被调用的方法&#xff0c;通过这些函数&#xff0c;我们可以在不同的时刻执行特定的代码。在这篇文章中&#xff0c;我们将一步步解析 Unit…...

【Qt】QTextEdit/QPlainTextEdit 实现 Tab 键多行缩进与反缩进

【Qt】QTextEdit/QPlainTextEdit 实现 Tab 键多行缩进与反缩进 文章目录 I - 主要原理II - 代码实现2.1 - 自定义类2.2 - 实现 Tab 缩进2.3 - 实现反缩进 III - 参考链接 I - 主要原理 由于 QTextEdit 和 QPlainTextEdit &#xff0c;都无法实现多行选中缩进与反缩进&#xff…...

C++缺陷与思考

数组隐式转换为指针 size_t func(int a[10]) {return sizeof(a); }int a[100]; func(a); // 指针大小 sizeof(a); // 数组大小函数的参数看似是一个数组形式&#xff0c;但事实上他已经退化为指针了&#xff0c;也就是等价于size_t func(int* a)&#xff0c;而数组作为参数传…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

Linux-进程间的通信

1、IPC&#xff1a; Inter Process Communication&#xff08;进程间通信&#xff09;&#xff1a; 由于每个进程在操作系统中有独立的地址空间&#xff0c;它们不能像线程那样直接访问彼此的内存&#xff0c;所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...