導航:首頁 > 源碼編譯 > x86搭建樹莓派編譯平台

x86搭建樹莓派編譯平台

發布時間:2023-11-30 00:03:59

㈠ 一 . 樹莓派A20 基本環境搭建 1

我的實驗環境:

1.交叉編譯工具鏈:gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux(4.8.2).tar.xz
2.SDK文件:MarsBoard-A20-Linux-SDK-V1.1.tar.bz2

在安裝gcc-arm-linux-gnueabi的時候,會自動安裝上gcc-4.6-arm-linux-gnueabi,如下圖所示:

第二個文件的安裝很重要,盡管後面提示的編譯錯誤,缺少的是arm-linux-...,但是安裝這個文件還是挺好用的。

根據前面安裝的一些安裝包,其實本節的交叉編譯工具鏈可以不用操作。因為已經包含了本節所做的了。

我得先將vim改一下,否則按住上下左右,會出現A,B,C,D。

再/etc/profile最後一行添加內容:

然後:

這里做一些簡要的說明,在網址: 鏈接 上有一些說明,從說明中,我們可以看到我們用的sdk的架構。

pack文件夾

選擇2,server版本。

之後:

能找到的livesuit_marsboard_a20_debian.img就是生成的鏡像文件。如果要修改名字,可以:

這裡面就包含了image.cfg,找到裡面的一項:

修改為其他的名字即可。

選擇2,server版本。

1.若出現如下報錯:

可以:

如果出現:

但是其實這些文件都是有的,可以不妨:

再次編譯,則問題如下:

仔細找編譯的shell輸出文件,發現是rootfs/下的gz文件找不到,這是因為我做前面的操作的時候,希望生成自己的rootfs_my.tar.gz文件。現在我重新將該文件放到rootfs/下,再次編譯,我將最後的結果放在下面:

這樣表示成功了。

下面列入生成的鏡像:

livesuit_superpi3.img即是。

1.我在做上面的操作的時候,夾雜的使用了兩個開發板,一個是marsboard出品的a20開發板,另外一個是風火輪出品的a20樹莓派3卡片電腦,說實在的,看起來風火輪附帶板子資料挺多,但是其真正寫的資料可沒用心做,實在不是一個榜樣,在該開發板上做非核心開發,是可以的,但是做研發,還是需要做考量。

燒寫成功後,列印的內容如下,作為日誌信息,留作以後分析:

㈡ x86 平台編譯的二進制包是否都不能運行在樹莓派中

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下

㈢ 如何將android linux燒到Raspberry Pi及其調試

一.Raspberry Pi入門向導。

可以在以下地址下載Raspberry向導


2.構建android framework

命令如下:

cd <your_android_path>

source build/envsetup.sh

lunch


顯示lunch菜單如下:

You』re building on Linux


Lunch menu… pick a combo:

1. full-eng

2. full_x86-eng

3. simulator

4. full_rpi-eng

5. cyanogen_generic-eng

6. cyanogen_rpi-eng

選擇第6個菜單。

然後進行編譯

make -j8

等待編譯成功,這可能需要幾十分鍾。


編譯成功之後將」system」目錄復制到root目錄下,接下來我們可能會用到。

命令如下:

cd <your_android_path>

cp -r system out/target/proct/rpi/root


ps:編譯時如果jdk版本不對,可將其改成jdk1.6


五.如何在Raspberry Pi上跑android linux內核?


1.准備一張存儲空間2G以上的SD卡及相應讀卡器。


2.下載arch linux鏡像文件

用wget工具下載鏡像文件:

wget http://files.velocix.com/c1410/images/archlinuxarm/archlinux-hf-2012-09-18/archlinux-hf-2012-09-18.zip

解壓:

unzip archlinux-hf-2012-09-18.zip

成功之後,你會在當前目錄下發現一個鏡像文件。


3.燒linux鏡像文件。

sudo dd bs=4M if=archlinux-hf-2012-09-18.img of=/dev/sdb

sudo sync

ps:/dev/sdb是SD卡在主機上的設備文件。不同的電腦可能不同。


4.用android linux內核代替這個內核。

做完上述步驟之後,當你把SD卡插在電腦上,你會發現有兩個分區:一個是引導區,另一個是文件系統區。

用android linux內核代替引導區的kernel.img。

cp -uv <your_android_linux_path>/arch/arm/boot/zImage <your_sdcard_boot_partition>/kernel.img


5.用android linux文件系統代替這個linux文件系統

rm -rf <your_sdcard_file_system_partition>

