STM32高級開發(1)-開源是什麼

任何資料都應該被全人類共享,反對版權、反對封鎖,開源精神從上世紀開始就是黑客精神最直接的體現,在短短不到百年的計算機和計算機軟件的發展歷史中,秉承着開源精神的極客們和閉源軟件公司的恩恩怨怨也就此持續了半個世紀。


開源的歷史及簡介

在上個世紀計算機發展的早期階段,軟件幾乎都是開放的,任何人使用軟件的同時都可以查看軟件的源代碼,或者根據自己的需要去修改它。在程序員的社團中大家互相分享軟件,共同提高知識水平。這種自由的風氣給大家帶來了歡樂,也帶來了進步。

但不久之後,以微軟爲主的一些商業公司就破壞了這種風氣。這些商業公司從自由的計算機社團裏僱傭了大量的技術高手,開發帶有知識產權保護的專有軟件。他們在分發軟件的時候也不再附帶源代碼。從此,專有軟件的時代到來了。直到現在,專有軟件不公開源代碼仍是默認的行業潛規則。

這裏寫圖片描述
即使這樣,崇尚自由的鬥士們也沒有妥協。他們認爲,數字時代本應是自由的,任何人都可以自由的獲取軟件資源及其源代碼,而不應該被少數商業公司所控制。因此由Stallman爲領袖的一羣富有激情的技術高手們發起了自由軟件運動,創立了“自由軟件基金會”,即FreeSoftwareFoundation(FSF)。FSF頒發了GNUGPL通用公共許可,GPL明確定義了自由軟件的含義,即用戶擁有使用軟件、修改軟件、重新發布軟件以及改善再利用軟件等四種自由,作爲前提的,自由軟件必須公開所有的源代碼。GPL成爲自由軟件世界中的最高精神綱領,它成功地創建了一個軟件中的自由王國,並保證開發者、用戶都擁有充分的自由權。另外,在自由軟件的世界中,根本就不存在盜版的概念。

GNU的官方網站http://www.gnu.org/

“自由軟件”的英文是“FreeSoftware”,這不免爲許多人所誤解,人們經常把它和“免費軟件”連繫在一起,免費的恰恰都是些低級的,這使得自由軟件蒙上了一層陰影。於是大家決定給自由軟件一個更易理解的別名“開源軟件”。開源一詞則由此得來。

所以,開源即是自由的化身。它講述了一種公開的、自由的精神。軟件開源的發展歷程,爲我們軟件行業以及非軟件行業的人都帶來的巨大的參考價值。

此處注意這裏開源軟件的領軍性人物,理查德·馬修·斯托曼(Richard Matthew Stallman),大家可以去搜索一下這位前輩的事蹟:自由軟件運動的精神領袖、GNU計劃以及自由軟件基金會(Free Software Foundation)的創立者、著名黑客。就這樣短短3個身份介紹我想就足以說明他在開源領域的地位。


Linux

作爲計算機使用過程中最重要的基柱,計算機系統也自然地作爲一種開源軟件最有代表性也是最基礎的存在。

在上世紀90年代,從Unix操作系統發展而來,使用GNUGPL協議,經過上百位社區程序員的合作開發及修改,1994年Linux1.0發佈。在隨後的演變之中,以Linux爲內核,許多廠商開發出了各種Linux的發行版本。目前較爲常用的有:ubuntu、debian、Redhat等。

而作爲通用計算機系統最基礎性的軟件,不是office,也不是遊戲。最重要的便是上面的編譯器。在Linux上,就是GNU GCC等編譯工具鏈。通過他們編譯源代碼使得程序可以在我們當前的操作系統上運行,成爲可執行文件,這便是編譯器的的作用。


gcc-arm-none-eabi

之前介紹過我們在Linux系統下使用gcc工具鏈對程序進行編譯,但是那樣只能編譯計算機系統程序,那麼我們在嵌入式領域,以交互式開發的系統中要使用什麼工具編譯單片機的源代碼呢?

對於arm單片機,我們使用的就是gcc-arm-none-eabi工具鏈,其中gcc不必多說,GNU編譯器套件(GNU Compiler Collection)的縮寫,而none代表是編程程序運行在裸機上即沒有安裝操作系統的CPU上,arm也不用多說是該工具鏈的適用的CPU內核,而eabi,意爲嵌入式應用二進制接口(Embedded Application Binary Interface)。由此大家可以自然地想到一定會存在,arm-eabi-gcc、arm-none-linux-gnueabi-gcc等軟件。自然地他們也是用在各種不同環境中的。如arm-eabi-gcc就是編譯在裝有操作系統的arm硬件下,如Android手機等平臺。


總結

對於很多童鞋來說,我想大家接觸開源這個概念多是從開源飛控開始的,而一開始對於開源這個概念也是迷迷糊糊的,也有同學問過我,開源到底怎麼學。

首先,我們要認識到,開源實際上就是一種開放源代碼及設計資料的工程,當然也有開放硬件不開發軟件,或開發軟件不開放硬件的項目。而其目的必然是爲了讓更多的或是說開發者在他們構建的項目上作出更新和更多的改變。爲了讓大家方便的入門,其工程項目的資料中必然包含着入門和使用的資料,當然有時這些資料要求開發者有一定的基礎才能讀懂,所以接下來我會用多篇的文章,來一點一點爲大家講解怎樣在開源環境下構建和開發一個STM32的工程。也許在一開始的時候我們會舉步維艱,但當你熟悉這個操作系統平臺時,你會發現它是如此的強大,原來我們還能這樣開發軟件。

也許你會有疑問,我們爲什麼要在Linux系統下開發呢,也確實gcc也有在windows下運行的方式,但是在windows下,很多爲我們提供強大功能的輔助性工具軟件都運行,即使能夠運行也要很麻煩的安裝諸多環境,且gcc作爲爲Linux開發的軟件也自然對Linux的支持性是最好的。這就好像我們非要在OSX上運行window的軟件一樣蛋疼。

首先我先列舉幾個開源環境下我們將要使用的系統和軟件,大家可以提前檢索瞭解一下以方便以後的學習:

  1. ubuntu。操作系統,這個系列的教程主要是在ubuntu環境下進行了,筆者使用的是ubuntu14.04版本。

  2. gcc-none-arm-eabi。編譯工具。適用於arm內核無操作系統環境

  3. OpenOCD。可以理解爲在Linux下使用的調試器驅動,支持stlink,jlink等多種調試器。

  4. make。Linux下最具特色的工具軟件,可以讓你少敲很多的編譯指令。

  5. astyle。代碼格式化工具,可以讓雜亂書寫的代碼按照語法結構和格式書寫規範自動排列好。

  6. vim。編輯器,這個可以使用也可以不使用,因爲ubuntu自帶的gedit編輯器可能更好入手。但vim這個被譽爲最頂尖編輯器的軟件,其不帶“之一”的美譽,絕對是有他的強大之處的,我們會在以後的文章中介紹。

  7. git。git軟件是一種代碼託管軟件,有什麼用呢?試想如果一個大型工程有好多的程序員在開發,就比如Linux,那麼身處各地的程序員們沒辦法把自己的代碼複製發送給所有人,同時也沒有一個良好的辦法來綜合和融合各自的工作成果,怎麼能行呢?所以git便應運而生了,同時還有他的管理網站github。

也許幾句簡單的介紹並無法使大家認識或理解到這些軟件到底是幹什麼的,彆着急,自己先搜索寫資料瞭解一下吧~,當然在隨後的文章中我們會慢慢的介紹這些軟件的功能和使用。

發佈了26 篇原創文章 · 獲贊 109 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章