3418|1

60

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于在uClinux 下建立可读写文件 问题 [复制链接]

您好。我是uClinux个新手。谢谢帮助哈~~。

贴子有点长,我把问题先写出来吧:
1.zlib库应该怎么安装呢?是用gcc安装 还是交叉编译?  装到哪里?
2.可不可以直接对mtd设备文件读写呢?

我在uClinux 下跑 boa server 。现在问题是这样的,我想保存一些用户密码,配置之类的用户信息。
但是我的板子上跑的romfs是不可写入的。在网上搜了一下。一般的做法是挂载jffs2文件系统到romfs文件系统下。
简略步聚如下:
            1.配置mtd相关,使系统认到flash
           2.配置file system 使系统支持 jffs2 。
            3.配置flash -->tools  erase erase_all mkfs.jffs2    及挂载工具
            4.挂载
            5.测试。
现在我只完成了第一步,即在uClinux的启动信息中可以看到:
*********
firefox flash device:20000 at ffe0000
Amd/Fujitsu Extended Query Table v1.0 at 0x0040
FIREFOX flash device: JEDEC Device ID is 0xFF.Assuming broken CFI table.
FIREFOX flash device: Swapping erase regions for broken CFI table.
Number of CFI chips :1
Creating 2 MTD partitions on “FIREFOX flash device”:
0x00000000-0x00100000:”user partition (1024 KB)
mtd:Giving out device 0 to user partion (1024 KB)
0x00100000-0x00200000:”kernel and armboot partition (1024KB)
mtd:Giving out device 1 to user partition (1024KB)
*********
2.系统启动后, 进入命今行。
Sash command shell(version 1.1.1)
/>cd proc
/proc>cat mtd
dev:      size     erasesize   name
mtd0:   00100000  00020000  “user partition(1920KB)”
mtd1:   000100000  00020000  “kernel and user partition(1920KB)”


在第二步时出现问题如下:
....
....
compr_zlib  -c -o compr_zlib.o comr_zlib.c
compr_zlib.c: 38: zlib.h: ?????????
compr_zlib.c: In function 'zlib_compress';
compr_zlib.c: 82: 'z_stream' undeclared(first use in this function)
....
....(警告之类的undeclared)
....  
make[4]:***[compr_zlib.o]Error 1
make[4]:leaving directory '/work/uClinux-dist/linux-2.4.x/fs/jffs2'
make[3]:***[first_rule]Error 2
make[3]:leaving directory '/work/uClinux-dist/linux-2.4.x/fs/jffs2'
make[2]:***[_subdir_jffs2]Error 2
make[2]:leaving directory '/work/uClinux-dist/linux-2.4.x/fs'
make[1]:***[_dir_fs] Error 2
make[1]:leaving directory '/work/uClinux-dist/linux-2.4.x'
make:***[linux]Error 1


网上搜了之后  应该中zlib库没有安装。
请问大侠们,我这个zlib库应该怎么安装呢?是用gcc安装 还是交叉编译?  装到哪里?

安装zlib我两种都试过
第一种 :下载  ./configure                        make  make install   错误依旧
第二种 :下载  修改makefile  CC=arm-elf-gcc
                             LDSHARED=arm-elf-ld
                                                  make  make install   段错误  
我下的版本是  zlib-1.2.3.tar.gz   arm-elf-tools-20011219.tar.gz

我也试过把编译安装成功后的zlib目录下的 include  和  lib 里的内容 copy 到 我的 arm-elf-tools安装目录下的  include 和  lib 下。
我也试过在uClinux里的其它文件夹里找到 zlib.h  zlib.c放到  jffs2目录下。
不过都没有成功。求大侠们帮助下。


另外还有一个问题:
Sash command shell(version 1.1.1)
/>cd proc
/proc>cat mtd
dev:      size     erasesize   name
mtd0:   00100000  00020000  “user partition(1920KB)”
mtd1:   000100000  00020000  “kernel and user partition(1920KB)”

即然系统已然识别,我可不可以直接对mtd设备文件读写呢?
我实际操作时好像是不行的,这是为什么?

/*******   mtdRead.c  **********8
#include
#include
//#include

int main()
{
  int f1;
  int n;
  int max = 20;
  char buf[ max ];
  char *filePath = "/dev/mtd0";

  if( ( f1 = open(filePath ,O_RDWR ,0 ) ) == -1  )
  {
    printf("can not open %s ",filePath);
  }
  else
  {
    if( ( n = read( f1 , buf , max) ) > 0 )
    {
        if(  write( 1 , buf , n ) != n  )       /* 写到 stdout */
        {
          printf("write error.");   
        }
    }
  }   
  return 0;
}
/********************************************/



/***************   mtdWrite.c  ****************/
#include
#include
#include
//#include

int main()
{
  int f1;
  int n;
  char buf[ ] = "test mtd write.";
  char *filePath = "/dev/mtd0";

  n = strlen(buf) ;
  if( ( f1 = open(filePath ,O_RDWR ,0 ) ) == -1  )
  {
    printf("can not open %s ",filePath);
  }
  else
  {

    if (  write( f1 , buf , n ) != n )
    {
      printf("write error.");
    }   

  }   
  return 0;
}
/******************************************/

读的时候运行提示如下(这个没有用笔记下来,大概如下)
MTD_OPEN
MTD_READ
????????????????????????
MTD_CLOSE

写的时候运行提示如下
MTD_OPEN
MTD_WRITE
last[3] is ffff, datum is 6574.
write error. MTD_CLOSE.



谢谢帮助。

最新回复

我也遇到这个问题。在网上找了一下,一般都是《uClinux下使用MTD和jffs2方法》这文章中提到的 还有要说明的几点:(可能是uClinux的bugs吧,不是很清楚!) (1)在uClinux-dist\user\mtd-utils\mkfs.jffs2.c中注释#include不改的话编译不过 (2)JFFS2是采用压缩格式,我没有采用zlib库,而是把uClinux-dist\user\pppd\pppdump\zlib.c和zlib.h拷贝到uClinux-dist\user\mtd-utils下,在它的Makefile中改成 JFFS2_OBJS =crc32.omkfs.jffs2.ocompr_zlib.ocompr_rtime.ozlib.o mkfs.jffs2: $(JFFS2_OBJS) $(CC) $(LDFLAGS) $(CFLAGS)-o $@ $^ $(LDPATH)   -lz $(LDLIBS) –lz不要 ====================== 我按照要求做后,在开发板上运行mkfs.jffs2 命令,直接导致开发板重启。 郁闷中。。。。。。。。。。。。。  详情 回复 发表于 2010-5-20 10:54
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我也遇到这个问题。在网上找了一下,一般都是《uClinux下使用MTD和jffs2方法》这文章中提到的
还有要说明的几点:(可能是uClinux的bugs吧,不是很清楚!)
(1)在uClinux-dist\user\mtd-utils\mkfs.jffs2.c中注释#include不改的话编译不过
(2)JFFS2是采用压缩格式,我没有采用zlib库,而是把uClinux-dist\user\pppd\pppdump\zlib.c和zlib.h拷贝到uClinux-dist\user\mtd-utils下,在它的Makefile中改成
JFFS2_OBJS =crc32.omkfs.jffs2.ocompr_zlib.ocompr_rtime.ozlib.o
mkfs.jffs2: $(JFFS2_OBJS)
$(CC) $(LDFLAGS) $(CFLAGS)-o $@ $^ $(LDPATH)   -lz $(LDLIBS) –lz不要
======================
我按照要求做后,在开发板上运行mkfs.jffs2 命令,直接导致开发板重启。
郁闷中。。。。。。。。。。。。。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表