[U-Boot] cmd_onenand.c, onenand_block_read (...)
Scott Wood
scottwood at freescale.com
Tue Oct 20 18:29:34 CEST 2009
On Tue, Oct 20, 2009 at 05:27:04PM +0400, Tuma wrote:
> Hi, All!
>
> It seems I have a trouble.
> I want to use onenand_block_read function. So I've written a cover for it:
>
> int OneNANDBlockRead (loff_t _from, ssize_t _len,
> ssize_t *_retlen, u_char *_buf, int _oob)
> {
> int lRet;
>
> return lRet;
> }
You wrote a function that does nothing but return an uninitialized stack
value?
> When I do from this fuction:
> printf ("Reading from: 0x%X, Length: 0x%X\n", _from, _len);
> I get _len and _form swapped.
> What's wrong?
For one, if that's the same _from as in OneNANDBlockRead, you're using the
wrong printf formats. You need %llX for loff_t (you may want to cast to
unsigned long long just in case the type of loff_t varies), and %zX for
ssize_t. Please pay attention to complier warnings.
> I tryed to pass _from and _len as pointers - pointer addresses are correct but
> printf ("Reading from: 0x%X\n", *_from);
> printf ("Reading Length: 0x%X\n", *_len);
> return swapped result again.
>
> This is how I call OneNANDBlockRead function:
> static const ssize_t lLen = 0x20;
> static const ulong lLT = 0x00260000;
> OneNANDBlockRead (&lLT, &lLen, &retlen, lEnvironment, 0);
You're passing pointers to integer arguments. Please pay attention to
compiler warnings.
-Scott
More information about the U-Boot
mailing list