樹莓派系統源碼
『壹』 樹莓派raspberrypi怎麼下載其系統源碼
下載方法:
a、網頁直接下載:
點到所需要下載的工程,左上角選版本,右方有一個download ZIP按鈕可直接下載(筆者下載完成後,在linux中解壓提示出錯,windows又非常慢切內核建議不要在windows環境解壓,
b、使用git下載
$ mkdir raspeberrypi_src
$ cd raspberrypi_src
$ git clone git://github.com/raspberrypi/firmware.git
$ git clone git://github.com/raspberrypi/linux.git
$ git clone git://github.com/raspberrypi/tools.git
會得到三個文件夾:firmware、linux、tools。
『貳』 如何為樹莓派2編譯內核
入手一塊樹莓派2開發板,想利用樹莓派這個平台總結一些內核和應用程序調試手段。目前已經為樹莓派安裝了一個arch linux系統。要總結linux內涵調試手段,搭建相應的實驗環境,必須重新編譯內核才行。所以一個新的編譯樹莓派2內核的任務就是第一要緊的事情。
首先在ubuntu編譯機器上建立編譯工作目錄
raspberry
|-kernel
|-moles
|-mounts
|-scripts
下載源代碼,編譯工具,編譯腳本
下載源代碼
cd ~/raspberry/kernel
git clone https://github.com/raspberrypi/linux.git
git clone很容易被中斷,中斷不能進行斷點續傳,運行上面的命令之後,在kernel目錄下面又會形成一個linux的目錄。
下載編譯工具
git clone https://github.com/raspberrypi/tools.git
運行上面的命令之後就會在kernel目錄下會形成一個tool目錄
編譯腳本下載
cd ~/raspberry/kernel/scripts
git init
git remote add origin https://github.com/veccsolutions/RaspberryPi2Scripts.git
git pull origin master
目前已經將編譯需要的代碼,工具,腳本都准備妥當,那就開始吧
編譯過程
1,配置內核
到~/raspberry/kernel/linux目錄
運行命令 make ARCH=arm CROSS_COMPILE=~/raspberry/kernel/linux/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-bcm2708hardfp-linux-gnueabi- bcm2709_defconfig
該目錄中存在4個文件夾,本例使用gcc-linaro-arm-linux-gnueabihf-raspbian 或 gcc-linaro-arm-linux-gnueabihf-raspbian-x64。前者對應32位系統後者對應64位系統。
arm-bcm2708hardfp-linux-gnueabi
gcc-linaro-arm-linux-gnueabihf-raspbian
arm-bcm2708-linux-gnueabi
gcc-linaro-arm-linux-gnueabihf-raspbian-x64
2,利用腳本編譯內核
進入到目錄目錄~/raspberry/kernel/scripts
./makekernel.sh
3,安裝內核
安裝內核的工作主要是將boot分區中的kernel image替換掉,同時將moles中的ko文件做相應的拷貝,同時將firmware中的相應文件做拷貝。moles,和firmware在root分區下面。
『叄』 樹莓派運行wine時出現錯誤代碼c0000018
樹莓派3B是卡片電腦,內存為1GB,一般運行Linux。Linux兩種主流的內存分配方法2G/2G和3G/1G,樹莓派系統後期優化性能,使用2G/2G。(注:樹莓派內核3.x仍舊採用3G/1G)
Wine提供Windows API,Winehq官網提供的Wine都是兼容3G/1G的Linux內核。這導致Wine在樹莓派3B上運行時會出現內存地址映射,用戶數據空間地址映射失敗。這些錯誤都是wine-preload發出的。
我提供兩種解決方案。
方法一,編譯新的Linux內核:(本地編譯,在樹莓派上操作)
1.更新軟體包:sudo apt-get update
2.安裝git(已經有的可以跳過):sudo apt-get install git
2.同步內核源碼:git clone --depth=1 https://github.com/raspberrypi/linux (注:此代碼只同步.git項目倉庫中的master分支)
然後,你可以睡一覺。真的,掛油管也沒用,下載很慢的。
3.生成配置文件:先進入clone下來的文件夾,然後執行 make bcm2709_defconfig 會在該目錄下生成.config配置文件。
4.執行命令: KERNEL=kernel7
5.修改.config文件:sudo nano .config查找# CONFIG_VMSPLIT_3G is not set 將其改為CONFIG_VMSPLIT_3G=y 再查找 CONFIG_VMSPLIT_2G=y 將其改為 # CONFIG_VMSPLIT_2G is not set 保存
6.執行命令:make -j4 zImage moles dtbs 此時你又可以再睡一覺,大約需要5個小時,注意散熱。
7.安裝:sudo make moles_install
sudo scripts/mkknlimg arch/arm/boot/zImage /boot/kernel3g.img
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
8.執行reboot重啟
方法二,舊版本的wine是沒有預載入器,可能使用舊版本就不會報錯了。
『肆』 樹莓派開源到什麼程度
樹莓派是基於linux的,你可以找找看在linux上的視頻播放的實現,比如xmbc。你應該不用去觸碰樹莓派系統本身的,只需要找一些linxu上的視屏播放實現,應該就可以直接上樹莓派上用了。
比如說安裝這個:
sudoapt-get-yinstallomxplayer
這樣就可以播放視屏了:
omxplayeryi_ge_shiping.mp4
『伍』 樹莓派可以運行u盤里的ubuntu嗎
你好,
1、肯定不行!
2、兩種硬體的架構不同,電腦是x86,cpu是全指令集,樹莓派是ARM,CPU是精簡指令集!需要在系統源代碼上重新編譯,來做系統的移植,ubuntu官網有針對樹莓派的物聯網core核,僅僅是一個系統內核,沒有圖形界面!樹莓派上要運行,只能是ubuntu mate,運行流暢度並不怎麼好!
『陸』 如何在樹莓派上從源代碼構建Golang
第一步是安裝Mercurial,這是Google用來管理Go源代碼的版本控制系統。
sudo apt-get install -y mercurial
對於Mercurial系統來說,其主要的命令行介面是hg,有了這個你就能下載Golang的源代碼。下面的命令將把構建Golang所必須的源代碼下載到/usr/local/go目錄中去:
sudo hg clone -u default
這一過程大約需要10分鍾,取決於你的網速有多快了。一旦下載完成,你就可以開始構建的過程了。用cd命令將當前目錄修改為/usr/local/go/src,然後開始構建過程:
sudo ./all.bash
構建過程中會在終端上輸出很多內容,大部分都是一些信息提示。整個構建過程大概需要90分鍾到2小時。
構建進程會提示我們將Go的二進制包所在的目錄添加到系統PATH中去。要做到這一點你需要編輯.profile文件,每次你創建一個新的shell會話時,Bash都會處理這個文件。用cd命令將你的當前目錄切換回home,使用nano編輯器編輯.profile文件:
nano .profile
在文件最底部,添加如下這行:
export PATH=$PATH:/usr/local/go/bin
鍵入CTRL + X來退出nano編輯器,然後輸入Y來確定編輯過的文件已保存。按下ENTER鍵來保持當前文件名不變。
你需要退出當前的終端然後重新開啟另一個(如果你用的是桌面環境),或者也可以登出再登入(如果你用的是純命令行界面)。
要驗證Go是否安裝正確,可以創建一個名為hello.go的文件,然後寫下如下代碼(著名的hello world又來了):
package main
import "fmt"
func main() {
fmt.Printf("Hello Make Tech Easier!\n")
}
要運行它,請在終端上輸入:
1
go run hello.go
程序的輸出結果是一行文本:Hello Make Tech Easier!
『柒』 為什麼在樹莓派開發當中都用python和C/C++,而不是用java,是因為樹莓派帶不動Java嗎
不是。
不是性能原因。 C/C++因為執行效率高,而用來開發驅動程序和底層應用,樹莓派畢竟是個離硬體很近的東西。 Python因為易學易用,開發便捷,用來給小白玩兒或者快速做原型的。 Java顯然不具有這些特性,就比較尷尬的被拋棄了。
其實不只是樹莓派,很多Linux發行版裡面的軟體都是用Python寫的。用Python並不是因為特Python運行佔用資源比java低,而是因為python存在大量的由C/C++寫成的庫。Python本身只是起個膠水的作用,把多個C/C++寫的庫粘在一起組成一個應用。
java也能通過jni(Java Native Interface)調用C/C++寫的庫,但java這種類型的庫的數量和質量不如python。而且java是編譯型語言, Python是解釋型語言,Python代碼不用經過編譯就能直接運行,這一定程序上減少了開發時間。所有一般Linux都選用C/C++或者Python做為開發語言。
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum於1990 年代初設計,作為一門叫做ABC語言的替代品。
Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。
Python解釋器易於擴展,可以使用C或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。Python 也可用於可定製化軟體中的擴展程序語言。Python豐富的標准庫,提供了適用於各個主要系統平台的源碼或機器碼。
2021年10月,語言流行指數的編譯器Tiobe將Python加冕為最受歡迎的編程語言,20年來首次將其置於Java、C和JavaScript之上。
『捌』 樹莓派中 哪裡可以修改源碼改跳過cpu判斷,怎麼改
樹莓派應該算是一個微型台式機。
它用的雖然是arm的CPU,不過支持通用的操作系統,而不是嵌入式的操作系統。
當然也可以安裝android之類的操作系統。
嵌入式開發板現在主要開發板用的還是自己定製的操作系統。
如果有一個應用需要在arm的CPU上運行,可以試著用它來玩玩。
不過通常開發特定的嵌入式系統,都會自己定製嵌入式開發板。
如果不會做,可以找一些專門做這種開發板小廠子定。
10年用的板子基本上都沒有操作系統,全部自己寫的C。
後來用vmware。
現在似乎用android的比較多。
也可以使用嵌入式linux。
使用QT作為圖形界面。
比如有些導航儀。
手機開發有一段時間用MTK。
現在基本上都android了。
『玖』 樹莓派 編譯驅動 需要編譯內核嗎
如果不是交叉編譯的的話,需要下載和系統版本相同的Linux內核源代碼;如果是交叉編譯的話,還需要安裝交叉編譯工具;詳見http://blog.csdn.net/hcx25909/article/details/16860055
『拾』 有研究android系統源碼的博客嗎
我幹了3年Android sdk開發,覺得到了瓶勁沒法更進一步,於是花了一年多點時間,大概摸到點門徑。根據前輩的經驗,Android底層完全入門需要兩年。
先說下我的入門過程:
第零步,下載源碼,我下的4.2的,框架層源碼10G,內核2G多,ctags給框架層建的標簽文件都有600M,當時讓我有點震撼,用的vim+ctags+cscope來閱讀,還算不錯,架構挺清晰的。
第一步,我找到了一本好書《Android的設計與實現 第一卷》它講了Android框架層的啟動,初始化,服務框架初始化,Binder,消息循環,PackageManagerService,ActivityManagerService。據作者說後面會出講UI子系統的第二卷,拭目以待。其實這本書看了幾十頁我就發現需要第二步的知識,否則看不下去,於是跳去第二步。
第二步,學習Linux系統編程,在看《Android的設計與實現》的時候我發現,框架層的Native部分,全是Linux編程。為了掌握這部分知識,我花了4個月學習了《Linux系統編程手冊》(TLPI)這本1000多頁的書,我以前是搞WIndows文件系統這塊的,所以C語言還比較熟,TLPI的習題很有意思,量也比較大,堅持下來還是收獲很多。
第三步,花了4個月學習了一些Linux內核的知識,看了LKD,PLKA看了一半多。越學越沒底,覺得不懂得越來越多,不過這個也正常,只有靠慢慢磨,估計以後要不斷的磨這塊。
第四步,回頭看Android源碼,這次一口氣看完了《Android的設計與實現 第一卷》,終於對框架層有了譜。同時真的數次把我看暈,前面看Linux內核源碼都沒這么暈,不斷在Java層和Native層之間跳有點磨腦漿。其中我又覺得Java的基礎沒有打太牢,回去補了一個月的《Core Java》第八版。但是這書沒有涉及UI子系統,於是又看了《Android內核剖析》
第五步,《Android內核剖析》(這本書實際上是講框架層的,作者也是個搞嵌入式的,所以他在寫框架層的時候文筆不太好,很羅嗦,不過還是有很多看點,到他後來寫做ROM,玩開發板時估計是說到了他的本行,一下子遛起來了看得出還是挺有水平的,這本書知識有點舊畢竟講的是2.3很多代碼已經過時,但是作者很多點子很有參考價值)這本書講UI子系統和按鍵/觸摸消息處理系統還是很有分量的,尤其13章View繪制那裡,結合源碼研究很有收獲。而後面他講編譯框架和ROM相關的東西都是挺寶貴的資料。
第六步,為了再補一下其他諸如電源管理模塊等子系統的知識看了,《深入理解android》系列,個人認為這個系列看起來有點不太舒服,不過作為補充印證還是比較有價值。
第七步,《Android系統源代碼情景分析》,羅升陽的源碼分析大作,比《Android的設計與實現》分析得更細致,但缺點是涉及到模塊比較少,選用的源碼也比《Android的設計與實現》更舊一點。看完書後需要去研究作者的博客,東西挺多的,一定讓你滿意。
第八步,買塊開發板自己玩。這步我還沒走到,原因是我覺得我還差點准備知識。可能要再幾個月,到時准備入塊6410或者樹莓派。
最後,由於我11年以前都是搞Windows這塊的,所以對Linux知識不是很了解,不得已看了這么些書,如果是一直做Linux的人,很多步驟估計可以省掉了。直接上源碼才是正道。
我本身做著移動GIS開發的工作,學框架層全是因為興趣,但招聘平台Android框架層開發人員還是蠻有競爭力的有不少定製ROM,智能電視的工作都處於人才難求狀態,畢竟有一定的門檻,現在各種ios培訓,讓奔著錢干開發的人紛紛湧入,而ios只能幹sdk開發的缺點就暴露出來了,一堆新手老手,菜鳥大牛全擠在SDK開發這塊,我覺得不太妙。 反觀Android這邊,雖然入門菜鳥沒有搞ios來錢,但是可持續性很好,從sdk-》框架》驅動》內核這樣幹下去。干著干著發現自己漸漸變成了Linux開發者/嵌入式開發者的人也不少,新人,老手,菜鳥大牛各居其位,層次性很好。
轉載