12784|9

42

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

[Zephyr] 入门篇:搭建 Zephyr 开发环境及 hello-world [复制链接]

  本帖最后由 tidyjiang8 于 2017-1-19 11:01 编辑

Zephyr 入门篇:搭建开发环境及 hello-world


Zephyr OS 的开发环境支持三大平台:

  • Windows
  • Linux
  • Mac

建议使用 Linux 平台搭建环境。我们后面的所有文章都以 Ubuntu 作为开发环境。

安装依赖的包


先将系统更新到最新状态:
  1. $ sudo apt-get update
复制代码

再安装依赖的包:
  1. $ sudo apt-get install git make gcc gcc-multilib g++ libc6-dev-i386 \
  2. g++-multilib python3-ply
复制代码

提示:如果你的系统是 32 位的,不需要安装 libc6-dev-i386 这个包。

安装 SDK

访问 Zephyr SDK archive 下载最新版 SDK 。

提示:国外的服务器,有时候慢到吐血,我已经将最新版上传到百度云了。请到这个帖子下载最新年的 SDK: zephyr sdk 百度云下载路径

下载完成后,运行该文件:
  1. $ chmod +x zephyr-sdk-0.8.2-i686-setup.run
  2. $ sudo ./zephyr-sdk-0.8.2-i686-setup.run
复制代码

默认会将 SDK 安装到/opt/zephyr-sdk/目录下。个人推荐使用默认设置。

执行下列命令将环境变量导出到 ~/.zephyr 文件:
  1. $ cat <<EOF > ~/.zephyr
  2. export ZEPHYR_GCC_VARIANT=zephyr
  3. export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
  4. EOF
复制代码

获取 Zephyr 源码

