谁在realtouch上吧uffs跑起来了?

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

有谁在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(
4 V$ L8 w1 E) b  j& m    struct uffs_StorageAttrSt *attr,
  _) N% `6 n' R  |    struct rt_mtd_nand_device * nand)
" n0 e1 A  [3 @: ]$ F7 h/ m{
* O$ }  u! Q' ]' Z# @1 Y        rt_memset(attr, 0, sizeof(struct uffs_StorageAttrSt));- z/ A/ C0 G/ @  x& g+ A
9 I. p' e/ @0 o
//        attr->total_blocks = nand->end_block - nand->start_block + 1;/* no use */
6 }4 i5 i* {0 e6 q% k! @; i* m        attr->page_data_size = nand->page_size;                                 /* page data size */
7 z% Z( Z; `9 [, d! o  O0 u+ l+ K        attr->pages_per_block = nand->block_size / nand->page_size ; /* pages per block */" |. O( ^% d' T6 M1 l4 Z. p  Q* T
        attr->spare_size = nand->oob_size;                                           /* page spare size */
, A1 `. T& D$ e        attr->block_status_offs = UFFS_BLOCK_MARK_SPARE_OFFSET;      /* block status offset is 5th byte in spare */
& d8 q; Z9 U' ]' K' P        attr->ecc_opt = RT_CONFIG_UFFS_ECC_MODE;                     /* ecc option */, H/ d( p( @' H5 d& z* X2 y! x- {
        attr->ecc_size = RT_CONFIG_UFFS_ECC_SIZE;                                   /* ecc size */
2 }/ y- M8 K6 a4 d8 R        attr->layout_opt = RT_CONFIG_UFFS_LAYOUT;                    /* let UFFS do the spare layout */; V  O9 b2 {1 y* l/ J1 s
5 s9 w1 P/ f+ o5 j5 m" R' e( |, u
        /* initialize  _uffs_data_layout and _uffs_ecc_layout */: j; B% v/ O# N1 ^/ N
        rt_memcpy(attr->_uffs_data_layout, k9fxg08_data_layout, UFFS_SPARE_LAYOUT_SIZE);
1 G( `6 [: p9 e        rt_memcpy(attr->_uffs_ecc_layout, k9fxg08_ecc_layout, UFFS_SPARE_LAYOUT_SIZE);8 v; L  ^& x; n; q" S8 s" j5 J

1 d: v: a. k# X        attr->data_layout = attr->_uffs_data_layout;
" q5 r; S) i0 x& i/ P9 f2 ~2 T        attr->ecc_layout = attr->_uffs_ecc_layout;; W. \, ?8 A& i- q
}函数的时候,当运行完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也没跑起来吧?

  C  s0 i+ g. Z1 u8 srealtouch上uffs是跑起来的。例子参见:9 V) _8 e: _  |" I5 K
https://github.com/RT-Thread/realtouch- ... _nandflash
9 T; a; T5 G2 M: W1 @8 q5 N  W0 Z' {8 ~
在提供一个stm32f10x上  跑k9f1g08(128M),跑uffs的例子! A$ _  ?& C0 S2 q  A. N3 T! H
https://github.com/prife/stm32f10x_demo
使用道具 举报 回复
发表于 2013-4-1 09:56:11 | 显示全部楼层

谁在realtouch上吧uffs跑起来了?

uffs已经跑起来了,
4 V7 S; g; ]+ q4 I1 O* Xdfs_uffs_mkfs函数中
  1. /*2. then unmount the partition */
  2.         uffs_Mount(nand_part[index].mount_path);
  3.         mtd = nand_part[index].dev;
复制代码

4 g" H+ V/ ~2 ]8 W4 I( V- f7 S, \应该改为
  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跑起来了?

有些问题要请教:
- W- E" t3 m1 U) Q' a% \! PECC管理是在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跑起来了?

有些问题要请教:
: p( S4 u8 ]$ j4 r" E4 c% L5 ZECC管理是在uffs中还是nand driver实现?是如何实现的?
1. 建议在nand driver里实现。
2 t- N' L, Q# t; G" d0 @uffs也支持软件ECC。需要配置rtconfig.h/dfs_uffs.h9 ~  [& @# b5 O2 A

; z: S/ ]$ D5 b, d2. 这两个函数2 E# p7 r3 t- R6 z8 n: G; t! Z# D1 ~
nand_check_block和nand_mark_badblock
+ B- N( a! P/ ]$ C, D" q; {: ]6 o; t3 Y( V; D2 [
也同理,既可以在nand driver里实现也可以在uffs里实现。参考驱动给出的是在 uffs里实现的。未在nand driver里实现的效果。
! H; \& ]$ |. J: n6 O* g
8 D) [$ ]! O* ]3 y& J9 s1 R另:之前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: J- M9 K! \: x. U/ f) m
上一个问题是因为没创建mount目录,出现的问题是都是坏块,我把整个nand都erase,又出现
2 |* t2 g* z  \0 Q' O1 U6 ?问题 ...
' i6 t0 @3 i$ g- Y4 @) P( g
我创建了目录,也出现的都是坏块# {( ~* c6 V( h; J' }! @* I
        mkdir("/back",0x777);
& `* q: D. _3 H) r& o                                                if (dfs_mount("nand1", "/back", "uffs", 0, 0) == 0)
/ r$ K9 ^6 S8 s8 W) C3 F$ F3 L                                                {+ Y+ E* v* n( ^& C- `0 U
                                                        rt_kprintf("/back uffs initialized!\n");
1 v) A: ~3 c6 P( ?$ }                                                        list_dir("/back");9 S4 q9 d0 L7 `. `& b, c

+ h* d2 R0 u! L+ I0 I* U* D                                                }
+ e+ w0 H( J, |8 T$ S& P# f2 J                                                else
5 M* u0 x2 E+ a3 {0 q5 x8 s; V                                                        rt_kprintf("/back uffs initialzation failed!\n");
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by RT-Thread

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