色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于RT-Thread和RA6M4實現samba服務移動網盤

嵌入式物聯網開發 ? 來源:嵌入式物聯網開發 ? 作者:嵌入式物聯網開發 ? 2022-08-17 12:53 ? 次閱讀

【基于RT-Thread和RA6M4實現samba服務的移動網盤】

本文詳細介紹了基于RT-Thread操作系統和RA6M4處理器,如何移植和適配samba服務。同時,還提供Linux環境和QEMU仿真環境的參考移植,希望對大家有所啟發和幫助。

1 前言

本文重點介紹了基于RT-Thread和RA6M4實現samba服務的移動網盤,包括RT-Thread操作系統的使用情況、硬件載體RA6M4處理器、Samba服務的適配移植等核心內容。

關于Samba服務,使用Linux系統作為開發環境的小伙伴一定非常熟悉,它是Linux操作系統中的文件系統與Windows操作系統的文件系統溝通的重要橋梁。更多關于它的更多介紹,可以詳見 Samba 。

2 項目簡介

2.1 項目名稱

基于RT-Thread和RA6M4實現samba服務的移動網盤

2.2 設計思路

基于RT-Thread操作系統,使用RA6M4硬件載體實現samba服務器的功能,把文件通過 samba 協議共享出去。

2.3 主要解決的問題

在使用場景上,這個嵌入式移動網盤的投入使用,可以滿足一定程度上解決云主機快速免費存儲空間擴容的難題,且數據本地可控。

2.4 項目創新點

samba服務在小型RTOS設備上的移植和使用。

3 系統架構介紹

系統核心架構圖如下圖所示:

image-20220804103902663

一言以蔽之:Windows系統通過samba協議訪問搭載RT-Thread操作系統的RA6M4實現的smdb服務

4 系統設計說明

下面就系統的各個組件的設計,做簡要的說明。

4.1 硬件部分

硬件部分主要分為四大部分:MCU主控、Wi-Fi模組。

Wi-Fi模組 : ESP8266

我這里使用的搭建ESP8266 Wi-Fi芯片的模組ESP-12F,它是由安信可科技開發的,該模塊核心處理器 ESP8266 在較小尺寸封裝中集成了 業界領先的 Tensilica L106 超低功耗 32 位微型 MCU,帶有 16 位精簡模式,主頻支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板載天線

image-20220324230417141

MCU主控 :RA6M4

微信圖片_20220322222212.jpg

4.2 軟件部分

應用邏輯部分

應用邏輯部分,比較簡單,基本就是初始化系統、初始化Wi-Fi網絡,初始化文件系統、初始化smbd的配置文件,以及啟動smbd服務器,并處于監聽狀態,等待客戶端來連接。

image-20220804102520070

samba服務部分

本次移植samba源碼,考慮到嵌入式設備的ROM/RAM比較緊張,特意找了很老的samba源碼,最終的實現也證實了這一點,太新的版本壓根不夠資源去移植,且它依賴了大量Linux原生的接口,根本無從適配。

經過簡單驗證和挑選,我選的是 smaba-1.9.13,這個版本大概是 1995年發布的,大家可以想象下:

image-20220804102208477

更多samba的歷史版本,可以查看 這里

軟件包部分

這里主要用了 at_device 軟件包,并且使用它搭載 ESP8266 Wi-Fi模塊,建立server角色的網絡服務。

在測試工程中,還使用了 ramdisk 這個軟件包,但是使用過程中,發現了一些問題,后面沒有再使用。

RT-Thread內核部分

本項目使用了最新版本的RT-Thread,由于本項目需要使用 at-server 的功能,而Studio更新的 4.1.0 版本并沒有很好地支持這個特性,后面在最新的代碼倉庫中看到了有關 at-server 的更新,于是手動更新到了最新的版本。

5 項目實施過程

主要實施過程如下所示:

5.1 項目預研

