This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Default boot scripts in RedBoot
Gary Thomas wrote:
On Wed, 2003-12-10 at 08:35, Savin Zlobec wrote:
Gary Thomas wrote:
On Wed, 2003-12-10 at 07:47, Savin Zlobec wrote:
Hello,
I am using RedBoot configured with default boot script and it doesn't
work just like I expect it to. It looks to me that default boot script
timeout
(CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_TIMEOUT) is used
only when CYGSEM_REDBOOT_FLASH_CONFIG is not set. I use
flash config support in my configuration and when boot script is not set,
than the default boot script is used, but the timeout remains 0 which
aborts the script.
Also from the cdl option description one could expect that the default
value of
boot_script_timeout would be CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_TIMEOUT,
but it is 0.
Is this a feature or a bug ?
Perhaps the default timeout should always be set. In any case, if
you have 'fconfig' enabled, then the value stored in your config
database should be what gets used.
Try this patch and see if it behaves more like you'd like.
It looks fine, but the option I fancy is to set boot_script_timeout default
value to CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_VALUE
and to set script_timeout to boot_script_timeout value regardless of
boot_script
value - so the default boot script can be aborted by setting
boot_script_timeout to 0.
Also to make this work boot_script_timeout option has to be always
enabled if
default boot script is set.
Sorry, but I'm not following what you are trying to accomplish.
Please reword it, describing how you want it to behave (without
referring to any of the variable/CDL names should help me understand).
What I need is a first time initialization script. I used redboot
default script option
for that, but I found that the script timeout was not set when flash
config was enabled.
Also I needed some way to disable this script after the first time - the
obvious way
was to set the script timeout to 0 from the initialization script, but I
found out
that the script timeout value stored in flash is used only when custom
boot script option is
enabled.
Here is what I did to make it work from me.
Index: fconfig.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/fconfig.c,v
retrieving revision 1.7
diff -u -r1.7 fconfig.c
--- fconfig.c 25 Nov 2003 11:54:41 -0000 1.7
+++ fconfig.c 11 Dec 2003 08:47:13 -0000
@@ -136,9 +136,13 @@
CYGNUM_REDBOOT_BOOT_SCRIPT_TIMEOUT_RESOLUTION,
"ms resolution)"),
boot_script_timeout,
+#ifndef CYGDAT_REDBOOT_DEFAULT_BOOT_SCRIPT
"boot_script", true,
+#else
+ ALWAYS_ENABLED, true,
+#endif
CONFIG_INT,
- 0
+ CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_TIMEOUT
);
#undef __cat
#undef _cat
@@ -1011,9 +1015,9 @@
}
config_ok = true;
flash_get_config("boot_script", &use_boot_script, CONFIG_BOOL);
+ flash_get_config("boot_script_timeout", &script_timeout, CONFIG_INT);
if (use_boot_script) {
flash_get_config("boot_script_data", &script, CONFIG_SCRIPT);
- flash_get_config("boot_script_timeout", &script_timeout, CONFIG_INT);
}
#ifdef CYGSEM_REDBOOT_VARIABLE_BAUD_RATE
if (flash_get_config("console_baud_rate", &console_baud_rate, CONFIG_INT)) {
Index: main.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/main.c,v
retrieving revision 1.50
diff -u -r1.50 main.c
--- main.c 24 Nov 2003 21:12:07 -0000 1.50
+++ main.c 11 Dec 2003 08:47:14 -0000
@@ -299,6 +299,10 @@
workspace_end -= CYGNUM_REDBOOT_FIS_ZLIB_COMMON_BUFFER_SIZE;
#endif
+#ifdef CYGFUN_REDBOOT_BOOT_SCRIPT
+ script_timeout = CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_TIMEOUT;
+#endif
+
for (init_entry = __RedBoot_INIT_TAB__; init_entry != &__RedBoot_INIT_TAB_END__; init_entry++) {
(*init_entry->fun)();
}
@@ -320,9 +324,6 @@
# ifdef CYGDAT_REDBOOT_DEFAULT_BOOT_SCRIPT
if (!script) {
script = CYGDAT_REDBOOT_DEFAULT_BOOT_SCRIPT;
-# ifndef CYGSEM_REDBOOT_FLASH_CONFIG
- script_timeout = CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_TIMEOUT;
-# endif
}
# endif
if (script) {
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss