【Linux應用】開發板快速上手:鏡像燒錄、串口shell、外設掛載、WiFi配置、SSH連接、文件交互(RADXA ZERO 3為例)

【Linux應用】開發板快速上手:鏡像燒錄、串口shell、外設掛載、WiFi配置、SSH連接、文件交互(RADXA ZERO 3為例)

參考:
ZERO 3 | Radxa Docs
大部分的Linux開發板等設備都大同小異 如樹莓派、香橙派、STM32MP135的Linux開發板等
使用該文章實際上是一種比較通用的方式 其操作與別的板子大同小異

文章目錄

  • ZERO 3燒錄
  • ZERO 3串口shell
  • 外設掛載
  • 連接WiFi
  • SSH連接
  • SSH的文件交互
  • 換源
  • 附錄:C語言到C++的入門知識點(主要適用于C語言精通到Qt的C++開發入門)
    • C語言與C++的不同
    • C++中寫C語言代碼
    • C語言到C++的知識點
    • Qt開發中需要了解的C++基礎知識
      • namespace
      • 輸入輸出
      • 字符串類型
      • class類
        • 構造函數和析構函數(解析函數)
        • 類的繼承

ZERO 3燒錄

ZERO 3有兩種 最本質的就是一個帶WiFi一個不帶WiFi
在這里插入圖片描述

ZERO 3作為一個Linux板 其存儲支持從sd卡EFI啟動

系統安裝則直接通過Balena Etcher來進行
可以使用其Windows版本即可
官方文檔:
官方文檔快速上手描述

鏡像下載則也可以使用官方鏡像:
Radxa ZERO 3 Debian Build 6

該鏡像是最初的鏡像 很多依賴都沒有
如果開發的話 可以直接下載第三方鏡像 或者自己在原有官方鏡像上去安裝鏡像包等等

燒錄很簡單 直接用工具選擇U盤 選擇鏡像即可

下圖為燒錄好了的sd卡
在這里插入圖片描述
除了系統分區外 就是一個config分區 其掛載根根目錄名稱即為config

在這里插入圖片描述

ZERO 3串口shell

串口與ZERO 3鏈接如下圖:
在這里插入圖片描述
鏈接后 配置串口為

baudrate: 1500000
data bit: 8
stop bit: 1
parity  : none
flow control: none

啟動后 用戶名和密碼都為radxa
在這里插入圖片描述

外設掛載

根據df命令查詢系統掛載點
在這里插入圖片描述
其做好了的U盤外部存儲空間為/config
在這里插入圖片描述

連接WiFi

使用如下指令鏈接WiFi:

nmcli device wifi                                           #掃描WiFi
sudo nmcli device wifi connect <ssid> password <passwd>     #連接WiFi

在這里插入圖片描述
連上后 使用ip a命令即可查看連接狀態和ip
在這里插入圖片描述

SSH連接

使用命令sudo systemctl status ssh查看ssh狀態在這里插入圖片描述
前提是要安裝ssh
如果沒有安裝 則通過shell安裝ssh:

sudo apt-get update
sudo apt-get install openssh-server openssh-sftp-server

根據Active判斷是否需要重啟ssh服務:
重啟ssh服務:

sudo systemctl restart ssh

啟動后如下:
在這里插入圖片描述
Active狀態就被設置為了running

開機自啟動ssh則使用命令:

sudo systemctl enable --now ssh

在PC上 支持ssh的設備中 使用以下指令鏈接到板子:

ssh [username]@[IP address] # or ssh [username]@[hostname]

如下圖:
在這里插入圖片描述

SSH的文件交互

若是在PC上作為主機去訪問設備
那么就是在PC的cmd中運行shell

有的終端軟件配備了ssh的文件管理傳輸功能
在這里插入圖片描述
連上以后就可以直接搜素到當前目錄下的各類文件 以便于實現文件管理
并且可以直接download
在這里插入圖片描述

# 復制 Windows 文件到 Linux
scp D:\data\1.txt root@192.168.88.161:/root/data
# 復制 Windows 目錄到 Linux(記得加 -r)
scp -r D:\data root@192.168.88.161:/root/data# 復制 Linux 文件到 Windows
scp root@192.168.88.161:/root/data/1.txt D:\data
# 復制 Linux 目錄到 Windows(記得加 -r)
scp -r root@192.168.88.161:/root/data D:\data

前提是設備開啟了ssh可以被鏈接
在這里插入圖片描述
發過去后便能在板子上看到:
在這里插入圖片描述

