樹莓派的交叉編譯環境
㈠ 樹莓派上使用rust:交叉編譯
樹莓派Zero 用的 BCM2835 是 armv6 架構的。 arm-linux-gnueabihf-gcc
需要給 cargo 的配置文件裡面指定 arm-unknown-linux-gnueabihf 的 linker.
默認配置一般在 ~/.cargo/config 這里, 沒有就創一個.
來告訴 cargo 在編譯到 arm-unknown-linux-gnueabihf target 的時候用之前安裝的 gcc 做 linker, 不然會默認用 cc 做 linker, 那這當然是不行的.
用scp傳到樹莓派上就可以了
用 cross ,非常方便,強烈推薦!!!
㈡ 一 . 樹莓派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卡片電腦,說實在的,看起來風火輪附帶板子資料挺多,但是其真正寫的資料可沒用心做,實在不是一個榜樣,在該開發板上做非核心開發,是可以的,但是做研發,還是需要做考量。
燒寫成功後,列印的內容如下,作為日誌信息,留作以後分析:
㈢ 樹莓派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設備文件是否已經載入就緒
㈣ 樹莓派 編譯 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下
㈤ QT交叉編譯環境
將安裝全套的Qt開發環境,可以在PC端進行qt開發。
Ubuntu14.04的Qt版本為5.2.1,16.04的Qt版本為5.5.1,高版本Qt庫可以向下兼容運行低版本工具鏈編譯的程序,因此這里選用5.2.1版本作為編譯工具鏈。
進入Qt工程目錄中,目錄下會有個<工程名>.pro文件,如果目錄中存在<工程名>.pro.user文件,是之前qtcreator生成的配置文件,請先刪除。然後運行:
即可完成編譯,編譯好的程序可以放到樹莓派上直接運行。
另外,工程的配置可以通過修改 工程名.pro文件,例如添加鏈接庫,只需要在文件中添加如下選項:
添加c99支持:QMAKE_CFLAGS += -std=c99
㈥ 怎麼替換raspberry的toolchain
我們有兩個選擇,第一是直接在 Raspberry Pi 上編譯。第二是先在我們的個人電腦用 Raspberry Pi 的 toolchain 編譯完成後,再上傳到 Pi。
這里簡介如何在個人電腦安裝 Raspberry Pi 的 toolchain,以在 ubuntu 上安裝 gcc-linaro-arm-linux-gnueabihf-raspbian 為例。
1. 在個人電腦安裝必要的套件。
sosorry@ubuntu:~$ sudo apt-get install make git-core ncurses-dev
2. 下載最新版的 toolchain。
sosorry@ubuntu:~$ mkdir rpi
sosorry$ubuntu:~$ cd rpi
sosorry@ubuntu:~/rpi$ git clone https://github.com/raspberrypi/tools.git
remote: Reusing existing pack: 17273, done.
remote: Total 17273 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (17273/17273), 311.52 MiB | 343 KiB/s, done.
Resolving deltas: 100% (11698/11698), done.
Checking out files: 100% (15860/15860), done.
3. 安裝 toolchain。安裝方法是將 gcc-linaro-arm-linux-gnueabihf-raspbian 加到環境變數里。
sosorry@ubuntu:~/rpi$ vi ~/.bashrc
export PATH=$PATH:/home/sosorry/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin # add this line at the end of file
4. 測試。先開啟一個新的終端機,輸入 arm 後連續按兩次 tab 鍵,如果跑出來一堆像下面的提示表示安裝成功。
arm-linux-gnueabihf-addr2line arm-linux-gnueabihf-gcc arm-linux-gnueabihf-gfortran arm-linux-gnueabihf-objmp
arm-linux-gnueabihf-ar arm-linux-gnueabihf-gcc-4.7.2 arm-linux-gnueabihf-gprof arm-linux-gnueabihf-pkg-config
arm-linux-gnueabihf-as arm-linux-gnueabihf-gcc-ar arm-linux-gnueabihf-ld arm-linux-gnueabihf-pkg-config-real
arm-linux-gnueabihf-c++ arm-linux-gnueabihf-gcc-nm arm-linux-gnueabihf-ld.bfd arm-linux-gnueabihf-ranlib
arm-linux-gnueabihf-c++filt arm-linux-gnueabihf-gcc-ranlib arm-linux-gnueabihf-ldd arm-linux-gnueabihf-readelf
arm-linux-gnueabihf-cpp arm-linux-gnueabihf-gcov arm-linux-gnueabihf-ld.gold arm-linux-gnueabihf-size
arm-linux-gnueabihf-elfedit arm-linux-gnueabihf-gdb arm-linux-gnueabihf-nm arm-linux-gnueabihf-strings
arm-linux-gnueabihf-g++ arm-linux-gnueabihf-gdbtui arm-linux-gnueabihf-obj arm-linux-gnueabihf-strip
讓我們實際寫一個 hello.c 並編譯它吧。
sosorry@ubuntu:~/rpi$ vi hello.c
#include <stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
用 Raspberry Pi 的 toolchain 編譯 hello.c。這一步驟稱為交叉編譯(cross-compiling)。
sosorry@ubuntu:~/rpi$ arm-linux-gnueabihf-gcc hello.c -o hello-arm
讓我們看看檔案的資訊,可以看到該檔案是 ARM 的格式。
sosorry@ubuntu:~/rpi$ file hello-arm
hello-arm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, not stripped
如果我們在 x86 環境下試著執行會發現無法成功。
sosorry@ubuntu:~/rpi$ ./hello-arm
bash: ./hello-arm: cannot execute binary file
我們把 hello-arm 上傳到我們的 Pi,假設 IP 為 192.168.1.2。
sosorry@ubuntu:~/rpi$ scp hello-arm [email protected]:/home/pi
[email protected]'s password:
hello-arm 100% 5447 5.3KB/s 00:00
在我們的 Pi 上執行,看看結果吧。
pi@raspberrypi:~$ ./hello-arm
hello, world
㈦ 在Ubuntu下安裝樹莓派的交叉編譯環境,有試過嗎
開始做嵌入式開發的朋友都在前期配置交叉編譯工具而煩惱,網上的交叉編譯工具的教程很多,但是要麼很繁瑣要麼就是資料不全。 那麼怎麼樣快速而又簡單地配置交叉編譯工具呢,我們現在就用ubuntu裡面的apt-get工具快速安裝交叉編譯工具。 1...
㈧ 如何安裝樹莓派虛擬機
你的電腦是和樹莓派相同的 ARM 架構
你使用更慢的 qemu 模擬器來安裝
建議(任選一):
嫌安裝慢,我猜你是在編譯安裝:
找預編譯包。不知道你的樹莓派裝的什麼系統,以及你要裝什麼軟體。常見軟體+操作系統組合都可以從軟體源里直接安裝的
找個適合樹莓派的交叉編譯工具鏈在電腦上編譯了給樹莓派用。推薦使用類 UNIX 系統,不推薦使用虛擬機因為它會慢一些
㈨ Step by Step帶你玩轉DuerOS - Python DuerOS SDK[樹莓派平台] (3)
在前一個帖子中,給大家帶來了Python版本的DuerOS SDK。但DuerOS的測試環境卻聲明為Ubuntu,相信很多同學會疑惑:Python不是跨平台的嗎?為什麼要限制測試平台呢?真實的情況呢是這樣的:
首先,Python跨平台這個沒毛病。但問題在於DuerOS運行所需要的依賴環境確實跟平台相關的。比如DuerOS是基於Http2 ALPN的,但樹莓派官方鏡像的OpenSSL並不支持,而對應的Python庫依賴於OpenSSL。為了在樹莓派平台上支持Python的DuerOS SDK,專門交叉編譯了OpenSSL和Python。
所以,這里限制了平台主要是方便同學能將DuerOS快速的Run起來。當然,如果想在MacOS、Windows平台運行DuerOS Python SDK也是沒問題的,只是在依賴配置方面可能要多花些時間。
好了,廢話不多說,直接上干貨:
按照個人版使用說明完成如下3步( http://open.er..com/doc/device-devkit/intro_markdown )
hyper庫用來支持http2.0 client, pyaudio用來支持錄音,tornado用來完成oauth認證。
直接運行使用默認的client_id和client_secret,開發者可以替換成自己在DuerOS開放平台申請的client_id和client_secret,進而實現在控制台自定義的配置屬性。
其中,
需要在開放平台中「安全設置」的「授權回調頁",設置成
