From ba14f7e5398c214249559bb6206b00e9f89ba689 Mon Sep 17 00:00:00 2001 From: TitanMKD Date: Tue, 29 May 2012 23:05:28 +0200 Subject: [PATCH 1/6] Fix jellybean_BOM.ods with 3.3V fix. --- hardware/jellybean/jellybean_BOM.ods | Bin 17355 -> 18068 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/hardware/jellybean/jellybean_BOM.ods b/hardware/jellybean/jellybean_BOM.ods index 2af7c4de24fef0f5e5ee17249e07bab2f5bd8249..f6f990fbcd148f29e5442a5a9d9d030f3b97627c 100644 GIT binary patch delta 15343 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 z z{3Nf~TP1W^8nZutr}Ej|dD3Temi)k#-A@c1y-A&%-j|>@c#EX~Juk&N#6uHR*Gb<@wE@NCQY{$uIGdg$Y0j&MFeeIL+0D?vBWf7?!UBi`(8%b* zgfr{XM_w>uv3y*^0uS2Q5=%T8Mhd7YSaqs0>0VktzJK{m-UYU0IG28AHu#k^wCp)* z1_^wajLREI$Fw}){&p9Flb!M?;ZXvd)*RU zH90EF=h_ziH-^DA-(Pp3+dPUX^XpIcC{6PJ_=~!J{uq#d@YVc#)}sbqWnj<6B7AHHVcXUdyE%PAp9@x From a27210c03444ec16713590dd7c7efb270c44642e Mon Sep 17 00:00:00 2001 From: TitanMKD Date: Tue, 29 May 2012 23:08:50 +0200 Subject: [PATCH 2/6] Added JellyBean Pin to be used with NXP http://www.lpcware.com/content/nxpfile/lpc43xx-pin-mux-tool --- hardware/jellybean/JellyBean_PinMux.pmx | 152 ++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 hardware/jellybean/JellyBean_PinMux.pmx diff --git a/hardware/jellybean/JellyBean_PinMux.pmx b/hardware/jellybean/JellyBean_PinMux.pmx new file mode 100644 index 00000000..cb8638e3 --- /dev/null +++ b/hardware/jellybean/JellyBean_PinMux.pmx @@ -0,0 +1,152 @@ + + + LPC4330FBD144 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From ba1880799ad7f0791b344af61bbc767f40803048 Mon Sep 17 00:00:00 2001 From: TitanMKD Date: Tue, 29 May 2012 23:11:14 +0200 Subject: [PATCH 3/6] JellyBean TSP62410 computation theory for output voltage. --- hardware/jellybean/JellyBean_TPS62410.ods | Bin 0 -> 10143 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hardware/jellybean/JellyBean_TPS62410.ods diff --git a/hardware/jellybean/JellyBean_TPS62410.ods b/hardware/jellybean/JellyBean_TPS62410.ods new file mode 100644 index 0000000000000000000000000000000000000000..ef12874a8511d399a26c3270f2295af74acd1c73 GIT binary patch literal 10143 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 literal 0 HcmV?d00001 From 71585d3c641320caa820dadb288f2a2a1859fa8b Mon Sep 17 00:00:00 2001 From: Will Code Date: Tue, 29 May 2012 20:59:07 -0400 Subject: [PATCH 4/6] max2837: remaining registers --- firmware/common/max2837_regs.def | 88 ++++++++++++++++++++++++++++++-- 1 file changed, 84 insertions(+), 4 deletions(-) diff --git a/firmware/common/max2837_regs.def b/firmware/common/max2837_regs.def index 8065f17a..4042afd2 100644 --- a/firmware/common/max2837_regs.def +++ b/firmware/common/max2837_regs.def @@ -271,6 +271,7 @@ __MREG__(MAX2837_SYN_TEST_OUT,21,9,3) // high bit locks CP in test mode #define MAX2837_SYN_TEST_CP_SINK_REF_DIV 0b110 #define MAX2837_SYN_TEST_CP_HI_Z_MAIN_DIV 0b111 +/* REG 22 */ __MREG__(MAX2837_VAS_EN,22,0,1) __MREG__(MAX2837_VAS_RELOCK_SEL,22,1,1) #define MAX2837_VAS_RELOCK_SELECTED 0 @@ -316,10 +317,89 @@ __MREG__(MAX2837_CLKOUT_DIV,24,8,1) #define MAX2837_CLKOUT_DIV_2 1 __MREG__(MAX2837_XTAL_EN,24,9,1) // set to override mode -//__MREG__(MAX2837_,,,) +/* REG 25 */ +__MREG__(MAX2837_VCO_BIAS_EN,25,0,1) // enable override of vco bias trim +__MREG__(MAX2837_VCO_BIAS,25,4,4) // 0b1000 nominal +__MREG__(MAX2837_VCO_CMEN,25,5,1) // enable Miller capacitor +__MREG__(MAX2837_VCO_PDET_TST,25,7,2) // peak detector test output select +#define MAX2837_VCO_PDET_TST_NORMAL 0 +#define MAX2837_VCO_PDET_TST_PDOUT 1 // peak detector output +#define MAX2837_VCO_PDET_TST_PDREF 2 // peak detector reference +#define MAX2837_VCO_PDET_TST_TEMP 3 // VCO temperature sensor +__MREG__(MAX2837_VCO_BUF_BIAS,25,9,2) // VCO buffer bias +#define MAX2837_VCO_BUF_BIAS_800uA 0 +#define MAX2837_VCO_BUF_BIAS_1200uA 1 // default +#define MAX2837_VCO_BUF_BIAS_1600uA 2 +#define MAX2837_VCO_BUF_BIAS_2000uA 3 -#define MAX2837_ -//__MREG__(MAX2837_,,,) -//#define MAX2837_ +/* REG 26 */ +__MREG__(MAX2837_LOGEN_BIAS1,26,1,2) // LOGEN emitter follower bias +#define MAX2837_LOGEN_BIAS1_400u 0 +#define MAX2837_LOGEN_BIAS1_600u 1 +#define MAX2837_LOGEN_BIAS1_800u 2 +#define MAX2837_LOGEN_BIAS1_1000u 3 +__MREG__(MAX2837_LOGEN_BIAS2,26,2,1) // LOGEN RX/TX Gm bias +#define MAX2837_LOGEN_BIAS2_DEFAULT 0 // default +#define MAX2837_LOGEN_BIAS2_PLUS25 1 // +25% +__MREG__(MAX2837_LOGEN_2GM,26,3,1) // +__MREG__(MAX2837_LOGEN_TRIM1,26,4,1) // mixer tank trim enable +__MREG__(MAX2837_LOGEN_TRIM2,26,5,1) // bandpass filter trim enable +__MREG__(MAX2837_VAS_TST,26,9,4) // DOUT test signal select +#define MAX2837_VAS_TST_VCO_BSW0 0 // VAS band select output (5 bits) +#define MAX2837_VAS_TST_VCO_BSW1 1 +#define MAX2837_VAS_TST_VCO_BSW2 2 +#define MAX2837_VAS_TST_VCO_BSW3 3 +#define MAX2837_VAS_TST_VCO_BSW4 4 +#define MAX2837_VAS_TST_Vtune_ADC0 5 // VCO Vtune ADC output (3 bits) +#define MAX2837_VAS_TST_Vtune_ADC1 6 +#define MAX2837_VAS_TST_Vtune_ADC2 7 +#define MAX2837_VAS_TST_VASA 8 // VAS accomplish (success) +#define MAX2837_VAS_TST_VASE 9 // VAS end (success or gave up) +#define MAX2837_VAS_TST_ZERO 15 // default + +/* REG 27 */ +__MREG__(MAX2837_PADRV_BIAS,27,2,3) // PA driver bias (0-7), default 3 +__MREG__(MAX2837_PADRV_DOWN_EN,27,3,1) // PA driver down process select enable +__MREG__(MAX2837_PADRV_DOWN,27,4,1) // PA driver down select +#define MAX2837_PADRV_DOWN_DOWN 0 +#define MAX2837_PADRV_DOWN_UP 1 // default +__MREG__(MAX2837_PADAC_IV,27,5,1) // PA DAC I/V output select +#define MAX2837_PADAC_IV_VOLTAGE 0 +#define MAX2837_PADAC_IV_CURRENT 1 // default +__MREG__(MAX2837_PADAC_VMODE,27,6,1) // set logic 0 or 1 for PADAC_IV out +__MREG__(MAX2837_PADAC_DIV,27,7,1) // PA DAC clock divide ratio +#define MAX2837_PADAC_DIV_20MHz 0 +#define MAX2837_PADAC_DIV_40MHz 1 +__MREG__(MAX2837_TXGATE_EN,27,8,1) // set to relock when TXOOL=1 or LD=0 +__MREG__(MAX2837_TXDCCORR_EN,27,9,1) // TX DC offset correction enable + +/* REG 28 */ +__MREG__(MAX2837_PADAC_BIAS,28,5,6) // PADAC output current control, 5uA step +__MREG__(MAX2837_PADAC_DLY,28,9,4) // PADAC turn-on delay control + // 0,1 are both 0us + // then 0.5us steps to 7.0us + +/* REG 29 */ +__MREG__(MAX2837_TXVGA_GAIN_EN,29,0,1) // Enable SPI control of TXVGA gain +__MREG__(MAX2837_TXVGA_GAIN_MSB_EN,29,1,1) +__MREG__(MAX2837_TX_DCCORR_EN,29,2,1) +__MREG__(MAX2837_FUSE_ARM,29,3,1) // Fuse burn enable +__MREG__(MAX2837_TXVGA_GAIN,29,5,6) // 0 = min atten, 63 = max atten + +/* REG 30 */ +__MREG__(MAX2837_TXLO_IQ,30,4,5) +__MREG__(MAX2837_TXLO_IQ_EN,30,5,5) +__MREG__(MAX2837_TXLO_BUFF_BIAS,30,7,2) +#define MAX2837_TXLO_BUFF_BIAS_1_0mA 0 +#define MAX2837_TXLO_BUFF_BIAS_1_5mA 1 +#define MAX2837_TXLO_BUFF_BIAS_2_0mA 2 // default +#define MAX2837_TXLO_BUFF_BIAS_2_5mA 3 +__MREG__(MAX2837_FUSE_GKT,30,8,1) +__MREG__(MAX2837_FUSE_RTH,30,9,1) + +/* REG 31 */ +// 0 -> 992/0uA correction, 15 -> 0/992uA correction ... if TX_DCCORR_EN +__MREG__(MAX2837_TX_DCCORR_I,31,4,5) +__MREG__(MAX2837_TX_DCCORR_Q,31,9,5) #endif // __MAX2837_REGS_DEF From cd7e054f7d55d5d5be43c778fa800f0d598bb4ec Mon Sep 17 00:00:00 2001 From: Will Code Date: Tue, 29 May 2012 21:24:01 -0400 Subject: [PATCH 5/6] max2837: extern additional functions, put test code in ifdef --- firmware/common/max2837.c | 10 ++++++---- firmware/common/max2837.h | 8 ++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/firmware/common/max2837.c b/firmware/common/max2837.c index d2b11b81..b57b8162 100644 --- a/firmware/common/max2837.c +++ b/firmware/common/max2837.c @@ -1,9 +1,9 @@ /* - * 'gcc -DDEBUG -O2 -o test max2837.c' prints out what test program - * would do if it had a real spi library + * 'gcc -DTEST -DDEBUG -O2 -o test max2837.c' prints out what test + * program would do if it had a real spi library * - * 'gcc -DBUS_PIRATE -O2 -o test max2837.c' prints out bus pirate commands to - * do the same thing. + * 'gcc -DTEST -DBUS_PIRATE -O2 -o test max2837.c' prints out bus + * pirate commands to do the same thing. */ #include #include "max2837.h" @@ -166,6 +166,7 @@ void max2837_set_frequency(uint32_t freq) max2837_regs_commit(); } +#ifdef TEST uint16_t test(void) { LOG("# test\n"); @@ -184,3 +185,4 @@ int main(int ac, char **av) max2837_set_frequency(2441000000); max2837_stop(); } +#endif //TEST diff --git a/firmware/common/max2837.h b/firmware/common/max2837.h index 40103911..1b7e96fb 100644 --- a/firmware/common/max2837.h +++ b/firmware/common/max2837.h @@ -32,4 +32,12 @@ extern void max2837_regs_read(void); * provided routines for those operations. */ extern void max2837_regs_commit(void); +/* Turn on/off all chip functions. Does not control oscillator and CLKOUT */ +extern void max2837_start(void); +extern void max2837_stop(void); + +/* Set frequency in Hz. Frequency setting is a multi-step function + * where order of register writes matters. */ +extern void max2837_set_frequency(uint32_t freq); + #endif // __MAX2837_H From 0efab1710a945500abbeedad9271f884854c15a8 Mon Sep 17 00:00:00 2001 From: TitanMKD Date: Wed, 30 May 2012 07:33:23 +0200 Subject: [PATCH 6/6] Linker Script & New Startup to Load from SPIFI and Execute from RAM(SRAM). Start execution in SPIFI(ROM) and at startup, code from ROM is copied to RAM and shadow pointer is modified to RAM. So at end all the code and vector table is executed from RAM. --- firmware/blinky_SPIFI_SRAM/Makefile | 14 ++ firmware/blinky_SPIFI_SRAM/README | 3 + firmware/blinky_SPIFI_SRAM/blinky.c | 57 ++++++ firmware/common/LPC4330_M4_ROM_to_RAM.ld | 163 ++++++++++++++++++ .../common/LPC43xx_M4_Startup_ROM_to_RAM.c | 118 +++++++++++++ 5 files changed, 355 insertions(+) create mode 100644 firmware/blinky_SPIFI_SRAM/Makefile create mode 100644 firmware/blinky_SPIFI_SRAM/README create mode 100644 firmware/blinky_SPIFI_SRAM/blinky.c create mode 100644 firmware/common/LPC4330_M4_ROM_to_RAM.ld create mode 100644 firmware/common/LPC43xx_M4_Startup_ROM_to_RAM.c diff --git a/firmware/blinky_SPIFI_SRAM/Makefile b/firmware/blinky_SPIFI_SRAM/Makefile new file mode 100644 index 00000000..cb4e8725 --- /dev/null +++ b/firmware/blinky_SPIFI_SRAM/Makefile @@ -0,0 +1,14 @@ +# Hey Emacs, this is a -*- makefile -*- + +# Target file name (without extension). +TARGET = blinky + +# List C source files here. (C dependencies are automatically generated.) +SRC = $(TARGET).c \ + $(LIBS_PATH)/LPC43xx_M4_Startup_ROM_to_RAM.c \ + $(LIBS_PATH)/LPC43xx_M4_Interrupts.c \ + $(LIBS_PATH)/hackrf_core.c + +# Override Linker Script +LINKER_SCRIPT = LPC4330_M4_ROM_to_RAM.ld +include ../common/Makefile_inc.mk diff --git a/firmware/blinky_SPIFI_SRAM/README b/firmware/blinky_SPIFI_SRAM/README new file mode 100644 index 00000000..79251aaf --- /dev/null +++ b/firmware/blinky_SPIFI_SRAM/README @@ -0,0 +1,3 @@ +This is the simplest example firmware for HackRF. It flashes three LEDs. +This Example Start execution in SPIFI(ROM) and at startup, code from ROM is copied to RAM and shadow pointer is modified to RAM. +So at end all the code and vector table is executed from RAM. diff --git a/firmware/blinky_SPIFI_SRAM/blinky.c b/firmware/blinky_SPIFI_SRAM/blinky.c new file mode 100644 index 00000000..7fa09249 --- /dev/null +++ b/firmware/blinky_SPIFI_SRAM/blinky.c @@ -0,0 +1,57 @@ +/* + * Copyright 2010 - 2012 Michael Ossmann + * + * This file is part of HackRF. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include "hackrf_core.h" + +void wait(uint8_t duration) +{ + volatile uint32_t i; + for (i = 0; i < duration * 1000000; i++); +} + +uint32_t boot0, boot1, boot2, boot3; + +int main() +{ + + gpio_init(); + + EN1V8_SET; + EN1V8_CLR; + + while (1) { + boot0 = BOOT0; + boot1 = BOOT1; + boot2 = BOOT2; + boot3 = BOOT3; + + LED1_SET; + LED2_SET; + LED3_SET; + wait(1); + LED1_CLR; + LED2_CLR; + LED3_CLR; + wait(1); + } + + return 0 ; +} diff --git a/firmware/common/LPC4330_M4_ROM_to_RAM.ld b/firmware/common/LPC4330_M4_ROM_to_RAM.ld new file mode 100644 index 00000000..6d9d92e7 --- /dev/null +++ b/firmware/common/LPC4330_M4_ROM_to_RAM.ld @@ -0,0 +1,163 @@ +/* + * Copyright 2010 - 2012 Michael Ossmann + * Copyright 2012 Benjamin Vernoux + * + * This file is part of HackRF + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +ENTRY(_start) +SEARCH_DIR(.) +GROUP(libgcc.a libc.a libm.a libnosys.a) + +MEMORY +{ + /* + * Our code is installed in SPIFI(ROM) at 0x80000000 it is addressed through the 256M shadow area at 0x00000000 at Boot. + * Reset_Handler call Reset_Handler_ROM_to_RAM(executed in SPIFI) and Copy the code from ROM to RAM, + * and set shadow pointer to RAM, then the code execution continue in RAM. + */ + rom (rx) : ORIGIN = 0x80000000, LENGTH = 128K /* Real ROM Address It cannot exceed RAM size (Real Size is 1MB) */ + ram (rwx) : ORIGIN = 0x10000000, LENGTH = 128K /* Real RAM Address */ + shadow_ram (rwx) : ORIGIN = 0x00000000, LENGTH = 128K /* 128 Kb Real Address is 0x10000000 but remapped to Shadow 0x00000000 */ + + /* there are some additional RAM regions */ +} + +/* + * much copied from: Linker script for Cortex-M3 + * + * Version:CodeSourcery Sourcery G++ Lite 2007q3-53 + * BugURL:https://support.codesourcery.com/GNUToolchain/ + * + * Copyright 2007 CodeSourcery. + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +EXTERN(Reset_Handler) +ENTRY(Reset_Handler) + +SECTIONS +{ + .text : + { + _text_ram = . + ORIGIN(ram); /* Start of Code in RAM */ + + . = ALIGN(0x400); /* Ensure that vector table is aligned as hardware requires. */ + _interrupt_vector_table = .; + KEEP(*(.irq_handler_table)) + + *(.text .text.* .gnu.linkonce.t.*) + *(.rodata .rodata.* .gnu.linkonce.r.*) + + *(.eh_frame_hdr) + *(.eh_frame) + + . = ALIGN(4); + KEEP(*(.init)) + + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(8); + _etext = .; + } > shadow_ram + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > shadow_ram + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > shadow_ram + __exidx_end = .; + + _etext = .; + _etext_ram = . + ORIGIN(ram); + _etext_rom = . + ORIGIN(rom); + + .data : + { + _data = .; + *(vtable) + *(.data*) + _edata = .; + } > shadow_ram + + /* zero initialized data */ + .bss : + { + _bss = .; + __bss_start__ = .; + *(.bss*) + *(COMMON) + _ebss = .; + __bss_end__ = .; + } > shadow_ram + + /* Where we put the heap with cr_clib */ + .cr_heap : + { + end = .; + __end__ = .; + _pvHeapStart = .; + } > shadow_ram + + /* Leave room above stack for IAP to run */ + _StackTop = ORIGIN(ram) + (ORIGIN(shadow_ram) + LENGTH(shadow_ram) - 32); + +} diff --git a/firmware/common/LPC43xx_M4_Startup_ROM_to_RAM.c b/firmware/common/LPC43xx_M4_Startup_ROM_to_RAM.c new file mode 100644 index 00000000..50d9e234 --- /dev/null +++ b/firmware/common/LPC43xx_M4_Startup_ROM_to_RAM.c @@ -0,0 +1,118 @@ +/* + * Copyright 2012 Benjamin Vernoux + * + * This file is part of HackRF. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ +/* + Copyright 2010-07 By Opendous Inc. (www.MicropendousX.org) + NVIC handler info copied from NXP User Manual UM10360 + + Start-up code for LPC17xx. See TODOs for + modification instructions. + + Permission to use, copy, modify, and distribute this software + and its documentation for any purpose and without fee is hereby + granted, provided that the above copyright notice appear in all + copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaim all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#include + +#define CREG_BASE 0x40043000 +#define MMIO32(addr) (*(volatile unsigned long *)(addr)) +#define CREG_M4MEMMAP MMIO32(CREG_BASE + 0x100) + +/* Reset_Handler_ROM_to_RAM variables defined in linker script */ +extern unsigned long _text_ram; /* Correspond to start of Code in RAM */ +extern unsigned long _etext_ram; /* Correspond to end of Code in RAM */ +extern unsigned long _etext_rom; /* Correspond to end of Code in ROM */ + + +/* Reset_Handler variables defined in linker script */ +extern unsigned long _interrupt_vector_table; +extern unsigned long _data; +extern unsigned long _edata; +extern unsigned long _etext; +extern unsigned long _bss; +extern unsigned long _ebss; + +extern void __libc_init_array(void); +extern int main(void); + +/* Code to be Copied from ROM to RAM */ +void Reset_Handler_ROM_to_RAM(void) +{ + unsigned long *src, *dest; + + // Copy the code from ROM to Real RAM + src = &_etext_rom-(&_etext_ram-&_text_ram); + for(dest = &_text_ram; dest < &_etext_ram; ) + { + *dest++ = *src++; + } + + /* Change Shadow memory to Real RAM */ + CREG_M4MEMMAP = &_text_ram; + + /* Continue Execution in RAM */ +} + +/* Reset Handler */ +void Reset_Handler(void) +{ + unsigned long *src, *dest; + + Reset_Handler_ROM_to_RAM(); + + // Copy the data segment initializers from flash to SRAM + src = &_etext; + for(dest = &_data; dest < &_edata; ) + { + *dest++ = *src++; + } + + // Initialize the .bss segment of memory to zeros + src = &_bss; + while (src < &_ebss) + { + *src++ = 0; + } + + __libc_init_array(); + + // Set the vector table location. + SCB_VTOR = &_interrupt_vector_table; + + main(); + + // In case main() fails, have something to breakpoint + while (1) {;} +}