RM新时代网站-首页

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

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

3天內(nèi)不再提示

嵌入式linux系統(tǒng)中常見的端口分享

嵌入式開發(fā)星球 ? 來源:嵌入式開發(fā)愛好者 ? 作者:嵌入式開發(fā)愛好者 ? 2024-05-11 08:49 ? 次閱讀

每當看到有人的簡歷上寫著熟悉 tcp/ip, http 等協(xié)議時, 我就忍不住問問他們: 你給我說說, 端口是啥吧! 可惜, 很少有人能說得讓人滿意... 所以這次就來談談端口(port), 這個熟悉的陌生人.

在此過程中, 還會談談間接層, naming service 等概念, IoC, 依賴倒置等原則以及 TCP 協(xié)議的一些重點知識.

常見端口

在我們的日常開發(fā)過程中, 特別是后端的開發(fā)人員, 即便他沒有真正理解端口的細節(jié), 他還是會聽過見過各類的端口, 這個東西幾乎無處不在,

wKgZomY_E0iAFHsFAADdje1vCg8306.png

比如:

mysql 缺省用的 3306 端口,

redis 的 6379 端口,

tomcat默認用的 8080 端口,

ssh 用的 22 端口,

等等...

當然我們最關(guān)注的還是 web 相關(guān)的端口, 涉及的主要為 80 和 443 兩個端口, 下面就來重點說說.

端口是必須的嗎?

在本地 web 開發(fā)調(diào)試過程中, 我們可能都碰到過端口, 比如或許是/最著名的 8080 端口, 一般我們會這樣去訪問本地的 web 程序:

localhost:8080

但一旦 web 程序部署到了正式的網(wǎng)站中, 端口似乎就消失了, 正式的網(wǎng)址中就不需要端口了嗎? 答案是否定的, 在這里起作用的是缺省值.

比如你訪問我的網(wǎng)站: https://xiaogd.net, 這個 url 中似乎沒有端口, 但其實是有的, 它有一個默認值 443, 所以完整的形式實際是這樣的:

https://xiaogd.net:443.

你可以通過 Chrome 的開發(fā)人員調(diào)試工具看到這一點:

wKgaomY_E0mAC-kMAACwyQyYVHI025.png

可以看到, ip 地址后面跟著一個 443

如果你輸入一個錯誤的端口, 比如 80, 像這樣: https://xiaogd.net:80, 結(jié)果就是無法訪問.

但是如果你改成 http://xiaogd.net:80, 它又可以訪問了.

注意, 因為我服務器后臺配置了 http 自動跳轉(zhuǎn) https 的 301 重定向, 所以最終瀏覽器會再次跳轉(zhuǎn)到 https://xiaogd.net:443.

注意勾選 'Preserve log' 以保留日志, 可以看到第一個 80 端口的請求會被響應一個 301 跳轉(zhuǎn), 并指示跳轉(zhuǎn)目標, 也即是 Location 字段中的 https 請求, 瀏覽器接收此跳轉(zhuǎn)指示并重新發(fā)起 https 請求, 也即是圖中第二個 xiaogd.net 的請求. 所以地址欄最終還是會變成 https 的, 特此說明.

此時如果你輸入 http://xiaogd.net:443, 它又不能訪問了...

那么原因是什么呢? 你找到規(guī)律了沒有?

注意一個是 http, 一個是 https.

協(xié)議的缺省端口

當你沒有顯式的在 url 中輸入端口時, 瀏覽器實際上會根據(jù)所用的協(xié)議來為你指定一個缺省端口:

如果是 http 協(xié)議, 就使用 80 端口

如果是 https 協(xié)議, 就使用 443 端口

如果你自己輸入端口呢? 那就用你輸入的端口, 你輸入啥就是啥, 輸錯了, 訪問不了那就是你的責任了, 誰讓你瞎搞來著?

本來不用你勞神的, 你偏要脫褲子放屁, 搞不好自然就是畫蛇添足, 弄巧成拙了.

比如上面的用了 http 卻輸入了 443, 或者用了 https 卻輸入了 80, 就無法成功訪問了.

另外, 如果你胡亂地輸入一個比如 9527, http://xiaogd.net:9527, 自然也是無法訪問的, 原因也很簡單, 因為我的服務器上根本沒有在 9527 端口上進行監(jiān)聽.

即便我有在 9527 端口上監(jiān)聽, 提供的也未必是 web 服務, 使用的協(xié)議可能既不是 http, 也不是 https, 所以你用瀏覽器試圖去訪問也可能會碰壁的.

當然了, 我是完全可以在服務器上的 9527 端口上再部署一個 web 服務的, 比如放一個 apache 或 tomcat server 之類的 web server 監(jiān)聽在那個端口上, 再放通防火墻, 安全組之類的, 也是可以訪問的. 只是我沒有這么去做而已.

那么為啥大家都不在那些奇奇怪怪的端口上提供 web 服務呢? 原因其實也很簡單, 為了方便用戶, 同時也減輕了用戶的認知負擔.

其實關(guān)于用戶, 你只要記住兩點就好了:

用戶是傻瓜

用戶是懶漢

深刻地理解了這一點, 你才可能成為一個好的程序員(包括但不限于產(chǎn)品經(jīng)理, 設計師...)

其實呀, 何止了省略了端口呀, 你看看現(xiàn)在的地址欄, 不但 http, https 這些協(xié)議省了, 最末尾的斜杠 / 省了, 甚至連 www 都省了...

是的, 我也幫你們省了 www, 事實上你通過 https://www.xiaogd.net/ 也能訪問到, 但如果通過 https://xiaogd.net/ 就能訪問到, 又何苦去再去錄入三個達不溜呢?

必須得承認, 缺省的存在是有很大的幫助的, 這其實是進步; 但另一方面, 這些缺省有時也會給不明就里的開發(fā)人員帶來了一些困惑, 好像端口不是必要的, 但其實不是這樣的.

為什么需要端口?

