WSL子系统下配置TinyOS编译烧录环境

Windows Subsystem for Linux 在去年去掉了Beta标识,成为了正式版,社区活跃度、官方更新速度都表现得很好。 虽然仍然有部分内核功能没有实现、IO速度一般的问题外,已经和原生体验相差无几。相对虚拟机来说,也有着强得多的性能表现。 本文在这里给出笔者在1709版本上的WSL Ubuntun 16.04上成功配置TinyOS编译环境的流程。

Update: WSL已经有了2.0版本,微软大法好。

WSL架构示意图

Pipeline

  • 控制面板> 应用和功能 > 启用或关闭 Windows 功能,找到“适用于 Linux 的 Windows 子系统(beta)”,启动之。 设置开启位置截图 在应用市场上搜索Ubuntu,下载对应的应用。 这里写图片描述

  • 安装好后打开该应用,会进行一段时间的初始化,然后设置root用户名和密码。

  • 连接 tinyprod 服务器之前进行必要的认证:

sudo wget -O - http://tinyprod.net/repos/debian/tinyprod.key | sudo apt-key add -
  • 添加源:
    sudo -s
    cd /etc/apt/sources.list.d
    echo "deb http://tinyprod.net/repos/debian wheezy main" >> tinyprod-debian.list
    echo "deb http://tinyprod.net/repos/debian msp430-46 main" >> tinyprod-debian.list
    
cd /etc/apt
echo "deb http://hinrg.cs.jhu.edu/tinyos lucid main" >> sources.list
  • 更新一次(嫌慢可以在sources.list中添加阿里云的数据源:见附1
apt-get update
  • 在这个百度网盘链接中下载绝大部分依赖包 下载链接 解压后,将文件夹中所有文件复制到路径 C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\var\cache\apt\archives

官方文档中其实是不推荐对rootfs下的文件进行手动更改的,以防Linux中文件权限出现错乱。But it works.

  • 安装 nesc、tinyos-tools和 msp430-46(期间自动安装配置OpenJDK):
    apt-get install nesc tinyos-tools msp430-46
    
  • 安装依赖
    sudo apt-get install avr-tinyos avr-tinyos-base avr-gcc-tinyos avr-binutils-tinyos avrdude-tinyos avr-libc-tinyos tinyos-base
    
  • 在用户目录下安装TinyOS-2.1.2
    cd /home/你的用户名
    wget http://github.com/tinyos/tinyos-release/archive/tinyos-2_1_2.tar.gz 
    tar xf tinyos-2_1_2.tar.gz 
    mv tinyos-release-tinyos-2_1_2 tinyos-main
    
  • 配置环境变量
echo "export TOSROOT="$HOME/tinyos-main"" >> ~/.bashrc
echo "export TOSDIR="$TOSROOT/tos"" >> ~/.bashrc
echo "export CLASSPATH=$CLASSPATH:$TOSROOT/support/sdk/java/tinyos.jar:." >> ~/.bashrc
echo "export MAKERULES="$TOSROOT/support/make/Makerules"" >> ~/.bashrc
echo "export PYTHONPATH=$PYTHONPATH:$TOSROOT/support/sdk/python" >> ~/.bashrc
  • 重开一次终端,以加载新的环境变量

  • 安装pip2

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
  • 卸载pyserial3.0+,安装2.7版本
    pip2 install "pyserial>2.0,<2.9"
    
  • 拿访问串口的权限
    sudo gpasswd -a 你的用户名 dialout
    

至此,交叉编译环境已配置完成。但需要注意的是,疑似由于内核功能问题,WSL暂时并不支持motelistdmesg命令(见附2)。端口等信息需要手动进行查看,并在烧节点时手动指定端口。


  • 编译并安装跑马灯程序尝试(2为该设备的USB端口,可以在Windows的设备管理器中查看你的设备真正的端口号)
sudo -s
cd $TOSROOT/apps/Blink 
make telosb install /dev/ttyUSB0 bsl,2

附录

附1:

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

附2: Telosb motelist “No device Found “ Problem

附3: WSL自带的Bash终端可以使用Cmder等完善工具来代替,同时也可以内嵌bash到VS Code中,WSL同样也可以使用Xming等工具来配置图形界面。


参考资料:
纯ubuntu16.04下安装tinyos2.1.2教程-CSDN

《TinyOS实验入门指导》 石柯

Windows Subsystem for Linux

Search

    Table of Contents