diff mbox

[U-Boot,V2,2/2] odroid: Add boot script (boot.scr) support

Message ID 1444036039-9104-3-git-send-email-guillaume.gardet@free.fr
State Superseded
Delegated to: Minkyu Kang
Headers show

Commit Message

Guillaume GARDET Oct. 5, 2015, 9:07 a.m. UTC
Add boot script (boot.scr) support. If no boot script are 
found, it boots as usual.

Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
Cc: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>

---
 include/configs/odroid.h | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Sjoerd Simons Oct. 5, 2015, 9:13 a.m. UTC | #1
On Mon, 2015-10-05 at 11:07 +0200, Guillaume GARDET wrote:
> Add boot script (boot.scr) support. If no boot script are 
> found, it boots as usual.

Instead of extending the specialized boot script, it would belovely to
see the odroid board switch to distro boot commands for a more
standardized boot sequence.

For reference, if you need an example how to add that while staying
backwards compatible see my patchset for am335x boards which did
something like that: 

http://lists.denx.de/pipermail/u-boot/2015-August/225656.html

> Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
> Cc: Przemyslaw Marczak <p.marczak@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> 
> ---
>  include/configs/odroid.h | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/include/configs/odroid.h b/include/configs/odroid.h
> index e45b00e..f79847b 100644
> --- a/include/configs/odroid.h
> +++ b/include/configs/odroid.h
> @@ -108,6 +108,8 @@
>   * 2.  ROOT:  -
>  */
>  #define CONFIG_EXTRA_ENV_SETTINGS \
> +	"loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart}
> ${scriptaddr} " \
> +		"boot.scr\0" \
>  	"loadkernel=load mmc ${mmcbootdev}:${mmcbootpart}
> ${kerneladdr} " \
>  		"${kernelname}\0" \
>  	"loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart}
> ${initrdaddr} " \
> @@ -129,6 +131,9 @@
>  	"kernel_args=" \
>  		"setenv bootargs
> root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
>  		" rootwait ${console} ${opts}\0" \
> +	"boot_script=" \
> +		"run loadbootscript;" \
> +		"source ${scriptaddr}\0" \
>  	"boot_fit=" \
>  		"setenv kerneladdr 0x42000000;" \
>  		"setenv kernelname Image.itb;" \
> @@ -152,6 +157,9 @@
>  		"run kernel_args;" \
>  		"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0"
> \
>  	"autoboot=" \
> +		"if test -e mmc 0 boot.scr; then; " \
> +			"run boot_script; " \
> +		"fi; " \
>  		"if test -e mmc 0 Image.itb; then; " \
>  			"run boot_fit;" \
>  		"elif test -e mmc 0 zImage; then; " \
> @@ -171,6 +179,7 @@
>  	"consoleoff=set console console=ram; save; reset\0" \
>  	"initrdname=uInitrd\0" \
>  	"initrdaddr=42000000\0" \
> +	"scriptaddr=0x42000000\0" \
>  	"fdtaddr=40800000\0"
>  
>  /* I2C */
Guillaume GARDET Oct. 8, 2015, 9:31 a.m. UTC | #2
Le 05/10/2015 11:13, Sjoerd Simons a écrit :
> On Mon, 2015-10-05 at 11:07 +0200, Guillaume GARDET wrote:
>> Add boot script (boot.scr) support. If no boot script are
>> found, it boots as usual.
> Instead of extending the specialized boot script, it would belovely to
> see the odroid board switch to distro boot commands for a more
> standardized boot sequence.

This would be a better solution but also a much bigger work.
Morevover, the backward compatibility will be harder to verify.
So, for now, I will stick with this patch. But if you want to do it, please do it. :)

Guillaume


