學Linux必讀 Linux程式設計學習方法

2021-09-29 04:21:37 字數 2944 閱讀 8572

linux程式設計怎麼入門

最好的 linux 學習突破口是 linux 系統程式設計,沒有之一!

有人說是裸機,看看招聘資訊就知道,沒有任何招聘資訊在任何一點提到裸機程式。

那麼裸機程式是給那些使用者使用的?裸機程式不是給學習微控制器或者 stm32 程式設計師準備的,是給只有上位機變成經驗的純軟體工程師準備的。

大家可以看一下網上的招聘資訊,部分會要求對硬體有一定的了解,例如 gpio,i2c,uart,485 等,這些需要程式設計師用到示波器,萬用表之類的工具,需要用到一些最簡單的硬體應用的知識。對於專業是軟體工程的程式設計師,一直從事軟體開發,那麼會有一點點對硬體理解上的幫助。

假如你的專業是自動化,計算機,電子,電氣工程,通訊工程,物理專業等等,學習這東西完全是在浪費時間,學習過大學物理,模電,數電等相關課程,完全沒必要去使用裸機,微控制器程式設計就是裸機程式設計。特別強調的一點,學習過微控制器的使用者,假如到了作業系統,還在想著利用裸機入門是永遠學不會 linux 程式設計的!

少數的微控制器老師,在給大家介紹微控制器學習的時候,會傳遞類似這樣的資訊「學習了微控制器,帶作業系統的程式設計也是一樣的」等等。

其實完全不一樣!帶有任何乙個作業系統之後,作業系統本身會帶很多功能,提供了很多介面。在初期,學習的重點就是學習使用這些自帶的功能,熟悉這些介面。

還有一點給大家說明一下,linux 程式設計師什麼時候會接觸到最底層。

例如 linux 的網路程式設計,最底層的網路部分已經有全世界最優秀的程式設計師完成,花費了幾十年時間,而且目前仍然在維護公升級中,這個是世界性的任務,作為初學者,在很長時間的一段時間內都是直接拿來使用。

那麼學習到了什麼程度會做這些開發呢?如果大家英文不錯,可以看一下國外做 linux 最底層開發的招聘要求,一般是 8 年或者 10 年以上的經驗,這個幾乎是硬性規定。

所以大家老老實實的一步一步的來,不要想太多沒用的東西。

什麼是linux系統程式設計

任何乙個作業系統程式設計都需要對系統本身有一定的了解。

前面最基礎的實驗中,介紹了搭建 linux 環境,linux 命令列,gcc 編譯,各種開發工具等等,都是必須掌握和熟悉使用的。

它們都是工具,俗話說「磨刀不誤砍柴工」,跟著手冊走通一遍,以後新的環境就沒有什麼問題了。

linux 系統程式設計,最主要的是介紹 linux 的一些程式設計思想以及 linux 中相關的 api 用法。

linux 最核心的思想是「一切皆檔案」!包括:

linux 下的目錄,是以檔案形式出現的;

linux 驅動的介面等等。

linux 中 api 包括:

各種檔案的操作等等

程序的 api(作為作業系統,學習多工是必須的)

linux 的內部通訊,程序間通訊等

網路通訊(常規的 socket,udp,tcp 等等)

linux 的時間(linux 有一套自己的時間介面)

另外如果對 c 不是很熟悉,還需要學習 c 自帶的一些函式,在做技術支援的過程中,發現這個問題很嚴重,一些例程中直接呼叫的一些 c 庫函式,經常有使用者來問。

還有結構體知識,資料結構非常重要,如果對 c 中的資料結構不是很熟悉,也是需要夯實c 的基礎。

關於linux驅動

關於 linux 驅動,這裡先簡單介紹一下。

學習 linux 最好的方式就是閱讀原始碼,這句話本身沒有錯。但是對於新手就是容易產生乙個誤導,很多新手會以為是從 linux 啟動的程式開始閱讀,這樣理解就大錯特錯了! 大家可以這樣理解,linux 本身可以模擬為地球,一直轉著,你不要管是誰推動了第一下,你要做的就是在上面蓋房子,linux 驅動相當於房子的地基!閱讀 linux 原始碼,其實是去看地基。 「地基」分為三大類,字元裝置,塊裝置,網路裝置。塊裝置和網路裝置是屬於摩天高樓,有固定的人去做,大部分程式設計師不需要去寫,大部分字元裝置必須自己會修改會寫。

大家可以看一下 linux 驅動工程師的招聘要求,要求高一點,肯定會要求 bsp 開發,也就是板級開發,這個過程就是說的 linux 移植。板級開發需要對英文熟練,掌握 gcc 的編譯,調

試修改 bug 等,主要內容是將系統在板子上跑起來,除錯通網路和攝像頭等等驅動,這個過程一般是需要兩年或者三年以上經驗,而且也不需要自己去寫塊裝置和網路裝置,只是去移植。

迅為另外的一本 linux 驅動實驗手冊會詳細介紹字元裝置的開發,以及網路裝置開發的關鍵點。作為初學者,不要著急去弄驅動,這都是有乙個過程,基礎不牢固,基本的概念沒弄明白,直接學習驅動會事倍功半,反而得不償失。

學習linux的時間

前面介紹過,linux 程式設計師有不同的要求,不可能一口吃個胖子。

微控制器只需要 15 天,甚至更短的時間,就可以找到相關的工作。作者當年畢業後,就是學習了乙個星期,然後就找工作,面試,通過,接著從事了一段時間的嵌入式微控制器開發。

無論是什麼樣 linux 程式設計相關的工作崗位,都是可以終身從事的職業。做應用,做驅動,做視覺化開發等,都需要長期終身的學習。

假如從來沒有接觸過作業系統程式設計的知識,平均每天兩小時,堅持一年時間,就基本可以從微控制器程式設計到 linux 程式設計了;如果接觸過其它作業系統程式設計,那就會非常快,三個月左右就可以了。如果有了作業系統程式設計的基礎之後,加上基礎比較好(主要是閱讀英文文件的能力和程式設計能力),轉到 linux 驅動開發會非常快。 如果要做到熟練 bsp 開發,培養週期一般就是三年左右了。以迅為電子的工程師為例,板級開發的工程師,從事程式設計師工作都是 5-15 年左右。 如果更高階的底層開發,前面介紹過最基本要求是 8 年以上 linux 程式設計經驗,而且要求英文口語過關,交流沒障礙。

**迅為:

linux彙編必讀

個人認為程式就是用來處理資料的,所以最要緊的是解決輸入與輸出的問題,還有乙個要緊的問題就是我們能在螢幕上看到輸出結果,下面我說說我在看linux下面彙編 的時候的一些感想,以及linux下面彙編和dos下面的個人認為的最主要的不同,在dos下面主要就是呼叫dos中斷和bios中斷 比如返回系統是 m...

AT指令程式設計必讀

1 相關的gsm at指令 與sms有關的gsm at指令 from gsm07.05 如表1所示 表1 相關的gsm at指令 at 指令 功 能 at cmgc send an sms command 發出一條短訊息命令 at cmgd delete sms message 刪除sim卡記憶體的...

今天剛學的,linux多執行緒程式設計

今天學的是多執行緒程式設計,下面是乙個典型的例子。學的東西時間久了總會忘,寫下來是最好的辦法,以後一看就記起來了!程式的實現是寫入資料到buf中,然後在終端顯示,直到輸入exit退出為止。include include include define bufsize 128 pthread mutex...