TinyOS 配置教程

news2024/11/19 15:24:53

文章目录

  • 前言
  • 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

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

在这里插入图片描述


总结

一份简单的配置指南

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python面向对象详解(非常详细)

非常详细的讲解(爆肝1w字)👏🏻👏🏻👏🏻 零基础一样学得会👌🏻 干货满满不看后悔👍👍👍 📝个人主页→数据…

函数重载注意事项

C为什么支持函数重载,C语言不支持函数重载? C代码产生函数符号时, 是函数名参数列表类型组成的!如_Z3sumii C代码产生函数符号时,只由函数名决定 什么是函数重载? 一组函数,其中函数名相同&…

读书笔记-《ON JAVA 中文版》-摘要14[第十四章 流式编程]

文章目录 第十四章 流式编程1. 流支持2. 流创建2.1 流创建2.2 随机数流2.3 int 类型的范围2.4 generate()2.5 iterate()2.6 流的建造者模式2.7 Arrays2.8 正则表达式 3. 中间操作3.1 跟踪和调试3.2 流元素排序3.3 移除元素3.4 应用函数到元素3.5 在 map() 中组合流 4. Optional…

电脑文件恢复怎么做?3个方法快速恢复文件!

案例:电脑文件恢复怎么操作? 【我的电脑已经好久没用了,最近因为需要查看一些相关的文件才用到电脑,但是我打开后发现里面很多重要的文件都不见了,请问电脑文件应该怎么恢复呢?感谢回答!】 电…

AIGC从入门到精通

一键起飞 # 提前安装好python 3.10.9 ​git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui ./webui.sh -f --api --listen --enable-insecure-extension-access 非常详细!6000字详解AI绘画文生图干货、技巧&#xf…

【多线程】线程的状态

1. 等待一个线程 join 有一天张三与小美在家里吃饭,张三早早的把饭吃完了,对小美说,等你把饭吃完了,我就去洗碗了! 此时张三就要等待小美吃完饭才能去洗碗,就好比线程 A 要等待线程 B 执行完,线…

Ansys Lumerical | 光子集成电路之PN 耗尽型移相器仿真工作流

01 说明 本文旨在介绍Ansys Lumerical针对有源光子集成电路中PN耗尽型移相器的仿真分析方法。通过FDE和CHARGE求解器模拟并计算移相器的性能指标(如电容、有效折射率扰动和损耗等),并创建用于INTERCONNECT的紧凑模型,然后将其表征…

vue_03

文章目录 导航菜单功能的实现在Admin.vue中添加下列代码布局选择点击跳转事件 vuex的安装及配置安装配置新建store和index.js在index.js下写如下代码在main.js中引入store 封装菜单请求工具类新建menus.js编写menus.js文件 解决F5刷新数据丢失问题 导航菜单功能的实现 在Admin…

多项开发任务,如何做好任务分配和管理?

1、确定任务清单 任务精细化分解 需要将任务进行精细化分解,每个子任务时间最好不超过一周,明确子任务的目标、时间点和交付物。 多项开发任务,如何做好任务分配和管理? 2、优先级排序 需要将精细化好的任务,进行优先级…

TFTP+Filezilla文件双向传输(2)-ubuntu(VMware)-win10(host)

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。 ftpd-hpa是tftp服务器 tftp-hpa是tftp客服端 inetd的全称…

设计尝试用Microsoft Visual Studio 在网络上架构一个电影院网络订票系统

设计尝试用Microsoft Visual Studio 在网络上架构一个电影院网络订票系统的设计,以使每一位客户不用出门就能看到最新的电影信息和预定电影票。本文从理论和实践两个角度出发,对一个具有数据挖掘功能电影院网络订票系统的设计进行设计与实现分析。随着电…

windows下运行dpdk下的helloworld

打开“本地安全策略”管理单元,在搜索框输入secpol。 打开本地策略->用户权限分配->锁定内存页->添加用户或组->高级->立即查找 输入电脑用户名,选择并添加。点击确定后,重启电脑。 安装内核驱动,下载地址https:…

srm 采购管理系统是如何赋能企业降本的?

近年来,随着全球经济的不断发展,企业的竞争也日趋激烈,企业为适应市场需求,加强产品创新和技术升级,加大产品研发和生产投入,然而在新冠肺炎疫情的影响下,许多企业经营出现困境。在这种情况下&a…

基于时间戳和序列号的mac地址生成策略

基于时间戳 基于时间戳生成MAC地址的具体操作步骤如下: 获取设备的出厂日期和时间。一般情况下,这个信息可以在设备的测试报告或者出厂记录中找到。 将设备的出厂日期和时间转换成时间戳格式。时间戳指的是一个从1970年1月1日00:00:00 UTC开始的秒数。…

自动化数据驱动?最全接口自动化测试yaml数据驱动实战,看这一篇就够了

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 我们在做自动化测…

ROS学习第十九节——TF静态坐标变换

1.坐标msg消息 订阅发布模型中数据载体 msg 是一个重要实现,首先需要了解一下,在坐标转换实现中常用的 msg:geometry_msgs/TransformStamped和geometry_msgs/PointStamped 前者用于传输坐标系相关位置信息,后者用于传输某个坐标系内坐标点的…

js面试题

在全局作用域下声明了一个变量 arr, 它的初始值是一个空数组 第二段代码,循环计数器变量i的初始值为0,循环条件是i的值小于2, 也就是说当i的值为0或者1时, 循环条件才能成立 才能够进入到循环体 当i的值为2时循环条件不成立&…

ConcurrentLinkedQueue

唯一一个使用cas实现的线程安全并发效率高的集合。 一、为什么叫松散队列? 链表是松散的,链表节点并不都是有效的,允许存在无效节点valnull,但是只有最后一个节点才能nextnull 为什么线程安全需要把链表做成松散的。就是因为入队…

蓝精灵协会 (The Smurfs‘ Society) 宣布与著名艺术家展开一系列的合作,打造传奇 PFP 系列

4 月 18 日,The Smurfs Society 将推出第一个由 Smurfs 品牌支持的官方 PFP 系列。该系列建立在链上游戏的基础之上,该游戏聚集了超过 85,000 名玩家,并在设计、创意和与著名艺术家的合作方面设立了新标准。 而最近,蓝精灵官方&am…

2023-04-21 学习记录--C/C++-实现升序降序(选择法)

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、选择法 —— 升序 ⭐️ (一)、思路 从左到右,除最后一个数 依次作为 “当前数” 与 其右…