rtems 最简单的读写文件程序

看了两周的rtems,测试了几个程序, 在pc机下面都是测试通过的。现在帖出来方便以后记得。个别句子会说明一下其作用。

 

#include <bsp.h>

#include <fcntl.h>
#include <stdio.h>
#include <memory.h>

char *bufr = "Happy days are here again. Good morning! This is a great decision!";

rtems_task Init(
  rtems_task_argument ignored
)
{
   int fd;
   int i, n, total;
   char *bufr2;

   printf( "BUFSIZ = %d/n", BUFSIZ );
   bufr2 = (char *)malloc(BUFSIZ);
   fd = creat("tester", S_IRWXU | S_IRWXG | S_IRWXO); //这里是创建一个文件tester,后面是标志位,不用多说。
   for (i=0; i<3; i++) {  //循环三次向里面写相同的内容,为了测试。
      n = write(fd, bufr, strlen(bufr));  //
      printf("Wrote %d/n", n);   
   }
   close(fd);  

   total = 0;
   fd = open("tester", O_RDONLY);  // 打开文件,之前要反文件关闭。不然会出错的。

// 这里要往fd写是写不到文件里去的。至于为什么,我也不清楚,等看看源码,

//偏偏可以读,就是写不进去,改为可写也不行,不知道为何!!


  while ((n=read(fd,bufr2,10)) > 0) {   // 把写入文件的内容读出来,并打印在屏幕上。
      bufr2[n-1] = '/0';
      total += n;
      printf("Read=%d, total=%d : %s/n", n, total, bufr2);
   }
   free(bufr2);
   close(fd);
   exit(0);
}

/* NOTICE: the clock driver is explicitly disabled */
#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER

#define CONFIGURE_RTEMS_INIT_TASKS_TABLE

#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM  // 这里是IMFS,必须要定义
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4  // 这个比较重要,为什么要定义为4,因为默认定义为3,而偏偏0,1,2被标准输入,标准输出,标准出错给占了。所以这里要定义为4,也可以大一点。根据需要而定。

#define CONFIGURE_INIT   // 这个是必须要定义的宏,

/*  rtems 就是通过判断用户是否定义了#define CONFIGURE_INIT 来启动多任务并实现驱动的。 */

#include <rtems/confdefs.h>  

/* end of file */

 

 

编写Makefile 编译之后,通过grub引导就可以看到结果了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值