首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用模拟器TOSSIM将数据写入闪存

使用模拟器TOSSIM将数据写入闪存
EN

Stack Overflow用户
提问于 2015-01-12 16:44:26
回答 1查看 159关注 0票数 0
代码语言:javascript
复制
#define BITINIT \
  uint8_t clrClkAndData = PORTD & ~0x28

#define BIT(n) \
    PORTD = clrClkAndData; \
    asm __volatile__ \
        (  "sbrc %2," #n "\n" \
     "\tsbi 18,3\n" \
     "\tsbi 18,5\n" \
     "\tsbic 16,2\n" \
     "\tori %0,1<<" #n "\n" \
     : "=d" (spiIn) : "0" (spiIn), "r" (spiOut))

我安装了ubuntu并使用了TOSSIM。一切都编译正确,并且正在运行。但是,当在TOSSIM上执行micaz的文件HPLAt45dbIOP.nc时,我得到如下错误

代码语言:javascript
复制
 /opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc: 

汇编程序消息:

代码语言:javascript
复制
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:150: Error: no such instruction: `sbrc %cl,7'
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:151: Error: no such instruction: `sbi 18,3'
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:152: Error: no such instruction: `sbi 18,5'
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:153: Error: no such instruction: `sbic 16,2'
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:154: Error: no such instruction: `ori %dl,1<<7'

我有一台英特尔机器。为什么TOSSIM无法运行汇编语言指令?

EN

回答 1

Stack Overflow用户

发布于 2015-01-14 02:10:57

首先,sbrcsbi等都是AVR汇编指令,所以英特尔机器不能执行它们。

然而,TOSSIM不能也不能运行与真实节点相同的依赖于平台的组件。这些组件使用微控制器的寄存器来控制IO引脚、处理硬件中断、通过SPI等总线与外部外设通信等。除了无线传感器网络:想象一下,您有一个应用程序,可以从连接到PC的相机拍摄照片,然后打印出来。在没有相机和打印机的情况下,您如何模拟此类应用程序的执行?

TOSSIM实际做的是,它通过用模拟实现替换组件来工作(参见documentation)。与我之前提到的PC应用程序相比,TOSSIM的工作原理是将某些硬件组件,如打印机和摄像头,替换为模拟其行为的软件模块,即所谓的模拟。然后,应用程序与这样的软件模块通信,而不是与实际硬件通信,这允许在没有物理硬件的情况下测试应用程序逻辑的更高层。

然而,这种方法需要实现软件模拟,这有时并不一定容易。据我所知,TOSSIM平台是唯一支持TinyOS的平台,它附带了一些模拟模块。您可以在名为sim的目录中找到它们。例如,tos/platforms/micaz/chips/ CC2420 /sim/包含用于CC2420无线电芯片的模拟,而tos/chips/ ATM128 /timer/sim/包括用于ATM128微控制器上可用的硬件定时器的模拟。

在TinyOS中,当使用命令make micaz sim进行编译时,通过在所有包含路径前加上以/sim结尾的包含路径,将自动使用模拟组件,而不是真正的实现( TinyOS构建系统总是选择第一个匹配的组件)。

不幸的是,似乎没有针对闪存驱动程序的模拟,因此不可能在模拟中使用闪存。您需要一个MICAz微尘来测试您的应用程序。TOSSIM主要用于与无线电相关的模拟,因为这样的实验不总是容易在真实环境中执行,并且其结果可能是不确定的,这阻碍了问题的再现和应用程序的调试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27898101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档