Indeed, funny :)
I really should have encountered this problem in any block (1KB = 2 * 512
sectors) reading... Pretty weird.

Cheers,
Seb

2011/5/2 mattschinkel <[email protected]>

> Thanks Seb, hopefully this will fix some issues. It's funny how I
> never had an issue!
>
> I'll have to check the 'put proc as well.
>
> Matt.
>
> On May 2, 11:47 am, Sebastien Lelong <[email protected]>
> wrote:
> > Just a follow-up on this.
> >
> > This is an actual *issue* IMHO, and the reason why I've never been able
> to
> > read beyond some address! If I modify the function so CRC bytes are
> actually
> > read when reaching end of sector, it works !
> >
> > function sd_data_byte'get() return byte is
> >    var byte x, data_byte
> >
> >    if sd_byte_count == 0 then            -- beginning of sector read
> >
> >       while spi_master != 0xFE loop      -- wait till data is ready to
> read
> >       end loop
> >    end if
> >
> >    data_byte = spi_master                -- get data byte
> >
> >    sd_byte_count = sd_byte_count + 1     -- increment byte_count
> >    if sd_byte_count == 512 then          -- end of sector read
> >       sd_byte_count = 0
> >       sd_sector_count = sd_sector_count + 1 -- increment sector number
> >       x = spi_master                     -- get junk crc data, crc is
> > disabled
> >       x = spi_master                     -- get junk crc data, crc is
> > disabled
> >    end if
> >
> >    return data_byte
> > end function
> >
> > Matt, can you confirm there's a trouble here ?
> >
> > Cheers,
> > Seb
> >
> > 2011/5/2 Sebastien Lelong <[email protected]>
> >
> >
> >
> > > Hi Matt,
> >
> > > BTW, I found some potential issue, or at least waste of code in
> sd_card.jal
> > > lib:
> >
> > > Here's the guilty function:
> >
> > > ---
> > > function sd_data_byte'get() return byte is
> > >    var byte x, data_byte
> >
> > >    if sd_byte_count == 0 then               -- beginning of sector read
> > >       while spi_master != 0xFE loop      -- wait till data is ready to
> read
> > >        end loop
> > >    end if
> >
> > >    data_byte = spi_master                -- get data byte
> >
> > >    if sd_byte_count == 512 then             -- end of sector read
> > >       sd_sector_count = sd_sector_count + 1 -- increment sector number
> > >       x = spi_master                     -- get junk crc data, crc is
> > > disabled
> > >       x = spi_master                     -- get junk crc data, crc is
> > > disabled
> > >    end if
> >
> > >    sd_byte_count = sd_byte_count + 1 -- increment byte_count
> > >    if sd_byte_count == 512 then
> > >       sd_byte_count = 0
> > >    end if
> >
> > >    return data_byte
> > > end function
> > > ---
> >
> > > When sd_byte_count = 511:
> > >   - enter the function
> > >   - you read data from spi
> > >   - sd_byte_count is incremented, now is 512
> > >   - since it's 512, it then sets to 0 (last "if")
> >
> > > As a consequence:
> >
> > >    if sd_byte_count == 512 then             -- end of sector read
> > >       sd_sector_count = sd_sector_count + 1 -- increment sector number
> > >       x = spi_master                     -- get junk crc data, crc is
> > > disabled
> > >       x = spi_master                     -- get junk crc data, crc is
> > > disabled
> > >    end if
> >
> > > nerver gets executed.
> >
> > > Am I right ?
> >
> > > Cheers,
> > > Seb
> >
> > > 2011/5/2 Sebastien Lelong <[email protected]>
> >
> > >> Hi Matt,
> >
> > >> Thanks for your effort, but this is still the same, fat32 get stuck
> within
> > >> init procedure. I guess this is due to my fat32 partition, something
> is
> > >> wrong with it. Included is an partial hexdump of my partition, showing
> > >> content but only when changing. Format is:
> >
> > >> address  b1 b2 b3 b4 b5 b6 b7 b8  b9 b0 b1 b2 b3 b4 b5 b6  |ascii
> ascii
> > >> asci|
> >
> > >> (b0 is b10, then b1 is b11, etc...)
> >
> > >> If content didn't change, you'll get "*"
> >
> > >> If you have time (and only if), you might be able to what's going on
> by
> > >> looking at addresses and content in order to see if data is wrong or
> not.
> > >> Careful: there may be data residues from previous experiments (but you
> > >> should be able to read important sectors in fat32)
> >
> > >> TIA
> > >> Cheers,
> > >> Seb
> >
> > >> 2011/5/2 mattschinkel <[email protected]>
> >
> > >>> Seb, I finally found time to fix the FAT32_SMALL cluster size issue.
> > >>> Give it a try!
> >
> > >>> Matt.
> >
> > --
> > Sébastien Lelonghttp://www.sirloon.nethttp://sirbot.org
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/jallib?hl=en.

Reply via email to