当前位置: 首页 > news >正文

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

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

在这里插入图片描述


总结

一份简单的配置指南

相关文章:

TinyOS 配置教程

系列文章目录 TinyOS 系列文章【一】:TinyOS 配置教程 TinyOS 系列文章【二】:Tossim 教程 文章目录 系列文章目录前言1. 安装1.1. 实验环境1.2. TinyOS基础工作1.3. TinyOS 的配置1.4. 安装 java1.5. 安装编译器 2. 测试仿真程序总结 前言 本文主要用…...

【工作总结】后端开发人员的坏习惯

文章目录 前言一、不遵循项目规范二、用复杂SQL语句来解决问题三、缺少全局把控思维,只关注某一块业务四、函数复杂冗长,逻辑混乱五、缺乏主动思考,拿来主义六、核心业务逻辑,缺少相关日志和注释七、修改代码,缺少必要测试八、需求没理清&…...

review

review post提交方式下的设置编码,防止中文乱码 request.setCharaterEncoding(“utf-8”); get提交方式,tomcat8开始,编码不需要设置 tomcat8之前,get方式设置比较麻烦: String fname request.getParameter("f…...

【人工智能概论】 用Python实现数据的归一化

【人工智能概论】 用Python实现数据的归一化 文章目录 【人工智能概论】 用Python实现数据的归一化一. 数据归一化处理的意义二. 常见的归一化方法2.1 最大最小标准化(Min-Max Normalization)2.2 z-score 标准化 三. 用sklearn实现归一化 一. 数据归一化…...

【Python】matplotlib设置图片边缘距离和plt.lengend图例放在图像的外侧

一、问题提出 我有这样一串代码: import matplotlib.pyplot as plt plt.figure(figsize (10, 6)) " 此处省略代码 " legend.append("J") plt.legend(legend) plt.xlabel(recall) plt.ylabel(precision) plt.grid() plt.show()我们得到的图像…...

oracle 11g等保加固

有个单机环境需要做个等保加固 1、执行如下sql ?/rdbms/admin/utlpwdmg.sql --alter profile default limit password_verify_function null; Alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90; alter profile DEFAULT limit password_lock_time 30; alter profile DEFAU…...

【设计模式】设计模式之解释器模式

文章目录 前言一、解释器模式二、最佳实践总结 前言 本节给大家讲一下设计模式中的解释器模式,并结合实际业务场景给大家讲解如何使用~ 所有案例代码主要以Java语言为主, 好了, 废话不多说直接开整~ 一、解释器模式 解释器模式(Interpreter Pattern)…...

leetcode551. 学生出勤记录 I

题目描述解题思路执行结果 leetcode551. 学生出勤记录 I . 题目描述 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符: A:Absent&#xff…...

flume拦截器介绍

Flume是一个开源的、分布式的、可靠的、高效的海量数据采集、聚合和传输系统。其中,拦截器(Interceptor)是Flume中的一种组件,可以在数据(Event)流动的各个阶段对数据进行处理、过滤或转换,从而实现更为灵活、高效的数据采集和传输。 1、拦截…...

5.4、服务器编程基本框架和两种高效的事件处理模式

5.4、服务器编程基本框架和两种高效的事件处理模式 1.服务器编程基本框架2.两种高效的事件处理模式①Reactor模式②Proactor模式③模拟Proactor模式 1.服务器编程基本框架 模块功能I/O 处理单元处理客户连接,读写网络数据逻辑单元业务进程或线程网络存储单元数据库、…...

Flink主要有两种基础类型的状态:operator state。

Flink主要有两种基础类型的状态:keyed state 和operator state。 Operator State 对于Operator State(或者non-keyed state),每个operator state绑定到一个并行operator实例上。在Flink中,Kafka Connector是一个使用Operator State的很好的例…...

【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用

😉博主:初映CY的前说(前端领域) ,📒本文核心:用原生js实现省市区联动 【前言】在通用的后台管理项目的开发中,不仅仅是会涉及到对表单数据等的增删改查操作还会涉及到一些关于权限管理的问题。我们将基于一个RBAC的思维…...

Python语言中的注释方法应用

Python语言中的注释方法 在Python编程中,与其他编程语言一样,有良好的注释部分,会让你的程序在后续的改进或优化中,变得便利。同时,给自己培养了良好的编程习惯。 在Python语言中,有两种注释方法。 1.单行…...

Google浏览器翻译无法正常使用解决

1.查找可用服务器地址 按WinR键打开运行→输入cmd回车,打开命令提示符→输入ping google.cn 回车。记录一下下图红框里的ip地址,一会要用到 最近自己ping出来的ip可能不能用了,可以尝试用下面的ip 142.251.163.90 142.250.113.90 142.251.…...

ETCD(三)操作指令

1. put put #将给定的key写入到存储 --ignore-lease[false] #使用当前租约更新key --ignore-value[false] #使用当前值更新key --lease"0" # 要附加到key的租约ID(十六进制) --prev-kv[false] # 返回修改前的上一个键值对2. get get #获取给…...

小白学Pytorch系列--Torch.optim API Base class(1)

小白学Pytorch系列–Torch.optim API Base class(1) torch.optim是一个实现各种优化算法的包。大多数常用的方法都已得到支持,而且接口足够通用,因此将来还可以轻松集成更复杂的方法。 如何使用优化器 使用手torch.optim您必须构造一个优化器对象&…...

flac格式如何转mp3,3招帮你搞定

flac格式如何转mp3,3招帮你搞定的方法来啦。当你的音频是flac格式是不是很头疼,又不知道怎么转mp3 。然后网上搜索出很多方法又不知道从哪个下手,是不是很疑惑?那今天就来看看小编推荐的方法吧,一定让你眼前一亮&#…...

Redis入门到入土(day01)

NoSQL概述 为什么用NoSQL 1、单机MySQL的美好年代 在90年代,一个网站的访问量一般不大,用单个数据库完全可以轻松应付! 在那个时候,更多的都是静态网页,动态交互类型的网站不多。 上述架构下,我们来看看…...

JVM垃圾回收GC 详解(java1.8)

目录 垃圾判断算法(你是不是垃圾?) 引用计数法 可达性算法 对象的引用 强引用 软引用 弱引用 虚引用 对象的自我救赎 垃圾回收算法--分代 标记清除算法 复制算法 标记整理法 垃圾处理器 垃圾判断算法(你是不是垃圾&…...

Mybatis-Plus -03 Mybatis-Plus实现CRUD

Mybatis-Plus实现CRUD 1 Insert增加2 ID生成策略3 Delete删除4 逻辑删除5 Update修改6 Select查询 Mybatis-Plus实现CRUD 通用 CRUD 封装**BaseMapper (opens new window)**接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器参数 …...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

大数据学习(132)-HIve数据分析

​​​​🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言&#x1f4…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...

安卓基础(aar)

重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...