cp -r <your_android_source_code_path>/out/target/proct/rpi/root/* <your_sdcard_file_system_partition>


6.配置內核命令行cmdline.txt

Edit the <your_sdcard_boot_partition>/cmdling.txt, and replace 「init=/…」 with 「init=/init」


7.做完這些之後就可以在Raspberry Pi上跑這個android linux內核。


六.如何為Android linux做一張可引導的SD卡


1.刪除已有分區,如果沒有就不用刪了。

Command(m for help):p


Disk /dev/sdb: 15.7 GB, 15707668480 bytes

64 heads, 32 sectors/track, 14980 cylinders, total 30668085 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0×00000000


sudo fdisk/dev/sdb


Command(m for help):d

Partition number(1-4):1


Command(m for help):d

Selected partition 2


Command (m for help): p


Disk /dev/sdb: 15.7 GB, 15707668480 bytes

64 heads, 32 sectors/track, 14980 cylinders, total 30679040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0×00000000

Device Boot Start End Blocks Id System


Command(m for help):w

ps:確定刪除之後,卸掉SD卡,然後再裝上。


以bytes問單位記下SD卡的大小。後面的步驟會用到。

然後進入」Expert mode」。


Command(m for help):x


將這個SD卡設置為255個磁面,63個扇區和磁柱數量(不同的SD/mmc卡有著不同的此柱數量)

Expert command (m for help): h

Number of heads (1-256, default 64): 255


Expert command (m for help): s

Number of sectors (1-63, default 32): 63


ps:在下一步開始前,先要計算磁柱數量,計算過程如下:

B:SD卡以bytes為單位的大小(前面已經記住了即:15707668480)

C:磁柱的數量

C=B/255/63/512


例如:我的SD卡大小是16G(15707668480)

C=15707668480/255/63/512=1909.68191721,約等於1909.


Expert command (m for help): c

Number of cylinders (1-1048576, default 14980): 1909

Expert command (m for help): r


2.新建分區

如果你的SD卡已經分區,請按照上述步驟刪除分區。接下來,我們將創建兩個分區,一個是引導區,用來存放內核鏡像等文件;另一個文件系統區存放android linux文件系統。


Command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1):

Using default value 1

First sector (2048-30679039, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-30679039, default 30679039): +128M

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): c

Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): a

Partition number (1-4): 1

Command (m for help): n

Partition type:

p primary (1 primary, 0 extended, 3 free)

e extended

Select (default p): p

Partition number (1-4, default 2):

Using default value 2

First sector (264192-30679039, default 264192):

Using default value 264192

Last sector, +sectors or +size{K,M,G} (264192-30679039, default 30679039):

Using default value 30679039

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x

partitions, please see the fdisk manual page for additional

information.

Syncing disks.


ok,分區成功,現在我們有兩個分區,接下我們對分區進行格式化。


3.格式化分區

對引導區進行格式化:


sudo mkfs.msdos -F 32 /dev/sdb1 -n BOOT

mkfs.msdos 3.0.12 (29 Oct 2011)


對文件系統區進行格式化:

sudo mkfs.ext3 /dev/sdb2 -L ROOTFS

mke2fs 1.42 (29-Nov-2011)

Filesystem label=ROOTFS

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

950976 inodes, 3801856 blocks

190092 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=3896508416

117 block groups

32768 blocks per group, 32768 fragments per group

8128 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done


4.設置引導區

引導區必須包含以下文件,你可以從官方鏡像里獲取(bootable/fat32 partition)也可以從書面步驟中復制過來:

bootcode.bin:第二階段的引導程序,

loader.bin:第三階段的引導程序,

start.elf:GPU二進制固件映像,

kernel.img操作系統的內核鏡像文件,

cmdline.txt:傳遞給內核的參數.


5.設置root文件系統分區

ROOTFS分區包含android文件系統,是從<your_android_framework_path>/out/target/proct/rpi/root復制過來的。

cp -r <your_android_framework_path>/out/target/proct/rpi/root/* /media/ROOTFS/


6.完成上述步驟之後,將其放在Raspberry Pi上跑。


七.如何在Raspberry Pi使用adb?


1.查看網路

當android linux在Raspberry Pi運行時,切換到控制台,執行以下命令:

ifconfig eth0

記下ip地址。

如果不能找到ip,可以輸入以下命令:/system/xbin/dhcp-eth0,來啟動網路連接程序。

ps:如果屏幕沒有顯示控制台,只要按CTRL+ALT+F2即可切換到控制台。如果你想要切換到Android界面,只要按CTRL+ALT+F7即可。


2.遠程連接adb伺服器

在主機上執行以下命令即可與同一區域網的Raspberry Pi相連

adb connect ip

連接成功後,你就可以用adb工具輸出日誌,執行shell命令等。


3.也可以用數據線連接主機,直接在主機上調試。

進入調試的命令為:

screen /dev/ttyUSB0 115200


名詞解釋:

交叉編譯(cross compile):交叉編譯呢,簡單地說,就是在一個平台上生成另一個平台上的可執行代碼。這里需要注意的是所謂 平台,實際上包含兩個概念:體系結構(Architecture)、操作系統(Operating System)。同一個體系結構可以運行不同的操作系統;同樣,同一個操作系統也可以在不同的體系結構上運行。舉例來說,我們常說的x86 Linux平台實際上是Intel x86體系結構和Linux for x86操作系統的統稱;而x86 WinNT平台實際上是Intel x86體系結構和Windows NT for x86操作系統的簡稱。

㈣ 在鴻蒙(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部分。

㈤ 學習樹莓派上編程的時候,需要哪些教程

樹莓派教程(持續更新)網路網盤免費資源在線學習

鏈接: https://pan..com/s/1PuxuAIN8dV37G5E2n33pCA

提取碼: wuuj

樹莓派教程(持續更新) 中谷教育-python視頻教程(完整版)

游戲鏡像 微雪5寸顯示器config 樹莓派詳細資料 視頻教程 鏡像 Voice kit語音工具包鏡像 Etcher-Setup-1.4.4-x86鏡像燒錄工具.

exeaiyprojects-2018-04-13.img.xz 開啟SSH-raspbian-stretch.zip ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz StickyFingers-Kali-Pi-armhf-180923.img.xz recalboxOS-4.0.0-beta5.zip 2018-11-13-raspbian-stretch.zip

㈥ 如何在pc上搭建樹莓派開發環境_樹莓派搭建伺服器可以實現什麼

樹莓派用python來進行編程。樹莓派項目的一個核啟宴扮心思祥咐想是Python編程語言的使用。Python允許樹莓派的擁有者將項目擴展到令人難以置信的規模。Python是一個解釋型的面向對象的、跨平台的編程語言。良好的可靠性、清晰的語法和易用性,使它成為最流行的編程語言之一。Python是一個優雅的、功能強大的語言。

RaspberryPi系統用的是ARM架構的Linux,Linux上的大部分編程語悄灶言如GNUC/C,Java,Python,Perl,PHP都能用,.Net本來就不支持Linux,不過說不定非官方的Mono會支持ARM。

㈦ 樹莓派Linux內核編譯選項如何開啟TPM 2.0

本文更新於2018-08-11

首發於, 文章鏈接 http://www.jianshu.com/p/174844b99716
同步至GitHub: https://github.com/liuqun/linux/wiki

定製樹莓派內核源碼, 通過樹莓派SPI介面載入並訪問TPM2.0設備

所需硬體: X86主機一台, 樹莓派3-B型號開發板一塊, 大容量Micro-SD卡+USB讀卡器一個, 英飛凌TPM2.0評估板一套

所需軟體: 任意版本樹莓派固件(推薦使用 最新版本 ), Ubuntu Linux 虛擬機, gcc-arm-linux-gnueabihf 交叉編譯器, libncurses5(編譯Linux內核配置菜單界面)

取出樹莓派的SD卡, 通過讀卡器插入 Ubuntu 主機或將讀卡器 USB 設備接入 VMware 虛擬機。Ubuntu 默認自動將 U 盤掛載到 /media/$USER/boot 和 /media/$USER/【根文件系統分區】

(以下為覆蓋式安裝, 如果不放心請自行備份SD卡上的原有內核及模塊文件)

選中 5. Interfacing Options --- P4 SPI(啟用/禁用SPI串口)
重啟樹莓派,開機後檢查/dev/tpm0設備文件是否已經載入就緒

閱讀全文

與x86搭建樹莓派編譯平台相關的資料

熱點內容
命令方塊怎麼調鍵盤 瀏覽:841
不把密碼存在伺服器上怎麼辦 瀏覽:398
怎麼讓指令方塊的命令消失 瀏覽:543
用單片機做plc 瀏覽:404
雲伺服器進入子目錄命令 瀏覽:795
伺服器機櫃如何配電 瀏覽:578
怎麼刪除iphone資源庫里的app 瀏覽:940
pdf魚 瀏覽:648
單片機pcf8591什麼作用 瀏覽:805
sql命令學院 瀏覽:283
加密軟體在電腦那個盤 瀏覽:988
android獲取外部存儲 瀏覽:573
怎麼查自己家的伺服器地址 瀏覽:858
編程c語言工作好不好 瀏覽:569
單片機焊接地怎麼連接 瀏覽:694
游戲源碼怎麼抓 瀏覽:216
程序員幫大家引走怪物 瀏覽:16
手機網頁小游戲源碼 瀏覽:513
戰地一伺服器怎麼設置管理員 瀏覽:396
數控車床編程可以上班嗎 瀏覽:460