回傳文件夾:
在這里插入圖片描述
在這里插入圖片描述

如果是Linux設備去連接Windows設備 則需要在Windows里面設置對應的服務 相關教程很多 這里不過多贅述

如果是Linux設備訪問Linux設備 則主設備也要指定IP

scp root@192.168.88.161:/root/1.txt root@192.168.88.162:/root# 如果設置了Linux之間的免密登錄,可這樣寫:
scp 192.168.88.161:///root/1.txt 192.168.88.162:///root

換源

Linux系統的源都在/etc/apt/下 一般有兩個文件
一個是sources.list 另外一個是sources.list.d目錄下的品牌list文件

如樹莓派需要備份原本的源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak

而radxa的則是:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 
sudo cp /etc/apt/sources.list.d/radxa.list /etc/apt/sources.list.d/radxa.list.bak

將原本的文件進行編輯:

sudo nano /etc/apt/sources.list

注釋掉最初的源 并添加新的源:

deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates main contrib non-free-firmware

如圖:
在這里插入圖片描述
然后再換子目錄下的源

sudo nano /etc/apt/sources.list.d/raspi.list

替換成:

deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main

不過很可惜 清華源沒有radxa 但是可以換debian的源(/etc/apt/sources.list):

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

換源后 執行

sudo apt-get upgrade
sudo apt-get update

附錄:C語言到C++的入門知識點(主要適用于C語言精通到Qt的C++開發入門)

C語言與C++的不同

C語言是一門主要是面向工程的語言
C++則是面向對象

C語言中 某些功能實現起來較為繁瑣
比如結構體定義:

一般寫作:

typedef struct stu_A
{
}A;

也可以寫作:

typedef struct 
{
}A;

但 大括號后面的名稱是不可省去的

不過 C++的寫法就比較簡單
除了支持上述寫法外

也支持直接聲明

typedef struct A
{
}

另外 C++是完全支持C語言庫和語法的
不過C++里面的庫也有些很方便的高級功能用法 只不過實現起來可能不如C的速度快

再者 C語言與C++的編譯流程不一樣
C語言沒有函數重載 所以給編譯器傳參就是直接傳函數名稱
但是C++除了傳函數名稱外 還會穿函數的參數、類型等等 以實現函數重載

C++中寫C語言代碼

上文提到 C++可以完全兼容C的寫法
但是編譯流程也還是不一樣
所以如果在編譯層面進行C語言代碼編譯 則通常用以下方法:

extern "C"
{
...
}

表面大括號內的內容用C的方法進行編譯

另外 如果還是用C++的編譯器 但要實現C語言函數 則需要用到C語言的庫

在C語言中 我們一般用如下方法導入庫

#include <stdio.h>

此方法同樣適用于C++ 但是C++可以更方便的寫成去掉.h的方式
比如:

#include <iostream>

在C++中 為了調用C語言的庫 可以采用在原庫名稱前加一個"c"的方式導入
如:

#include <cstdio>

這樣就可以使用printf等函數了 甚至比C++的std方法更快

C語言到C++的知識點

在這里插入圖片描述

Qt開發中需要了解的C++基礎知識

namespace

C++面向對象的特性下誕生的一個名稱
表示某個函數、變量在某個集合下 用作namespace
比如 <iostream>庫中的關鍵字cin在std下 則寫作std::cin
std就是namespace
::表示某空間下的某某
前面是空間名稱 后面是變量、函數名稱

using namespace可以告訴編譯器以下都用xx名稱空間
比如:

using namespace std;
cout<<"a";

如果沒有告訴編譯器所使用的空間名稱 則要寫成:

std::cout<<"a";

同樣 可以自定義某一段代碼屬于哪個空間:

namespace xx
{
...
}

輸入輸出

在C++中 用iostream作為輸入輸出流的庫

#include <iostream>

用cin和cout關鍵字進行輸入和輸出
如:

using namespace std;
int a=0;
cin>>a; //輸入到acout<<a;  //輸出a

類比scanf和printf
同樣 還有一個關鍵字endl表示換行
cout和cin的傳參是不固定的
由編譯器自行裁定

字符串類型

在C語言中 常用char *表示字符串
但是在C++中 可以直接用string類型
比如:

char * s="456";
string str="123";

由于cout的特性 這兩種字符串都可以直接打印
但如果使用C語言中printf的打印方式時 采用%s方式打印字符串 則不能傳入string類型

class類