>
> For reference, if you need an example how to add that while staying
> backwards compatible see my patchset for am335x boards which did
> something like that:
>
> http://lists.denx.de/pipermail/u-boot/2015-August/225656.html
>
>> Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
>> Cc: Przemyslaw Marczak <p.marczak@samsung.com>
>> Cc: Minkyu Kang <mk7.kang@samsung.com>
>>
>> ---
>>   include/configs/odroid.h | 9 +++++++++
>>   1 file changed, 9 insertions(+)
>>
>> diff --git a/include/configs/odroid.h b/include/configs/odroid.h
>> index e45b00e..f79847b 100644
>> --- a/include/configs/odroid.h
>> +++ b/include/configs/odroid.h
>> @@ -108,6 +108,8 @@
>>    * 2.  ROOT:  -
>>   */
>>   #define CONFIG_EXTRA_ENV_SETTINGS \
>> +	"loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart}
>> ${scriptaddr} " \
>> +		"boot.scr\0" \
>>   	"loadkernel=load mmc ${mmcbootdev}:${mmcbootpart}
>> ${kerneladdr} " \
>>   		"${kernelname}\0" \
>>   	"loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart}
>> ${initrdaddr} " \
>> @@ -129,6 +131,9 @@
>>   	"kernel_args=" \
>>   		"setenv bootargs
>> root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
>>   		" rootwait ${console} ${opts}\0" \
>> +	"boot_script=" \
>> +		"run loadbootscript;" \
>> +		"source ${scriptaddr}\0" \
>>   	"boot_fit=" \
>>   		"setenv kerneladdr 0x42000000;" \
>>   		"setenv kernelname Image.itb;" \
>> @@ -152,6 +157,9 @@
>>   		"run kernel_args;" \
>>   		"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0"
>> \
>>   	"autoboot=" \
>> +		"if test -e mmc 0 boot.scr; then; " \
>> +			"run boot_script; " \
>> +		"fi; " \
>>   		"if test -e mmc 0 Image.itb; then; " \
>>   			"run boot_fit;" \
>>   		"elif test -e mmc 0 zImage; then; " \
>> @@ -171,6 +179,7 @@
>>   	"consoleoff=set console console=ram; save; reset\0" \
>>   	"initrdname=uInitrd\0" \
>>   	"initrdaddr=42000000\0" \
>> +	"scriptaddr=0x42000000\0" \
>>   	"fdtaddr=40800000\0"
>>   
>>   /* I2C */
Przemyslaw Marczak Oct. 9, 2015, 10:18 a.m. UTC | #3
Hi Sjoerd,

On 10/05/2015 11:13 AM, Sjoerd Simons wrote:
> On Mon, 2015-10-05 at 11:07 +0200, Guillaume GARDET wrote:
>> Add boot script (boot.scr) support. If no boot script are
>> found, it boots as usual.
>
> Instead of extending the specialized boot script, it would belovely to
> see the odroid board switch to distro boot commands for a more
> standardized boot sequence.
>
> For reference, if you need an example how to add that while staying
> backwards compatible see my patchset for am335x boards which did
> something like that:
>
> http://lists.denx.de/pipermail/u-boot/2015-August/225656.html
>

You're right. I will move it some day as it is in XU3, but for now I 
have some other things to do, so I prefer accept this patch. It's only 
few lines.

>> Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
>> Cc: Przemyslaw Marczak <p.marczak@samsung.com>
>> Cc: Minkyu Kang <mk7.kang@samsung.com>
>>
>> ---
>>   include/configs/odroid.h | 9 +++++++++
>>   1 file changed, 9 insertions(+)
>>
>> diff --git a/include/configs/odroid.h b/include/configs/odroid.h
>> index e45b00e..f79847b 100644
>> --- a/include/configs/odroid.h
>> +++ b/include/configs/odroid.h
>> @@ -108,6 +108,8 @@
>>    * 2.  ROOT:  -
>>   */
>>   #define CONFIG_EXTRA_ENV_SETTINGS \
>> +	"loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart}
>> ${scriptaddr} " \
>> +		"boot.scr\0" \
>>   	"loadkernel=load mmc ${mmcbootdev}:${mmcbootpart}
>> ${kerneladdr} " \
>>   		"${kernelname}\0" \
>>   	"loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart}
>> ${initrdaddr} " \
>> @@ -129,6 +131,9 @@
>>   	"kernel_args=" \
>>   		"setenv bootargs
>> root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
>>   		" rootwait ${console} ${opts}\0" \
>> +	"boot_script=" \
>> +		"run loadbootscript;" \
>> +		"source ${scriptaddr}\0" \
>>   	"boot_fit=" \
>>   		"setenv kerneladdr 0x42000000;" \
>>   		"setenv kernelname Image.itb;" \
>> @@ -152,6 +157,9 @@
>>   		"run kernel_args;" \
>>   		"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0"
>> \
>>   	"autoboot=" \
>> +		"if test -e mmc 0 boot.scr; then; " \
>> +			"run boot_script; " \
>> +		"fi; " \
>>   		"if test -e mmc 0 Image.itb; then; " \
>>   			"run boot_fit;" \
>>   		"elif test -e mmc 0 zImage; then; " \
>> @@ -171,6 +179,7 @@
>>   	"consoleoff=set console console=ram; save; reset\0" \
>>   	"initrdname=uInitrd\0" \
>>   	"initrdaddr=42000000\0" \
>> +	"scriptaddr=0x42000000\0" \
>>   	"fdtaddr=40800000\0"
>>
>>   /* I2C */
>

Best regards,
Przemyslaw Marczak Oct. 9, 2015, 10:24 a.m. UTC | #4
Hello Guillaume,

On 10/05/2015 11:07 AM, Guillaume GARDET wrote:
> Add boot script (boot.scr) support. If no boot script are
> found, it boots as usual.
>
> Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
> Cc: Przemyslaw Marczak <p.marczak@samsung.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
>
> ---
>   include/configs/odroid.h | 9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/include/configs/odroid.h b/include/configs/odroid.h
> index e45b00e..f79847b 100644
> --- a/include/configs/odroid.h
> +++ b/include/configs/odroid.h
> @@ -108,6 +108,8 @@
>    * 2.  ROOT:  -
>   */
>   #define CONFIG_EXTRA_ENV_SETTINGS \
> +	"loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} " \
> +		"boot.scr\0" \
>   	"loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \
>   		"${kernelname}\0" \
>   	"loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
> @@ -129,6 +131,9 @@
>   	"kernel_args=" \
>   		"setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
>   		" rootwait ${console} ${opts}\0" \
> +	"boot_script=" \
> +		"run loadbootscript;" \
> +		"source ${scriptaddr}\0" \
>   	"boot_fit=" \
>   		"setenv kerneladdr 0x42000000;" \
>   		"setenv kernelname Image.itb;" \
> @@ -152,6 +157,9 @@
>   		"run kernel_args;" \
>   		"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
>   	"autoboot=" \
> +		"if test -e mmc 0 boot.scr; then; " \
> +			"run boot_script; " \
> +		"fi; " \

Why you not use "elif"?  Last time I gave you the correct version:

"if test -e mmc 0 boot.scr; then; " \
     "run bootscript; " \
"elif test -e mmc 0 Image.itb; then; " \

>   		"if test -e mmc 0 Image.itb; then; " \
>   			"run boot_fit;" \
>   		"elif test -e mmc 0 zImage; then; " \
> @@ -171,6 +179,7 @@
>   	"consoleoff=set console console=ram; save; reset\0" \
>   	"initrdname=uInitrd\0" \
>   	"initrdaddr=42000000\0" \
> +	"scriptaddr=0x42000000\0" \
>   	"fdtaddr=40800000\0"
>
>   /* I2C */
>

