Windows 體系對比 + 嵌入式開發全流程拆解

一、操作系統層級對比:Windows 家族 vs Linux 家族

角色Windows 體系Linux 體系本質
核心內核Windows NT KernelLinux Kernel操作系統引擎(管理CPU/內存/硬件)
完整操作系統Windows 11 Home/ProUbuntu?/ Debian / CentOS內核 + 界面 + 軟件 + 驅動
定制化版本Windows IoT Core(用于樹莓派)Raspberry Pi OS(原Raspbian)為嵌入式設備裁剪的操作系統

??關鍵結論

  • Windows/Linux = 內核(如汽車發動機)
  • Windows 11/Ubuntu = 完整操作系統(如整車:發動機+車身+內飾)
  • Windows IoT Core/Raspberry Pi OS = 嵌入式定制系統(如拆掉座椅的賽車)

二、嵌入式Linux開發全流程詳解(以樹莓派ROS小車為例)

階段1:開發環境搭建(在你的筆記本電腦上)
  • 為什么用虛擬機?
    你的電腦可能是Windows,但ROS僅支持Linux → 在Windows中運行虛擬機軟件(如VirtualBox)?→ 虛擬機上安裝Ubuntu?→ 獲得純凈的Linux開發環境。
  • 操作
     

    BASH

    # 在虛擬機Ubuntu中安裝ROS sudo apt install ros-noetic-desktop-full

階段2:交叉編譯(Cross-Compiling)
  • 問題
    你的筆記本是x86 CPU,樹莓派是ARM CPU → 編譯出的程序不能通用!
  • 解決方案
    在x86電腦上模擬ARM環境,生成ARM可執行文件(這就是交叉編譯)。
  • 操作
     

    BASH

    # 在虛擬機中安裝ARM交叉編譯器 sudo apt install gcc-arm-linux-gnueabihf # 編譯ROS節點(示例) catkin_make -DCMAKE_TOOLCHAIN_FILE=/path/to/arm-toolchain.cmake

階段3:內核裁剪(Kernel Customization)
  • 為什么裁剪?
    樹莓派資源有限(內存1-8GB),需移除無用的內核模塊(如服務器功能)。
  • 操作(在虛擬機中完成):
     

    BASH

    # 下載樹莓派Linux內核源碼 git clone --depth=1 https://github.com/raspberrypi/linux # 圖形化配置裁剪 make menuconfig # 去掉藍牙/攝像頭等未用模塊 # 編譯內核 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

階段4:部署與移植(Deployment & Porting)
  • 部署程序:將交叉編譯好的ROS節點復制到樹莓派
     

    BASH

    scp ./ros_ws root@raspberrypi:/home/pi

  • 移植內核:將裁剪后的內核刷入樹莓派
     

    BASH

    # 將編譯的kernel7.img寫入樹莓派SD卡 cp linux/arch/arm/boot/zImage /boot/sdcard/kernel7.img

階段5:運行調試(在樹莓派上)
  • 樹莓派啟動裁剪后的Linux內核 → 加載Ubuntu系統 → 運行ROS節點
     

    BASH

    # 在樹莓派Ubuntu中啟動ROS節點 roslaunch my_robot navigation.launch

  • ROS節點通過Linux內核驅動GPIO → 控制STM32 → 驅動電機

三、關鍵概念解析

術語本質類比為何需要
交叉編譯在A平臺編譯B平臺可執行程序在中國工廠生產銷往美國的電器開發機(x86) ≠ 目標機(ARM)
內核裁剪刪除Linux內核中無用的功能模塊拆掉汽車的后座和空調以減重賽車節省嵌入式設備內存/存儲資源
移植讓軟件適應新硬件平臺把iPhone充電口改成USB-C使Linux支持樹莓派專用硬件(如博通GPU)

四、完整案例:樹莓派ROS小車開發日記

  1. Day1-開發機(Windows筆記本):
    → 打開VirtualBox → 啟動Ubuntu虛擬機 → 用VSCode寫ROS避障算法
  2. Day2-交叉編譯
    → 在虛擬機中調用arm-gcc編譯算法 → 生成avoid_obstacle_node(ARM版)
  3. Day3-內核裁剪
    → 移除Linux內核的藍牙模塊 → 編譯專屬kernel7.img
  4. Day4-部署
    → 將ROS節點和內核鏡像拷入樹莓派SD卡 → 上電啟動
  5. Day5-實機運行
    → 樹莓派運行裁剪后的Ubuntu → 執行avoid_obstacle_node?→ 通過GPIO發送指令給STM32
    → 小車成功避開障礙物!

