TinyOS 配置教程

系列文章目录

TinyOS 系列文章【一】:TinyOS 配置教程
TinyOS 系列文章【二】:Tossim 教程


文章目录

  • 系列文章目录
  • 前言
  • 1. 安装
    • 1.1. 实验环境
    • 1.2. TinyOS基础工作
    • 1.3. TinyOS 的配置
    • 1.4. 安装 java
    • 1.5. 安装编译器
  • 2. 测试仿真程序
  • 总结


前言

本文主要用于记录在 WSN 课程中,配置大作业所需使用的 TinyOS 仿真环境


1. 安装

1.1. 实验环境

本实验以如下版本为例,其他系统版本可能会出现未知的问题

  • ubuntu-14.04.6
  • VMware Fusion

有关虚拟机的安装,可以参考我的另一篇 blog:Blitz 配置教程

1.2. TinyOS基础工作

  1. 在 ubuntu 的 package list file 添加源
sudo gedit /etc/apt/sources.list

这个命令使用的是 gedit 编辑器,当然你也可以使用 vim 等

需要注意的是,你需要先使用 su root 进入 root 后, 再使用 sudo 以运行如上指令,否则会报如下错误:

(gedit:2640): dconf-WARNING **: failed to commit changes to dconf: 连接已关闭

** (gedit:2640): CRITICAL **: log.vala:104: Unable to connect to Zeitgeist: 连接已关闭

(gedit:2640): dconf-WARNING **: failed to commit changes to dconf: 连接已关闭

(gedit:2640): dconf-WARNING **: failed to commit changes to dconf: 连接已关闭
Error creating proxy: 连接已关闭 (g-io-error-quark, 18)
Error creating proxy: 连接已关闭 (g-io-error-quark, 18)
Error creating proxy: 连接已关闭 (g-io-error-quark, 18)
Error creating proxy: 连接已关闭 (g-io-error-quark, 18)

(gedit:2640): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(gedit:2640): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(gedit:2640): GLib-GIO-CRITICAL **: g_dbus_connection_get_unique_name: assertion 'G_IS_DBUS_CONNECTION (connection)' failed

(gedit:2640): dconf-WARNING **: failed to commit changes to dconf: 连接已关闭

(gedit:2640): dconf-WARNING **: failed to commit changes to dconf: 连接已关闭

(gedit:2640): dconf-WARNING **: failed to commit changes to dconf: 连接已关闭

** (gedit:2640): CRITICAL **: Unable to connect to Zeitgeist's DataSourceRegistry: 连接已关闭
  1. 将以下代码添加到 sources.list 里面,保存后退出
# TinyOS Repository
deb http://tinyos.stanford.edu/tinyos/dists/ubuntu lucid main

在添加如上代码的时候,终端会有如下错误提示(但是似乎不影响后续下载,暂时跳过):

(gedit:3437): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
  1. 再执行以下命令,更新资源
sudo apt-get update

终端部分输出如下所示:

命中 http://security.ubuntu.com trusty-security/main Translation-en            
命中 http://security.ubuntu.com trusty-security/multiverse Translation-en      
获取:3 http://tinyos.stanford.edu lucid/main i386 Packages [5,310 B]          
命中 http://security.ubuntu.com trusty-security/restricted Translation-en      
命中 http://security.ubuntu.com trusty-security/universe Translation-en        
忽略 http://tinyos.stanford.edu lucid/main Translation-zh_CN                   
忽略 http://tinyos.stanford.edu lucid/main Translation-zh                      
忽略 http://tinyos.stanford.edu lucid/main Translation-en                      
忽略 http://extras.ubuntu.com trusty/main Translation-zh_CN                    
忽略 http://extras.ubuntu.com trusty/main Translation-zh                       
忽略 http://extras.ubuntu.com trusty/main Translation-en                       
下载 12.3 kB,耗时 11(1,034 B/s)                                            
正在读取软件包列表... 完成
  1. update 成功后,执行安装 TinyOS 命令:
