From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Rini Date: Wed, 20 Nov 2019 18:26:03 -0500 Subject: [U-Boot] [PATCH v1 1/1] cmd: adding malloc, math, and strcmp commands to u-boot In-Reply-To: <0a51307d771d8a198998141e3c405ed2@mail.gmail.com> References: <20191119002630.15088-1-vladimir.olovyannikov@broadcom.com> <20191119203733.GI19317@bill-the-cat> <0a51307d771d8a198998141e3c405ed2@mail.gmail.com> Message-ID: <20191120232603.GA971@bill-the-cat> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Wed, Nov 20, 2019 at 02:50:53PM -0800, Vladimir Olovyannikov wrote: > Hi Tom, > > > -----Original Message----- > > From: Tom Rini [mailto:trini at konsulko.com] > > Sent: Tuesday, November 19, 2019 12:38 PM > > To: Vladimir Olovyannikov > > Cc: u-boot at lists.denx.de; Suji Velupiallai > ; > > Heinrich Schuchardt > > Subject: Re: [U-Boot] [PATCH v1 1/1] cmd: adding malloc, math, and > strcmp > > commands to u-boot > > > > On Mon, Nov 18, 2019 at 04:26:30PM -0800, Vladimir Olovyannikov wrote: > > > > > cmd: adding malloc, math, and strcmp u-boot commands. > > > - malloc supports allocation of heap memory and free allocated memory > > > via u-boot command line. > > > > Can you expand on how this is used in a script? I'm not sure I see that > > exactly. > I am upstreaming the new bcm platform. Here is an excerpt from the script > which uses > these: > #define SD_UPDATE \ > "sd_update="\ > "if malloc tmp 2000; then "\ > "else "\ > "echo [sd_update] malloc 2000 bytes ** FAILED **;"\ > "exit;"\ > "fi;"\ > "if fatload mmc ${sd_device_number} ${tmp} "\ > "${sd_update_prefix}.sd-update; then "\ > "else "\ > "echo [sd_update] fatload ${sd_update_prefix}.sd-update "\ > "** FAILED **;"\ > "exit;"\ > "fi;"\ > "if source ${tmp}; then "\ > "else "\ > "echo [sd_update] Executing script ** FAILED **;"\ > "exit;"\ > "fi;"\ > "if free tmp; then "\ > "else " \ > "echo [sd_update] free 2000 bytes ** FAILED **;"\ > "exit;"\ > "fi \0" > ; > "if math add filesize filesize 1FF; then "\ > "else "\ > "echo [mmc_flash_image_rsa] math add command ** FAILED > **;"\ > "exit;"\ > "fi;"\ > "if math div fileblocks filesize 200; then "\ > "else "\ > "echo [mmc_flash_image_rsa] math div command ** FAILED > **;"\ > "exit;"\ > "fi;"\ Ah, interesting. So you're malloc'ing the memory location that you load in to rather than the usual method of using known variables and locations for the SoC. I would discourage this as we generally do not have a large malloc pool available. > > Also: > > > +config CMD_MALLOC > > > + bool "malloc" > > > + default y > > > + help > > > + Supports allocation of heap memory and free allocated memory > > commands. > > > + These commands are used by u-boot scripts. > > > + > > > +config CMD_MATH > > > + bool "math" > > > + default y > > > + help > > > + Provides math commands such as add, sub, mul, div, shift, > > > + convert decimal to hex functionalities to be available in the > script. > > > > First, why do we need this, rather than using setexpr ? > I agree, the platform needs to use setexpr as it contains all math > operations. > > > > > + > > > config CMD_SOURCE > > > bool "source" > > > default y > > > @@ -1301,6 +1315,13 @@ config CMD_SETEXPR > > > Also supports loading the value at a memory location into a > variable. > > > If CONFIG_REGEX is enabled, setexpr also supports a gsub > function. > > > > > > +config CMD_STRCMP > > > + bool "strcmp" > > > + default y > > > + help > > > + Provides string compare command feature to u-boot scripts. > > > > Second, new commands must not default to y, but they should be enabled > > on sandbox and new test.py tests added for them. Thanks! > OK, thank you. > Is there an example/doc on how to enable these on sandbox and to provide > tests? Unfortunately there is not (but would be greatly appreciated). There are a lot of examples under test/py/ however. Thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 833 bytes Desc: not available URL: