when building for SUBARCH=cortexm3, fails with:

make[3]: *** No rule to make target `thumb2_bare.ppu', needed by `fpc_units'. Stop.



On 08/26/2011 05:09 PM, David Welch wrote:
Another diff to be considered.


Index: rtl/embedded/arm/arm_bare_ram.pp
===================================================================
--- rtl/embedded/arm/arm_bare_ram.pp    (revision 0)
+++ rtl/embedded/arm/arm_bare_ram.pp    (revision 0)
@@ -0,0 +1,63 @@
+{
+Startup code for a simple ram-only ARM
+David Welch 2011 08 26  (dwelch at dwelch com)
+based on lpc21x4 created by Sten Larsson (sten_larsson at yahoo com)
+}
+
+unit arm_bare_ram;
+
+{$goto on}
+
+  interface
+
+  implementation
+
+    procedure PASCALMAIN; external name 'PASCALMAIN';
+
+    procedure _FPC_haltproc; assembler; nostackframe; public name '_haltproc';
+      asm
+      .Lhalt:
+        b .Lhalt
+      end;
+
+    var
+      _stack_top: record end; external name '_stack_top';
+      _bss_start: record end; external name '_bss_start';
+      _bss_end: record end; external name '_bss_end';
+
+    procedure _FPC_start; assembler; nostackframe;
+      label
+        _start;
+      asm
+        .init
+        .align 16
+        .globl _start
+    _start:
+        ldr sp,.L_stack_top
+        // clear onboard ram
+        ldr r1,.L_bss_start
+        ldr r2,.L_bss_end
+        mov r0,#0
+.Lzeroloop:
+        cmp r1,r2
+        strls r0,[r1],#4
+        bls .Lzeroloop
+
+        bl PASCALMAIN
+        bl _FPC_haltproc
+    .L_hang:
+        b .L_hang
+.L_bss_start:
+        .long _bss_start
+.L_bss_end:
+        .long _bss_end
+
+
+
+.L_stack_top:
+        .long _stack_top
+        .text
+      end;
+
+end.
+
Index: rtl/embedded/Makefile.fpc
===================================================================
--- rtl/embedded/Makefile.fpc   (revision 18855)
+++ rtl/embedded/Makefile.fpc   (working copy)
@@ -53,7 +53,7 @@
  endif

  ifeq ($(SUBARCH),armv7)
-CPU_UNITS=lpc21x4 at91sam7x256
+CPU_UNITS=lpc21x4 at91sam7x256 arm_bare_ram
  endif
  endif

Index: rtl/embedded/Makefile
===================================================================
--- rtl/embedded/Makefile       (revision 18855)
+++ rtl/embedded/Makefile       (working copy)
@@ -317,8 +317,8 @@
  ifeq ($(SUBARCH),cortexm3)
  CPU_UNITS=lm3fury lm3tempest thumb2_bare stm32f103
  endif
-ifeq ($(SUBARCH),armv7)
-CPU_UNITS=lpc21x4 at91sam7x256
+ifeq ($(SUBARCH),armv4)
+CPU_UNITS=lpc21x4 at91sam7x256 arm_bare_ram
  endif
  endif
  ifeq ($(ARCH),avr)
Index: compiler/arm/cpuinfo.pas
===================================================================
--- compiler/arm/cpuinfo.pas    (revision 18855)
+++ compiler/arm/cpuinfo.pas    (working copy)
@@ -61,6 +61,8 @@
     tcontrollertype =
       (ct_none,

+      ct_arm_bare_ram,
+
        { Phillips }
        ct_lpc2114,
        ct_lpc2124,
@@ -212,7 +214,19 @@
          sramsize:0
        ),

