From c380c7da56e97c4430481fe7ccecb98330268726 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Mon, 14 Dec 2009 08:21:12 +0100 Subject: [PATCH] MEGAWOOT: it just works \o/ 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 wait and have fun :D --- frprog.py | 8 +++-- pkernel/Makefile | 10 +++--- pkernel/flash.c | 3 -- pkernel/main.c | 2 -- pkernel/mb91465k.asm | 2 -- pkernel/start91460.asm | 75 ++---------------------------------------- pkernel/uart.c | 2 -- 7 files changed, 11 insertions(+), 91 deletions(-) diff --git a/frprog.py b/frprog.py index 8afad3f..b7371c1 100755 --- 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) diff --git a/pkernel/Makefile b/pkernel/Makefile index 16a763f..3da18c0 100644 --- a/pkernel/Makefile +++ b/pkernel/Makefile @@ -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 = diff --git a/pkernel/flash.c b/pkernel/flash.c index fb160dd..e7049f3 100644 --- a/pkernel/flash.c +++ b/pkernel/flash.c @@ -10,9 +10,6 @@ static unsigned int IFlag; -#pragma section CODE=IRAM,attr=CODE - - void FLASH_PrepareWriteHalfWordMode() { /* Set FLASH Access Mode via BootROM Routine */ diff --git a/pkernel/main.c b/pkernel/main.c index 78ca2dc..c40924f 100644 --- a/pkernel/main.c +++ b/pkernel/main.c @@ -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) diff --git a/pkernel/mb91465k.asm b/pkernel/mb91465k.asm index f029ef2..d2240e9 100644 --- a/pkernel/mb91465k.asm +++ b/pkernel/mb91465k.asm @@ -9,7 +9,5 @@ 1.00 UMa Initial Version -----------------------------------------------------------------------------*/ -#pragma section CODE=IRAM,attr=CODE - #define __IO_DEFINE #include "mb91465k.h" diff --git a/pkernel/start91460.asm b/pkernel/start91460.asm index 76d9da1..99cd9ed 100644 --- a/pkernel/start91460.asm +++ b/pkernel/start91460.asm @@ -57,15 +57,6 @@ ; 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 ;========================================================================================= ;========================================================================================= @@ -188,11 +179,10 @@ ;========================================================================================= .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 @@ -204,14 +194,7 @@ ;========================================================================================= ; 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 @@ -220,9 +203,7 @@ 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 diff --git a/pkernel/uart.c b/pkernel/uart.c index ec6f97d..3d42718 100644 --- a/pkernel/uart.c +++ b/pkernel/uart.c @@ -1,7 +1,5 @@ #include "mb91465k.h" -#pragma section CODE=IRAM,attr=CODE - void InitUart4(void) { // Initialize UART asynchronous mode -- 2.25.1