Zephyr物聯網操作系統之運行環境搭建(一)【轉】


轉自:https://blog.csdn.net/qq_40088639/article/details/106374413

對於zephyr這個實時嵌入式操作系統,可以先在x86架構上搭建運行環境,學習相關知識。之后,根據實際需求,再將操作系統移植到不同架構的MCU上。

一、環境搭建

准備工作:安裝ubuntu操作系統

虛擬機軟件版本:VMware Workstation 12

 

Ubuntu版本:ubuntu 16.04 LTS 桌面版 64位(ubuntu-16.04.6-desktop-amd64.iso)

 

zephyr版本:v1.14.0

如何在虛擬機軟件中安裝64位的ubuntu操作系統,這里不再做過多的介紹,請自行安裝,其他文章中也有介紹,可供參考。

推薦兩個學習Zephyr的連接:

中文資料地址鏈接(僅供參考):

https://zephyr-doc.readthedocs.io/zh_CN/latest/

 

官方英文地址鏈接:

https://docs.zephyrproject.org/1.14.0/

具體環境搭建過程,官方英文文檔都有詳細說明。下面簡單介紹如何根據官網說明,一步步地在Linux中搭建運行環境,主要是記錄一些自己踩過的坑,供大家參考。

1. 對Linux系統的要求

官方文檔中就有明確的說明,指定是64位的,如果在32位的操作系統中搭建運行環境,那么就會產生一系列的問題(庫文件缺少、找不到依賴、編譯不通過......)。

2. CMake版本

一般來說,ubuntu自帶的CMake版本都太低,而Zephyr編譯環境最低要求是版本3.13.1,官方文檔給出了更新CMake的幾種方式。如下圖

如果選擇第一種方式進行CMake版本的更新,直接輸入命令即可,命令:pip install --user cmake,但是可能會由於網絡問題而導致失敗。推薦使用第二種方式,在windows下先下載(速度會快很多)文件cmake-3.14.7-Linux-x86_64.sh,再拷貝到ubuntu中,執行對應的命令。

文件cmake-3.14.7-Linux-x86_64.sh下載,百度網盤鏈接:

鏈接:https://pan.baidu.com/s/1jzlPLIFoZpy1Pg-MluaNxA

 
提取碼:d1hu

3. 安裝SDK

官方說明如下圖

在ubuntu上使用wget命令去下載SDK安裝包,下載速度可能會比較慢,可以在windows上下載成功之后,再拷貝到ubuntu中進行SDK的安裝。

SDK安裝包百度網盤下載鏈接:

鏈接:https://pan.baidu.com/s/1yaTP2XP5eyAxXGsQuej9hA 

 

提取碼:pj4c

在根目錄下新建目錄zephyrsdk,把下載好的SDK安裝文件放入該目錄中。

更新CMake版本和下載SDK,都屬於准備工作。接下來,就安裝SDK。

(1) 執行安裝命令

wgp@wgp:/zephyrsdk$ sudo sh zephyr-sdk-0.10.0-setup.run

 

注意:

A. 要使用sudo進行安裝,否則提示“權限不夠……”。

B. 安裝時,使用默認的安裝目錄即可,默認安裝在:/opt/zephyr-sdk/  。安裝結束,可以看到/opt/zephyr-sdk目錄下生成了很多文件,說明SDK安裝成功。

(2)設置系統環境變量,如下

export ZEPHYR_GCC_VARIANT= zephyr

export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk

4. 跳到Getting Started Guide 文檔

安裝完SDK,接着跳轉到Getting Started Guide 文檔,如下圖。

從這里開始繼續閱讀

按照官方文檔的說明,接下來就需要安裝west工具。

5. 安裝west工具並克隆遠程代碼倉庫

執行命令:pip install --user west

之后使用west下載Zephyr源碼倉庫,命令如下。

west init zephyrproject //先下載到源碼

cd zephyrproject

west update //然后更新源碼

官方文檔說明,如下圖

需要注意的是要在用戶目錄下執行命令:west init zephyrproject。因為在安裝west的時候,加了參數--user。下載到源碼倉庫。

源碼倉庫下載過程中的打印:

wgp@wgp:~$ west init zephyrproject
=== Initializing in /home/wgp/zephyrproject
--- Cloning manifest repository from https://github.com/zephyrproject-rtos/zephyr, rev. master
初始化空的 Git 倉庫於 /home/wgp/zephyrproject/.west/manifest-tmp/.git/
remote: Enumerating objects: 380995, done.
接收對象中:  10% (41047/380995), 63.69 MiB | 33.00 KiB/s    


接收對象中:  18% (71765/380995), 109.82 MiB | 60.00 KiB/s

....................................................................................................................................................................................

成功下到源碼倉庫,如下圖。

更新源碼倉庫,執行命令:west init

更新完整個源碼倉庫,可以發現,里面包含有截至目前官方更新的所有zephyr源碼版本。可以使用git命令查看所有的本地代碼版本庫,命令:git branch -a 

創建一個本地分支,假設拉取的是版本V1.14.0的,在源碼目錄下,執行命令:

// 取遠程分支並創建一個本地分支

