- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Could someone help me to start working with jffs2 file system?.
I use following code: # include <cyg/hal/io.h># include <cyg/kernel/kapi.h># include <cyg/io/io.h># include <cyg/fileio/fileio.h># include "stdio.h" void cyg_user_start(void) { int err; # ifdef CYGPKG_IO_FILEIO err=mount ("/dev/flash", "/", "jffs2"); printf("%d\n",err); if(err == 0) { printf("success"); chdir ("/"); } # endif } but when I start my app i receive: -1 so there is some error and I dont know what kind of error and how to fix it. My flash memory is filled with 0xFF patterns.Link Copied
7 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mell,
Have you configured ecos to use your flash memory, and set aside a block of memory for JFFS2? You need to set the "Instantiate in I/O block device API" property in the flash drivers section. I had a problem with JFFS2 on my Altera Cyclone II 2C35 based Dev Board because the flash memory is connected as 8-bit and the ecos driver expects it to be in 16-bit mode. I can send you code to fix this if you need it. I found JFFS2 quite tricky to get started with, but once it starts working it's great! Mike- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mike,
I've configured eCos Library using NiosII config tool. I imported all required packages: JFFS2 Filesystem, Generic FLASH memory support, CRC support, Linux compatibility. I configured base of flash device block to 0x0000 and length of 16Mbytes(as we have in our system). I use the same evaluation board as you.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mell,
I solved my problem with JFFS2 by following the advice in this post: previous post (http://forum.niosforum.com/forum/lofiversion/index.php/t1841.html) If you need help implementing this solution then let me know. Mike- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello mike,
I've read contens of link you sent, but I wasn't able to find any of files mentioned in neither in project path nor in installation of eCos.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mell,
On my system the two files you need to edit are in these locations: C:\altera\kits\nios2_60\components\ecos\ecos-current\packages\devs\flash\sopc\altera_avalon_am29lv065d_flash\current\src\altera_avalon_am29lv065d_flash.c C:\altera\kits\nios2_60\components\ecos\ecos-current\packages\devs\flash\amd\am29xxxxx\current\include\flash_am29xxxxx_parts.inl The file called altera_avalon_am29lv065d_flash.c contains a definition of the flash geometry that is being used. Near the top of the file you will find some code like this: # define CYGNUM_FLASH_INTERLEAVE (1)
# define CYGNUM_FLASH_SERIES (1)
# define CYGNUM_FLASH_WIDTH (8)
# define CYGNUM_FLASH_BASE altera_avalon_am29lv065d_base
You need to add a line to this to specify that the flash is being used in 8-bit mode, like so: #define CYGNUM_FLASH_INTERLEAVE (1)# define CYGNUM_FLASH_SERIES (1)# define CYGNUM_FLASH_WIDTH (8)# define CYGNUM_FLASH_16AS8 (1)# define CYGNUM_FLASH_BASE altera_avalon_am29lv065d_base
The second file called flash_am29xxxxx_parts.inl contains the settings required to drive the flash. It consists of a long list of flash settings. The defines in the previous file cause parts of the second file to be enabled. We need to add a new section to flash_am29xxxxx_parts.inl to describe the flash being used in 8-bit mode. Search for this code in the file (Somewhere around line 560): #else // 16 bit devices
# ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV128
{ // AM29LV128
device_id : FLASHWORD(0x227e),
block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
block_count: 256,
device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
base_mask : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
bootblock : false,
banked : false,
bufsiz : 16
},# endif
This is the existing code for 16-bit access to the flash. You need to add an 8-bit section before the# else statement like so: #ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV128
{ // AM29LV128
long_device_id: true,
device_id : FLASHWORD(0x7e),
device_id2 : FLASHWORD(0x12),
device_id3 : FLASHWORD(0x00),
block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
block_count: 256,
device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
base_mask : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
bootblock : false,
banked : false,
bufsiz : 16
},# endif
# else // 16 bit devices
# ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV128
{ // AM29LV128
device_id : FLASHWORD(0x227e),
block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,
block_count: 256,
device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,
base_mask : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),
bootblock : false,
banked : false,
bufsiz : 16
},# endif
The tabs have been messed up by pasting into this message. If I knew how to send attachments through this forum then I would send these files to you. You could send me a "personal message" through the forum with your email address and I could then send the files directly to you. Mike
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My problem now seems to be solved. It was caused by bad description of board and missing device drivers for my flash.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
That's great! Glad I could help.
Mike
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page