C++的核心就是class
同Python等支持面向對象的語言一樣
可以理解成一個支持函數、繼承、自動初始化、銷毀的結構體
在class類中 有private私有、public公有變量
前者只能內部訪問 后者可以外部調用使用
如:

class A
{
public:
int a;
private:
int b;
}

a可以用A.a的方式方位 b則外部無法訪問

構造函數和析構函數(解析函數)

構造函數可以理解成對類的初始化 反之析構函數則是退出時進行銷毀前的函數
兩者需要與類的名稱相同 析構函數則在前面加一個~表示非
如:

class A
{
public:
int a;
A();
~A();
private:
int b;
}A::A()
{
...
}A::~A()
{
...
}

構造函數可以定義傳參 析構函數則不行

類的繼承

如果有兩個類A和B 想讓A里面包含B 則可以寫作繼承的寫法
繼承后 A類的變量可以直接調用B下面的成員
如:

class B
{
int b;
}
class A: public B
{
int a;
}

在定義A后 可以訪問到B的成員b 當然 繼承也可以私有

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78616.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis使用總結

NoSQL 1.1為什么要用NoSQL 面對現在用戶數據的急劇上升&#xff0c;我們需要對這些用戶數據進行挖掘&#xff0c;傳統的關系型數據庫已經不適合這些 應用了.Nosql 的發展可以很了的處理這些大的數據. 1.2什么是NoSQL Not Only Sql->NoSQL(不僅僅是SQL) 非關系型數據庫.隨…

Unity ML-Agents + VScode 環境搭建 Windows

安裝Unity 先去官網下載Unity Hub&#xff0c;然后安裝在D盤就可以了&#xff0c;你需要手機上安裝一個Unity Connect進行賬號注冊。 詳細的注冊可以參考&#xff1a; https://blog.csdn.net/Dugege007/article/details/128472571 注冊好了以后登入電腦端的Unity Hub&#x…

Linux電源管理(2)_常規的電源管理的基本概念和軟件架構

原文&#xff1a; Linux電源管理(2)_Generic PM之基本概念和軟件架構 1. 前言 Linux系統中那些常規的電源管理手段&#xff0c;包括關機&#xff08;Power off&#xff09;、待機&#xff08;Standby or Hibernate&#xff09;、重啟&#xff08;Reboot&#xff09;等。這些…

機器學習基礎理論 - 分類問題評估指標

幾個定義:混淆矩陣 TP: True Positives, 表示實際為正例且被分類器判定為正例的樣本數FP: False Positives, 表示實際為負例且被分類器判定為正例的樣本數FN: False Negatives, 表示實際為正例但被分類器判定為負例的樣本數TN: True Negatives, 表示實際為負例且被分類…

在線教育系統開發常見問題及解決方案:源碼部署到運營維護

當下&#xff0c;越來越多的教育機構、企業培訓部門以及創業者&#xff0c;選擇開發屬于自己的在線教育系統。然而&#xff0c;從源碼部署到實際運營&#xff0c;整個過程中常常會遇到一系列技術與管理難題。今天&#xff0c;筆者將從在線教育系統源碼維護、運營等幾個方向為大…

RAG(Retrieval-Augmented Generation,檢索增強生成)

RAG&#xff08;Retrieval-Augmented Generation&#xff0c;檢索增強生成&#xff09;是一種結合 信息檢索 和 文本生成 的技術&#xff0c;旨在提升大語言模型&#xff08;LLM&#xff09;生成內容的準確性和時效性。其核心思想是&#xff1a;先檢索相關知識&#xff0c;再基…

項目實戰 -- 狀態管理

redux基礎 還記得好久好久之前就想要實現的一個功能嗎&#xff1f; 收起側邊欄折疊菜單&#xff0c;沒錯&#xff0c;現在才實現 因為不是父子通信&#xff0c;所以處理起來相對麻煩一點 可以使用狀態樹或者中間人模式 這就需要會redux了 Redux工作流&#xff1a; 異步就…

Go語言之路————指針、結構體、方法

Go語言之路————指針、結構體、方法 前言指針結構體聲明初始化使用組合引用結構體和指針結構體的標簽 方法例子結合結構體總結 前言 我是一名多年Java開發人員&#xff0c;因為工作需要現在要學習go語言&#xff0c;Go語言之路是一個系列&#xff0c;記錄著我從0開始接觸Go…

[創業之路-390]:人力資源 - 社會性生命系統的解構與重構:人的角色嬗變與組織進化論

