本帖最后由 shaniadolphin 于 2017-7-24 17:50 编辑
Zephyr 是 Linux 基金会于 2016 年 2 月发布的物联网操作系统,主要面向资源受限的物联网设备。类似这样的 RTOS 其实不在少数,像比较知名就有 µC/OS, FreeRTOS, Contiki, mbed OS 等等,Zephyr 可在 RAM 大小为 8KB 的 MCU 上流畅运行,支持多种硬件架构,包括 ARM Cortex-M, Intel x86, ARC(DSP 内核), NIOS II(FPGA 软核) 以及 RISC V 等。Zephyr操作系统操作系统的基本目标是为“子 Linux 设备 (sub-Linux device)”提供一种开源的实时操作系统 (RTOS)。Zephyr操作系统很小、具有扩展性并且专为小型物联网设备设计,它的模块化设计使不论采用哪个架构创建物联网方案,都能满足所有设备的需求。它也包含着强大的开发工具,随着时间的推移,令开发人员可以定制它的新功能。
Zephyr 项目的早期支持者包括英特尔公司(包括收购的Altera Corporation 和 Wind River)、恩智浦半导体公司(包括最近并购的 Freescale)、新思科技有限公司和 UbiquiOS Technology Limited。2017年2月,Runtime.io和Nordic半导体加入Zephyr项目,成为其银牌会员。 以下内容用于记录如何将zephyr的开发环境搭建在WIN10当中。 Win10 版本支持将Ubuntu Linux承载在Windows系统中,将当前的Ubuntu Linux 系统作为Win10的子系统运行。 需要进入命令提示符,运行该子系统:
通过该“命令提示符”操作界面键入以下命令开启: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 如图所示:
系统在重启后即可以运行BASH命令:
在打开的BASH命令行界面,输入“y”,确认安装UBUNTU:
经过漫长的等待,UBUNTU安装完成,按照提示,创建UNIX账户,并输入密码,就可以运行UBUNTU下熟悉的命令了,比如 sudo apt-get update 随后便可以安装编译zephyr所需要的工具和软件了: sudo apt-get install git make
sudo apt-get install gcc g++ dfu-util doxygen ncurses-dev sudo apt-get install device-tree-compiler sudo apt-get install python3-yaml 然后需要安装“gcc-arm-embedded”: sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo apt-get update sudo apt-get install gcc-arm-embedded 接下来安装SDK,需要注意的是选择了默认的安装路径/opt/zephyr-sdk,如果有更改需要对应的修改环境变量里的路径:
wget <> chmod +x zephyr-sdk-0.9.1-setup.run sudo ./zephyr-sdk-0.9.1-setup.run 全部安装好,需要添加环境变量, sudo vi /etc/bash.bashrc vi的操作可以百度,通过方向键将光标移到文件的最后,按“i”进入编辑状态,加入以下内容后,按“ESC”后输入“wq”保存并退出: export ZEPHYR_GCC_VARIANT=gccarmemb export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk export GCCARMEMB_TOOLCHAIN_PATH=/usr/arm-none-eabi/
输入"exit"退出当前BASH窗口,再打开一个新的BASH窗口,在窗口中输入“export”来查看是否有添加需要的环境变量:
可以在输出信息中看到新加的环境变量。 到此,安装的工作已经全部完成。 可以获得git服务器上的代码:
git clone <> cd zephyr git checkout tags/v1.8.0 我将代码取在了windows下的e盘,所以执行以下操作: cd /mnt/e/zephyr/ source zephyr-env.sh 然后就可以编译了,我手上有多种目标板,比如:nrf51的开发板,nrf52的开发板,stm32f407的开发板,stm32f103c8的开发板,都试过可以运行对应的程序。 cd /mnt/e/zephyr/samples/basic/blinky make CROSS_COMPILE=arm-none-eabi- BOARD=nrf51_pca10028 make CROSS_COMPILE=arm-none-eabi- BOARD=nrf52_pca10040 make CROSS_COMPILE=arm-none-eabi- BOARD=stm32f4_disco make CROSS_COMPILE=arm-none-eabi- BOARD=stm32_min_dev 其中stm32_min_dev只生成BIN文件,在JFLASH里选择对应的BIN文件也可以运行。
也可以通过以下指令生成HEX文件, arm-none-eabi-objcopy -O ihex outdir/stm32_min_dev/zephyr.elf outdir/stm32_min_dev/zephyr.hex 生成文件的时候会要求指定地址,这里可以直接指定为0x8000000作为起始地址。 以上生成的HEX文件均通过JLASH烧录,打开SEGGER中的JFLASH程序,设置目标的连接参数,通过“Target”下的“Erase chip”和“Program”进行烧录,再点击“Target”下的“Start application”运行。
可以使用slick edit来阅读代码,建立工程,添加文件:
在对应的sample下查看例程的相关功能,比如“basic”下的“blinky”对应的是实现LED的闪烁演示。
可以添加我的公众号一起学习:
|