Best regards
Guillaume GARDET Oct. 9, 2015, 11:59 a.m. UTC | #5
Le 09/10/2015 12:24, Przemyslaw Marczak a écrit :
> Hello Guillaume,
>
> On 10/05/2015 11:07 AM, Guillaume GARDET wrote:
>> Add boot script (boot.scr) support. If no boot script are
>> found, it boots as usual.
>>
>> Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
>> Cc: Przemyslaw Marczak <p.marczak@samsung.com>
>> Cc: Minkyu Kang <mk7.kang@samsung.com>
>>
>> ---
>>   include/configs/odroid.h | 9 +++++++++
>>   1 file changed, 9 insertions(+)
>>
>> diff --git a/include/configs/odroid.h b/include/configs/odroid.h
>> index e45b00e..f79847b 100644
>> --- a/include/configs/odroid.h
>> +++ b/include/configs/odroid.h
>> @@ -108,6 +108,8 @@
>>    * 2.  ROOT:  -
>>   */
>>   #define CONFIG_EXTRA_ENV_SETTINGS \
>> +    "loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} " \
>> +        "boot.scr\0" \
>>       "loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \
>>           "${kernelname}\0" \
>>       "loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
>> @@ -129,6 +131,9 @@
>>       "kernel_args=" \
>>           "setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
>>           " rootwait ${console} ${opts}\0" \
>> +    "boot_script=" \
>> +        "run loadbootscript;" \
>> +        "source ${scriptaddr}\0" \
>>       "boot_fit=" \
>>           "setenv kerneladdr 0x42000000;" \
>>           "setenv kernelname Image.itb;" \
>> @@ -152,6 +157,9 @@
>>           "run kernel_args;" \
>>           "bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
>>       "autoboot=" \
>> +        "if test -e mmc 0 boot.scr; then; " \
>> +            "run boot_script; " \
>> +        "fi; " \
>
> Why you not use "elif"?  Last time I gave you the correct version:
>
> "if test -e mmc 0 boot.scr; then; " \
>     "run bootscript; " \
> "elif test -e mmc 0 Image.itb; then; " \

Because, if boot script fails, then it allows to try to boot kernel directly.
If you prefer the 'elif' version, I am fine with it.

If 'elif' version is preferred, would you be ok to modify it directly (faster) or would you like a V3?


Guillaume



>
>>           "if test -e mmc 0 Image.itb; then; " \
>>               "run boot_fit;" \
>>           "elif test -e mmc 0 zImage; then; " \
>> @@ -171,6 +179,7 @@
>>       "consoleoff=set console console=ram; save; reset\0" \
>>       "initrdname=uInitrd\0" \
>>       "initrdaddr=42000000\0" \
>> +    "scriptaddr=0x42000000\0" \
>>       "fdtaddr=40800000\0"
>>
>>   /* I2C */
>>
>
> Best regards
Przemyslaw Marczak Oct. 9, 2015, 12:18 p.m. UTC | #6
Hello,

On 10/09/2015 01:59 PM, Guillaume Gardet wrote:
>
>
> Le 09/10/2015 12:24, Przemyslaw Marczak a écrit :
>> Hello Guillaume,
>>
>> On 10/05/2015 11:07 AM, Guillaume GARDET wrote:
>>> Add boot script (boot.scr) support. If no boot script are
>>> found, it boots as usual.
>>>
>>> Signed-off-by: Guillaume GARDET <guillaume.gardet@free.fr>
>>> Cc: Przemyslaw Marczak <p.marczak@samsung.com>
>>> Cc: Minkyu Kang <mk7.kang@samsung.com>
>>>
>>> ---
>>>   include/configs/odroid.h | 9 +++++++++
>>>   1 file changed, 9 insertions(+)
>>>
>>> diff --git a/include/configs/odroid.h b/include/configs/odroid.h
>>> index e45b00e..f79847b 100644
>>> --- a/include/configs/odroid.h
>>> +++ b/include/configs/odroid.h
>>> @@ -108,6 +108,8 @@
>>>    * 2.  ROOT:  -
>>>   */
>>>   #define CONFIG_EXTRA_ENV_SETTINGS \
>>> +    "loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart}
>>> ${scriptaddr} " \
>>> +        "boot.scr\0" \
>>>       "loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr}
>>> " \
>>>           "${kernelname}\0" \
>>>       "loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr}
>>> " \
>>> @@ -129,6 +131,9 @@
>>>       "kernel_args=" \
>>>           "setenv bootargs
>>> root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
>>>           " rootwait ${console} ${opts}\0" \
>>> +    "boot_script=" \
>>> +        "run loadbootscript;" \
>>> +        "source ${scriptaddr}\0" \
>>>       "boot_fit=" \
>>>           "setenv kerneladdr 0x42000000;" \
>>>           "setenv kernelname Image.itb;" \
>>> @@ -152,6 +157,9 @@
>>>           "run kernel_args;" \
>>>           "bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
>>>       "autoboot=" \
>>> +        "if test -e mmc 0 boot.scr; then; " \
>>> +            "run boot_script; " \
>>> +        "fi; " \
>>
>> Why you not use "elif"?  Last time I gave you the correct version:
>>
>> "if test -e mmc 0 boot.scr; then; " \
>>     "run bootscript; " \
>> "elif test -e mmc 0 Image.itb; then; " \
>
> Because, if boot script fails, then it allows to try to boot kernel
> directly.
> If you prefer the 'elif' version, I am fine with it.

