* [U-Boot] [PATCH] xyzModem.c Packet buffer dynamic allocate
@ 2010-10-01 5:56 Yoshinori Sato
2010-10-01 7:57 ` Wolfgang Denk
0 siblings, 1 reply; 4+ messages in thread
From: Yoshinori Sato @ 2010-10-01 5:56 UTC (permalink / raw)
To: u-boot
Hello.
It changes reduce bss usage.
Ymodem receive buffer dinamic allocation.
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
common/cmd_load.c | 1 +
common/xyzModem.c | 17 ++++++++++++++---
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/common/cmd_load.c b/common/cmd_load.c
index dad0303..f144bf4 100644
--- a/common/cmd_load.c
+++ b/common/cmd_load.c
@@ -992,6 +992,7 @@ static ulong load_serial_ymodem (ulong offset)
store_addr, res);
if (rc != 0) {
flash_perror (rc);
+ xyzModem_stream_close (&err);
return (~0);
}
} else
diff --git a/common/xyzModem.c b/common/xyzModem.c
index 7a46805..5af995d 100644
--- a/common/xyzModem.c
+++ b/common/xyzModem.c
@@ -58,6 +58,7 @@
#include <xyzModem.h>
#include <stdarg.h>
#include <crc.h>
+#include <malloc.h>
/* Assumption - run xyzModem protocol over the console port */
@@ -81,7 +82,7 @@ static struct
#else
int *__chan;
#endif
- unsigned char pkt[1024], *bufp;
+ unsigned char *pkt, *bufp;
unsigned char blk, cblk, crc1, crc2;
unsigned char next_blk; /* Expected block */
int len, mode, total_retries;
@@ -353,6 +354,7 @@ xyzModem_get_hdr (void)
bool hdr_found = false;
int i, can_total, hdr_chars;
unsigned short cksum;
+ char *pktp;
ZM_DEBUG (zm_new ());
/* Find the start of a header */
@@ -433,13 +435,14 @@ xyzModem_get_hdr (void)
}
xyz.len = (c == SOH) ? 128 : 1024;
xyz.bufp = xyz.pkt;
+ pktp = xyz.pkt;
for (i = 0; i < xyz.len; i++)
{
res = CYGACC_COMM_IF_GETC_TIMEOUT (*xyz.__chan, &c);
ZM_DEBUG (zm_save (c));
if (res)
{
- xyz.pkt[i] = c;
+ *pktp++ = c;
}
else
{
@@ -489,9 +492,10 @@ xyzModem_get_hdr (void)
else
{
cksum = 0;
+ pktp = xyz.pkt;
for (i = 0; i < xyz.len; i++)
{
- cksum += xyz.pkt[i];
+ cksum += *pktp++;
}
if (xyz.crc1 != (cksum & 0xFF))
{
@@ -560,6 +564,11 @@ xyzModem_stream_open (connection_info_t * info, int *err)
xyz.read_length = 0;
xyz.file_length = 0;
#endif
+ if (xyz.pkt == NULL) {
+ xyz.pkt = malloc(1024);
+ if (xyz.pkt == NULL)
+ return -1;
+ }
CYGACC_COMM_IF_PUTC (*xyz.__chan, (xyz.crc_mode ? 'C' : NAK));
@@ -743,6 +752,8 @@ xyzModem_stream_close (int *err)
xyz.crc_mode ? "CRC" : "Cksum", xyz.total_SOH, xyz.total_STX,
xyz.total_CAN, xyz.total_retries);
ZM_DEBUG (zm_flush ());
+ free(xyz.pkt);
+ xyz.pkt = NULL;
}
/* Need to be able to clean out the input buffer, so have to take the */
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] xyzModem.c Packet buffer dynamic allocate
2010-10-01 5:56 [U-Boot] [PATCH] xyzModem.c Packet buffer dynamic allocate Yoshinori Sato
@ 2010-10-01 7:57 ` Wolfgang Denk
2010-10-01 15:02 ` Yoshinori Sato
0 siblings, 1 reply; 4+ messages in thread
From: Wolfgang Denk @ 2010-10-01 7:57 UTC (permalink / raw)
To: u-boot
Dear Yoshinori Sato,
In message <87sk0q1mnf.wl%ysato@users.sourceforge.jp> you wrote:
>
> It changes reduce bss usage.
... and increases the load on the malloc arean.
> Ymodem receive buffer dinamic allocation.
As far as I can see we increase the code size, and shift a fixed sized
buffer from bss to the maloc arene.
I don't consider this an improvement, but I may be overlooking
something.
Which advantages do you see with the changed code?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
If the facts don't fit the theory, change the facts.
-- Albert Einstein
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] xyzModem.c Packet buffer dynamic allocate
2010-10-01 7:57 ` Wolfgang Denk
@ 2010-10-01 15:02 ` Yoshinori Sato
2010-10-01 19:39 ` Mike Frysinger
0 siblings, 1 reply; 4+ messages in thread
From: Yoshinori Sato @ 2010-10-01 15:02 UTC (permalink / raw)
To: u-boot
At Fri, 01 Oct 2010 09:57:49 +0200,
Wolfgang Denk wrote:
>
> Dear Yoshinori Sato,
>
> In message <87sk0q1mnf.wl%ysato@users.sourceforge.jp> you wrote:
> >
> > It changes reduce bss usage.
>
> ... and increases the load on the malloc arean.
>
> > Ymodem receive buffer dinamic allocation.
>
> As far as I can see we increase the code size, and shift a fixed sized
> buffer from bss to the maloc arene.
>
> I don't consider this an improvement, but I may be overlooking
> something.
>
> Which advantages do you see with the changed code?
My target have too small size RAM.
I want reduced to data and bss.
It is limited to one usage in a static allocation.
But dynamic allocation can use generically.
> Best regards,
>
> Wolfgang Denk
>
> --
> DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
> If the facts don't fit the theory, change the facts.
> -- Albert Einstein
--
Yoshinori Sato
<ysato@users.sourceforge.jp>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] xyzModem.c Packet buffer dynamic allocate
2010-10-01 15:02 ` Yoshinori Sato
@ 2010-10-01 19:39 ` Mike Frysinger
0 siblings, 0 replies; 4+ messages in thread
From: Mike Frysinger @ 2010-10-01 19:39 UTC (permalink / raw)
To: u-boot
On Fri, Oct 1, 2010 at 11:02 AM, Yoshinori Sato wrote:
> At Fri, 01 Oct 2010 09:57:49 +0200, Wolfgang Denk wrote:
>> Yoshinori Sato wrote:
>> > It changes reduce bss usage.
>>
>> ... and increases the load on the malloc arean.
>>
>> > Ymodem receive buffer dinamic allocation.
>>
>> As far as I can see we increase the code size, and shift a fixed sized
>> buffer from bss to the maloc arene.
>>
>> I don't consider this an improvement, but I may be overlooking
>> something.
>>
>> Which advantages do you see with the changed code?
>
> My target have too small size RAM.
> I want reduced to data and bss.
>
> It is limited to one usage in a static allocation.
> But dynamic allocation can use generically.
i feel like this is a much more uncommon usage scenario and is more
harmful than good to boards, and one which isnt specific to xyzModem.
perhaps we need a general tune config which says "prefer malloc over
bss" and this creates a set of helper macros which expand either into
malloc calls or nothing (since the storage is already in bss).
-mike
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-10-01 19:39 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-01 5:56 [U-Boot] [PATCH] xyzModem.c Packet buffer dynamic allocate Yoshinori Sato
2010-10-01 7:57 ` Wolfgang Denk
2010-10-01 15:02 ` Yoshinori Sato
2010-10-01 19:39 ` Mike Frysinger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox