C - 错误:Zolertia z1微粒上的未知类型名称'FILE'

时间:2016-03-09 12:33:32

标签: c msp430 contiki

我的z1 mote充当基站,它直接连接到网关(pc)。我想在unicast-receiver.c中使用此代码保存文本文件中的数据:

//after printing on the screen then store
FILE *f = fopen("clients.txt", "wb");
fwrite(data, sizeof(char), sizeof(data), f);
fclose(f); 

但是我收到了这个错误:

unicast-receiver.c: In function ‘receiver’:
unicast-receiver.c:49:1: error: unknown type name ‘FILE’

尽管包含了stdio.h。以前有人遇到过同样的错误吗?我如何解决它?如果没有办法通过z1 motes这样做,那么还有其他任何方式来存储数据吗?

以下是程序中的包含

#include "contiki.h"
#include "lib/random.h"
#include "sys/ctimer.h"
#include "sys/etimer.h"
#include "net/ip/uip.h"
#include "net/ipv6/uip-ds6.h"
#include "net/ip/uip-debug.h"

#include "simple-udp.h"
#include "servreg-hack.h"

#include "net/rpl/rpl.h"

#include "dev/cc2420/cc2420.h"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

2 个答案:

答案 0 :(得分:1)

msp430是一个非常受硬件限制的平台,因此不支持完整的C标准库功能。特别是在典型的msp430平台上没有硬盘甚至SD卡,因此也很少需要在软件中使用与文件系统相关的例程。

如果您查看msp430-libc source code,就可以清楚地看到它仅支持printf函数系列。

可以使用xmem界面在板载闪存上存储数据。接口在contiki/core/dev/xmem.h中定义。使用它很简单:首先擦除整个扇区,然后你可以写入该扇区。使用闪存地址作为参数调用xmem_erase(要擦除的扇区中的任何地址),然后调用xmem_write传递要写入的缓冲区和写入的闪存地址(起始偏移量)。 Flash地址通常从零开始。

也可以使用Coffee,Contiki文件系统。

答案 1 :(得分:1)

Contiki提供了一个名为CFS (Coffee flash system)的库,用于抽象闪存并以类似文件的方式进行写入/读取,这是Contiki's wiki page

中的指南

Zolertia Z1支持CFS。