前言&#xff1a; 人、財、物、信息、機制、流程、制度、方法共同組合了一個持續的消耗資源、持續的價值創造、持續面臨生存與發展、遺傳與變異的社會性生命系統。 "人"是所有社會性生命系統最最基礎性的要素&#xff0c;它彌漫在系統中多維立體空間的不同節點上&am…

JS執行器在UI自動化測試中的應用

前言 在進行UI自動化過程會遇到滾動條下拉、隱藏元素定位、只讀屬性元素的編輯、富文本處理等&#xff0c;此時可以使用JS執行器簡化我們的一些處理操作。 具體應用 JS執行器的使用步驟&#xff1a; 1.先寫個JS腳本&#xff0c;如果需要獲取操作后的值&#xff0c;JS腳本前面…

解析Suna:全球首款開源通用AI智能體

導語&#xff1a; 嘿&#xff0c;哥們兒&#xff0c;最近 AI Agent 這塊兒挺火的&#xff0c;有個叫 Suna 的開源項目冒出來挺快&#xff01;聽說只用了 3 周就開發出來了&#xff0c;但功能上感覺已經能跟那個商業版的 Manus掰掰手腕了。它能幫你搞定瀏覽器自動化、管文件、爬…

模板方法模式:定義算法骨架的設計模式

模板方法模式&#xff1a;定義算法骨架的設計模式 一、模式核心&#xff1a;模板方法定義算法骨架&#xff0c;具體步驟延遲到子類實現 在軟件開發中&#xff0c;經常會遇到這樣的情況&#xff1a;某個算法的步驟是固定的&#xff0c;但具體步驟的實現可能因不同情況而有所不…

淺談Java 內存管理:棧與堆,垃圾回收

在Java編程世界里&#xff0c;內存管理是一項極為關鍵的技能&#xff0c;它就像程序運行背后的“隱形守護者”&#xff0c;默默影響著程序的性能與穩定性。今天&#xff0c;咱們就來簡單學習一下Java內存管理中的兩大核心要點&#xff1a;棧與堆的內存分配機制&#xff0c;以及…

【WebGL小知識】WebGL平臺上不同Json的比較

今天來總結一下WebGL平臺上不同Json插件的差別&#xff0c;話不多說直接開始。 JsonUtility JsonUtility是Unity自帶的Json解析&#xff0c;無需另外安裝插件。 優點&#xff1a; Unity自帶&#xff0c;兼容性好&#xff0c;WebGL平臺可以使用輕量級&#xff0c;性能較好。 …

4.22tx視頻后臺開發一面

總時長大概在一個小時&#xff0c;主要提問C、操作系統、計網以及數據庫等方面&#xff0c;最后兩個算法編程題。 一上來先介紹項目 Linux下的mybash命令處理器和內存池 mybash可以再總結歸納一下&#xff0c;一上來有點緊張沒有條理 內存池是用邊界標識法寫的&#xff0c;…

從StandardMaterial和PBRMaterial到PBRMetallicRoughnessMaterial:Babylon.js材質轉換完全指南

在現代3D圖形開發中&#xff0c;基于物理的渲染(PBR)已成為行業標準。本文將深入探討如何在Babylon.js中將傳統StandardMaterial和PBRMaterial轉換為PBRMetallicRoughnessMaterial&#xff0c;并保持視覺一致性。 為什么需要轉換&#xff1f; PBRMetallicRoughnessMaterial作…

UEditor文檔在Servlet項目上的應用

UEditor 是一款功能強大的富文本編輯器&#xff0c;在項目中應用廣泛。 Ueditor使用 引入 UEditor 下載 UEditor&#xff1a;從 UEditor 官方網站&#xff08;ueditor 官網&#xff09;下載適合項目需求的版本。解壓文件&#xff1a;將下載的壓縮包解壓到項目的靜態資源目錄…

ThinkPHP快速使用手冊

目錄 介紹 安裝&#xff08;windows環境&#xff09; 安裝Composer 安裝ThinkPHP 目錄結構 配置文件 第一個接口&#xff08;Controller層&#xff09; Hello World 自定義Controller 請求參數 獲取查詢參數&#xff08;Get請求&#xff09; 獲取指定請求參數 獲取…

面向 C# 初學者的完整教程

&#x1f9f1; 一、項目結構說明 你的項目大致結構如下&#xff1a; TaskManager/ ├── backend/ │ ├── TaskManager.Core/ // 實體類和接口 │ ├── TaskManager.Infrastructure/ // 數據庫、服務實現 │ └── TaskManager.API/ // We…

Axios 的 GET 和 POST 請求:前端開發中的 HTTP 通信

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…