From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott Wood Date: Tue, 20 Oct 2009 11:29:34 -0500 Subject: [U-Boot] cmd_onenand.c, onenand_block_read (...) In-Reply-To: <200910201727.04299.chernigovskiy@spb.gs.ru> References: <200910201727.04299.chernigovskiy@spb.gs.ru> Message-ID: <20091020162934.GA9991@loki.buserror.net> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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