MEGAWOOT: it just works \o/
authorBernhard Urban <lewurm@gmx.net>
Mon, 14 Dec 2009 07:21:12 +0000 (08:21 +0100)
committerBernhard Urban <lewurm@gmx.net>
Mon, 14 Dec 2009 07:21:12 +0000 (08:21 +0100)
instructions: first, type make to build the pkernel. ignore the
warnings.
then start frprog.py and ram pkernel into ram:
> ./frprog.py pkernel/pkernel.mhx

when its done, the first led should be on. next command:
> ./pkernel/kernel.py <your target mhx file>

wait and have fun :D

frprog.py
pkernel/Makefile
pkernel/flash.c
pkernel/main.c
pkernel/mb91465k.asm
pkernel/start91460.asm
pkernel/uart.c

index 8afad3f01e1f4ecb9dbe0181bd41afcc76dd6205..b7371c1cfa226c6d2b14877d936a7fa32a3438fe 100755 (executable)
--- a/frprog.py
+++ b/frprog.py
@@ -188,10 +188,12 @@ tty = SerialPort(DEVICE, 100, REAL_BAUDRATE)
 
 # let the fun begin!
 for seq in flashseqs:
-       if(seq.address >= 0x148000):
+       if(seq.address <= 0x40000):
+               addr = seq.address
+       else:
                continue
-       print "RAMing", len(seq.data), "bytes at address", hex(seq.address)
-       cmdWRITE(seq.address - flashseqs[0].address + 0x30000, len(seq.data), seq.data)
+       print "RAMing", len(seq.data), "bytes at address", hex(addr)
+       cmdWRITE(addr, len(seq.data), seq.data)
 
 cmdCALL(0x30000);
 sys.exit(0)
index 16a763f9304c86a97d9bd3ae58f7c2bed1eb8475..3da18c06ccffdcc21445976b487c0a50424b993e 100644 (file)
@@ -30,16 +30,14 @@ LDFLAGS = -AL 2
 LDFLAGS += -ra D_RAM=0x0002C000/0x0002FFFF
 LDFLAGS += -ra ID_RAM=0x00030000/0x00031FFF
 LDFLAGS += -ro ROM_AREA=0x00080000/0x000FFFFF
-LDFLAGS += -sc DATA/Data+INIT/Data+SSTACK/Data=D_RAM
-LDFLAGS += -sc IRAM/Code=ID_RAM
-LDFLAGS += -sc CODE+@INIT+@IRAM=ROM_AREA
-LDFLAGS += -sc CODE_START/Code=0x000F4000
+LDFLAGS += -sc DATA/Data+SSTACK/Data=D_RAM
+LDFLAGS += -sc CODE_START/Code+CODE=ID_RAM
 LDFLAGS += -check_locate -pl 60 -pw 132 -Xals
-LDFLAGS += -Xalr -na -w 1 -Xdof -Xset_rora -cwno -a $(CPUT)
+LDFLAGS += -Xalr -na -w 1 -Xdof -Xset_rora -Xcwno -a $(CPUT)
 
 LIBRFLAGS = -dt s,d,r,a -pl 60 -pw 132 -cwno $(CPUT)
 
-CONVFLAGS = -cwno -Xdof
+CONVFLAGS = -Xcwno -Xdof
 
 DEFINES =
 
index fb160dd137192efa3cb879e434680f09ec9766a1..e7049f3d133c9fa1297d798c1716119170f32376 100644 (file)
@@ -10,9 +10,6 @@
 
 static unsigned int IFlag;
 
-#pragma section CODE=IRAM,attr=CODE
-       
-
 void FLASH_PrepareWriteHalfWordMode()
 {
        /*      Set FLASH Access Mode via BootROM Routine       */
index 78ca2dc6851ba8ca9e93fc149f0b355aa72dfd97..c40924f4b3c9c3c39e484a486734bba55491b5bb 100644 (file)
@@ -1,8 +1,6 @@
 #include "mb91465k.h"
 #include "flash.h"
 
-#pragma section CODE=IRAM,attr=CODE
-
 #define BUFSIZE 0x20
 #define cleardata() memset(data,0,BUFSIZE)
 
index f029ef23a9f58a49a739d8a4214f509f69a86124..d2240e967eea1946bdeddfab9961337f5537e60f 100644 (file)
@@ -9,7 +9,5 @@
             1.00   UMa    Initial Version
 -----------------------------------------------------------------------------*/
 
-#pragma section CODE=IRAM,attr=CODE
-
 #define __IO_DEFINE
 #include "mb91465k.h"
index 76d9da172c94e63579df3c1886fa001bed75a7e0..99cd9ed68137aac5f9ff8de7b8738dfcf2d6850b 100644 (file)
 ;       Check the stack information files (*.stk) in the LIB\911 directory.
 ;
 ;=========================================================================================
-; 4.4  Copy code from Flash to I-RAM
-;=========================================================================================
-;
-#set    I_RAM           ON                      ; <<< select  if  code  in  section IRAM
-;                                                     should be copied
-; If this option is activated code located in the  section IRAM is copied during startup 
-; from ROM to the instruction-RAM. The code is linked for the instruction-RAM.
-;
-;=========================================================================================
 ; 4.7  Clock Configuration
 ;=========================================================================================
 ;=========================================================================================
 ;=========================================================================================
         .export __start             
         .import _main
-        .import _RAM_INIT
-        .import _ROM_INIT
 ;=========================================================================================
 ; 6.1  Define Stack Size
 ;=========================================================================================
+        .section        DATA,  data,  align=4
  .SECTION  SSTACK, STACK, ALIGN=4
 #if STACK_RESERVE == ON
         .EXPORT         __systemstack, __systemstack_top
 ;=========================================================================================
 ; 6.2  Define Sections
 ;=========================================================================================
-        .section        DATA,  data,  align=4
-        .section        INIT,  data,  align=4
-        .section        IRAM,  code,  align=4
-        
-#if I_RAM 
-        .import _RAM_IRAM
-        .import _ROM_IRAM
-#endif
+               .section        CODE, code, align=4
                     
 ;-----------------------------------------------------------------------------------------
 ; MACRO Clear RC Watchdog
         LDI             #0x4C7,R7               ; clear RC watchdog
         BANDL           #0x7,@R7
 #endm
-        .section        CODE, code, align=4
         .section        CODE_START, code, align=4
-#pragma section CODE=IRAM,attr=CODE
 
 ;=========================================================================================
 ; 7.  S T A R T 
@@ -564,24 +545,6 @@ gearUpLoop:
 noClockStartup:
         ClearRCwatchdog
 
-;=========================================================================================
-; 7.8  Copy code from Flash to I-RAM 
-;=========================================================================================
-#if I_RAM == ON
-        LDI             #_RAM_IRAM, R0
-        LDI             #_ROM_IRAM, R1
-        LDI             #sizeof(IRAM), R13
-        CMP             #0, R13
-        BEQ             copy_iram_end
-copy_iram1: 
-        ADD             #-1, R13
-        LDUB            @(R13, R1), R12
-        BNE:D           copy_iram1
-        STB             R12, @(R13, R0)
-copy_iram_end: 
-        ClearRCwatchdog
-#endif
-
 ;=========================================================================================
 ; Standard C startup
 ;=========================================================================================
@@ -612,40 +575,6 @@ data_clr2:
 data_clr_end:
         ClearRCwatchdog
         
-;=========================================================================================
-; 7.11  Copy Init section from ROM to RAM
-;=========================================================================================
-; copy rom
-; All initialised data's (e.g. int i=1) must be stored in ROM/FLASH area. 
-; (start value)
-; The Application must copy the Section (Init) into the RAM area.
-        LDI             #_RAM_INIT, R0
-        LDI             #_ROM_INIT, R1
-        LDI             #sizeof(INIT), R2
-        CMP             #0, R2
-        BEQ:D           copy_rom_end
-        LDI             #3, R12
-        AND             R2, R12
-        BEQ:D           copy_rom2
-        MOV             R2, R13
-        MOV             R2, R3
-        SUB             R12, R3
-copy_rom1:
-        ADD             #-1, R13
-        LDUB            @(R13, R1), R12
-        CMP             R3, R13
-        BHI:D           copy_rom1
-        STB             R12, @(R13, R0)
-        CMP             #0, R3
-        BEQ:D           copy_rom_end
-copy_rom2:
-        ADD             #-4, R13
-        LD              @(R13, R1), R12
-        BGT:D           copy_rom2
-        ST              R12, @(R13, R0)
-copy_rom_end:
-        ClearRCwatchdog
-
 start_main:
 ;=========================================================================================
 ; 7.14  call main routine
index ec6f97ddb55cdf51b4ba8cbf3ba6c29945e3596f..3d42718fb04db54f62ec0b2acd5757631fa9a40a 100644 (file)
@@ -1,7 +1,5 @@
 #include "mb91465k.h"
 
-#pragma section CODE=IRAM,attr=CODE
-
 void InitUart4(void)
 {
        // Initialize UART asynchronous mode