Zephyr微内核初探
2016-02-22 21:19
417 查看
Linux基金会宣布了微内核项目Zephyr,发布了1.0内核版本。Zephyr微内核将被用于开发针对物联网设备的实时操作系统(RTOS)。该项目得到了英特尔、 NXP半导体、Synopsys和UbiquiOS等公司的支持。
更多信息(https://www.zephyrproject.org/content/zephyr-kernel-v100-release-notes)。
安装必要的工具包
下载SDK0.7.2安装文件
安装SDK
提示默认安装在目录/opt/zephyr-sdk/下
如果打算安装到其它目录,看到上述提示输入完整路径回车即可。
安装信息大致如下:
SDK安装成功。
SDK 0.7.2 组成
支持的处理器架构
IA-32
ARM
ARC
编译调试工具
GCC 5.2.0 cross-compiler for x86 + binutils + gdb, libgcc, newlib
GCC 5.2.0 cross-compiler for ARM + binutils + gdb, libgcc, newlib (multilib)
GCC 5.2.0 cross-compiler for MIPS + binutils + gdb, libgcc, newlib (multilib)
GCC 5.2.1 cross-compiler for IAMCU + binutils + gdb, libgcc, newlib
GCC 4.8.3 cross-compiler for ARC + binutils + gdb, libgcc, newlib (multilib)
主机上一些工具
GCC 5.2.0 host compiler for i686, binutils, glibc 2.22
Python2.7
QEMU emulators version 2.1.3:
qemu-system-arm (zephyr specific patch)
qemu-system-mips
qemu-system-i386
make (GNU Make 4.1)
OpenOCD (Open On-Chip Debugger with additional Quark support)
设置环境变量
新建文件
修改文件
基于x86 架构
MinnowBoard MAX
QEMU 2.1
Quark D2000 Boards
Quark SE Boards
Arduino 101 Board
Galileo and Galileo Gen 2
基于ARM (v7-M and v7E-M)架构
QEMU 2.1 + patch
Arduino Due Board
NXP Freedom Development Platform
遗憾的是码农我目前没有一块真实的板卡,只能尝试使用QEMU虚拟环境仿真一下。尽管如此,对于Zephyr体验之旅已经足够了。
下载Zephyr源码
源码目录
编译一个hello world应用
我选择了一个ARM架构的qemu_cortex_m3板,看名称就知道是可以使用QEMU仿真运行的。
进入源码目录
设置编译环境变量
进入hello world例子编译目录,编译
编译过程打印大致如下
运行hello world程序
略去一些输出,最终运行效果
可以看到,打印出了Hello World!
hello world程序源码
部分代码如下
好了,zephyr之旅结束了。后续有时间更新一些关于zephyr源码分析的文章。
更多信息(https://www.zephyrproject.org/content/zephyr-kernel-v100-release-notes)。
Linux主机开发环境建立
这里使用Ubuntu 14.04 LTS 64 bit发行版,虚拟机软件使用VirtualBox,对于Linux的安装不是本文重点,可参照其它网上的文章。安装必要的工具包
sudo apt-get install git make gcc gcc-multilib g++ libc6-dev-i386 g++-multilib
Zephyr SDK安装
新建目录mkdir /home/panguolin/zephyr
下载SDK0.7.2安装文件
wget https://nexus.zephyrproject.org/content/repositories/releases/ org/zephyrproject/zephyr-sdk/0.7.2-i686/zephyr-sdk-0.7.2-i686-setup.run
安装SDK
chmod +x zephyr-sdk-0.7.2-i686-setup.run sudo ./zephyr-sdk-0.7.2-i686-setup.run
提示默认安装在目录/opt/zephyr-sdk/下
Verifying archive integrity... All good. Uncompressing SDK for Zephyr 100% Enter target directory for SDK (default: /opt/zephyr-sdk/):
如果打算安装到其它目录,看到上述提示输入完整路径回车即可。
安装信息大致如下:
Installing SDK to /opt/zephyr-sdk/ Creating directory /opt/zephyr-sdk/ Success [*] Installing x86 tools... [*] Installing arm tools... [*] Installing arc tools... ... [*] Installing additional host tools... Success installing SDK. SDK is ready to be used.
SDK安装成功。
SDK 0.7.2 组成
支持的处理器架构
IA-32
ARM
ARC
编译调试工具
GCC 5.2.0 cross-compiler for x86 + binutils + gdb, libgcc, newlib
GCC 5.2.0 cross-compiler for ARM + binutils + gdb, libgcc, newlib (multilib)
GCC 5.2.0 cross-compiler for MIPS + binutils + gdb, libgcc, newlib (multilib)
GCC 5.2.1 cross-compiler for IAMCU + binutils + gdb, libgcc, newlib
GCC 4.8.3 cross-compiler for ARC + binutils + gdb, libgcc, newlib (multilib)
主机上一些工具
GCC 5.2.0 host compiler for i686, binutils, glibc 2.22
Python2.7
QEMU emulators version 2.1.3:
qemu-system-arm (zephyr specific patch)
qemu-system-mips
qemu-system-i386
make (GNU Make 4.1)
OpenOCD (Open On-Chip Debugger with additional Quark support)
设置环境变量
新建文件
~/.zephyrrc增加如下内容保存
export ZEPHYR_GCC_VARIANT=zephyr export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
修改文件
~/.bashrc,在末尾添加一行
source ~/.zephyrrc。这样在每次启动linux shell的时候可自动设置环境变量了。
Zephyr应用程序编译和运行
Zephyr已经可以在很多板子上运行了,支持的主板包括:基于x86 架构
MinnowBoard MAX
QEMU 2.1
Quark D2000 Boards
Quark SE Boards
Arduino 101 Board
Galileo and Galileo Gen 2
基于ARM (v7-M and v7E-M)架构
QEMU 2.1 + patch
Arduino Due Board
NXP Freedom Development Platform
遗憾的是码农我目前没有一块真实的板卡,只能尝试使用QEMU虚拟环境仿真一下。尽管如此,对于Zephyr体验之旅已经足够了。
下载Zephyr源码
cd /home/panguolin/zephyr git clone https://gerrit.zephyrproject.org/r/zephyr zephyr-project
源码目录
tree -dL 1 . ├── arch 架构相关代码 ├── boards 板级代码 ├── doc 一些文档 ├── drivers 设备驱动 ├── include 开放接口的头文件 ├── kernel Microkernel代码, 以及架构无关的nanokernel代码 ├── lib 一些库,包括以精简的标准C库 ├── misc 杂七杂八 ├── net 网络相关。蓝牙栈和网络协议栈 ├── samples 例子 └── scripts 编译、测试有关脚本文件
编译一个hello world应用
我选择了一个ARM架构的qemu_cortex_m3板,看名称就知道是可以使用QEMU仿真运行的。
进入源码目录
cd /home/panguolin/zephyr/zephyr-project
设置编译环境变量
source zephyr-env.sh
进入hello world例子编译目录,编译
cd samples/microkernel/apps/hello_world make BOARD=qemu_cortex_m3 ARCH=arm
编译过程打印大致如下
Using /home/panguolin/zephyr/zephyr-project/boards/qemu_cortex_m3/qemu_cortex_m3_defconfig as base Merging /home/panguolin/zephyr/zephyr-project/kernel/configs/micro.config Merging prj.conf configuration written to .config ...省略一下打印... CC samples/microkernel/apps/hello_world/src/main.o LD samples/microkernel/apps/hello_world/src/built-in.o LINK zephyr.lnk BIN zephyr.bin make[2]: Leaving directory /home/panguolin/zephyr/zephyr- project/samples/microkernel/apps/hello_world/outdir make[1]: Leaving directory /home/panguolin/zephyr/zephyr-project
运行hello world程序
make qemu
略去一些输出,最终运行效果
To exit from QEMU enter: 'CTRL+a, x' [QEMU] CPU: cortex-m3 Hello World!
可以看到,打印出了Hello World!
hello world程序源码
cat src/main.c
部分代码如下
... void main(void) { PRINT("Hello World!\n"); }
好了,zephyr之旅结束了。后续有时间更新一些关于zephyr源码分析的文章。
参考文献
https://www.zephyrproject.org相关文章推荐
- STM32 IO口双向问题
- 下一代互联网与技术平台的选型分析
- 物联网被纳入十二五规划
- ARM公布“物联网”嵌入式mbed OS系统软件平台
- 物联网“十二五”规划或9月出台
- 物联网的兴起与二维码的前景
- 难以长久的“物联网”
- 物联网时代
- 【视频】趣谈物联网及物联网感知端的开发
- 在国内市场《智能家居》的可行性发展
- zigbee网蜂cc2530组播实验,基于SampleApp例程
- 利益第一,隐私第二
- 大数据和物联网时代的隐私伪命题
- 2015年的物联网与智慧产业:忍不住的预测
- 工业互联网不是什么?
- 工业4.0:中国需要补课么?
- 当人们谈论物理信息系统(CPS)的时候,他们到底在说什么?
- stm32学习笔记---入门环境搭建及开发板的选用
- CY5003 物联网士兵电子伤情 管理系统
- "物联网"智能家居设备有可能侵犯你最私密的家庭空间