谁在realtouch上吧uffs跑起来了?

2013-3-29 15:58 [复制链接] 14 6702

有谁在realtouch上吧uffs跑起来了?我的nand是4k页,mount uffs出错,nand flash是ok的,谁能给点建议。
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2013-3-29 16:25:49 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

realtouch的是2k页呀
使用道具 举报 回复
发表于 2013-3-29 18:50:53 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

我用的是4k的,realtouch我也有,好像uffs也没跑起来吧?
使用道具 举报 回复
发表于 2013-3-29 18:52:50 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

上一个问题是因为没创建mount目录,出现的问题是都是坏块,我把整个nand都erase,又出现
  1. bc  : page out of range !
  2. bc  : page out of range !
  3. tree: Can't find any valid page for page_id=0 ? invalid block !this might be caused by the tag layout change.
复制代码
问题
使用道具 举报 回复
发表于 2013-3-29 19:46:20 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

发现一个问题,当运行void uffs_setup_storage(, N8 l0 z4 {1 Q! W! i* |9 K; V2 V
    struct uffs_StorageAttrSt *attr,
' r7 I- v  r; c4 d    struct rt_mtd_nand_device * nand)
2 N" O4 p7 \% r2 Z# L2 x{
$ n! q4 f1 J3 z4 b7 Y        rt_memset(attr, 0, sizeof(struct uffs_StorageAttrSt));1 P5 Z) v6 S) u0 L9 l/ {
4 a3 y4 i/ ~9 b4 K/ A  F
//        attr->total_blocks = nand->end_block - nand->start_block + 1;/* no use */2 c5 Q6 P5 `+ d, K" b
        attr->page_data_size = nand->page_size;                                 /* page data size */
# F* ]$ a& U9 m$ h# C) p  j. |0 u        attr->pages_per_block = nand->block_size / nand->page_size ; /* pages per block */
9 z. L5 Z* f. F9 A, K- o        attr->spare_size = nand->oob_size;                                           /* page spare size */
6 p9 i9 r0 |, r2 C/ e3 Y5 b        attr->block_status_offs = UFFS_BLOCK_MARK_SPARE_OFFSET;      /* block status offset is 5th byte in spare */
! U$ H1 Y: Y) e% g        attr->ecc_opt = RT_CONFIG_UFFS_ECC_MODE;                     /* ecc option *// z% i7 r" U; Z  T* _
        attr->ecc_size = RT_CONFIG_UFFS_ECC_SIZE;                                   /* ecc size */
' H" r$ k: _- e        attr->layout_opt = RT_CONFIG_UFFS_LAYOUT;                    /* let UFFS do the spare layout */
& s, o( v+ U$ Z, t  [8 r' @
+ x: w; v4 r+ e) |0 L8 u        /* initialize  _uffs_data_layout and _uffs_ecc_layout */
1 |6 H& j2 F0 l8 a( C) X        rt_memcpy(attr->_uffs_data_layout, k9fxg08_data_layout, UFFS_SPARE_LAYOUT_SIZE);1 o) P5 m! [3 V3 k3 R" O3 ?
        rt_memcpy(attr->_uffs_ecc_layout, k9fxg08_ecc_layout, UFFS_SPARE_LAYOUT_SIZE);5 c! y! ]' a& D& a5 x: ?

. ^. f5 A1 g4 P8 p) Y8 I* }2 F        attr->data_layout = attr->_uffs_data_layout;
: ^0 \$ @# k/ e- \$ z( G" P        attr->ecc_layout = attr->_uffs_ecc_layout;1 j% s" _( `5 \& @' a! V
}函数的时候,当运行完rt_memset(attr, 0, sizeof(struct uffs_StorageAttrSt));后,struct rt_mtd_nand_device * nand指向的地址竟然变了,有谁知道原因吗?应该不是线程stack小的原因吧。
使用道具 举报 回复
发表于 2013-3-29 20:39:55 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

我用的是4k的,realtouch我也有,好像uffs也没跑起来吧?
5 W/ t: F- B2 V8 y7 x7 O( ^/ A
realtouch上uffs是跑起来的。例子参见:
/ q! B) e! o; w& C6 Dhttps://github.com/RT-Thread/realtouch- ... _nandflash
% h9 r8 p+ v- Y1 P
3 r' q, c8 s- i. O+ m! o4 L3 b在提供一个stm32f10x上  跑k9f1g08(128M),跑uffs的例子, d% \, n* V/ C- W9 n( b9 ^
https://github.com/prife/stm32f10x_demo
使用道具 举报 回复
发表于 2013-4-1 09:56:11 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

uffs已经跑起来了,
7 r% y8 J6 Q" P3 xdfs_uffs_mkfs函数中
  1. /*2. then unmount the partition */
  2.         uffs_Mount(nand_part[index].mount_path);
  3.         mtd = nand_part[index].dev;
复制代码

, n8 u* O- s* A3 t应该改为
  1. /*2. then unmount the partition */
  2.         uffs_UnMount(nand_part[index].mount_path);
  3.         mtd = nand_part[index].dev;
复制代码
不知道git上有没修改。
使用道具 举报 回复
发表于 2013-4-1 09:57:57 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

有些问题要请教:
+ e$ V8 ?# X% U. I) OECC管理是在uffs中还是nand driver实现?是如何实现的?
使用道具 举报 回复
发表于 2013-4-1 09:59:45 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

nand_check_block和nand_mark_badblock函数需要在nand driver实现还是uffs已经实现了?
使用道具 举报 回复
发表于 2013-4-1 11:37:37 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

有些问题要请教:
3 _3 I7 W" x* J/ {- T( s+ U7 C; QECC管理是在uffs中还是nand driver实现?是如何实现的?
1. 建议在nand driver里实现。
' _+ ~/ w$ @9 r& _: Xuffs也支持软件ECC。需要配置rtconfig.h/dfs_uffs.h  w  w% Q/ _6 |( r) Q

! F* g8 ?% M2 }. n+ P6 Y# T2 V2. 这两个函数% F/ C. x1 f# y9 r# O$ ]( i2 Z
nand_check_block和nand_mark_badblock. P9 d4 o" q  Z% p/ e" c

4 Q( D+ Z( O, ?也同理,既可以在nand driver里实现也可以在uffs里实现。参考驱动给出的是在 uffs里实现的。未在nand driver里实现的效果。
7 r; N5 K: B4 ]9 n
: w* r7 b) ?7 f另:之前uffs跑不起来是什么原因?
使用道具 举报 回复
发表于 2013-4-1 16:23:17 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

rt_hw_mtd_nand_init函数中有一个参数没赋值。
使用道具 举报 回复
发表于 2013-4-1 16:27:58 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

RT_CONFIG_UFFS_ECC_MODE == UFFS_ECC_SOFT是不是就是uffs管理ECC,RT_CONFIG_UFFS_ECC_MODE == UFFS_ECC_HW_AUTO就是driver管理ECC?
使用道具 举报 回复
发表于 2013-4-1 16:56:30 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

楼上正确,正是如此。
使用道具 举报 回复
发表于 2018-7-4 11:39:03 | 显示全部楼层
greato 发表于 2013-3-29 18:52
8 B8 J) O+ g7 O; N$ z. _9 j9 s8 c上一个问题是因为没创建mount目录,出现的问题是都是坏块,我把整个nand都erase,又出现: M( t0 J" Q  d/ r1 B0 Q) ]# S( a: [2 D
问题 ...
! C8 F& p* j% ~7 A. \
我创建了目录,也出现的都是坏块$ P$ t  \/ |" @/ F& h% p
        mkdir("/back",0x777);5 ?- g# v* t9 d3 v: z- X
                                                if (dfs_mount("nand1", "/back", "uffs", 0, 0) == 0)" W" S: c+ C  L$ {6 p* L
                                                {
' g2 A- ?& x4 h% j. }7 j7 @                                                        rt_kprintf("/back uffs initialized!\n");
* l9 \! n; p+ h; P! N& y                                                        list_dir("/back");
) Q* g5 n0 A7 |9 j( [  m/ c: `$ Z# H$ P  p- o. W2 j
                                                }3 f0 A3 m7 Z$ L( R; k, E2 h# \
                                                else
8 ^( g0 A0 i3 U- g- `$ ^                                                        rt_kprintf("/back uffs initialzation failed!\n");
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|RT-Thread开发者社区  

© 2013-2017 上海睿赛德电子科技有限公司 沪ICP备13014002号-1

Powered by RT-Thread

快速回复 返回顶部 返回列表