Zephyr 的源码托管在 Linux 基金会的 Girret 服务器上,同时在 GitHub 上也有一个仓库镜像。在国内访问它的 Girret 服务器比较慢,建议直接从 GitHub 上下载:
  1. $ git clone [url=https://github.com/zephyrproject-rtos/zephyr.git]https://github.com/zephyrproject-rtos/zephyr.git[/url]
复制代码

默认会克隆 master 分支的代码。

编译 hello-world

进入 Zephyr 项目目录,先配置环境变量:
  1. $ cd zephyr
  2. $ source zephyr-env.sh
复制代码

进入 hello-world 目录,编译:
  1. $ cd samples/hello_world/
  2. $ make
复制代码

上面的 make 命令会使用应用程序的 Makefile 文件中定义的默认设置编译 hello_wolrd 例程。你可以定义环境变量 BOARD 为所支持的其它板子编译应用,例如:make BOARD=arduino_101。关于 make 命令的具体使用方法可以执行 make help。

编译后会生成镜像文件 zephyr.bin,它位于当前目录下的 samples/qemu_x86/ 下面。

使用 QEMU 仿真

Zephyr 支持在 x86 和 ARM Cortex-M3 两种架构下使用 qemu 进行仿真。

仿真 x86:
  1. $ make BOARD=qemu_x86 qemu
复制代码

仿真 ARM Cortex-M3:
  1. $ make BOARD=qemu_cortex_m3 ARCH=arm qemu
复制代码

仿真结果:

提示:退出仿真界面的方法:先按 CTRL+a,再按 x。

烧写到硬件平台

Zephyr 所支持的开发板请参考这篇帖子:Zephyr 入门篇:开发板选择

编译前,请先选择你所使用的开发板的配置文件。例如,如果我想将 Zephyr 运行在 k64f 开发板上,则按照下面的命令进行编译:
  1. # 假定当前所在目录是 samples/hello_world
  2. $ make BOARD=frdm_k64f
复制代码

其中,参数 frdm_k64f 指的是 boards/arm/frdm_k64f 这个文件夹的名字。

如果你想将 Zephyr 运行在 arduino 101 上面,则对应的文件夹是 boards/x86/arduino_101,因此你的编译命令则是:
  1. $ make BOARD=frdm_k64f
复制代码

编译完成后,就可以将镜像文件 outdir/xxxx/zephyr.bin 烧写到你的板子里运行了!




最新回复

dtc版本太低了,至少要在1.4.6以上的版本   详情 回复 发表于 2019-11-14 14:39

赞赏

1

查看全部赞赏

点赞 关注
 

回复
举报

1158

帖子

2

TA的资源

版主

沙发
 
不错呦!感谢分享!
 
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
 
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

4
 
又涨知识了。谢谢楼主的分享。
不过楼主,目前Zephyr 有没有什么开放的目标平台?

点评

支持这些板子:  详情 回复 发表于 2017-1-19 09:29
 
个人签名这孩子,成熟的象征,理智的典范。
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

5
 
本帖最后由 tidyjiang8 于 2017-1-19 09:36 编辑
lonerzf 发表于 2017-1-19 08:32
又涨知识了。谢谢楼主的分享。
不过楼主,目前Zephyr 有没有什么开放的目标平台?

相信你手里肯定有几块它支持的板子:

  1. work@ubuntu:~/me/zephyr/boards$ tree -L 2
  2. .
  3. ├── arc
  4. │   ├── arduino_101_sss
  5. │   ├── em_starterkit
  6. │   └── quark_se_c1000_ss_devboard
  7. ├── arm
  8. │   ├── 96b_carbon
  9. │   ├── 96b_nitrogen
  10. │   ├── arduino_101_ble
  11. │   ├── arduino_due
  12. │   ├── bbc_microbit
  13. │   ├── cc3200_launchxl
  14. │   ├── frdm_k64f
  15. │   ├── hexiwear_k64
  16. │   ├── nrf51_blenano
  17. │   ├── nrf51_pca10028
  18. │   ├── nrf52840_pca10056
  19. │   ├── nrf52_pca10040
  20. │   ├── nucleo_f103rb
  21. │   ├── nucleo_f401re
  22. │   ├── nucleo_f411re
  23. │   ├── nucleo_l476rg
  24. │   ├── olimexino_stm32
  25. │   ├── qemu_cortex_m3
  26. │   ├── quark_se_c1000_ble
  27. │   ├── stm32f407ve
  28. │   ├── stm32f407zg
  29. │   ├── stm32_mini_a15
  30. │   └── v2m_beetle
  31. ├── boards.rst
  32. ├── Kconfig
  33. ├── Makefile
  34. ├── nios2
  35. │   ├── altera_max10
  36. │   └── qemu_nios2
  37. └── x86
  38.     ├── arduino_101
  39.     ├── galileo
  40.     ├── minnowboard
  41.     ├── qemu_x86
  42.     ├── quark_d2000_crb
  43.     └── quark_se_c1000_devboard

复制代码


每个板子对应的 SoC 如下:

  1. work@ubuntu:~/me/zephyr/boards$ grep "depends" */*/*.board -R
  2. arc/arduino_101_sss/Kconfig.board:    depends on SOC_QUARK_SE_C1000_SS
  3. arc/em_starterkit/Kconfig.board:    depends on (SOC_EM7D || SOC_EM9D || SOC_EM11D)
  4. arc/quark_se_c1000_ss_devboard/Kconfig.board:    depends on SOC_QUARK_SE_C1000_SS
  5. arm/96b_carbon/Kconfig.board:    depends on SOC_STM32F401XE
  6. arm/96b_nitrogen/Kconfig.board:    depends on SOC_NRF52832
  7. arm/arduino_101_ble/Kconfig.board:    depends on SOC_NRF51822_QFAA
  8. arm/arduino_due/Kconfig.board:    depends on SOC_ATMEL_SAM3X8E
  9. arm/bbc_microbit/Kconfig.board:    depends on SOC_NRF51822_QFAA
  10. arm/cc3200_launchxl/Kconfig.board:    depends on SOC_CC3200
  11. arm/frdm_k64f/Kconfig.board:    depends on SOC_SERIES_KINETIS_K6X
  12. arm/hexiwear_k64/Kconfig.board:    depends on SOC_SERIES_KINETIS_K6X
  13. arm/nrf51_blenano/Kconfig.board:    depends on SOC_NRF51822_QFAA
  14. arm/nrf51_pca10028/Kconfig.board:    depends on SOC_NRF51822_QFAC
  15. arm/nrf52840_pca10056/Kconfig.board:    depends on SOC_NRF52840
  16. arm/nrf52_pca10040/Kconfig.board:    depends on SOC_NRF52832
  17. arm/nucleo_f103rb/Kconfig.board:    depends on SOC_STM32F103XB
  18. arm/nucleo_f401re/Kconfig.board:    depends on SOC_STM32F401XE
  19. arm/nucleo_f411re/Kconfig.board:    depends on SOC_STM32F411XE
  20. arm/nucleo_l476rg/Kconfig.board:    depends on SOC_STM32L476XX
  21. arm/olimexino_stm32/Kconfig.board:    depends on SOC_STM32F103XB
  22. arm/qemu_cortex_m3/Kconfig.board:    depends on SOC_TI_LM3S6965
  23. arm/quark_se_c1000_ble/Kconfig.board:    depends on SOC_NRF51822_QFAA
  24. arm/stm32f407ve/Kconfig.board:    depends on SOC_STM32F407XE
  25. arm/stm32f407zg/Kconfig.board:    depends on SOC_STM32F407ZG
  26. arm/stm32_mini_a15/Kconfig.board:    depends on SOC_STM32F103XE
  27. arm/v2m_beetle/Kconfig.board:    depends on SOC_BEETLE_R0
  28. nios2/altera_max10/Kconfig.board:    depends on SOC_NIOS2F_ZEPHYR
  29. nios2/qemu_nios2/Kconfig.board:    depends on SOC_NIOS2_QEMU
  30. x86/arduino_101/Kconfig.board:    depends on SOC_SERIES_QUARK_SE
  31. x86/galileo/Kconfig.board:    depends on SOC_SERIES_QUARK_X1000
  32. x86/minnowboard/Kconfig.board:    depends on SOC_ATOM
  33. x86/qemu_x86/Kconfig.board:    depends on SOC_IA32
  34. x86/quark_d2000_crb/Kconfig.board:    depends on SOC_SERIES_QUARK_D2000
  35. x86/quark_se_c1000_devboard/Kconfig.board:    depends on SOC_SERIES_QUARK_SE
复制代码



点评

谢谢。我试试。  详情 回复 发表于 2017-1-19 21:15
 
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

6
 
tidyjiang8 发表于 2017-1-19 09:29
相信你手里肯定有几块它支持的板子:


每个板子对应的 SoC 如下:

谢谢。我试试。
 
个人签名这孩子,成熟的象征,理智的典范。
 
 

回复

1560

帖子

24

TA的资源

五彩晶圆(初级)

7
 
感谢楼组的教程。hello world例程已经跑通。期待楼更多精彩的教程出现。
 
个人签名这孩子,成熟的象征,理智的典范。
 
 

回复

6107

帖子

4

TA的资源

版主

8
 
谢谢分享👍
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

9
 

楼主    我在进行hello world编译失败了    初次接触Linux和Zephyr,编译错误已贴出    恳请楼主帮忙答疑解惑

QQ图片20191107161322.jpg (299.23 KB, 下载次数: 0)

QQ图片20191107161322.jpg

点评

dtc版本太低了,至少要在1.4.6以上的版本  详情 回复 发表于 2019-11-14 14:39
 
 
 

回复

295

帖子

1

TA的资源

版主

10
 
炎之十月 发表于 2019-11-7 16:16 楼主    我在进行hello world编译失败了    初次接触Linux和Zephyr,编译错误已贴 ...

dtc版本太低了,至少要在1.4.6以上的版本

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表