wdenk | c609719 | 2002-11-03 00:24:07 +0000 | [diff] [blame] | 1 | JFFS2 options and usage. |
| 2 | ----------------------- |
| 3 | |
| 4 | JFFS2 in U-Boot is a read only implementation of the file system in |
| 5 | Linux with the same name. To use JFFS2 define CFG_CMD_JFFS2. |
| 6 | |
| 7 | The module adds three new commands. |
| 8 | fsload - load binary file from a file system image |
| 9 | fsinfo - print information about file systems |
| 10 | ls - list files in a directory |
wdenk | 3c71176 | 2004-06-09 13:37:52 +0000 | [diff] [blame] | 11 | chpart - change active partition |
wdenk | c609719 | 2002-11-03 00:24:07 +0000 | [diff] [blame] | 12 | |
wdenk | 6b58f33 | 2003-03-14 20:47:52 +0000 | [diff] [blame] | 13 | If you boot from a partition which is mounted writable, and you |
| 14 | update your boot environment by replacing single files on that |
| 15 | partition, you should also define CFG_JFFS2_SORT_FRAGMENTS. Scanning |
| 16 | the JFFS2 filesystem takes *much* longer with this feature, though. |
| 17 | Sorting is done while inserting into the fragment list, which is |
| 18 | more or less a bubble sort. That algorithm is known to be O(n^2), |
| 19 | thus you should really consider if you can avoid it! |
| 20 | |
wdenk | c609719 | 2002-11-03 00:24:07 +0000 | [diff] [blame] | 21 | |
| 22 | There is two ways for JFFS2 to find the disk. The default way uses |
| 23 | the flash_info structure to find the start of a JFFS2 disk (called |
| 24 | partition in the code) and you can change where the partition is with |
| 25 | two defines. |
| 26 | |
| 27 | CFG_JFFS2_FIRST_BANK |
| 28 | defined the first flash bank to use |
| 29 | |
| 30 | CFG_JFFS2_FIRST_SECTOR |
| 31 | defines the first sector to use |
| 32 | |
| 33 | |
| 34 | The second way is to define CFG_JFFS_CUSTOM_PART and implement the |
| 35 | jffs2_part_info(int part_num) function in your board specific files. |
| 36 | In this mode CFG_JFFS2_FIRST_BANK and CFG_JFFS2_FIRST_SECTOR is not |
| 37 | used. |
| 38 | |
| 39 | The input is a partition number starting with 0. |
| 40 | Return a pointer to struct part_info or NULL for error; |
| 41 | |
| 42 | Ex jffs2_part_info() for one partition. |
| 43 | --- |
| 44 | #if defined CFG_JFFS_CUSTOM_PART |
| 45 | #include <jffs2/jffs2.h> |
| 46 | |
| 47 | static struct part_info part; |
| 48 | |
| 49 | struct part_info* |
| 50 | jffs2_part_info(int part_num) |
| 51 | { |
| 52 | if(part_num==0){ |
| 53 | if(part.usr_priv==(void*)1) |
| 54 | return ∂ |
| 55 | |
| 56 | memset(&part, 0, sizeof(part)); |
| 57 | part.offset=(char*)0xFF800000; |
| 58 | part.size=1024*1024*8; |
| 59 | |
| 60 | /* Mark the struct as ready */ |
| 61 | part.usr_priv=(void*)1; |
| 62 | |
| 63 | return ∂ |
| 64 | } |
| 65 | return 0; |
| 66 | } |
| 67 | #endif |
| 68 | --- |
| 69 | |
| 70 | TODO. |
| 71 | |
wdenk | 57b2d80 | 2003-06-27 21:31:46 +0000 | [diff] [blame] | 72 | Remove the assumption that JFFS can dereference a pointer |
| 73 | into the disk. The current code do not work with memory holes |
| 74 | or hardware with a sliding window (PCMCIA). |