早期有做了一個 嵌入式移動網盤 的初步方案,不過當時是想自己實現協議,真正實現下來,難度可是非常大;不僅要自己設計協議,還要自己設計客戶端、服務端,這期間的穩定性也沒辦法保證。

后來,我考慮到了使用 現在的samba協議做移植,但看了最新版本的smaba協議源碼,感覺一般的嵌入式設備壓根可能跑不起來,因為實現得太龐大了。

在這次項目前期,我想到會不會samba早期的實現包會比較輕量呢,也許能夠在RTOS上基于嵌入式設備把它跑起來?抱著試一試的態度,才有了這個項目。

5.2 方案設計

整體方案設計,延續上文有提及的系統架構示意圖,整體上思路還是比較簡單,核心工作就是完成samba協議基于RT-Thread和RA6M4上的移植適配。

這個方案下,客戶端(Windows側)都是現成的,并不存在障礙,但是要保證實現的smbd服務能兼容Windows10的samba掛載請求。

5.3 方案移植

真正做方案移植的時候,我分三步走,每一步的輸出都是后一步輸入的重要前提:

第一步:檢索可用的samba源碼版本,使用原生的Linux系統快速驗證

這一部分,重點是要快速驗證可行性,并且只能是源碼編譯那種移植,不能用軟件包,期間我總共下載了近 20 個版本,最終選定使用 1.9.13 版本,理由是它使用了SMB2協議版本,同時,它的源碼結構是一開始的簡單版本模式的最后一個版本,后面的版本源碼目錄就變得復雜了,層次關系比較亂。

image-20220804111115420

第二步:使用Qemu-vexpress-A9做基于RT-Thread操作系統的移植適配

單在Linux上跑通了并不稀奇,也不見得就一定能在RT-Thread系統上跑通,所以為了盡快驗證在RT-Thread跑通的可能性,我選用Qemu-vexpress-A9做仿真驗證,解決一些接口移植的問題,同時還要調通smbd跑起來后,對Windows10的samba請求的兼容。

幸運地是,在Qemu上移植還是比較順利的,我把一些操作系統沒有實現的接口玻璃出來,同時一些RTT無法支持的特性就使用宏定義屏蔽,只要不影響核心邏輯功能即可。

image-20220804111635965

另外一個,使用QEMU模擬器,使用使用 網卡橋接或網卡共享 使得windows可以鏈接QEMU建立的服務器,這個課題也在這部分的移植中有所收獲,以后有時間可以寫篇教程介紹介紹。

第三步:將Qemu模擬器跑通的源碼移植到RA6M4上

最后一步才是真正的上戰場,這里就需要先熟悉RA6M4的開發環境,工程模板的主題框架等等。

隨后才慢慢開始移植ESP8266的接入,samba源碼的接入,下載調試等等。

這期間也遇到了一個很坑的的事,在接入ESP8266的時候,不知參考了論壇哪篇文章,它展示的UART3的引腳號是錯誤的,結果把我誤導了,導致ESP8266死活不成功。

后面還是自己翻手冊,找到了配置引腳的地方,終于把Wi-Fi模塊搞定了,真的是 盡信書,不如無書

image-20220804112154449

5.4 方案調試

方案調試,一個是把ESP8266接入進來,讓RA6M4具備對外的網絡能力;另一個就是把samba服務在RA6M4上給跑起來。不過這說起來,真的就是一把鼻涕,一把累。后面的項目總結會祥講,每一個成功的項目背后一定少不了困難。

5.5 方案優化

后續提升下RA6M4的server網絡模式的穩定性、將文件系統掛載在flash上的可能性,同時實現samba服務中對用戶名和密碼的校驗。

6 項目效果顯示

相關的展示圖片和演示視頻,見下文:

【項目展示圖片】

image-20220801031501344image-20220804100949608image-20220804101226731

【項目演示視頻】點擊 這里 播放。

xx

【項目開源代碼】

REPO: RT-ThreadRA6M4Samba