+
          (
+       controllertypestr:'ARM_BARE_RAM';
+        controllerunitstr:'ARM_BARE_RAM';
+        interruptvectors:8;
+       flashbase:$00000000;
+        flashsize:$00000000;
+        srambase:$D6000000;
+        sramsize:$0000C000
+        ),
+
+
+        (
        controllertypestr:'LPC2114';
          controllerunitstr:'LPC21x4';
          interruptvectors:8;
Index: compiler/systems/t_embed.pas
===================================================================
--- compiler/systems/t_embed.pas        (revision 18855)
+++ compiler/systems/t_embed.pas        (working copy)
@@ -220,6 +220,7 @@
        ct_none:
             begin
             end;
+      ct_arm_bare_ram,
        ct_lpc2114,
        ct_lpc2124,
        ct_lpc2194,
@@ -312,16 +313,19 @@
                Add('MEMORY');
                Add('{');

-              LinkStr := '    flash : ORIGIN = 0x' + IntToHex(flashbase,8)
-                + ', LENGTH = ' + IntToStr(flashsize div 1024)+'K';
-              Add(LinkStr);
+              if(flashsize<>0) then
+                begin
+                  LinkStr := '    flash : ORIGIN = 0x' + IntToHex(flashbase,8)
+                    + ', LENGTH = ' + IntToStr(flashsize div 1024)+'K';
+                  Add(LinkStr);
+                end;

                LinkStr := '    ram : ORIGIN = 0x' + IntToHex(srambase,8)
                        + ', LENGTH = ' + IntToStr(sramsize div 1024)+'K';
                Add(LinkStr);

                Add('}');
-              Add('_stack_top = 0x' + IntToHex(sramsize+srambase-4,8) + ';');
+              Add('_stack_top = 0x' + IntToHex(sramsize+srambase,8) + ';');
              end;
          end
      else
@@ -329,6 +333,8 @@
                 internalerror(200902011);
    end;

+
+  with embedded_controllers[current_settings.controllertype] do
    with linkres do
      begin
        Add('SECTIONS');
@@ -341,14 +347,28 @@
        Add('    *(.rodata, .rodata.*)');
        Add('    *(.comment)');
        Add('    _etext = .;');
-      Add('    }>flash');
+      if(flashsize<>0) then
+        begin
+          Add('    }>flash');
+        end
+      else
+        begin
+          Add('    }>ram');
+        end;
        Add('    .data :');
        Add('    {');
        Add('    _data = .;');
        Add('    *(.data, .data.*)');
        Add('    KEEP (*(.fpc .fpc.n_version .fpc.n_links))');
        Add('    _edata = .;');
-      Add('    }>ram AT>flash');
+      if(flashsize<>0) then
+        begin
+          Add('    }>ram AT>flash');
+        end
+      else
+        begin
+          Add('    }>ram');
+        end;
        Add('    .bss :');
        Add('    {');
        Add('    _bss_start = .;');
@@ -360,6 +380,7 @@
        Add('}');
        Add('_end = .;');
      end;
+
  {$endif ARM}

  {$ifdef i386}

On Fri, Aug 26, 2011 at 10:53 AM, David Welch<dwe...@dwelch.com>  wrote:
need to apply this patch, like the wiki thing maybe there is a place I
have to sign up to be able to check in to svn, otherwise.  The lpc and
sam7 parts are ARM7TDMI which is an armv4t not remotely able to
support the armv7 instructions.  the correction also needs to be made
to allow armv7m or cortexm3.  If we are going to mix the architecture
(armv7m) and marketings name for the core (cortexm3) we should be
consistent and start doing things like provide an arm7tdmi for the
other two families.  LIkewise anywhere it says if cortexm3 it should
say if cortexm3 or armv7m then.  if armv4 or if armv4t or if arm7tdmi
then...   Ideally not use the name cortexm3 and instead only use
armv7m.  Have a wiki page or readme that says if stellaris or stm32 or
lpc1xxx then armv7m if lpc2xxx or sam7 or generic arm then armv4...


Index: rtl/embedded/Makefile
===================================================================
--- rtl/embedded/Makefile       (revision 18854)
+++ rtl/embedded/Makefile       (working copy)
@@ -317,7 +317,7 @@
  ifeq ($(SUBARCH),cortexm3)
  CPU_UNITS=lm3fury lm3tempest thumb2_bare stm32f103
  endif
-ifeq ($(SUBARCH),armv7)
+ifeq ($(SUBARCH),armv4)
  CPU_UNITS=lpc21x4 at91sam7x256
  endif
  endif


On Fri, Aug 26, 2011 at 5:17 AM, John Clymer<j...@johnclymer.net>  wrote:
Part of what I submitted was 2 batch files in the root directory -
buildarm.bat and buildthumb2.bat - that was my attempt to provide an example
with the BINUTILS equates spelled out.

John


________________________________
From: David Welch<dwe...@dwelch.com>
To: FPC developers' list<fpc-devel@lists.freepascal.org>
Sent: Fri, August 26, 2011 6:17:43 AM
Subject: Re: [fpc-devel] DIFF patch for changing to table driven processor
definitions for ARM


Can someone with the power to update the wiki (maybe we all do I dont know)
change the target embedded page to reflect the SUBARCH thing?

Also either put a link to

http://wiki.lazarus.freepascal.org/Binutils

or spell out something like this:

./configure --target=arm-linux --prefix=/something/something/
--program-prefix=arm-embedded- --disable-werror

For the non-windows folks so we can play too.  Too me a while to figure out
why I was not even able to build per the target embedded instructions.

Thanks,
David

On 08/25/2011 10:13 PM, David Welch wrote:
cpuinfo.pas(156,2) Fatal: Can't open include file "controllerunit.inc"

On 08/25/2011 05:50 PM, Florian Klämpfl wrote:
OS_TARGET=embedded CPU_TARGET=arm SUBARCH=cortexm3

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel



_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel
.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to