sudo apt-get install tinyos-2.1.2

可能下载过程会有些缓慢,请耐心等待。安装成功后,终端部分输出如下所示:

update-alternatives: using /usr/lib/jvm/java-6-openjdk-amd64/bin/schemagen to provide /usr/bin/schemagen (schemagen) in 自动模式
update-alternatives: using /usr/lib/jvm/java-6-openjdk-amd64/bin/serialver to provide /usr/bin/serialver (serialver) in 自动模式
update-alternatives: using /usr/lib/jvm/java-6-openjdk-amd64/bin/wsgen to provide /usr/bin/wsgen (wsgen) in 自动模式
update-alternatives: using /usr/lib/jvm/java-6-openjdk-amd64/bin/wsimport to provide /usr/bin/wsimport (wsimport) in 自动模式
update-alternatives: using /usr/lib/jvm/java-6-openjdk-amd64/bin/xjc to provide /usr/bin/xjc (xjc) in 自动模式
正在设置 openjdk-6-jre-lib (6b41-1.13.13-0ubuntu0.14.04.1) ...
正在设置 libatk-wrapper-java-jni:amd64 (0.30.4-4) ...
正在处理用于 libc-bin (2.19-0ubuntu6.14) 的触发器 ...
正在处理用于 ca-certificates (20170717~14.04.2) 的触发器 ...
Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....
done.
done.

安装成功后,现在 TinyOS 的基础工作已经做好,接下来就是完成配置以及安装相应的编译器即可。

1.3. TinyOS 的配置

  1. 改变 tinyos 文件夹的所有权,才能完成后面的配置,分别输入如下命令:
sudo chown your_user_name:your_user_name -R /opt/tinyos-2.1.2/
sudo chown your_user_name -R /opt/tinyos-2.1.2
  1. 进入到 tinyos-2.1.2 目录下检查是否有 tinyos.sh 文件,如果没有该文件,使用指令 vim tinyos.sh 新建这个文件并添加以下代码:
#! /usr/bin/env bash
# www.ElectronicsPub.com
# TinyOS 2.1.2 Configuration Guide
# Here we setup the environment
# variables needed by the tinyos
# make system
echo "Setting up for TinyOS 2.1.2"
export TOSROOT=
export TOSDIR=
export MAKERULES=
TOSROOT="/opt/tinyos-2.1.2"
TOSDIR="$TOSROOT/tos"
CLASSPATH=$CLASSPATH:$TOSROOT/support/sdk/java
MAKERULES="$TOSROOT/support/make/Makerules"
export TOSROOT
export TOSDIR
export CLASSPATH
export MAKERULES
  1. 接下来配置环境变量,使用以下命令打开 bash.bashrc
sudo gedit ~/.bashrc

在最下面添加以下代码:

# Start TinyOS environment pathing
export TOSROOT=/opt/tinyos-2.1.2
export TOSDIR=$TOSROOT/tos
export CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:.$CLASSPATH
export MAKERULES=$TOSROOT/support/make/Makerules
export PATH=/opt/msp430/bin:$PATH
source /opt/tinyos-2.1.2/tinyos.sh
# End TinyOS pathing
  1. 用以下命令执行更改:
source ~/.bashrc

终端出现如下提示,说明成功:

Setting up for TinyOS 2.1.2

1.4. 安装 java

  1. 在终端依次输入如下命令:
cd $TOSROOT/support/sdk/java
sudo tos-install-jni
make
make install
  1. 如果是第一次安装 tinyos,MSP430 一些工具会通过 tinyos 的安装自动安装,可以通过以下命令检查:
msp430-gcc --version

终端出现如下提示说明安装成功:

msp430-gcc (GCC) 4.5.3
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

需要注意的是:

  • 如果提示:command not found or msp430 compiler is not installed,请参考步骤 1.5
  • 或者提示已经安装了这个编译器但是版本在 4.6.3 以下(博主的情况),你也须按照步骤 5 安装
  • 如果提示现在编译器版本已经是 4.6.3,那么可以尝试使用 tinyos 提供的 demo 进行试验了