I think, that only one boot path should be chosen at each boot.
Even if boot script will fail, it means, that the boot path was found, 
and loading uImage directly is not preferred - since maybe something can 
be missing then.

If user wants boot from script, then he puts it to disk, if not then he 
can choose one of supported image type, but not all at a time.

>
> If 'elif' version is preferred, would you be ok to modify it directly
> (faster) or would you like a V3?
>
>
> Guillaume
>

I suggested that version to you in last review. I would like to apply 
locally the patch and test, if can compile with no error/warning, make 
test of run the board and test of booting the kernel. And after positive 
test sequence, your patch will be acked, and then can be taken by Minkyu.

So yes, please send the correct version.

>
>
>>
>>>           "if test -e mmc 0 Image.itb; then; " \
>>>               "run boot_fit;" \
>>>           "elif test -e mmc 0 zImage; then; " \
>>> @@ -171,6 +179,7 @@
>>>       "consoleoff=set console console=ram; save; reset\0" \
>>>       "initrdname=uInitrd\0" \
>>>       "initrdaddr=42000000\0" \
>>> +    "scriptaddr=0x42000000\0" \
>>>       "fdtaddr=40800000\0"
>>>
>>>   /* I2C */
>>>
>>
>> Best regards
>
>

Best regards
diff mbox

Patch

diff --git a/include/configs/odroid.h b/include/configs/odroid.h
index e45b00e..f79847b 100644
--- a/include/configs/odroid.h
+++ b/include/configs/odroid.h
@@ -108,6 +108,8 @@ 
  * 2.  ROOT:  -
 */
 #define CONFIG_EXTRA_ENV_SETTINGS \
+	"loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} " \
+		"boot.scr\0" \
 	"loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} " \
 		"${kernelname}\0" \
 	"loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} " \
@@ -129,6 +131,9 @@ 
 	"kernel_args=" \
 		"setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
 		" rootwait ${console} ${opts}\0" \
+	"boot_script=" \
+		"run loadbootscript;" \
+		"source ${scriptaddr}\0" \
 	"boot_fit=" \
 		"setenv kerneladdr 0x42000000;" \
 		"setenv kernelname Image.itb;" \
@@ -152,6 +157,9 @@ 
 		"run kernel_args;" \
 		"bootz ${kerneladdr} ${initrd_addr} ${fdt_addr};\0" \
 	"autoboot=" \
+		"if test -e mmc 0 boot.scr; then; " \
+			"run boot_script; " \
+		"fi; " \
 		"if test -e mmc 0 Image.itb; then; " \
 			"run boot_fit;" \
 		"elif test -e mmc 0 zImage; then; " \
@@ -171,6 +179,7 @@ 
 	"consoleoff=set console console=ram; save; reset\0" \
 	"initrdname=uInitrd\0" \
 	"initrdaddr=42000000\0" \
+	"scriptaddr=0x42000000\0" \
 	"fdtaddr=40800000\0"
 
 /* I2C */