分支名 主要內容
rt_thread-ra6m4-samba 基于RT-Thread操作系統及RA6M4適配移植,實現smbd服務
rt_thread-qemu-vexpress-a9-samba 基于RT-Thread操作系統及QEMU-VEXPRESS-A9模擬器環境適配移植,實現smbd服務
linuxx64samba 基于原生的Linux操作系統在X64服務器源碼移植適配,實現smbd服務

7 項目復盤

RA6M4的下載真的太慢了,下載的過程都可以打個瞌睡了,比較影響調試

samba 源碼的移植過程中,遇到很多Linux原生對文件系統權限管理的接口或內容,考慮到RTT這邊實現的文件系統肯定沒有相關的,所以裁掉了很多關于這方面的校驗。同時,實現的samba目前還是guest模式,即不檢驗用戶名和密碼,后續可以再改進改進。

在我的這個項目中,說實話 RA6M4 這個使用起來還是比較 吃力,主要由兩個方面:

1)這個項目強烈依賴網絡,而本身資源環境并不帶網絡適配器,只能使用類似ESP8266這種外設網卡,而且是AT模式,加上RTT中的 at-server "并不穩定好用",所以前期我這里摸索困惑了好久好久,一度有放棄的念頭;

2)這個項目強烈依賴文件系統,而RA6M4的例程里,對文件系統這一塊也暫時未看到好的適配例程,只能自己去玩;所以為了加快方案的驗證,我采用了 ramfs 用內存去仿真文件系統,一定程度上解決了一些問題;但是偏偏ramfs又不支持創建目錄,經過搜索軟件包,得知ramdisk這個軟件包可以解決這個問題。結果使用后,掛載是掛載上了,也可以創建目錄,但是/tmp目錄下一堆的莫名文件,每個文件幾百MB,也可能是一些配置搞錯了,但是掛載出來的文件系統有問題;最后還是放棄了ramdisk。

綜上兩個最大的需求,都沒有很好的解決方案,所以最終在RA6M4上實現的并不是很穩定。

類似的,同樣的samba源碼,在QEMU-VEXPRESS-A9上,跑得非常優秀,非常穩定,這個真就比不了。

RTT中實現 at-server 的可參考例程很少,在論壇里也發現好幾個朋友有類似的困惑:第一個是如何使用,第二個是穩定性如何。后續有時間我再總結總結我使用這個 at-server 的一些經驗。

搞了幾個項目了,RT-Thread Studio還是用不慣,可能一直以來開發我都習慣了遠離這種集成式的編程IDE,移植傾向于類似sublime這種輕量級的編輯工具,它只負責編輯,構建編譯還是使用其他的方式進行。我總是覺得這樣收放更加自如,現在使用Studio,有些時候總覺得縮手縮腳的,可能真的是使用不夠熟吧。

微信圖片_20220322222212.jpg

8 致謝

感謝論壇各路大佬的支持,感謝瑞賽和RT-Thread的大力支持,期待后續有更多這樣的優秀活動開放。

9 更多分享

架構師李肯

架構師李肯全網同名),一個專注于嵌入式IoT領域的架構師。有著近10年的嵌入式一線開發經驗,深耕IoT領域多年,熟知IoT領域的業務發展,深度掌握IoT領域的相關技術棧,包括但不限于主流RTOS內核的實現及其移植、硬件驅動移植開發、網絡通訊協議開發、編譯構建原理及其實現、底層匯編及編譯原理、編譯優化及代碼重構、主流IoT云平臺的對接、嵌入式IoT系統的架構設計等等。擁有多項IoT領域的發明專利,熱衷于技術分享,有多年撰寫技術博客的經驗積累,連續多月獲得RT-Thread官方技術社區原創技術博文優秀獎,榮獲CSDN博客專家、CSDN物聯網領域優質創作者、2021年度CSDN&RT-Thread技術社區之星、2022年RT-Thread全球技術大會講師、RT-Thread官方嵌入式開源社區認證專家、RT-Thread 2021年度論壇之星TOP4、華為云云享專家(嵌入式物聯網架構設計師)等榮譽。堅信【知識改變命運,技術改變世界】!


歡迎關注我的gitee倉庫01workstation ,日常分享一些開發筆記和項目實戰,歡迎指正問題。

同時也非常歡迎關注我的CSDN主頁和專欄:

【CSDN主頁-架構師李肯】

【RT-Thread主頁-架構師李肯】

【C/C++語言編程專欄】

【GCC專欄】

信息安全專欄】

【RT-Thread開發筆記】

freeRTOS開發筆記】

有問題的話,可以跟我討論,知無不答,謝謝大家。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11310

    瀏覽量

    209594
  • 操作系統
    +關注

    關注

    37

    文章

    6834

    瀏覽量

    123342
  • Samba
    +關注

    關注

    0

    文章

    17

    瀏覽量

    10355
  • RT-Thread
    +關注

    關注

    31

    文章

    1291

    瀏覽量

    40164
  • RA6M4
    +關注

    關注

    0

    文章

    51

    瀏覽量

    459
收藏 人收藏

    評論

    相關推薦

    RT-Thread設計大賽】基于AB32VG1的嵌入式

    RT-Thread設計大賽】基于AB32VG1的嵌入式移動網
    的頭像 發表于 07-30 12:12 ?2281次閱讀
    【<b class='flag-5'>RT-Thread</b>設計大賽】基于AB32VG1的嵌入式<b class='flag-5'>網</b><b class='flag-5'>盤</b>

    基于RT-ThreadRA6M4實現samba服務移動網

    本文重點介紹了基于RT-ThreadRA6M4實現samba服務移動網
    發表于 09-09 10:37 ?718次閱讀

    RA6M4創建項目后,添加串口0,編譯出現找不到頭文件信息怎么解決?

    RA6M4創建項目后,添加串口0,編譯出現找不到頭文件信息RA6M4\Project\RA6M-0\ra_cfg\fsp_cfg\bsp/bsp_cfg.h:
    發表于 05-19 10:48

    如何在CPK-RA6M4 MCU評估板上讓RT-Thread運行起來

    v3.5.0 版本2.2 環境搭建靈活配置軟件包 (FSP)1、打開鏈接下載 FSP,請確認下載的 3.5.0 版本,從下載可忽略此下載步驟。目前 RT-Thread 中 CPK-RA6
    發表于 07-13 11:28

    基于RT-Thread+RA6M4的5寸屏電腦狀態實時顯示方案分享

    ,與RT-ThreadRA6M4的綜合使用。實現功能:RA6M4使用Buses外設,通過SSD1963芯片,驅動一塊5寸的RGB液晶屏,來顯示電腦的運行狀態,硬件信息。顯示界面使用l
    發表于 07-13 15:26

    基于RT-Thread Studio的CPK-RA6M4開發板環境搭建方案推薦

    1、基于RT-Thread Studio的CPK-RA6M4開發板環境搭建CPK-RA6M4 開發板特點基于瑞薩RA6M4 MCU開發的CPK-RA
    發表于 07-14 17:45

    基于RT-Thread+RA6M4的阿里云智能指紋鎖設計方案推薦

    1、基于RT-Thread+RA6M4的阿里云智能指紋鎖基于RT-Thread系統和RA6M4開發板開發的一款阿里云物聯網指紋門鎖;硬件部分由ESP8086WIFI模塊,ATK-301指紋模塊
    發表于 07-19 11:46

    基于RT-Thread+RA6M4的桌面資源監控器設計資料推薦

    獲取電腦CPU占用率和內存占用率,將占用率信息發送到單片機上。單片機通過DA輸出控制電壓表表盤指針RT-Thread使用情況概述使用RT-Thread 4.1.0實現使用了RA6M4
    發表于 08-02 11:01

    基于RT-Thread+RA6M4的指紋識別Demo設計實現

    。本次設計基于RT-Thread框架在Renesas RA6M4平臺上實現指紋識別,存儲和比對的嵌入式Demo。實現功能:1.MCU從傳感器采集指紋并提取指紋的特征信息存儲在MCU內置
    發表于 08-12 14:30

    基于RT-ThreadRA6M4的網絡天氣時鐘設計資料推薦

    1、基于RT-ThreadRA6M4的網絡天氣時鐘設計RA6M4開發板資源非常豐富,配合RT-Thread的內核和組件可以開發出很多有趣好玩的應用。由此想到了之前一直想做但是沒有做的
    發表于 08-17 14:56

    基于RT-threadRA6M4的溫度檢測設備設計方案

    1、基于RT-threadRA6M4的溫度檢測設備設計產品需求設計本次設計的主要產品主要要求如下幾點:發熱管中的溫度大概在200-300攝氏度之間,需要設備可以檢測的范圍在150-330攝氏度
    發表于 08-19 14:59

    基于RT-Thread+RA6M4的5寸屏電腦狀態實時顯示設計案例

    的芯片功能,與RT-ThreadRA6M4的綜合使用。  實現功能:  RA6M4使用Buses外設,通過SSD1963芯片,驅動一塊5寸的RGB液晶屏,來顯示電腦的運行狀態,硬件信
    發表于 11-17 11:20

    基于 RT-Thread Studio的CPK-RA6M4 開發板環境搭建

    、打開鏈接下載 FSP,請確認下載的 3.5.0 版本,從下載可忽略此下載步驟。目前 RT-Thread 中CPK-RA6M4 的 BSP 支持的版本是 3.5.0。可以在 BSP
    發表于 01-10 14:41

    基于RT-Thread平臺的modbus集中器

    數據,遙信送至PC端顯示。 系統框架 整個系統采用rt-thread軟件平臺,基于瑞薩RA6M4硬件平臺及現有bsp框架,使用RT-Thread Studio集成軟件進行新建工程、配置外設、編寫
    的頭像 發表于 11-21 21:05 ?1104次閱讀

    使用SystemView工具分析瑞薩RA6M4芯片上RT-Thread的運行情況

    使用SystemView工具分析瑞薩RA6M4芯片上RT-Thread的運行情況
    的頭像 發表于 12-11 17:23 ?597次閱讀
    使用SystemView工具分析瑞薩<b class='flag-5'>RA6M4</b>芯片上<b class='flag-5'>RT-Thread</b>的運行情況
    主站蜘蛛池模板: 日本电影护士| 66美女人体| 亚洲精品视频在线免费| 永久adc视频| 99视频精品国产在线视频| 国产成人无码精品久久久影院| 红桃视频国产AV| 欧美日韩在线成人看片a| 校花被扒衣吸乳羞羞漫画| 中文字幕不卡在线高清| 福利社的阿姨| 久久久久久久久久久福利观看| 日本午夜精品理论片A级APP发布 | 久久re视频这里精品一本到99| 女人张腿让男人桶免费| 性欧美13处14处破| 99在线播放| 护士们的母狗| 人妻中文字幕乱人伦在线| 亚洲视频在线观看不卡| 草久久久久| 久久视频这里只精品99热在线| 失禁 调教 刺激 哭喊男男| 综合人妻久久一区二区精品| 国产精品一区二区AV交换| 男人电影天堂手机| 亚洲欧美自拍清纯中文字幕| 草民电影网午夜伦理电影网| 久久毛片视频| 性夜影院午夜看片| 啊灬啊灬啊灬快高潮视频| 久久久久久久久免费视频| 丝瓜视频在线免费| aaaaaaa一级毛片| 久久久久久久久久综合情日本| 无码人妻精品一区二区蜜桃色| 99日韩精品| 久久综合伊人| 亚洲区 bt下载| 国产乱码二卡3卡四卡| 日本伦子欲|