1.5. 安装编译器

依次输入以下命令:

sudo apt-get install gcc g++
sudo apt-get install python2.7 python2.7-dev

现在环境就搭建好了,可以进行仿真程序的测试了

2. 测试仿真程序

进入程序所在的目录:

cd /opt/tinyos-2.1.2/apps/Blink

执行如下指令编译:

make micaz sim

终端出现如下输出时,说明配置成功:

在这里插入图片描述


总结

一份简单的配置指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/14016.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kafka集群搭建

1.本次搭建涉及3台centos7主机,防火墙与selinux服务均关闭 2.主机参数如下表所示 nameIPportserviceA10.1.60.1122128、2888、3888、9092kafka、zookeeperB10.1.60.1142128、2888、3888、9092kafka、zookeeperC10.1.60.1152128、2888、3888、9092kafka、zookeeper…

让人悲观的国内ChatGPT的未来

最近关于ChatGPT的火爆已经不是简单的AI圈的事了,它已经席卷了所有的IT、媒体圈子,甚至是不同领域不同行业的人,只要你还对于变化与AI有一定的了解,那我相信你一定能知道ChatGPT是什么了。ChatGPT在某种程度上已经是相当于AGI通用…

图论-匈牙利算法学习

本文讲述的是匈牙利算法,即图论中寻找最大匹配的算法。解决的问题是从二分图中找到尽量多的匹配。 原题-华为-HJ28 素数伴侣 描述 题目描述 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用…

【已解决】SpringBoot 工程 war包服务部署与调用测试

1.开发环境:IDEA,JDK1.8 2.服务打包类型: war包 3.war包部署环境:Linux系统,tomcat服务器,端口号:8081 4.war包部署位置:tomcat-8081/webapps/temp.war 5.服务名为:t…

瑞吉外卖项目——瑞吉外卖

软件开发整体介绍 软件开发流程 需求分析:产品原型、需求规格说明书 设计:产品文档、UI界面设计、概要设计、详细设计、数据库设计 编码:项目代码、单元测试 测试:测试用例、测试报告 上线运维:软件环境安装、配置…

python-day6(补充四:私有属性与函数)

私有属性与函数 私有属性与函数的用途如何定义私有属性与函数如何访问私有属性与函数 私有属性与函数的用途 在面向对象的封装中,私有的属性与函数其根本目的是防止它们在类的外部被使用,python中主要通过命名来进行区分。 把可能使用到的东西封装起来…

从零基础到条码高手:傻瓜式操作,告别excel、AI和PS的烦恼

条形码是一种用于商品识别、库存管理等方面的编码标识系统,它是通过将数字和字符以特定的图案排列组合起来,从而形成一组能被机器扫描和识别的条纹图案。 通常情况下,条形码的生成可以分为如下几个步骤: 1、编号:首先…

数据可视化工具汇总:数字孪生产品的得力助手

数字孪生技术是一项快速发展的新兴技术,已经在许多领域得到广泛应用。数字孪生技术不仅可以提供完整的虚拟模型,还可以模拟物理系统的行为。在数字孪生技术的推动下,越来越多的数字孪生产品开始涌现出来,为不同的领域提供支持和解…

如何通过FAQ页面减轻客户支持压力,提高工作效率?

作为现代企业不可或缺的一部分,客户支持服务是为客户提供解决方案、回答问题和解决技术难题的关键部分。无论是产品管理还是销售环节,客户支持都是重要的一环。然而,有效地处理技术支持问题和客户请求并不容易。卓越的客户支持需要组织结构&a…

excle表格打印相关问题

ps:无论是打印word,还是打印excel, 最后最好都保存成pdf,再打印。 ps:无论是打印word,还是打印excel, 最后最好都保存成pdf,再打印。 ps:无论是打印word,还是打印excel, 最后最好都保存成pdf,再打印。 …

