From fa2c317bdd3aa82d5f7d6769c9553627874d93dd Mon Sep 17 00:00:00 2001 From: "leleraffa97@hotmail.it" Date: Thu, 4 May 2017 21:42:47 +0200 Subject: Kernel memory mapping setup --- doc/report/res/kernel_mem_base.pdf | Bin 0 -> 16923 bytes doc/report/res/kernel_mem_base.svg | 613 +++++++++++++++++++++++++++++++++++++ doc/report/res/mem_kern_alloc.svg | 132 ++++++++ sw/z80/build/helvetiOS.lk | 11 + sw/z80/build/helvetiOS.map | 182 +++++++++++ sw/z80/build/helvetiOS.noi | 50 +++ sw/z80/build/kernel/kernel.asm | 65 ++++ sw/z80/build/kernel/kernel.lst | 65 ++++ sw/z80/build/kernel/kernel.rel | 23 ++ sw/z80/build/kernel/kernel.sym | 27 ++ sw/z80/crt0.rel | 86 ++++++ sw/z80/libc/mem.c | 7 - 12 files changed, 1254 insertions(+), 7 deletions(-) create mode 100644 doc/report/res/kernel_mem_base.pdf create mode 100644 doc/report/res/kernel_mem_base.svg create mode 100644 doc/report/res/mem_kern_alloc.svg create mode 100644 sw/z80/build/helvetiOS.lk create mode 100644 sw/z80/build/helvetiOS.map create mode 100644 sw/z80/build/helvetiOS.noi create mode 100644 sw/z80/build/kernel/kernel.asm create mode 100644 sw/z80/build/kernel/kernel.lst create mode 100644 sw/z80/build/kernel/kernel.rel create mode 100644 sw/z80/build/kernel/kernel.sym create mode 100644 sw/z80/crt0.rel delete mode 100644 sw/z80/libc/mem.c diff --git a/doc/report/res/kernel_mem_base.pdf b/doc/report/res/kernel_mem_base.pdf new file mode 100644 index 0000000..875d16e Binary files /dev/null and b/doc/report/res/kernel_mem_base.pdf differ diff --git a/doc/report/res/kernel_mem_base.svg b/doc/report/res/kernel_mem_base.svg new file mode 100644 index 0000000..02ac0b8 --- /dev/null +++ b/doc/report/res/kernel_mem_base.svg @@ -0,0 +1,613 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Kernel program structure + + + Text + + Global defined data + Stack + BSS + 0x8000 + 0x0000 + + + + + + + + + + + + + + Freememory to allocate + 0xffff + + System calls + 0x00ff + Space containingthe instruction set + Space where global variables are placed + Space where global undefined variables are placed + Stack spaceLocal variables storageThe size depends onall local variables declaredin the code + Kernel heap + Free memory availablePossible uses: - OS data allocation - Processes allocation + + RAM + + diff --git a/doc/report/res/mem_kern_alloc.svg b/doc/report/res/mem_kern_alloc.svg new file mode 100644 index 0000000..cb7cbeb --- /dev/null +++ b/doc/report/res/mem_kern_alloc.svg @@ -0,0 +1,132 @@ + + + + + + + + + + image/svg+xml + + + + + + + Kernel allocations and heap mapping + + + + status: 1 bit + size: 15 bit + Allocated memory + + + diff --git a/sw/z80/build/helvetiOS.lk b/sw/z80/build/helvetiOS.lk new file mode 100644 index 0000000..c16247f --- /dev/null +++ b/sw/z80/build/helvetiOS.lk @@ -0,0 +1,11 @@ +-mjwx +-i build/helvetiOS.hex +-b _CODE = 0x0800 +-b _DATA = 0x8000 +-k /usr/bin/../share/sdcc/lib/z80 +-k /usr/share/sdcc/lib/z80 +-l z80 +crt0.rel +build/kernel/kernel.rel + +-e diff --git a/sw/z80/build/helvetiOS.map b/sw/z80/build/helvetiOS.map new file mode 100644 index 0000000..98210c7 --- /dev/null +++ b/sw/z80/build/helvetiOS.map @@ -0,0 +1,182 @@ + ASxxxx Linker V03.00 + NoICE + sdld, page 1. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +. .ABS. 00000000 00000000 = 0. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + 00000000 .__.ABS. kernel + 00000000 l__BSEG + 00000000 l__BSS + 00000000 l__CABS + 00000000 l__DABS + 00000000 l__DATA + 00000000 l__HEADER + 00000000 l__HEAP + 00000000 l__HOME + 00000000 l__INITIALIZED + 00000000 l__INITIALIZER + 00000000 s__CABS + 00000000 s__DABS + 00000000 s__HEADER + 00000000 s__HEADER0 + 00000000 s__HEADER1 + 00000000 s__HEADER2 + 00000000 s__HEADER3 + 00000000 s__HEADER4 + 00000000 s__HEADER5 + 00000000 s__HEADER6 + 00000000 s__HEADER7 + 00000000 s__HEADER8 + 00000001 l__GSFINAL + 00000002 l__HEADER1 + 00000002 l__HEADER2 + 00000002 l__HEADER3 + 00000002 l__HEADER4 + 00000002 l__HEADER5 + 00000002 l__HEADER6 + 00000002 l__HEADER7 + 00000003 l__HEADER0 + 00000006 l__GSINIT + 0000000C l__HEADER8 + 00000017 l__CODE + 00000800 s__CODE + 00000817 s__GSINIT + 00000817 s__HOME + 00000817 s__INITIALIZER + 0000081D s__GSFINAL + 00008000 s__BSEG + 00008000 s__BSS + 00008000 s__DATA + 00008000 s__HEAP + 00008000 s__INITIALIZED + ASxxxx Linker V03.00 + NoICE + sdld, page 2. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_CODE 00000800 00000017 = 23. bytes (REL,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + 00000800 __clock crt0 + 00000804 _exit crt0 + 0000080A _main kernel + ASxxxx Linker V03.00 + NoICE + sdld, page 3. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER0 00000000 00000003 = 3. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 4. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER1 00000000 00000002 = 2. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 5. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER2 00000000 00000002 = 2. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 6. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER3 00000000 00000002 = 2. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 7. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER4 00000000 00000002 = 2. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 8. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER5 00000000 00000002 = 2. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 9. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER6 00000000 00000002 = 2. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 10. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER7 00000000 00000002 = 2. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 11. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_HEADER8 00000000 0000000C = 12. bytes (ABS,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 12. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_GSINIT 00000817 00000006 = 6. bytes (REL,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + 00000817 gsinit crt0 + + ASxxxx Linker V03.00 + NoICE + sdld, page 13. +Hexadecimal [32-Bits] + +Area Addr Size Decimal Bytes (Attributes) +-------------------------------- ---- ---- ------- ----- ------------ +_GSFINAL 0000081D 00000001 = 1. bytes (REL,CON) + + Value Global Global Defined In Module + ----- -------------------------------- ------------------------ + ASxxxx Linker V03.00 + NoICE + sdld, page 14. + +Files Linked [ module(s) ] + +crt0.rel [ crt0 ] +build/kernel/kernel.rel [ kernel ] + + ASxxxx Linker V03.00 + NoICE + sdld, page 15. + +User Base Address Definitions + +_CODE = 0x0800 +_DATA = 0x8000 + + \ No newline at end of file diff --git a/sw/z80/build/helvetiOS.noi b/sw/z80/build/helvetiOS.noi new file mode 100644 index 0000000..1b9c284 --- /dev/null +++ b/sw/z80/build/helvetiOS.noi @@ -0,0 +1,50 @@ +DEF .__.ABS. 0x0 +DEF l__BSEG 0x0 +DEF l__BSS 0x0 +DEF l__CABS 0x0 +DEF l__DABS 0x0 +DEF l__DATA 0x0 +DEF l__HEADER 0x0 +DEF l__HEAP 0x0 +DEF l__HOME 0x0 +DEF l__INITIALIZED 0x0 +DEF l__INITIALIZER 0x0 +DEF s__CABS 0x0 +DEF s__DABS 0x0 +DEF s__HEADER 0x0 +DEF s__HEADER0 0x0 +DEF s__HEADER1 0x0 +DEF s__HEADER2 0x0 +DEF s__HEADER3 0x0 +DEF s__HEADER4 0x0 +DEF s__HEADER5 0x0 +DEF s__HEADER6 0x0 +DEF s__HEADER7 0x0 +DEF s__HEADER8 0x0 +DEF l__GSFINAL 0x1 +DEF l__HEADER1 0x2 +DEF l__HEADER2 0x2 +DEF l__HEADER3 0x2 +DEF l__HEADER4 0x2 +DEF l__HEADER5 0x2 +DEF l__HEADER6 0x2 +DEF l__HEADER7 0x2 +DEF l__HEADER0 0x3 +DEF l__GSINIT 0x6 +DEF l__HEADER8 0xC +DEF l__CODE 0x17 +DEF s__CODE 0x800 +DEF s__GSINIT 0x817 +DEF s__HOME 0x817 +DEF s__INITIALIZER 0x817 +DEF s__GSFINAL 0x81D +DEF s__BSEG 0x8000 +DEF s__BSS 0x8000 +DEF s__DATA 0x8000 +DEF s__HEAP 0x8000 +DEF s__INITIALIZED 0x8000 +DEF __clock 0x800 +DEF _exit 0x804 +DEF _main 0x80A +DEF gsinit 0x817 +LOAD build/helvetiOS.ihx diff --git a/sw/z80/build/kernel/kernel.asm b/sw/z80/build/kernel/kernel.asm new file mode 100644 index 0000000..a29db4d --- /dev/null +++ b/sw/z80/build/kernel/kernel.asm @@ -0,0 +1,65 @@ +;-------------------------------------------------------- +; File Created by SDCC : free open source ANSI-C Compiler +; Version 3.5.0 #9253 (Mar 24 2016) (Linux) +; This file was generated Tue May 2 18:13:35 2017 +;-------------------------------------------------------- + .module kernel + .optsdcc -mz80 + +;-------------------------------------------------------- +; Public variables in this module +;-------------------------------------------------------- + .globl _main +;-------------------------------------------------------- +; special function registers +;-------------------------------------------------------- +;-------------------------------------------------------- +; ram data +;-------------------------------------------------------- + .area _DATA +;-------------------------------------------------------- +; ram data +;-------------------------------------------------------- + .area _INITIALIZED +;-------------------------------------------------------- +; absolute external ram data +;-------------------------------------------------------- + .area _DABS (ABS) +;-------------------------------------------------------- +; global & static initialisations +;-------------------------------------------------------- + .area _HOME + .area _GSINIT + .area _GSFINAL + .area _GSINIT +;-------------------------------------------------------- +; Home +;-------------------------------------------------------- + .area _HOME + .area _HOME +;-------------------------------------------------------- +; code +;-------------------------------------------------------- + .area _CODE +;kernel/kernel.c:4: void main(void) +; --------------------------------- +; Function main +; --------------------------------- +_main:: +;kernel/kernel.c:7: for (i = 0; i < 10; i++) { + ld de,#0x000A +00104$: +;kernel/kernel.c:8: j--; + ld c,e + ld b,d + dec bc + ld e, c +;kernel/kernel.c:7: for (i = 0; i < 10; i++) { + ld a,b + ld d,a + or a,c + jr NZ,00104$ + ret + .area _CODE + .area _INITIALIZER + .area _CABS (ABS) diff --git a/sw/z80/build/kernel/kernel.lst b/sw/z80/build/kernel/kernel.lst new file mode 100644 index 0000000..8ec7438 --- /dev/null +++ b/sw/z80/build/kernel/kernel.lst @@ -0,0 +1,65 @@ + 1 ;-------------------------------------------------------- + 2 ; File Created by SDCC : free open source ANSI-C Compiler + 3 ; Version 3.5.0 #9253 (Mar 24 2016) (Linux) + 4 ; This file was generated Tue May 2 18:13:35 2017 + 5 ;-------------------------------------------------------- + 6 .module kernel + 7 .optsdcc -mz80 + 8 + 9 ;-------------------------------------------------------- + 10 ; Public variables in this module + 11 ;-------------------------------------------------------- + 12 .globl _main + 13 ;-------------------------------------------------------- + 14 ; special function registers + 15 ;-------------------------------------------------------- + 16 ;-------------------------------------------------------- + 17 ; ram data + 18 ;-------------------------------------------------------- + 19 .area _DATA + 20 ;-------------------------------------------------------- + 21 ; ram data + 22 ;-------------------------------------------------------- + 23 .area _INITIALIZED + 24 ;-------------------------------------------------------- + 25 ; absolute external ram data + 26 ;-------------------------------------------------------- + 27 .area _DABS (ABS) + 28 ;-------------------------------------------------------- + 29 ; global & static initialisations + 30 ;-------------------------------------------------------- + 31 .area _HOME + 32 .area _GSINIT + 33 .area _GSFINAL + 34 .area _GSINIT + 35 ;-------------------------------------------------------- + 36 ; Home + 37 ;-------------------------------------------------------- + 38 .area _HOME + 39 .area _HOME + 40 ;-------------------------------------------------------- + 41 ; code + 42 ;-------------------------------------------------------- + 43 .area _CODE + 44 ;kernel/kernel.c:4: void main(void) + 45 ; --------------------------------- + 46 ; Function main + 47 ; --------------------------------- + 0000 48 _main:: + 49 ;kernel/kernel.c:7: for (i = 0; i < 10; i++) { + 0000 11 0A 00 [10] 50 ld de,#0x000A + 0003 51 00104$: + 52 ;kernel/kernel.c:8: j--; + 0003 4B [ 4] 53 ld c,e + 0004 42 [ 4] 54 ld b,d + 0005 0B [ 6] 55 dec bc + 0006 59 [ 4] 56 ld e, c + 57 ;kernel/kernel.c:7: for (i = 0; i < 10; i++) { + 0007 78 [ 4] 58 ld a,b + 0008 57 [ 4] 59 ld d,a + 0009 B1 [ 4] 60 or a,c + 000A 20 F7 [12] 61 jr NZ,00104$ + 000C C9 [10] 62 ret + 63 .area _CODE + 64 .area _INITIALIZER + 65 .area _CABS (ABS) diff --git a/sw/z80/build/kernel/kernel.rel b/sw/z80/build/kernel/kernel.rel new file mode 100644 index 0000000..1079edc --- /dev/null +++ b/sw/z80/build/kernel/kernel.rel @@ -0,0 +1,23 @@ +XL2 +H 9 areas 2 global symbols +M kernel +O -mz80 +S .__.ABS. Def0000 +A _CODE size D flags 0 addr 0 +S _main Def0000 +A _DATA size 0 flags 0 addr 0 +A _INITIALIZED size 0 flags 0 addr 0 +A _DABS size 0 flags 8 addr 0 +A _HOME size 0 flags 0 addr 0 +A _GSINIT size 0 flags 0 addr 0 +A _GSFINAL size 0 flags 0 addr 0 +A _INITIALIZER size 0 flags 0 addr 0 +A _CABS size 0 flags 8 addr 0 +T 00 00 +R 00 00 00 00 +T 00 00 11 0A 00 +R 00 00 00 00 +T 03 00 +R 00 00 00 00 +T 03 00 4B 42 0B 59 78 57 B1 20 F7 C9 +R 00 00 00 00 diff --git a/sw/z80/build/kernel/kernel.sym b/sw/z80/build/kernel/kernel.sym new file mode 100644 index 0000000..d01735c --- /dev/null +++ b/sw/z80/build/kernel/kernel.sym @@ -0,0 +1,27 @@ + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Zilog Z80 / Hitachi HD64180), page 1. +Hexadecimal [16-Bits] + +Symbol Table + + .__.$$$. = 2710 L + .__.ABS. = 0000 G + .__.CPU. = 0000 L + .__.H$L. = 0000 L + 0 _main 0000 GR + + + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Zilog Z80 / Hitachi HD64180), page 2. +Hexadecimal [16-Bits] + +Area Table + + 0 _CODE size D flags 0 + 1 _DATA size 0 flags 0 + 2 _INITIALIZED size 0 flags 0 + 3 _DABS size 0 flags 8 + 4 _HOME size 0 flags 0 + 5 _GSINIT size 0 flags 0 + 6 _GSFINAL size 0 flags 0 + 7 _INITIALIZER size 0 flags 0 + 8 _CABS size 0 flags 8 + diff --git a/sw/z80/crt0.rel b/sw/z80/crt0.rel new file mode 100644 index 0000000..809c0e6 --- /dev/null +++ b/sw/z80/crt0.rel @@ -0,0 +1,86 @@ +XL2 +H 14 areas 5 global symbols +M crt0 +S _main Ref0000 +S .__.ABS. Def0000 +A _CODE size A flags 0 addr 0 +S __clock Def0000 +S _exit Def0004 +A _HEADER size 0 flags 8 addr 0 +A _HEADER0 size 3 flags 8 addr 0 +A _HEADER1 size 2 flags 8 addr 8 +A _HEADER2 size 2 flags 8 addr 10 +A _HEADER3 size 2 flags 8 addr 18 +A _HEADER4 size 2 flags 8 addr 20 +A _HEADER5 size 2 flags 8 addr 28 +A _HEADER6 size 2 flags 8 addr 30 +A _HEADER7 size 2 flags 8 addr 38 +A _HEADER8 size C flags 8 addr 100 +A _HOME size 0 flags 0 addr 0 +A _INITIALIZER size 0 flags 0 addr 0 +A _GSINIT size 6 flags 0 addr 0 +S gsinit Def0000 +A _GSFINAL size 1 flags 0 addr 0 +A _DATA size 0 flags 0 addr 0 +A _INITIALIZED size 0 flags 0 addr 0 +A _BSEG size 0 flags 0 addr 0 +A _BSS size 0 flags 0 addr 0 +A _HEAP size 0 flags 0 addr 0 +T 00 00 +R 00 00 02 00 +T 00 00 C3 00 01 +R 00 00 02 00 00 03 0A 00 +T 08 00 +R 00 00 03 00 +T 08 00 ED 4D +R 00 00 03 00 +T 10 00 +R 00 00 04 00 +T 10 00 ED 4D +R 00 00 04 00 +T 18 00 +R 00 00 05 00 +T 18 00 ED 4D +R 00 00 05 00 +T 20 00 +R 00 00 06 00 +T 20 00 ED 4D +R 00 00 06 00 +T 28 00 +R 00 00 07 00 +T 28 00 ED 4D +R 00 00 07 00 +T 30 00 +R 00 00 08 00 +T 30 00 ED 4D +R 00 00 08 00 +T 38 00 +R 00 00 09 00 +T 38 00 ED 4D +R 00 00 09 00 +T 00 01 +R 00 00 0A 00 +T 00 01 +R 00 00 0A 00 +T 00 01 31 FF FF CD 00 00 CD 00 00 C3 04 00 +R 00 00 0A 00 00 06 0D 00 02 09 00 00 00 0C 00 00 +T 00 00 +R 00 00 00 00 +T 00 00 3E 02 CF C9 +R 00 00 00 00 +T 04 00 +R 00 00 00 00 +T 04 00 3E 00 CF +R 00 00 00 00 +T 07 00 +R 00 00 00 00 +T 07 00 76 18 FD +R 00 00 00 00 +T 00 00 +R 00 00 0D 00 +T 00 00 78 B1 28 02 ED B0 +R 00 00 0D 00 +T 06 00 +R 00 00 0D 00 +T 00 00 C9 +R 00 00 0E 00 diff --git a/sw/z80/libc/mem.c b/sw/z80/libc/mem.c deleted file mode 100644 index 667a752..0000000 --- a/sw/z80/libc/mem.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "types.h" -#include "mem.h" - -void *malloc(size_t size) -{ - : -} -- cgit v1.2.1