//命令格式:git checkout –b 本地分支名 origin/遠程分支名

wgp@wgp:~/zephyrproject/zephyr$ git checkout -b  v1.14.0  remotes/origin/v1.14-branch

查看剛創建好的本地倉庫,命令:git branch

這樣就成功地取到了版本1.14.0的源代碼。

6 . 安裝python依賴包

Zephyr源碼里面有個文件requirements.txt,目錄:/zephyr/scripts/requirements.txt

官網描述如下

所以,在zephyr源碼的跟目錄下,執行命令即可安裝依賴包:

wgp@wgp:~/zephyrproject$ pip3 install --user -r zephyr/scripts/requirements.txt

如下圖

7. 設置工具鏈

官方說明:

目前是在X86平台上搭建並運行程序,所以,ZEPHYR_TOOLCHAIN_VARIANT設置為:host

ZEPHYR_TOOLCHAIN_VARIANT=host

后續如果要移植到微處理器上,就需要指定自己的工具鏈。第一部分,運行環境搭建結束,接下來簡單介紹如何構建和運行自己的應用程序。

 

二、構建和運行自己的應用程序

以編譯和運行hello_world這個demo為例。

1. 進入源碼的根目錄

2. 設置環境變量

export ZEPHYR_TOOLCHAIN_VARIANT=host

export ZEPHYR_GCC_VARIANT=zephyr

export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk

方式1: 設置系統環境變量僅生效於當前控制台

 

方式2:環境變量永久生效

避免每次打開終端都設置一遍環境變量,可以把這些環境變量的設置放入/ect/profile中。重啟虛擬機,使環境變量永久生效,這樣就不用每次打開終端都要執行 source /etc/profile。

 

重啟ubuntu之后,可以再將這幾個環境變量的值打印出來,進行核對。

 

如果要釋放環境變量,則使用unset命令,可以在unset之后,再打印環境變量的值,什么都沒有。

注意:設置環境變量的時候,等號右邊不能有空格!否則,環境變量設置失效!這雖然是基礎知識,但是難免也有大意的時候。

例子

A.在/ect/profile中設置

export ZEPHYR_GCC_VARIANT= zephyr

 

B.然后:source /etc/profile

 

C.最后在終端打印環境變量的值:echo $ ZEPHYR_GCC_VARIANT

打印出來的結果是空格!並不是正確的環境變量值zephyr

3. 配置Zephyr構建環境

每次打開新的終端,編譯新的應用程序的時候,都要source一下zephyr-env.sh

命令:source zephyr-env.sh

4. 在Demo里面新建一個build

hello_world這個Demo在源碼根目錄下的samples目錄中,在Demo目錄下新建一個build目錄,並進入build目錄,如下圖。

5 . 執行命令

首先指定目標板型並編譯,這里是運行在X86平台上,所以指定的板型為:qemu_x86

命令:

wgp@wgp:~/zephyrproject/zephyr/samples/hello_world/build$ cmake -GNinja -DBOARD=qemu_x86 ..

然后再執行命令

wgp@wgp:~/zephyrproject/zephyr/samples/hello_world/build$ ninja

最后運行目標程序

wgp@wgp:~/zephyrproject/zephyr/samples/hello_world/build$ ninja run

過程記錄,如下圖:

運行結果如下圖:

打印出了hello world!  qemu_x86

 

三、源碼目錄結構簡介

Arch目錄:存放特定處理器架構的芯片平台源碼。

Boards目錄:存放與開發板相關的源代碼和配置文件。

Doc目錄:存放相關的文件和工具。

Driver目錄:存放設備驅動源碼。

Include目錄:存放除了在lib文件夾定義的其他公共APIs包含的文件。

Kernel目錄:存放zephyr微內核源碼。

Lib目錄:存放庫源碼,包括最小的C標准庫。

Misc目錄:存放各種源碼文件

Net目錄:存放網絡通信源碼,包括藍牙協議棧和網絡通信協議棧。

Samples目錄:存放zephyr內核、藍牙協議棧、網絡通信協議棧示例應用程序。

Tests目錄:存放內核功能的測試代碼和參考基准。

Script目錄:存放編譯和測試應用程序的各種各種程序和其他文件。

Subsys目錄:子系統目錄。

 

四、應用程序開發

一個簡單的App目錄結構如下:

wgp@wgp:~/zephyrproject/zephyr/samples/hello_world$ tree

.

├── CMakeLists.txt

├── prj.conf

├── README.rst

├── sample.yaml

└── src

    └── main.c

1 directory, 5 files

wgp@wgp:~/zephyrproject/zephyr/samples/hello_world$

說明:

    1. CMakeLists.txt:文件列表。該文件告訴zephyr系統,在哪里可以找到其他的支持和依賴文件,並將App目錄和zephyr的CMake開發系統鏈接起來。
    2. prj.conf:內核配置文件。一個應用程序通常要提供一個配置文件(prj.conf),它為一個或者多個內核配置選項指定配置參數,這些應用程序設置和開發板的設置合並,產生內核配置文件。
    3. main.c:是應用程序的源代碼文件。一個應用程序通常需要一個或者多個源文件,這些源文件通常位於子目錄src中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM