changeset 3170:07b48df106b8

Fixed memory layout for FlexBus memory. Add different pin options
author vae
date Wed, 09 May 2012 22:19:42 +0000
parents d739dc63d0e7
children 2b52d32bce99
files packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/ChangeLog packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/cdl/hal_cortexm_kinetis_twr_k60n512_fxm.cdl packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_sram2s_extram_rom.h packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_sram2s_extram_rom.ldi packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_unisram_extram.h packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_unisram_extram.ldi packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/src/twr_k60n512_fxm_misc.c
diffstat 7 files changed, 80 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/ChangeLog
+++ b/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/ChangeLog
@@ -1,3 +1,14 @@
+2012-01-06 Ilija Kocho  <ilijak@siva.com.mk>
+
+	* cdl/hal_cortexm_kinetis_twr_k60n512_fxm.cdl,
+	* include/pkgconf/mlt_kinetis_flash_sram2s_extram_rom.h
+	* include/pkgconf/mlt_kinetis_flash_sram2s_extram_rom.ldi
+	* include/pkgconf/mlt_kinetis_flash_unisram_extram_rom.h
+	* include/pkgconf/mlt_kinetis_flash_unisram_extram_rom.ldi
+	* /src/twr_k60n512_fxm_misc.c
+	Fixed memory layout for FlexBus memory. Add different pin options
+	[Bugzilla 1001579]
+
 2012-01-06 Ilija Kocho  <ilijak@siva.com.mk>
 
 	* cdl/hal_cortexm_kinetis_twr_k60n512_fxm.cdl:
--- a/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/cdl/hal_cortexm_kinetis_twr_k60n512_fxm.cdl
+++ b/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/cdl/hal_cortexm_kinetis_twr_k60n512_fxm.cdl
@@ -54,10 +54,6 @@ cdl_package CYGPKG_HAL_CORTEXM_KINETIS_T
     hardware
     requires      { CYGHWR_HAL_CORTEXM_SYSTICK_CLK_SOURCE == "INTERNAL" }
 
-    implements    CYGINT_IO_SERIAL_FREESCALE_UART4
-    implements    CYGINT_HAL_FREESCALE_UART4
-#    implements    CYGINT_IO_SERIAL_FREESCALE_UART3
-#    implements    CYGINT_HAL_FREESCALE_UART3
     implements    CYGINT_HAL_CORTEXM_KINETIS_RTC
 
     description   "
@@ -69,6 +65,8 @@ cdl_package CYGPKG_HAL_CORTEXM_KINETIS_T
 
     compile       twr_k60n512_fxm_misc.c
 
+    implements    CYGINT_HAL_CORTEXM4_CODE
+
     requires      { is_active(CYGPKG_DEVS_ETH_PHY) implies
         (1 == CYGHWR_DEVS_ETH_PHY_KSZ8041) }
     requires      { is_active(CYGPKG_HAL_FREESCALE_EDMA) implies
@@ -156,6 +154,34 @@ cdl_package CYGPKG_HAL_CORTEXM_KINETIS_T
         requires { CYGHWR_HAL_CORTEXM_KINETIS_RTC_OSC_CAP == 20 }
     }
 
+    cdl_option CYGOPT_HAL_KINETIS_UART3_IMPLEMENT {
+        display "Use UART3"
+        flavor bool
+        default_value { CYGHWR_HAL_KINETIS_FB_CS0_SIZE <= 0x00040000 }
+        active_if   { CYGHWR_HAL_KINETIS_FB_CS0_SIZE <= 0x00040000 }
+        implements    CYGINT_IO_SERIAL_FREESCALE_UART3
+        implements    CYGINT_HAL_FREESCALE_UART3
+        description "
+            FlexBus lines AD19 and AD18 are multiplxed with UART Rx and Tx
+            so we can't use UART3 if external RAM is larger than 1MiB.
+            If external RAM is less than 1MiB we use UART3 which
+            is compatible with single chip configuration."
+    }
+
+    cdl_option CYGOPT_HAL_KINETIS_UART4_IMPLEMENT {
+        display "Use UART4"
+        flavor bool
+#        calculated !CYGOPT_HAL_KINETIS_UART3_IMPLEMENT
+        default_value { CYGHWR_HAL_KINETIS_FB_CS0_SIZE > 0x00040000 }
+#        active_if   { CYGHWR_HAL_KINETIS_FB_CS0_SIZE > 0x00040000 }
+        implements    CYGINT_IO_SERIAL_FREESCALE_UART4
+        implements    CYGINT_HAL_FREESCALE_UART4
+        description "
+            FlexBus lines AD19 and AD18 are multiplxed with UART Rx and Tx
+            so we can't use UART3 if external RAM is larger than 1MiB.
+            Instead we use UART4"
+    }
+
     cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
         display      "Number of communication channels on the board"
         flavor       data
@@ -288,22 +314,16 @@ cdl_package CYGPKG_HAL_CORTEXM_KINETIS_T
     cdl_option CYGHWR_HAL_KINETIS_FB_CS0_SIZE {
         display "Size \[Bytes\]"
         flavor data
-        legal_values { CYGHWR_RAM0_MICRON_CELLULAR_SIZE 0x00100000 }
+        legal_values { 0x00040000  0x00400000 CYGHWR_RAM0_MICRON_CELLULAR_SIZE }
         parent CYGHWR_HAL_KINETIS_FB_CS0
-        default_value CYGHWR_RAM0_MICRON_CELLULAR_SIZE
+        default_value 0x00040000
     }
 
     cdl_option CYGHWR_HAL_KINETIS_FB_CS0_BASE {
         display "Memory base address"
         flavor data
         parent CYGHWR_HAL_KINETIS_FB_CS0
-        calculated { (CYGHWR_HAL_KINETIS_FB_CS0_SIZE ==
-                      CYGHWR_RAM0_MICRON_CELLULAR_SIZE) ?
-                      CYGHWR_HAL_KINETIS_FB_CS0_AR :
-                      CYGHWR_HAL_KINETIS_FB_CS0_AR +
-                      CYGHWR_RAM0_MICRON_CELLULAR_SIZE -
-                      CYGHWR_HAL_KINETIS_FB_CS0_SIZE
-                   }
+        calculated CYGHWR_HAL_KINETIS_FB_CS0_AR
     }
 
     cdl_component CYGHWR_HAL_KINETIS_FB_CS0_MR {
@@ -504,6 +524,18 @@ cdl_package CYGPKG_HAL_CORTEXM_KINETIS_T
 # CS0 Implementation End
 # FlexBus  Implementation End
 
+    cdl_option CYGHWR_HAL_KINETIS_FB_EXTRAM_SIZE {
+        display "External RAM size"
+        flavor data
+        calculated CYGHWR_HAL_KINETIS_FB_CS0_SIZE
+    }
+
+    cdl_option CYGHWR_HAL_KINETIS_FB_EXTRAM_BASE {
+        display "External RAM base address"
+        flavor data
+        calculated CYGHWR_HAL_KINETIS_FB_CS0_BASE
+    }
+
     cdl_option CYGHWR_FREESCALE_ENET_MII_MDC_HAL_CLOCK {
         display "ENET MII MDC clock provided by HAL"
         flavor data
--- a/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_sram2s_extram_rom.h
+++ b/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_sram2s_extram_rom.h
@@ -17,8 +17,8 @@
 #define CYGMEM_REGION_flash_SIZE (CYGHWR_HAL_KINETIS_FLASH_SIZE)
 #define CYGMEM_REGION_flash_ATTR (CYGMEM_REGION_ATTR_R)
 
-#define CYGMEM_REGION_ram (CYGHWR_HAL_KINETIS_FB_CS0_AR)
-#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_FB_CS0_SIZE)
+#define CYGMEM_REGION_ram (CYGHWR_HAL_KINETIS_FB_EXTRAM_BASE)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_FB_EXTRAM_SIZE)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 
 #ifndef __ASSEMBLER__
--- a/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_sram2s_extram_rom.ldi
+++ b/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_sram2s_extram_rom.ldi
@@ -8,7 +8,7 @@ MEMORY
     sram_l : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE
     sram_u : ORIGIN = 0x20000000, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
     flash  : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
-    ram    : ORIGIN = CYGHWR_HAL_KINETIS_FB_CS0_AR, LENGTH = CYGHWR_HAL_KINETIS_FB_CS0_SIZE
+    ram    : ORIGIN = CYGHWR_HAL_KINETIS_FB_EXTRAM_BASE, LENGTH = CYGHWR_HAL_KINETIS_FB_EXTRAM_SIZE
 }
 
 SECTIONS
--- a/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_unisram_extram.h
+++ b/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_unisram_extram.h
@@ -5,10 +5,18 @@
 #include <stddef.h>
 
 #endif
-#define CYGMEM_REGION_ram (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
-#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_ram (CYGHWR_HAL_KINETIS_FB_EXTRAM_BASE)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_FB_EXTRAM_SIZE)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 
+#define CYGMEM_REGION_sram (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_SIZE (CYGHWR_HAL_KINETIS_SRAM_SIZE)
+#define CYGMEM_REGION_sram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_flash (0x00000000)
+#define CYGMEM_REGION_flash_SIZE (CYGHWR_HAL_KINETIS_FLASH_SIZE)
+#define CYGMEM_REGION_flash_ATTR (CYGMEM_REGION_ATTR_R)
+
 #ifndef __ASSEMBLER__
 extern char CYG_LABEL_NAME (__heap1) [];
 #endif
--- a/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_unisram_extram.ldi
+++ b/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/include/pkgconf/mlt_kinetis_flash_unisram_extram.ldi
@@ -5,7 +5,7 @@
 
 MEMORY
 {
-    ram   : ORIGIN = 0x68000000, LENGTH = 0x01000000
+    ram   : ORIGIN = CYGHWR_HAL_KINETIS_FB_EXTRAM_BASE, LENGTH = CYGHWR_HAL_KINETIS_FB_EXTRAM_SIZE
     sram  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
     flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
 }
--- a/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/src/twr_k60n512_fxm_misc.c
+++ b/packages/hal/cortexm/kinetis/twr_k60n512_fxm/current/src/twr_k60n512_fxm_misc.c
@@ -231,15 +231,18 @@ static const cyg_uint32 const flexbus_pi
     CYGHWR_KINETIS_FB_PIN_AD14,
     CYGHWR_KINETIS_FB_PIN_AD15,
     CYGHWR_KINETIS_FB_PIN_AD16,
-    CYGHWR_KINETIS_FB_PIN_AD17,
+    CYGHWR_KINETIS_FB_PIN_AD17
+# if CYGHWR_HAL_KINETIS_FB_CS0_SIZE > 0x00040000
+    ,
     CYGHWR_KINETIS_FB_PIN_AD18,
     CYGHWR_KINETIS_FB_PIN_AD19,
-# if 1 //CYGHWR_HAL_KINETIS_FB_CS0_SIZE > 0x00100000
     CYGHWR_KINETIS_FB_PIN_AD20,
-    CYGHWR_KINETIS_FB_PIN_AD21,
+    CYGHWR_KINETIS_FB_PIN_AD21
+#  if CYGHWR_HAL_KINETIS_FB_CS0_SIZE > 0x00400000
+    ,
     CYGHWR_KINETIS_FB_PIN_AD22,
     CYGHWR_KINETIS_FB_PIN_AD23
-#  if 0 //!(CYGHWR_HAL_KINETIS_FB_CS_CR(0) & CYGHWR_HAL_FB_CSCR_BLS_M)
+#   if 0 //!(CYGHWR_HAL_KINETIS_FB_CS_CR(0) & CYGHWR_HAL_FB_CSCR_BLS_M)
     ,
     CYGHWR_KINETIS_FB_PIN_AD24,
     CYGHWR_KINETIS_FB_PIN_AD25,
@@ -249,8 +252,9 @@ static const cyg_uint32 const flexbus_pi
     CYGHWR_KINETIS_FB_PIN_AD29,
     CYGHWR_KINETIS_FB_PIN_AD30,
     CYGHWR_KINETIS_FB_PIN_AD31
-#  endif
-# endif // CYGHWR_HAL_KINETIS_FB_CS0_SIZE > 0x00100000
+#   endif
+#  endif  // CYGHWR_HAL_KINETIS_FB_CS0_SIZE > 0x00400000
+# endif // CYGHWR_HAL_KINETIS_FB_CS0_SIZE > 0x00040000
 };
 
 static const cyg_uint32 const flexbus_pins_final_diff[] = {