ThreadLocal InheritableThreadLocal TransmittableThreadLocal的使用以及原理

ThreadLocal 每个线程向ThreadLocal设置值&#xff0c;再取值&#xff0c;实现线程之间的隔离 public class ThreadLocalCase1 {private static ThreadLocal<Integer> threadLocal new ThreadLocal<>();public static void main(String[] args) {Random random …

浅析提高倾斜摄影超大场景的三维模型轻量化的数据质量关键技术

浅析提高倾斜摄影超大场景的三维模型轻量化的数据质量关键技术 倾斜摄影超大场景的三维模型轻量化的质量关键技术主要包括&#xff1a; 1、保持数据精度。在进行轻量化处理时&#xff0c;必须确保数据的精度不受损失&#xff0c;否则会影响后续分析和应用方案。因此&#xff0…

【Leetcode -剑指Offer 22.链表中倒数第k个结点 -203.移除链表元素】

Leetcode Leetcode -剑指Offer 22.链表中倒数第k个结点Leetcode -203.移除链表元素 Leetcode -剑指Offer 22.链表中倒数第k个结点 题目&#xff1a;输入一个链表&#xff0c;输出该链表中倒数第k个节点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即链表…

DAY829

学习目标&#xff1a;成就上瘾&#xff0c;学到欲罢不能 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 暴力英语&#xff1a;背单词150个&#xff0c;背《死亡诗社》经典语段&#xff0c;抄写…

【Spring Cloud】Spring Cloud 是什么?

文章目录 前言一、子项目二、常用组件三、把 Spring Cloud 官方、Netflix、Alibaba 三者整理成如下表格&#xff1a; 前言 Spring 以 Bean&#xff08;对象&#xff09; 为中心&#xff0c;提供 IOC、AOP 等功能。Spring Boot 以 Application&#xff08;应用&#xff09; 为中…

LightGBM面试题

1.偏差 vs 方差? 偏差是指由有所采样得到的大小为m的训练数据集&#xff0c;训练出的所有模型的输出的平均值和真实模型输出之间的偏差。 通常是由对学习算法做了错误的假设导致的描述模型输出结果的期望与样本真实结果的差距。分类器表达能力有限导致的系统性错误&#xff0c…

linux学习记录 和文件系统相关的命令

记录过程&#xff0c;会有错误,硬链接与软链接哪里可能没有说清楚 文件,目录操作命令 pwd 获取当前处于哪个目录当中&#xff0c;返回的是绝对路径 [rootlocalhost home]# pwd /homecd cd 相对/绝对路径 切换目录的&#xff0c;change directory .代表当前目录 …代表上一级…

基于opencv-python的深度学习模块案例

目录 图像分类 目标检测 人脸检测 姿态估计 车辆检测 一、图像分类 图像分类是基于深度学习的计算机视觉任务中最简单、也是最基础的一类&#xff0c;它其中用到的CNN特征提取技术也是目标检测、目标分割等视觉任务的基础。 具体到图像分类任务而言&#xff0c;其具体流…

PowerShell install go+caddy+filebrowser+nssm 实现部署文件系统

filebrowser filebrowser 是一个使用go语言编写的软件&#xff0c;功能是可以通过浏览器对服务器上的文件进行管理。可以是修改文件&#xff0c;或者是添加删除文件&#xff0c;甚至可以分享文件&#xff0c;是一个很棒的文件管理器&#xff0c;你甚至可以当成一个网盘来使用。…

光流法Optical Flow,Lucas-Kanade方法,CV中光流的约束分析

光流法Optical Flow&#xff0c;Lucas-Kanade方法&#xff0c;CV中光流的约束分析 Multiple View Geometry1. Optical Flow Estimation2. The Lucas-Kanade Method2.1 Brightness Constancy Assumption2.2 Constant motion in a neighborhood2.3 Compute the velocity vector2.…