This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]