public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Ilija Kocho <ilijak@siva.com.mk>
To: Michael Jones <mjones@linear.com>
Cc: eCos Discussion <ecos-discuss@ecos.sourceware.org>
Subject: Re: [ECOS] Kinetis CYG_HAL_STARTUP_VAR conflict
Date: Sun, 02 Dec 2012 10:12:00 -0000	[thread overview]
Message-ID: <50BB299F.5070404@siva.com.mk> (raw)
In-Reply-To: <88A5F92E-1AE1-4246-B566-3EFE5DEA360B@linear.com>

[-- Attachment #1: Type: text/plain, Size: 2327 bytes --]

Hi Mike

On 01.12.2012 22:07, Michael Jones wrote:
> BACKGROUND
> ----------------------
>
> I am having a little bit of trouble trying to get my first hello world app on a K60 Tower Board.
>
> I have RedBoot running from ROM and I can ping the ethernet port, so presumably I will eventually get GDB to talk to it.
>
> I am having trouble building an initial app that uses the ROM monitor. Following the example in the eCos book, I went hunting for CYGSEM_HAL_USE_ROM_MONITOR, enabled it and then set startup to SRAM. This seems the obvious way to run and debug.
>
> PROBLEM
> --------------
>
> I am getting a conflict I don't know how to resolve. I have set CYG_HAL_STARTUP_VAR = SRAM. This results in CYG_HAL_STARTUP = SRAM by calculation.
>
> But I get a conflict from CYGSEM_HAL_USE_ROM_MONITOR that wants CYG_HAL_STARTUP == RAM
SRAM and RAM startups are not the same. RAM startup is intended for
using under control of RedBoot and has some special properties: RAM,
unlike other startup types uses RedBoot's vectors, etc...

SRAM startup is kind of "stand-alone" in a way it does not depend on
RedBoot (but depends on JTAG debugger)

> QUESTIONS
> -----------------
>
> 1) Can I ignore this conflict and get the monitor and app to work?
I'm afraid not because, SRAM startup collides with RedBoot.
>
> 2) Is there a better approach?
The right approach is to create RAM startup. It could live on variant
level and be available to all Kinetis platforms (though some may have
too little memory to utilize it).
The attached patches should produce proper variant-level RAM startup.

I did not add it from beginning since I consider internal SRAM too
little for practical work, seems that other people have different view.
You are not the first to look for.
This being said, I am considering to add this startup to the main
repository. Would you open a Bug on Bugzilla?

>
> 3) Has anyone succeeded to use RedBoot on the K60 and can you supply an example config project that works that I can look at?
You may want to try this:
http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001623 but beware, it
is experimental, and at present it may be broken as it's not synced with
recent Kinetis patches.
Take care not to lock your Kinetis flash - You have been warned :)

I hope this helps and I would appreciate feedback.

Regards
Ilija

[-- Attachment #2: kinetis_var_ram-startup_cdl_121202.diff --]
[-- Type: text/x-patch, Size: 1331 bytes --]

diff -ruN -x CVS -x '.*' ecos/packages/hal/cortexm/kinetis/var/current/cdl/hal_cortexm_kinetis.cdl ecos_kin_jones/packages/hal/cortexm/kinetis/var/current/cdl/hal_cortexm_kinetis.cdl
--- ecos/packages/hal/cortexm/kinetis/var/current/cdl/hal_cortexm_kinetis.cdl	2012-11-03 17:13:05.953836177 +0100
+++ ecos_kin_jones/packages/hal/cortexm/kinetis/var/current/cdl/hal_cortexm_kinetis.cdl	2012-12-01 22:37:50.159462935 +0100
@@ -209,7 +209,7 @@
         parent        CYG_HAL_STARTUP_ENV
         default_value { (CYG_HAL_STARTUP_PLF) && (CYG_HAL_STARTUP_PLF!="ByVariant") ?
                         "ByPlatform" : "ROM" }
-        legal_values  { "ROM" "SRAM" }
+        legal_values  { "ROM" "SRAM" "RAM" }
         active_if     ((!CYG_HAL_STARTUP_PLF) || (CYG_HAL_STARTUP_PLF=="ByVariant"))
         description   "
             'ROM' startup builds a stand-alone application which will
@@ -340,6 +340,8 @@
             . CYGHWR_HAL_CORTEXM_KINETIS_OC_MEM_LAYOUT  . "_rom" :
             (CYG_HAL_STARTUP == "SRAM") ? "kinetis_"
             . CYGHWR_HAL_CORTEXM_KINETIS_OC_MEM_LAYOUT  . "_sram" :
+            (CYG_HAL_STARTUP == "RAM") ? "kinetis_"
+            . CYGHWR_HAL_CORTEXM_KINETIS_OC_MEM_LAYOUT  . "_ram" :
             "undefined" }
         description "
             Combination of 'Startup type' and 'Kinetis part'

[-- Attachment #3: kinetis_var_ram-startup_mlt_121202.diff --]
[-- Type: text/x-patch, Size: 2985 bytes --]

diff -ruN -x CVS -x '.*' ecos/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_ram.h ecos_kin_jones/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_ram.h
--- ecos/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_ram.h	1970-01-01 01:00:00.000000000 +0100
+++ ecos_kin_jones/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_ram.h	2012-12-01 22:39:30.267467079 +0100
@@ -0,0 +1,18 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#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_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
+
+
diff -ruN -x CVS -x '.*' ecos/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_ram.ldi ecos_kin_jones/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_ram.ldi
--- ecos/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_ram.ldi	1970-01-01 01:00:00.000000000 +0100
+++ ecos_kin_jones/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_ram.ldi	2012-12-02 10:23:47.950382495 +0100
@@ -0,0 +1,34 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram  : 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
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (ram, 0x20000400 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE + 0xe000, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_sram (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = 0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE;


[-- Attachment #4: Type: text/plain, Size: 148 bytes --]

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

  parent reply	other threads:[~2012-12-02 10:12 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-01 21:07 Michael Jones
2012-12-02  7:13 ` Michael Jones
2012-12-02 10:12 ` Ilija Kocho [this message]
2012-12-02 15:44   ` Michael Jones
2012-12-02 16:52     ` Ilija Kocho
2012-12-02 17:53       ` Michael Jones
2012-12-02 19:14         ` Ilija Kocho
2012-12-02 20:58         ` Ilija Kocho
2012-12-03  0:01   ` Michael Jones
2012-12-03 19:13     ` Ilija Kocho
2012-12-04  2:18       ` Michael Jones
2012-12-04  2:31         ` Michael Jones
2012-12-04  5:32       ` Michael Jones
2012-12-04  8:42         ` Ilija Kocho
2012-12-04  8:51           ` Ilija Kocho

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50BB299F.5070404@siva.com.mk \
    --to=ilijak@siva.com.mk \
    --cc=ecos-discuss@ecos.sourceware.org \
    --cc=mjones@linear.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).