changeset 2363:f0b2da61ab63

Fix for boot vectors on LPC2xxx platforms - on behalf of Sergei Gavrikov and Wang Cui
author gthomas
date Sun, 04 Feb 2007 00:16:42 +0000
parents a49761badbf1
children 028e0fe198b5
files packages/hal/arm/arch/current/ChangeLog packages/hal/arm/arch/current/src/vectors.S packages/hal/arm/lpc2xxx/var/current/ChangeLog packages/hal/arm/lpc2xxx/var/current/cdl/hal_arm_lpc2xxx.cdl
diffstat 4 files changed, 36 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/packages/hal/arm/arch/current/ChangeLog
+++ b/packages/hal/arm/arch/current/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-03  Sergei Gavrikov  <sg@sgs.gomel.by>
+
+	* src/vectors.S: Added a possibility to fix ARM vector 0x14
+	(unused vector). Some platforms need itself in that.
+
 2007-01-09  Sergei Gavrikov  <sg@sgs.gomel.by>
 
 	* src/arm-stub.c: Added string.h header (`memcpy' declaration).
--- a/packages/hal/arm/arch/current/src/vectors.S
+++ b/packages/hal/arm/arch/current/src/vectors.S
@@ -206,7 +206,11 @@
         ldr     pc,.software_interrupt          // 0x08 start && software int
         ldr     pc,.abort_prefetch              // 0x0C
         ldr     pc,.abort_data                  // 0x10
+#ifdef CYGNUM_HAL_ARM_VECTOR_0x14
+        .word   CYGNUM_HAL_ARM_VECTOR_0x14
+#else
         .word   0                               // unused
+#endif
         ldr     pc,.IRQ                         // 0x18
         ldr     pc,.FIQ                         // 0x1C
 
--- a/packages/hal/arm/lpc2xxx/var/current/ChangeLog
+++ b/packages/hal/arm/lpc2xxx/var/current/ChangeLog
@@ -1,3 +1,12 @@
+2006-02-03  Sergei Gavrikov <sg@sgs.gomel.by>
+
+	* cdl/hal_arm_lpc2xxx.cdl: Added CYGNUM_HAL_ARM_VECTOR_0x14. That
+	gives us a chance to correct a LPC2XXX program signature (ARM
+	unused vector at 0x14).  The program signature is the two's
+	compliment of the checksum of the ARM7 vector table. Note:
+	you can quite overwrite that CDL value in your plf. startup
+	code (hal_platform_setup.h).
+
 2006-05-08  Andy Jackson <andy@grapevinetech.co.uk>
  
 	* src/lpc2xxx_misc.c: Fixed issue with VPBDIV initialisation on
--- a/packages/hal/arm/lpc2xxx/var/current/cdl/hal_arm_lpc2xxx.cdl
+++ b/packages/hal/arm/lpc2xxx/var/current/cdl/hal_arm_lpc2xxx.cdl
@@ -112,6 +112,24 @@ cdl_package CYGPKG_HAL_ARM_LPC2XXX {
         }
     }
 
+    # Important! Be very careful changing this value. That will always
+    # enter the LPC2XXX bootloader after reset and consequently will
+    # never run your code. You must know what you are doing. Look at
+    # arch. vectors.S for details.
+    cdl_option CYGNUM_HAL_ARM_VECTOR_0x14 {
+        display       "ARM vector at 0x14"
+        flavor        data
+        default_value 0xB4405F62
+        legal_values  0 to 0xFFFFFFFF
+        description "
+           In order to detect if a valid program is present, every
+           user program must have a program signature. This signature
+           is a word-wide number that is stored in the unused
+           location in the ARM7 vector table at 0x00000014. The
+           program signature is the two's compliment of the checksum
+           of the ARM vector table."
+    }
+
     cdl_option CYGNUM_HAL_ARM_LPC2XXX_VPBDIV {
         display       "VPB clock divisor"
         flavor        data