五、終極總結

  1. 開發機(你的電腦):戰場指揮部

    • 運行虛擬機Ubuntu:安全開發環境
    • 執行交叉編譯:生產ARM武器
    • 完成內核裁剪:定制輕量級系統
  2. 目標機(樹莓派):前線士兵

    • 運行裁剪后的Ubuntu:穿戴精簡裝備
    • 執行交叉編譯的程序:使用指揮部提供的武器
    • 通過Linux內核直接操控硬件:沖鋒陷陣
  3. 核心原則

    💡?開發機強?且通用(x86),目標機專精且節省(ARM)—— 通過交叉編譯和內核裁剪架起橋梁!

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

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

相關文章

C# 實現 gRPC高級通信框架簡單實現

1. 前言 gRPC(Google Remote Procedure Call)是一個高性能、開源和通用的RPC框架,由Google主導開發。它支持多種編程語言,并廣泛用于構建分布式應用程序和服務。gRPC基于HTTP/2協議,支持雙向流、請求-響應和多請求-多…

將項目推到Github

前提條件 需要安裝GIT需要注冊GitHub賬號 步驟 首先我們需要登錄我們的GITHUB賬號,然后點擊新建存儲庫 然后起一個名字,設置一些私有公開即可 創建完成之后,這里有可以遠程推送的命令 后面就直接輸出命令即可 之后推送即可 git push orig…

K8S 專欄 —— namespace和Label篇

文章目錄 namespace創建namespacenamespace使用默認namespaceLabel添加Label查詢Labelnamespace 命名空間是一種用于在 kubernetes 集群中劃分資源的虛擬化手段,每個資源都屬于一個命名空間,使得多個團隊或應用可以在同一個集群中獨立運行,避免資源沖突。 創建namespace y…

44.第二階段x64游戲實戰-封包-分析掉落物列表id存放位置

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 本次游戲沒法給 內容參考于:微塵網絡安全 上一個內容:43.第二階段x64游戲實戰-封包-代碼實現獲取包裹物品 之前的內容找到了掉落物的…

匯編語言期末快速過手筆記

一、計算機系統組成 計算機系統組成:由硬件系統和軟件系統組成 硬件系統:CPU、存儲器、輸入/輸出設備等物理部件軟件系統:操作系統、各種語言、系統軟件和應用軟件 匯編語言分類 屬于低級語言(直接面向硬件)與高級語言…

C++相比于C語言增加了哪些概念?

C相比于C語言增加了哪些概念? 作者將狼才鯨創建日期2025-06-17 CSDN閱讀地址:C相比于C語言增加了哪些概念?Gitee源碼目錄:qemu/demo_代碼示例/02_C_Class 目標受眾:熟悉C語言,對C完全不了解,但…

HarmonyOS5 分布式測試:斷網情況支付場景異常恢復驗證

以下是針對HarmonyOS 5分布式事務在斷網支付場景下的異常恢復驗證全流程方案,綜合關鍵技術與測試策略: 一、核心事務機制驗證 ?兩階段提交(2PC)協議? 模擬支付流程中網絡中斷,驗證事務協調者能否正確處理預提交與回滾…

【狂飆AGI】第5課:前沿技術-文生圖(系列1)

目錄 (一)繪畫本質(二)國內外AI轉繪展(三)創作思路(四)美學理論(1)不可能美學(2)趨無限美學(3)反物理美學&…

發那科A06B-6290-H124 伺服驅動器

?FANUC A06B-6290-H124 伺服驅動器核心性能解析? ?一、核心控制能力? ?多模式精密控制? 位置控制?:支持高精度旋轉角度/直線位移調節(分辨率達脈沖級),適用于數控機床定位(誤差0.01mm級)和機器人軌…

Spring Boot 項目啟動優化

Spring Boot 項目啟動優化是一個非常重要的話題,尤其是在微服務和云原生環境下,快速啟動意味著更快的部署、更高效的彈性伸縮和更好的開發體驗。 下面我將從分析診斷、優化策略和終極方案三個層面,為你提供一個全面、可操作的優化指南。 一、…

「爬取豆瓣Top250電影的中文名稱」數據采集、網絡爬蟲

- 第 108 篇 - Date: 2025 - 06 - 16 Author: 鄭龍浩(仟墨) 文章目錄 **任務:爬取豆瓣Tap250電影的中文名稱****代碼****實現效果** 任務:爬取豆瓣Tap250電影的中文名稱 代碼 # 豆瓣前Tap 250 import requests from bs4 import…

MySQL 多表查詢、事務

1.多表查詢的分類 1.1 內連接 在 MySQL 中,內連接(INNER JOIN)返回的是兩個表中滿足連接條件的記錄的交集。這個“交集”不是指整個表,而是指符合連接條件的行組合,也就是A表和B表中滿足我們使用on指定條件的記錄。圖…

CSP-J 2020 入門級 第一輪(初賽) 答案及解析

CSP-J 2020 入門級 第一輪(初賽) 答案及解析 在內存儲器中每個存儲單元都被賦予一個唯一的序號,稱為()。 A. 地址 B. 序號 C. 下標 D. 編號 答: A 計算機中每個存儲單元都是1字節,都有唯一的地址。 編譯器…

Flutter包管理與插件開發完全指南

Flutter作為Google推出的跨平臺移動應用開發框架,其強大的生態系統離不開完善的包管理機制和豐富的插件支持。本文將全面介紹Flutter中的包管理體系和插件開發實踐,幫助開發者高效管理項目依賴并擴展應用功能。 一、Flutter包管理基礎 1.1 包管理概述 …

【視頻直播出海】阿里云ApsaraVideo Live:從零搭建全球直播平臺的“星際航行”指南!

【視頻直播出海】阿里云ApsaraVideo Live:從零搭建全球直播平臺的“星際航行”指南! 在全球化浪潮的推動下,視頻直播行業正以前所未有的速度跨越國界,成為連接世界的“數字新橋梁”。對于渴望拓展海外市場的企業而言,…

OAuth2中的Token

兩個不同的Token OAuth2 中主要有兩個不同的Token, 其中的區別為是否與用戶相關聯, 即與用戶相關的用戶Token, 和與客戶端相關的客戶端Token, 可以通過用戶Token, 查詢到用戶的相關信息, 客戶端Token與用戶無關, 一般只用于客戶端認證 用戶Token 獲取用戶Token一般有兩個方式…

使用 FastMCP 實現 Word 文檔與 JSON 數據互轉的 Python 服務

一、項目背景 本文分享一個基于 FastMCP 框架實現的文檔處理服務,可實現 Word 文檔(.docx)與 JSON 數據格式的雙向轉換。通過此服務,開發者可以輕松實現文檔內容提取、結構化數據填充、樣式模板復用等功能,適用于自動…

Vue3輪播圖組件,當前輪播區域有當前圖和左右兩邊圖,兩邊圖各顯示一半,支持點擊跳轉和手動滑動切換

功能: 自動循環播放(到達末尾后回到第一張)、可設置切換間隔時間(interval屬性) 左右導航按鈕(可自定義顯示/隱藏) 點擊底部指示器跳轉到指定幻燈片、且位置可調(輪播圖內部/外部&…

350+交付案例,高質量低成本構建智慧園區數字孿生交付新范式

在智慧園區建設領域,數字孿生技術正成為推動園區智能化轉型的核心引擎。山東融谷信息憑借其全要素、全周期、全方位的數字孿生交付能力,已成功交付350余個項目,覆蓋產業園區、智慧樓宇、智慧社區等多元場景,低成本高質量交付&…

OpenCV 圖像像素類型轉換與歸一化

一、知識點 1、OpenCV支持多種數據類型,每種類型都對應著不同的取值范圍。 (1)、CV_8U取值范圍[0, 255]。 (2)、CV_16U取值范圍[0, 65535]。 (3)、CV_32F取值范圍[0, 1]。 2、OpenCV提供convertTo()函數來轉換數據類型,提供normalize()函數來改…