樹莓派編譯內核
⑴ 樹莓派 編譯 platform選哪個
1、獲取升級所需源碼
1)下載地址:
官方網址:https://github.com/raspberrypi
上面列出了樹莓派所有的開源軟體:
firmware:樹莓派的交叉編譯好的二進制內核、模塊、庫、bootloader
linux:內核源碼
tools:編譯內核和其他源碼所需的工具——交叉編譯器等
我們只需要以上三個文件即可,下面的工程可以了解一下
documentation:樹莓派離線幫助文檔,教你如何使用、部署樹莓派(樹莓派官方使用教程)
userland:arm端用戶空間的一些應用庫的源碼——vc視頻硬浮點、EGL、mmal、openVG等
hats:Hardware Attached on Top,樹莓派 B+型板子的擴展板資料
maynard:一個gtk寫成的桌面環境
scratch:一個簡易、可視化編程環境
noobs:一個樹莓派鏡像管理工具,他可以讓你在一個樹莓派上部署多個鏡像
weston:一個應用程序
target_fs:樹莓派最小文件系統,使用busybox製作
quake3:雷神之錘3有線開發源碼firmwareb
2)下載方法:
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、編譯、提取內核及其模塊
1)獲得內核配置文件
在運行的樹莓派中運行:
$ls /proc/
可看到一個叫config.gz的文件,他是當前的樹莓派配置選項記錄文件,我們將他拷出,放入我們的內核源碼目錄樹下
$cp /proc/config /home/pi
我們這里使用前面交過的samba拷出並拷入內核源碼目錄下,不熟悉的人可參考前面文章
在linux內核源碼下執行:
$zcat config.gz > .config
2)配置、編譯內核
a、修改內核源碼makefile ARCH類型和編譯器路徑
$vi Makefile +195
找到以上類似代碼,改為如圖所示
b、查看、修改配置選項
$make menuconfig
可出現以下界面
如果不做修改,直接選中exit即可(注意使用鍵盤操作)
c、編譯內核鏡像
$make
在arch/arm/boot目錄下可以看到一個叫zImage的文件,就是我們新的內核
但是樹莓派需要另外一種格式的鏡像,需要進行處理一下,執行以下命令
$cd tools/mkimage
$./imagetool-uncompressed.py ../../linux/arch/arm/boot/zImage
即可在當前文件夾下看到一個叫:kernel.img的文件,就是我們需要的新內核了
d、提取moles
上一步其實不但編譯出來了內核的源碼,一些模塊文件也編譯出來了,這里我們提取一下
$cd raspberrypi_src
$mkdir moles
$cd linux
$ make moles_install INSTALL_MOD_PATH=../moles
即可在moles得到我們需要的模塊文件
2、升級RPi的kernel、Firmware、lib
將SD卡拔下插在電腦上(可使用讀卡器)
1)升級內核
將新編好的內核拷入SD卡,改名為:kernel_new.img
打開boot目錄下
找到config.txt文件,加入:kernel=kernel_new.img這一行
2)升級boot
將firmware/boot/目錄下 以下文件拷入SD卡boot目錄:fbootcode.bin fixup.dat fixup_cd.dat start.elf
3)更新vc庫及內核moles
將第3步d步中編譯出來的moles/lib/moles拷入樹莓派文件系統/lib下
⑵ 如何用miniom調試樹莓派內核
sudo apt-get install minicom
ls /dev/tty*
通常串口設備名為/dev/ttyUSB0
sudo minicom -s
選擇Serial port setup按a設置為/dev/ttyUSB0後回車
最後選擇Save setup as dfl保存並Exit及回車
傳輸文件
第二步是傳輸文件。首先得確認linux上安裝了modem協議,如果沒有,請輸入sudo apt-get install lrzsz安裝,不然通過串口用xmodem協議燒寫樹莓派時會提示錯誤。
用mimicom登錄到樹莓派後,按CTTL+A,然後輸入O,可以進入之前的minicom配置界面:
輸入z可以獲得所有關於minicom的幫助:
下面就來傳輸一個文件:
CTRL+A之後按O,選擇第一個Filenames and paths一下傳輸路徑:
保存配置後,再選擇S選項傳輸文件:
接收文件也是一樣的道理,只不過選項是R(r)。
⑶ 樹莓派編譯c文件出現問題
編譯的時候在最後加上 -lwiringpi
⑷ 如何在樹莓派上安裝 QT 編譯器
首先我需要的開發工具Qt Creator 先從終端單獨下載:
sudo apt-get install qt4-dev-tools
之後安裝QT CREATOR 編譯器:
sudo apt-get install qtcreator
之後繼續安裝編譯環境:
sudo apt-get install gcc
sudo apt-get install xterm
sudo apt-get install git-core
sudo apt-get install subversion
該版本基於Qt Creator 2.5 with Qt 4.8.1 32 bit
存在問題:沒有工具鏈。
我們只能編譯遠程嵌入式設備,這不是這里的情況,因為我們是PI,而不是遠程訪問它。
我添加了一個gcc工具鏈
工具/選項>構建和運行>標簽工具鏈>按鈕添加 選擇GCC
然後設置編譯器路徑:/usr/bin/arm - linux - gnueabihf - gcc - 4.6
調試器:/usr/bin/gdb
Mkspec:默認
Qt Creator似乎發現我們將部署在一個遙遠的目標。
為了解決這個問題:
去幫助>菜單插件
取消設備支持遠程linux >
重啟Qt的創造者
去工具>選項選項卡> >構建和運行> Qt版本添加「/ usr / bin / qmake-qt4」
然後,它將顯示為一個桌面項目在項目向導,而不是嵌入。
⑸ 樹莓派4B刷入OpenHarmony 3.0,目前可顯示與觸控
11 月 24 日消息,鴻蒙技術社區昨天發文,表示最近有人在樹莓派 4B 上面成功裝入並且運行 OpenHarmony 3.0 (下面簡稱 OHOS 3.0)操作系統。
根據介紹,本次刷機使用了樹莓派 linux rpi-5.10.y 內核,在此基礎上編譯 OHOS 3.0 系統,然後補齊文件與功能。整體來說算是比較簡單粗暴的,感興趣的話可以參考這篇內容。
不過目前的系統並不完整,只能實現顯示與觸控兩個比較基礎的功能。
本次刷機使用的樹莓派 4B 採用了一顆 28nm 製程的博通 BCM2711 處理器,擁有四個 1.5GHz A72 CPU 核心,GPU 頻率為 500MHz。
可以選配最高 4GB LPDDR4 內存,並且提供了千兆網卡、USB 3.0 和 microHDMI 介面,支持藍牙 5.0。
最後介紹一下,OpenHarmony 是華為將鴻蒙系統的基礎能力捐獻給開放原子開源基金會之後,由後者整合其他參與者貢獻的代碼形成的開源項目。
目前它已經向大量三方廠商開放,例如前幾天好叭 科技 就基於 OpenHarmony 推出了用於智能手錶的好叭 OS 系統。
⑹ 如何為樹莓派2燒寫一個linux內核
製作linux liveCD或安裝u盤嗎?使用uui程序將鏡像寫入u盤就行。
⑺ 如何為樹莓派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分區下面。
⑻ 樹莓派 編譯驅動 需要編譯內核嗎
如果不是交叉編譯的的話,需要下載和系統版本相同的Linux內核源代碼;如果是交叉編譯的話,還需要安裝交叉編譯工具;詳見http://blog.csdn.net/hcx25909/article/details/16860055
⑼ 在鴻蒙(OHOS3.0)編譯框架中添加樹莓派4B
之前在樹莓派4b上點亮了OHOS3.0,不過內核是用tftp拉取的,根文件系統掛在了NFS上,拔了網線就無法啟動。當然這么操作只是為了方便調試,而最終需要的是一個可以燒錄到TF卡上的img鏡像文件。這就需要將所有調試好的內容添加到OHOS3.0的編譯框架,本以為是很簡單的事情,好傢伙,整了這么久,感覺添加編譯框架比移植本身更復雜。於是我整理了添加樹莓派單板到編譯框架的內容,希望對各位有所幫助,為大家避坑。
主要參考 hisilicon build組件倉,添加一個procts編譯組件,這個組件是在產品配置文件中指定的。比如
proctdefinecommonproctsRPI4B.json
其他部分參考Hi3516,但是其中2條,指定單板組件路徑,並添加組件。如果刪除這兩條,將不能編譯內核,只生成OHOS的文件系統。
接下來在device目錄下,新建一個raspberrypi編譯組件文件夾,並添加 ohos.build 文件。和前面產品配置文件中的設置對應起來了。
deviceraspberrypibuildohos.build
新建 deviceraspberrypibuildBUILD.gn 當然每個廠家不可能只有1個板子,如果有其他單板就在這里指定,比如樹莓派2B、3B等
既然前面指定了rpi4b的編譯配置組件,那麼就在 deviceraspberrypi 新建一個 rpi4b 的目錄,可以參考 hi3516dv300 build組件
deviceraspberrypirpi4bBUILD.gn
至此一個rpi4b build組件就添加到OHOS3.0的編譯框架了,之後相關內容添加到這個文件夾下就可以了。
接下來分析下目前移植了樹莓派4B的哪些內容,如何將這些內容編譯進OHOS3.0。
關於補丁可以參考 Patch組件,可以得知內核編譯由kernel.mk來執行
kernellinuxbuildkernel.mk
所以補丁文件需要放到正確的路徑下,以正確的名字命名就可以patch到內核。
hdf.patch補丁文件,現在還沒有移植HDF相關內容,所以可以先使用Hi3516的
rpi4b.patch補丁文件,使用樹莓派的官方鏡像,https://github.com/raspberrypi/linux
kernellinuxconfiglinux-5.10archarmconfigsrpi4b_standard_defconfig
內核配置文件目前已知的需要開啟下面內容,但是肯定不止這些,以後會繼續更新
Pi4的GPU是VideoCore VI支持OpenGL ES 3.2,而Pi3的GPU是VideoCore IV支持OpenGL ES 2.0。VideoCore IV 驅動程序是 VC4,VideoCore VI 驅動程序的 V3D。內核已經提供驅動,參考rpi4b_standard_defconfig將驅動直接編入到內核。
同時需要在config.txt中開啟設置
OHOS中修改weston的配置文件,指定顯示驅動
systemetcweston.ini
具體思路就是先查找設備號,根據設備號找到驅動程序。
前面內核配置的時候rpi4b_standard_defconfig中已經將觸摸驅動編入內核,所以後面不需要在init載入模塊了,修改下eudev的配置文件即可。
third_partyeudevrules.d ouchscreen.rules
正常情況下內核是由uboot進行引導的,而且OHOS默認生成uImage。但是樹莓派自帶BootLoader,雖然可以先用樹莓派自帶的BootLoader啟動uboot,再用uboot載入uImage,但是這樣會比較麻煩,而且會增加啟動時間。不過目前 zImage是寫死在kernel.mk中的,沒辦法改下編譯腳本把。
kernellinuxbuildkernel.mk 將 uImage 改為 zImage moles dtbs
kernellinuxbuildbuild_kernel.sh
kernellinuxbuildBUILD.gn
kernellinuxbuildkernel_mole_build.sh
這里內核編譯會依賴proct_path="vendor/$proct_company/$proct_name"下的hdf.hcs文件,得先新建一個應付下,不然會報下面這個錯誤。
ninja: error: '../../vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs', needed by 'gen/drivers/adapter/uhdf2/hcs/hdf_default.hcb', missing and no known rule to make it
新建:vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs
對於鏡像燒錄,Hi3516會將uImage、system.img、vendor.img等鏡像燒寫到emmc,但是樹莓派使用TF卡啟動,所以需要對TF卡進行分區,然後復制對應的內容到各個分區。首先製作樹莓派boot目錄,這個用來目錄存放樹莓派設備樹、config.txt、cmdline.txt、內核鏡像等信息。寫一個簡單的mkboot.py腳本來實現這個功能,位置在碼倉.py將會生成boot.img。
為了方便燒錄,需要將boot.img、system.img、updater.img、vendor.img、userdata.img合並成一個rpi4b.img。還是寫一個簡單的腳本來處理這個步驟.py。
不過有個問題,主分區只支持4個,所以updater.img暫時先不合並了,這個問題等以後再來處理。
最後將會得到一個rpi4b.img的鏡像文件,將這個文件燒錄到SD卡就可以了。
Linux:可以使用dd命令
windows:使用Win32 Disk Imager工具燒錄即可。
到這里總算是跑通了一個完整的添加新單板的流程,只不過目前只適配了顯示和觸摸。接下來打算嘗試HDF或者distributed部分。