那為什么一定要端口這個東西呢? 它到底起了什么作用, 想必很多同學想要了解, 下面就來說說為什么, 而一個首先需要了解的概念就是進程間通訊(所謂的 IPC(inter-process communication)

進程間通訊(IPC)

你在瀏覽器地址欄輸入某個網(wǎng)站的域名, 然后回車, 就生成了一次請求, 然后服務器響應你的請求, 瀏覽器再把結(jié)果渲染出來, 你就能最終看到到一個網(wǎng)頁.

如果你曾經(jīng) ping 過一個域名, 比如你現(xiàn)在 ping 我的域名 xiaogd.net, 你就能得到一個 ip 地址, 118.89.55.54:

wKgZomY_E0mAbjkiAAAMsyfvQXg720.png

有了 ip, 瀏覽器自然就能找到我的主機, 但還是有個問題, 我的主機上運行著好多的進程, 好多的服務, 除了最常見的 web 服務, 我可能還有 ftp 服務, mysql 服務等等不一而足.

簡單地講, 如果一個請求只有 ip 地址這一信息, 操作系統(tǒng)將不知道把這個請求交給哪個進程去處理, 如果是你來設計整個系統(tǒng), 你想象一下, 是不是這樣?

如果你僅僅是輸入域名, 經(jīng)過 DNS 解析后, 只能得到一個 IP 地址.

所謂的一次請求, 從一個比較底層的角度去看, 就是一次進程間的通訊.

wKgaomY_E0mAVTxaAAGuyo4tj9k838.png

它可以是navicat客戶端與 mysql 數(shù)據(jù)庫服務的一次通訊, 也可以是 winScp 客戶端與 vsftpd FTP 服務的一次通訊等等.

以上面的具體為例, 可以說就是 Chrome 瀏覽器這個本地操作系統(tǒng)上的進程與我的服務器上的一個叫做 Nginx 的進程間的一次通訊.

那么, 所謂的端口, 其實可以簡單地視作為進程 ID.

當然, 它與進程 ID 還是有不同的, 下面再分析, 或者目前你可以認為端口就是進程 ID 的影子.

也即是說, 如果僅有域名(ip), 是無法定位到一個進程的, 通訊的發(fā)起方不但需要給出 ip, 還需要給出端口, 只有這樣, 服務器才能知道由哪個進程去響應.

端口, 一個間接層

那么問題又來了, 為什么引入端口, 而不是直接使用進程 ID 呢? 這個原因想想也不難明白, 大概有這么幾點原因:

作為客戶端無法知道服務端對應進程的 ID

服務端對應進程重啟后 ID 會改變

一個網(wǎng)站的 web 進程 ID 是這個, 另一個網(wǎng)站的可能又是另一個

自然, 原因是很多的, 我也是隨便的列舉了一些, 你或許還能想到更多. 而為了解決這些個問題, 就引入了端口這一間接層(indirection).

計算機世界里有一句名言: 任何計算機問題均可通過增加一個間接(indirection)層來解決.(Any problem in computer science can be solved with another layer of indirection. -- David Wheeler)

這個名言其實還有后面一句: But what usually will create another problem.(但通常會帶來另一個問題)

這里所謂另一個問題, 比如它會使得層次結(jié)構(gòu)復雜化, 交互效率下降等等. 當然了, 這就是架構(gòu)師們要去權(quán)衡的問題了, 很多時候, 架構(gòu)就是關(guān)于平衡的藝術(shù). 打死都不肯引入任何的間接層, 這是一個極端; 而一上來就引入好多個間接層, 這又是另一個極端.

如果沒有這個間接層, 客戶端要與服務端通訊, 就要知道服務端對應進程的 ID, 也即是客戶端是依賴于服務端的:

顯然, 這種模式對于 web 這種一個服務端對應大量客戶端訪問的情形是極不適應的, 你都不知道有誰可能會來訪問你的網(wǎng)站! 你根本無法告訴它們.

而有了端口這一間接層, 對于 web 的情形, 這種依賴被倒置了, 客戶端總是把請求發(fā)送到 80(或443) 端口, 這些成為標準的一部分, 并要求服務端反過來去適應, 服務端去監(jiān)聽端口的通訊并處理, 變成了一種反向依賴.

wKgaomY_E0qARw7mAAECvC5Q-FY782.png

如果一個進程想要提供 web 服務, 它啟動之后就要去綁定(binding) web 相關(guān)的端口,

如果端口已經(jīng)被其它進程綁定了(即所謂占用了), 就會綁定失敗; 又或者被自身前一個未完全退出的進程占據(jù)著, 也會綁定失敗, 在開發(fā)過程中你可能會遇到類似的問題, 一個 web 進程沒有關(guān)閉, 你又試圖啟動另一個, 而兩者都用了相同的端口, 就會產(chǎn)生沖突.

并在其上持續(xù)的監(jiān)聽(listen), 同時在有請求到來的時候去響應(response). 這樣一來, 進程 ID 的問題就消解了:

這類似于一個接口回調(diào), 瀏覽器只需要面向接口索取服務, 而無需知道接口服務的具體提供者, 這些細節(jié)被端口層所封裝并隱藏起來了.

端口這一間接層的存在解耦(decouple)了客戶端與服務端之間的強依賴, 整個體系變得很靈活.

可以把端口視作一般編程概念中的接口(interface), 而想 Nginx, apache, tomcat 等等可以認為是這個接口的不同實現(xiàn)(Implementation).

端口與現(xiàn)實世界的一個類比

為加深理解, 可以舉一個現(xiàn)實世界中的例子. 相信大家都有過去市民中心辦事的經(jīng)歷, 比如去辦理居住證, 護照, 社保等等業(yè)務, 你通常會收到一個小紙條讓你去某個窗口辦理對應業(yè)務, 這個窗口其實就類似于端口了:

比如 80 窗口就對應港澳臺通行證業(yè)務

那么你要辦港澳臺通行證, 你就奔向 80 號窗口就完了. 你不要去問門口保衛(wèi)處的王大爺, 到底是哪位同志辦理這個業(yè)務.

今天可能是小明在辦理, 隔了幾天, 小明可能受傷了, 流血了, 又輪到小紅在那里辦理, 又過段時間, 小紅也出意外了, 流產(chǎn)了, 又輪到小張在辦理, 又過段時間, 小張被發(fā)現(xiàn)在辦理業(yè)務過程中徇私舞弊, 流放了...

等等, 如果此時你的同事問你怎么辦港澳臺通行證, 你需要知道這些個人事變動的細節(jié)嗎? 根本不需要呀, 你只需告訴他去 80 號窗口辦理就好了...

市民中心的整個體系, 會確保有個會辦理這些業(yè)務的人員坐在那個窗口下面, 你唯一需要做的, 就是到那個窗口下請求服務即可.

端口與名稱服務(naming service)

通過上面現(xiàn)實世界類比的例子, 對于端口的機制, 相信你已經(jīng)理解得比較深入了. 廣義上講, 端口層也可以視作一個 naming service(名稱服務), 這與比如 spring cloud 中的 eureka 里的機制本質(zhì)上是一樣的, 只是這個 name 就是一個抽象的數(shù)字, 比如 80. 80 就代表了一個 web 服務, Nginx 之類的 web server 綁定并監(jiān)聽就相當于把自身提供的 web 服務注冊于其上.

DNS 域名系統(tǒng)其實也是 naming service, 你通過 xiaogd.net 這個名字(name), 就能獲取到我所提供給你的網(wǎng)頁服務.

類似的還有 java 里的 JNDI 等, 把一個名字與一個服務關(guān)聯(lián)起來, 比如一個名字就代表一個數(shù)據(jù)源(數(shù)據(jù)庫連接)之類的.

端口與 IoC(控制反轉(zhuǎn))

廣義上, 端口的上述機制也是控制反轉(zhuǎn)(Ioc: Inversion of Control)思想的一種體現(xiàn), 如果客戶端需要知道服務端的進程 ID, 實際上就被服務端控制了, 畢竟我服務端在哪個 ID 上提供服務, 你就得把你的請求發(fā)到相應的 ID 上來;

而有了端口這一中間層呢? 作為客戶端, 總是把請求發(fā)到對應端口上, 并要求服務端綁定并監(jiān)聽那些端口以及作出響應, 你服務端是反過來被我客戶端所控制, 我客戶端發(fā)到哪個端口, 你服務端就要去相應端口上監(jiān)聽并響應.

大家可以體會一下這種轉(zhuǎn)變. 這種設計或思想在編程領(lǐng)域其實是特別重要的, 在很多其它地方都有體現(xiàn).

因為瀏覽器總是把 web 請求發(fā)到了 80 或 443 端口, 這就要求一個 web server 進程去監(jiān)聽這些端口. 比如在我的服務器上, web server 是 Nginx, 它啟動之后就會去監(jiān)聽 80 和 443 端口, 任何想要訪問我的主頁的人, 并不需要知道我的 Nginx 進程 ID 是啥, 借助于端口這一間接層, 你就能夠與我的 Nginx 進程通訊, 并獲取你想要的東西.

事實上你可以這么認為, 瀏覽器實際上只是在與端口通訊, 端口層再把這些請求委托(delegate)或代理(proxy)給相應的 web server 去處理, 端口的角色就是一個中間人, 一個間接層.

再論缺省端口

現(xiàn)在, 我們應該明白了, 端口是必要的了, 當然, 對最終的用戶來說, 則不需要知道這些實現(xiàn)的細節(jié), 對于他們, 應該遵循最小知識原則, 知道得越少越好.

如果你一定要讓用戶在輸入 url 的過程中輸入端口, 又或者要輸入個 www 等等, 用戶就要給你扔過來"十萬個為什么"了...

為什么要加個 443?

為什么不是 334, 443是啥意思?

為什么一會兒是 80, 一會兒又是 443?

為什么加個 www, 啥意思?

為什么末尾還加個斜杠, 不加會死嗎?

...

惹不起, 惹不起...

還記得前面說的, 用戶是笨蛋, 用戶是懶漢嗎?

這里又要引用一句計算機世界的名言了: 程序員和上帝打賭要開發(fā)出更大更好連傻瓜都會用的軟件, 而上帝卻總能創(chuàng)造出更大更傻的傻瓜。目前為止,上帝贏了。

Programmers are in a race with the Universe to create bigger and better idiot-proof programs. The Universe is trying to create bigger and better idiots. So far the Universe is winning.

說句心里話, 很多時候, 用戶能記住你的域名就阿彌陀佛了, 你就該燒高香了, 你還想用戶記住你的端口, 真的想多了...

另一方面, 說到這里我們應該也能明白了, 那就是理論上, web 服務實際上可以構(gòu)建在任何端口之上. 比如在本地開發(fā)的時候, 用戶只有你自己, 那當然你可以隨便挑一個端口, 比如 8080, 只要自己知道就好了或頂多告訴另一個與你配合的前端同事.

同理, 其它非 web 的服務, 比如 ftp 服務, 也不一定說非得在 21 端口上等等; mysql 服務的端口同樣可以調(diào)整為 3306 之外的端口.

又或者說, 你想提供一個服務, 但只想小范圍內(nèi)的人知道, 你可以挑一個很偏門的端口, 這樣一般人只輸一個域名就沒法訪問到你的服務了.

比如有人想偷偷提供一些服務, 放一些廣淫民群眾喜聞樂見的小視頻啥的...刑法警告, 后果自負!! 別說我沒有提醒你.

端口與 TCP/UDP 協(xié)議

前面一直在說, 什么 3306 端口, 80 端口, 443 端口, 其實嚴格來說, 端口是分 TCP 端口和 UDP 端口的, 不過多數(shù)時候遇到的都是 TCP 端口, 但 TCP 80 端口和 UDP 80 端口是不同的端口.

UDP 的 80 端口, 包括 443 端口其實被保留了, 目前的 http 協(xié)議只構(gòu)建在 TCP 協(xié)議之上.

當然, 理論上講, 在 UDP 上構(gòu)建 http 也不能說就完全不行, 畢竟, 無論 UDP 還是 TCP 都是構(gòu)建在 IP 協(xié)議之上, 總之呢, 計算機的世界沒什么是不可能的, 而且似乎真有人在做這些嘗試, 不過這就屬于兩小母牛對屁股--比較牛逼的范疇了, 深水區(qū)了, 咱也不懂, 不多說了.

還有一點, 對于進程間的端口通訊, 實際上是對稱的, 也即是說, 服務器的響應也是先回到一個客戶端的端口上.

如果你用 Windows 10 系統(tǒng), 可以在 任務管理器 > 性能 > 打開資源監(jiān)視器 > 網(wǎng)絡 > TCP 連接, 點擊下遠程端口可以按照從小到大排列, 通常就可以看到 443 的相關(guān)連接了, 可以看到左邊有一欄本地端口, 一個 TCP 連接總是有一個遠程端口, 一個本地端口:

當發(fā)起一個 TCP 連接時, 客戶端首先自己先隨機挑選一個沒有被使用的端口作為服務器響應的接收端口, 比如 38672. 在一個 TCP 的包里, 無論是握手包還是后續(xù)的數(shù)據(jù)包, 包頭部分最重要的兩個字段, 一個就是源端口(source port), 比如 38672; 另一個就是目標端口(destination port), 比如 80, 或者 443.

可以這樣看, 服務器的響應也是先回到源端口, 比如 38672 上, 源端口再轉(zhuǎn)給最終的進程, 比如瀏覽器.

而對于一個 IP 包, 同樣的, 包頭部分最重要的兩個字段, 一個就是源IP(source IP); 另一個就是目標 IP(destination IP).

而 TCP 包會作為 IP 包的數(shù)據(jù)包被打包到 IP 包里面, 也一個 IP 包里其實包含了 IP + 端口.

IP 加端口再加上端口與進程間的關(guān)聯(lián), 分屬兩個不同主機間的進程就能通過 TCP(UDP)/IP 協(xié)議愉快地進行進程間的通訊(IPC)了.

當然了, 同一個主機間的進程也同樣可以利用這套機制. 但同一個主機間還可以有其它選擇, 這個具體看各個操作系統(tǒng)是否提供相關(guān)機制及支持. 而 TCP/IP 屬于廣泛應用的標準協(xié)議, 從而得到了廣泛支持.

因為篇幅關(guān)系, 關(guān)于這樣 TCP 協(xié)議等的細節(jié), 以及包括 Socket, 連接等概念, 以及虛擬主機, 反向代理等等就不再展開去說, 如果你感興趣, 歡迎留言, 后續(xù)會考慮再寫一些文章去介紹.

同樣因為篇幅的原因以及同時我也不是計算機網(wǎng)絡及協(xié)議方面的專家, 關(guān)于端口方面的, 如果有什么說得不到位, 或不正確的地方, 歡迎留言指正, 關(guān)于端口方面的介紹就到這里.

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304779
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209317
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    963

    瀏覽量

    32051
  • 人工智能
    +關(guān)注

    關(guān)注

    1791

    文章

    47183

    瀏覽量

    238209
收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式測控系統(tǒng)中常見的數(shù)字濾波算法有哪些?

    嵌入式測控系統(tǒng)中常見的數(shù)字濾波算法有哪些?常見的數(shù)字濾波算法對比分析哪個好?
    發(fā)表于 04-12 06:39

    目前最常見的是嵌入式Linux方向

    嵌入式學習是一個循序漸進的過程,如果是希望向嵌入式軟件方向發(fā)展的話,目前最常見的是嵌入式Linux方向,關(guān)注這個方向,大概分3個階段:1、
    發(fā)表于 11-08 06:29

    總結(jié)嵌入式系統(tǒng)開發(fā)中常見的存儲器及其特點

    總結(jié)嵌入式系統(tǒng)開發(fā)中常見的存儲器及其特點
    發(fā)表于 12-17 06:11

    嵌入式Linux系統(tǒng)開發(fā)基礎(chǔ)

    了解嵌入式Linux系統(tǒng)Ø 從Linux內(nèi)核到文件系統(tǒng)ü嵌入式
    發(fā)表于 09-10 11:11 ?68次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>開發(fā)基礎(chǔ)

    嵌入式Linux系統(tǒng)的移植研究

    介紹嵌入式系統(tǒng)嵌入式系統(tǒng)中的GUI , 詳細說明三種常見嵌入式GUI (Microwindo
    發(fā)表于 04-24 10:43 ?23次下載

    嵌入式】構(gòu)建嵌入式Linux系統(tǒng)(uboot、內(nèi)核、文件系統(tǒng)

    嵌入式Linux系統(tǒng)知識架構(gòu)及層次嵌入式Linux系統(tǒng)構(gòu)成及啟動略析
    發(fā)表于 10-20 18:20 ?42次下載
    【<b class='flag-5'>嵌入式</b>】構(gòu)建<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>(uboot、內(nèi)核、文件<b class='flag-5'>系統(tǒng)</b>)

    什么是嵌入式操作系統(tǒng) 常見嵌入式系統(tǒng)有哪些

    常見嵌入式系統(tǒng)Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems
    發(fā)表于 10-21 09:36 ?27次下載
    什么是<b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系統(tǒng)</b> <b class='flag-5'>常見</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>有哪些

    嵌入式Linux開發(fā)教程:Linux常見命令(上篇)

    摘要:這是對周立功編著的《嵌入式Linux開發(fā)教程》的第7期連載。本期刊載內(nèi)容有關(guān)LinuxLinux常見命令中的導航命令、目錄命令和文件命令。下一期將連載網(wǎng)絡操作命令、安裝卸載文件系統(tǒng)
    發(fā)表于 10-21 13:36 ?11次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>開發(fā)教程:<b class='flag-5'>Linux</b><b class='flag-5'>常見</b>命令(上篇)

    嵌入式Linux常用GUI系統(tǒng)

    嵌入式Linux常用GUI系統(tǒng)【整理】嵌入式Linux中常用的GUI(圖形用戶界面)
    發(fā)表于 11-01 16:31 ?4次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>常用GUI<b class='flag-5'>系統(tǒng)</b>

    嵌入式linux系統(tǒng)中常用的文件系統(tǒng)

    原文:https://blog.csdn.net/li_wen01/article/details/80090624嵌入式linux系統(tǒng)中常用的文件
    發(fā)表于 11-01 16:56 ?12次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>中常</b>用的文件<b class='flag-5'>系統(tǒng)</b>

    嵌入式linux報警,嵌入式Linux下LED報警燈驅(qū)動設計及編程.doc

    設計及編程一.實驗目的理解驅(qū)動本質(zhì),掌握嵌入式Linux系統(tǒng)下驅(qū)動開發(fā)相關(guān)知識,包括端口寄存器訪問、接口函數(shù)編寫、和文件系統(tǒng)掛接、注冊及相關(guān)
    發(fā)表于 11-01 17:21 ?6次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b>報警,<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>下LED報警燈驅(qū)動設計及編程.doc

    嵌入式Linux(基礎(chǔ)篇)】從標準Linux嵌入式Linux + 嵌入式Linux知識架構(gòu)

    主要介紹了GNU/Linux的誕生,標準Linux是如何應用在嵌入式系統(tǒng)中的,最后講述了嵌入式Linux
    發(fā)表于 11-02 09:51 ?34次下載
    【<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>(基礎(chǔ)篇)】從標準<b class='flag-5'>Linux</b>到<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b> + <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>知識架構(gòu)

    嵌入式Linux專題(一)——嵌入式Linux系統(tǒng)構(gòu)成及啟動流程

    本文簡單的介紹了什么是嵌入式系統(tǒng),以及嵌入式Linux系統(tǒng)結(jié)構(gòu),并且簡單的介紹了Linux的啟
    發(fā)表于 11-02 12:36 ?15次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>專題(一)——<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>構(gòu)成及啟動流程

    嵌入式網(wǎng)絡編程+嵌入式Linux系統(tǒng)

    嵌入式網(wǎng)絡編程+嵌入式Linux系統(tǒng)一、 Linux操作系統(tǒng)安裝與使用(命令)二、
    發(fā)表于 11-02 14:51 ?23次下載
    <b class='flag-5'>嵌入式</b>網(wǎng)絡編程+<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b>

    Linux嵌入式系統(tǒng)開發(fā),嵌入式Linux開發(fā)教程

    嵌入式有不少組合名詞,例如嵌入式系統(tǒng),嵌入式軟件,Linux嵌入式,Android
    發(fā)表于 11-03 11:51 ?30次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>開發(fā),<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>開發(fā)教程
    RM新时代网站-首页