URL
https://opencores.org/ocsvn/storm_soc/storm_soc/trunk
Subversion Repositories storm_soc
Compare Revisions
- This comparison shows the changes necessary to convert path
/storm_soc
- from Rev 3 to Rev 4
- ↔ Reverse comparison
Rev 3 → Rev 4
/trunk/implementations/Altera DE2 Board/rtl/STORM_SoC_DE2.vhd
File deleted
\ No newline at end of file
/trunk/implementations/Altera DE2 Board/rtl/STORM_SoC_DE2_TB.vhd
File deleted
\ No newline at end of file
/trunk/implementations/Altera DE2 Board/syn/storm_soc_de2.pof
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
trunk/implementations/Altera DE2 Board/syn/storm_soc_de2.pof
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/implementations/Altera DE2 Board/syn/storm_soc_de2.sof
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/implementations/Altera DE2 Board/syn/storm_soc_de2.sof
===================================================================
--- trunk/implementations/Altera DE2 Board/syn/storm_soc_de2.sof (revision 3)
+++ trunk/implementations/Altera DE2 Board/syn/storm_soc_de2.sof (nonexistent)
trunk/implementations/Altera DE2 Board/syn/storm_soc_de2.sof
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/storm_soc_de2.h
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/storm_soc_de2.h (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/storm_soc_de2.h (nonexistent)
@@ -1,173 +0,0 @@
-#ifndef storm_soc_h
-#define storm_soc_h
-
-/////////////////////////////////////////////////////////////////
-// storm_soc_de2.h - STORM SoC for Altera DE2-Board
-// Based on the STORM Core Processor System
-//
-// Created by Stephan Nolting (stnolting@googlemail.com)
-// http://www.opencores.com/project,storm_core
-// http://www.opencores.com/project,storm_soc
-// Last modified 07. Mar. 2012
-/////////////////////////////////////////////////////////////////
-
-#define REG32 (volatile unsigned int*)
-
-/* Internal RAM */
-#define IRAM_BASE (*(REG32 (0x00000000)))
-#define IRAM_SIZE 8*1024
-
-/* External RAM */
-#define XRAM_BASE (*(REG32 (0x00002000)))
-#define XRAM_SIZE 8*1024*1024
-
-/* Complete RAM */
-#define RAM_BASE (*(REG32 (0x00000000)))
-#define RAM_SIZE IRAM_SIZE+XRAM_SIZE
-
-/* Internal ROM (boot ROM) */
-#define ROM_BASE (*(REG32 (0xFFF00000)))
-#define ROM_SIZE 2*1024
-
-/* De-Cached IO Area */
-#define IO_AREA_BEGIN (*(REG32 (0xFFFF0000)))
-#define IO_AREA_END (*(REG32 (0xFFFFFFFF)))
-#define IO_AREA_SIZE 524288;
-
-/* General Purpose IO Controller 0 */
-#define GPIO0_BASE (*(REG32 (0xFFFF0000)))
-#define GPIO0_SIZE 2*4
-#define GPIO0_OUT (*(REG32 (0xFFFF0000)))
-#define GPIO0_IN (*(REG32 (0xFFFF0004)))
-
-/* Seven Segment Controller 0 */
-#define SSEG0_BASE (*(REG32 (0xFFFF0008)))
-#define SSEG0_SIZE 2*4
-#define SSEG0_DATA (*(REG32 (0xFFFF0008)))
-#define SSEG0_CTRL (*(REG32 (0xFFFF000C)))
-
-/* Seven Segment Controller 1 */
-#define SSEG1_BASE (*(REG32 (0xFFFF0010)))
-#define SSEG1_SIZE 2*4
-#define SSEG1_DATA (*(REG32 (0xFFFF0010)))
-#define SSEG1_CTRL (*(REG32 (0xFFFF0014)))
-
-/* UART 0 - miniUART */
-#define UART0_BASE (*(REG32 (0xFFFF0018)))
-#define UART0_SIZE 2*4
-#define UART0_DATA (*(REG32 (0xFFFF0018)))
-#define UART0_SREG (*(REG32 (0xFFFF001C)))
-
-/* System Timer 0 */
-#define STME0_BASE (*(REG32 (0xFFFF0020)))
-#define STME0_SIZE 4*4
-#define STME0_CNT (*(REG32 (0xFFFF0020)))
-#define STME0_VAL (*(REG32 (0xFFFF0024)))
-#define STME0_CONF (*(REG32 (0xFFFF0028)))
-#define STME0_SCRT (*(REG32 (0xFFFF002C)))
-
-/* SPI 0 */
-#define SPI0_BASE (*(REG32 (0xFFFF0030)))
-#define SPI0_SIZE 8*4
-#define SPI0_CONF (*(REG32 (0xFFFF0030)))
-#define SPI0_PRSC (*(REG32 (0xFFFF0034)))
-#define SPI0_SCSR (*(REG32 (0xFFFF0038)))
-// unused location (*(REG32 (0xFFFF003C)))
-#define SPI0_DAT0 (*(REG32 (0xFFFF0040)))
-#define SPI0_DAT1 (*(REG32 (0xFFFF0044)))
-#define SPI0_DAT2 (*(REG32 (0xFFFF0048)))
-#define SPI0_DAT3 (*(REG32 (0xFFFF004C)))
-
-/* I²C 0 */
-#define I2C0_BASE (*(REG32 (0xFFFF0050)))
-#define I2C0_SIZE 8*4
-#define I2C0_CMD (*(REG32 (0xFFFF0050)))
-#define I2C0_STAT (*(REG32 (0xFFFF0050)))
-// unused location (*(REG32 (0xFFFF0054)))
-// unused location (*(REG32 (0xFFFF0058)))
-// unused location (*(REG32 (0xFFFF005C)))
-#define I2C0_PRLO (*(REG32 (0xFFFF0060)))
-#define I2C0_PRHI (*(REG32 (0xFFFF0064)))
-#define I2C0_CTRL (*(REG32 (0xFFFF0068)))
-#define I2C0_DATA (*(REG32 (0xFFFF006C)))
-
-/* Ps2 Interface */
-#define PS2_BASE (*(REG32 (0xFFFF0070)))
-#define PS2_SIZE 2*4
-#define PS2_DATA (*(REG32 (0xFFFF0070)))
-#define PS2_STAT (*(REG32 (0xFFFF0074)))
-
-/* External Memory CTRL */
-#define XMC_BASE (*(REG32 (0xFFFFEF00)))
-#define XMC_SIZE 20*4
-#define XMC_CSR (*(REG32 (0xFFFFEF00)))
-#define XMC_POC (*(REG32 (0xFFFFEF04)))
-#define XMC_BA_MASK (*(REG32 (0xFFFFEF08)))
-// unused location (*(REG32 (0xFFFFEF0C)))
-#define XMC_CSC0 (*(REG32 (0xFFFFEF10)))
-#define XMC_TMS0 (*(REG32 (0xFFFFEF14)))
-#define XMC_CSC1 (*(REG32 (0xFFFFEF18)))
-#define XMC_TMS1 (*(REG32 (0xFFFFEF1C)))
-#define XMC_CSC2 (*(REG32 (0xFFFFEF20)))
-#define XMC_TMS2 (*(REG32 (0xFFFFEF24)))
-#define XMC_CSC3 (*(REG32 (0xFFFFEF28)))
-#define XMC_TMS3 (*(REG32 (0xFFFFEF2C)))
-#define XMC_CSC4 (*(REG32 (0xFFFFEF30)))
-#define XMC_TMS4 (*(REG32 (0xFFFFEF34)))
-#define XMC_CSC5 (*(REG32 (0xFFFFEF38)))
-#define XMC_TMS5 (*(REG32 (0xFFFFEF3C)))
-#define XMC_CSC6 (*(REG32 (0xFFFFEF40)))
-#define XMC_TMS6 (*(REG32 (0xFFFFEF44)))
-#define XMC_CSC7 (*(REG32 (0xFFFFEF48)))
-#define XMC_TMS7 (*(REG32 (0xFFFFEF4C)))
-
-/* Vector Interrupt Controller */
-#define VIC_BASE (*(REG32 (0xFFFFF000)))
-#define VIC_SIZE 64*4
-#define VICIRQStatus (*(REG32 (0xFFFFF000)))
-#define VICFIQStatus (*(REG32 (0xFFFFF004)))
-#define VICRawIntr (*(REG32 (0xFFFFF008)))
-#define VICIntSelect (*(REG32 (0xFFFFF00C)))
-#define VICIntEnable (*(REG32 (0xFFFFF010)))
-#define VICIntEnClear (*(REG32 (0xFFFFF014)))
-#define VICSoftInt (*(REG32 (0xFFFFF018)))
-#define VICSoftIntClear (*(REG32 (0xFFFFF01C)))
-#define VICProtection (*(REG32 (0xFFFFF020)))
-#define VICVectAddr (*(REG32 (0xFFFFF030)))
-#define VICDefVectAddr (*(REG32 (0xFFFFF034)))
-#define VICTrigLevel (*(REG32 (0xFFFFF038)))
-#define VICTrigMode (*(REG32 (0xFFFFF03C)))
-#define VICVectAddr0 (*(REG32 (0xFFFFF040)))
-#define VICVectAddr1 (*(REG32 (0xFFFFF044)))
-#define VICVectAddr2 (*(REG32 (0xFFFFF048)))
-#define VICVectAddr3 (*(REG32 (0xFFFFF04C)))
-#define VICVectAddr4 (*(REG32 (0xFFFFF050)))
-#define VICVectAddr5 (*(REG32 (0xFFFFF054)))
-#define VICVectAddr6 (*(REG32 (0xFFFFF058)))
-#define VICVectAddr7 (*(REG32 (0xFFFFF05C)))
-#define VICVectAddr8 (*(REG32 (0xFFFFF060)))
-#define VICVectAddr9 (*(REG32 (0xFFFFF064)))
-#define VICVectAddr10 (*(REG32 (0xFFFFF068)))
-#define VICVectAddr11 (*(REG32 (0xFFFFF06C)))
-#define VICVectAddr12 (*(REG32 (0xFFFFF070)))
-#define VICVectAddr13 (*(REG32 (0xFFFFF074)))
-#define VICVectAddr14 (*(REG32 (0xFFFFF078)))
-#define VICVectAddr15 (*(REG32 (0xFFFFF07C)))
-#define VICVectCntl0 (*(REG32 (0xFFFFF080)))
-#define VICVectCntl1 (*(REG32 (0xFFFFF084)))
-#define VICVectCntl2 (*(REG32 (0xFFFFF088)))
-#define VICVectCntl3 (*(REG32 (0xFFFFF08C)))
-#define VICVectCntl4 (*(REG32 (0xFFFFF090)))
-#define VICVectCntl5 (*(REG32 (0xFFFFF094)))
-#define VICVectCntl6 (*(REG32 (0xFFFFF098)))
-#define VICVectCntl7 (*(REG32 (0xFFFFF09C)))
-#define VICVectCntl8 (*(REG32 (0xFFFFF0A0)))
-#define VICVectCntl9 (*(REG32 (0xFFFFF0A4)))
-#define VICVectCntl10 (*(REG32 (0xFFFFF0A8)))
-#define VICVectCntl11 (*(REG32 (0xFFFFF0AC)))
-#define VICVectCntl12 (*(REG32 (0xFFFFF0B0)))
-#define VICVectCntl13 (*(REG32 (0xFFFFF0B4)))
-#define VICVectCntl14 (*(REG32 (0xFFFFF0B8)))
-#define VICVectCntl15 (*(REG32 (0xFFFFF0BC)))
-
-#endif // storm_soc_h
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/storm_program.txt
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/storm_program.txt (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/storm_program.txt (nonexistent)
@@ -1,232 +0,0 @@
-000000 => x"EA000012",
-000001 => x"E59FF014",
-000002 => x"E59FF014",
-000003 => x"E59FF014",
-000004 => x"E59FF014",
-000005 => x"E1A00000",
-000006 => x"E51FFFF0",
-000007 => x"E59FF010",
-000008 => x"00000038",
-000009 => x"0000003C",
-000010 => x"00000040",
-000011 => x"00000044",
-000012 => x"00000048",
-000013 => x"0000004C",
-000014 => x"EAFFFFFE",
-000015 => x"EAFFFFFE",
-000016 => x"EAFFFFFE",
-000017 => x"EAFFFFFE",
-000018 => x"EAFFFFFE",
-000019 => x"EAFFFFFE",
-000020 => x"E59F00C8",
-000021 => x"E10F1000",
-000022 => x"E3C1107F",
-000023 => x"E38110DB",
-000024 => x"E129F001",
-000025 => x"E1A0D000",
-000026 => x"E2400080",
-000027 => x"E10F1000",
-000028 => x"E3C1107F",
-000029 => x"E38110D7",
-000030 => x"E129F001",
-000031 => x"E1A0D000",
-000032 => x"E2400080",
-000033 => x"E10F1000",
-000034 => x"E3C1107F",
-000035 => x"E38110D1",
-000036 => x"E129F001",
-000037 => x"E1A0D000",
-000038 => x"E2400080",
-000039 => x"E10F1000",
-000040 => x"E3C1107F",
-000041 => x"E38110D2",
-000042 => x"E129F001",
-000043 => x"E1A0D000",
-000044 => x"E2400080",
-000045 => x"E10F1000",
-000046 => x"E3C1107F",
-000047 => x"E38110D3",
-000048 => x"E129F001",
-000049 => x"E1A0D000",
-000050 => x"E2400080",
-000051 => x"E10F1000",
-000052 => x"E3C1107F",
-000053 => x"E38110DF",
-000054 => x"E129F001",
-000055 => x"E1A0D000",
-000056 => x"E3A00000",
-000057 => x"E59F1038",
-000058 => x"E59F2038",
-000059 => x"E1510002",
-000060 => x"0A000001",
-000061 => x"34810004",
-000062 => x"3AFFFFFB",
-000063 => x"E3A00000",
-000064 => x"E1A01000",
-000065 => x"E1A02000",
-000066 => x"E1A0B000",
-000067 => x"E1A07000",
-000068 => x"E59FA014",
-000069 => x"E1A0E00F",
-000070 => x"E1A0F00A",
-000071 => x"EAFFFFFE",
-000072 => x"00001400",
-000073 => x"0000039C",
-000074 => x"000003A0",
-000075 => x"00000294",
-000076 => x"E92D000E",
-000077 => x"E59F2028",
-000078 => x"E5923000",
-000079 => x"E2833001",
-000080 => x"E5823000",
-000081 => x"E5921000",
-000082 => x"E3E03A0F",
-000083 => x"E5031FF7",
-000084 => x"E3A02000",
-000085 => x"E2833A0F",
-000086 => x"E5032FCF",
-000087 => x"E8BD000E",
-000088 => x"E25EF004",
-000089 => x"0000039C",
-000090 => x"E3E0CA0F",
-000091 => x"E51C3FCF",
-000092 => x"E3130C01",
-000093 => x"1AFFFFFC",
-000094 => x"E1E02001",
-000095 => x"E20220FF",
-000096 => x"E50C0FBF",
-000097 => x"E50C2FC7",
-000098 => x"E51C3FCF",
-000099 => x"E3833C01",
-000100 => x"E50C3FCF",
-000101 => x"E1A0F00E",
-000102 => x"E3E02A0F",
-000103 => x"E5123FE3",
-000104 => x"E3130002",
-000105 => x"E3E00000",
-000106 => x"15120FE7",
-000107 => x"E1A0F00E",
-000108 => x"E20000FF",
-000109 => x"E3E02A0F",
-000110 => x"E5123FE3",
-000111 => x"E3130001",
-000112 => x"0AFFFFFC",
-000113 => x"E5020FE7",
-000114 => x"E1A0F00E",
-000115 => x"E3E03A0F",
-000116 => x"E3A02090",
-000117 => x"E5032FAF",
-000118 => x"E20000FF",
-000119 => x"E1A02003",
-000120 => x"E5123FAF",
-000121 => x"E3130002",
-000122 => x"1AFFFFFC",
-000123 => x"E3A03010",
-000124 => x"E5020F93",
-000125 => x"E5023FAF",
-000126 => x"E3E02A0F",
-000127 => x"E5123FAF",
-000128 => x"E3130080",
-000129 => x"1AFFFFFC",
-000130 => x"E3A03010",
-000131 => x"E5021F93",
-000132 => x"E5023FAF",
-000133 => x"E3E02A0F",
-000134 => x"E5123FAF",
-000135 => x"E3130080",
-000136 => x"1AFFFFFC",
-000137 => x"E3A03040",
-000138 => x"E5023FAF",
-000139 => x"E3E02A0F",
-000140 => x"E5123FAF",
-000141 => x"E3130002",
-000142 => x"1AFFFFFC",
-000143 => x"E1A00001",
-000144 => x"E1A0F00E",
-000145 => x"E10F3000",
-000146 => x"E3C33080",
-000147 => x"E129F003",
-000148 => x"E1A0F00E",
-000149 => x"E10F3000",
-000150 => x"E3833080",
-000151 => x"E129F003",
-000152 => x"E1A0F00E",
-000153 => x"E0603280",
-000154 => x"E0800103",
-000155 => x"E0800100",
-000156 => x"E1A00200",
-000157 => x"E3500000",
-000158 => x"D1A0F00E",
-000159 => x"E3A03000",
-000160 => x"E1A00000",
-000161 => x"E2833001",
-000162 => x"E1530000",
-000163 => x"1AFFFFFB",
-000164 => x"E1A0F00E",
-000165 => x"E3A02C06",
-000166 => x"E92D4070",
-000167 => x"E2822008",
-000168 => x"E3E04A0F",
-000169 => x"E3A05000",
-000170 => x"E3A03F7D",
-000171 => x"E5045FEF",
-000172 => x"E3A010FF",
-000173 => x"E5045FF7",
-000174 => x"E1A00005",
-000175 => x"E5042FCF",
-000176 => x"E5043FCB",
-000177 => x"EBFFFFA7",
-000178 => x"E1A00005",
-000179 => x"E3A010FF",
-000180 => x"EBFFFFA4",
-000181 => x"E3A03063",
-000182 => x"E59F20B4",
-000183 => x"E5043F9F",
-000184 => x"E3A017BE",
-000185 => x"E283301D",
-000186 => x"E5045F9B",
-000187 => x"E2811A2F",
-000188 => x"E5043F97",
-000189 => x"E5825000",
-000190 => x"E59F2098",
-000191 => x"E3E00000",
-000192 => x"E2811080",
-000193 => x"E2433079",
-000194 => x"E5045FDF",
-000195 => x"E5041FDB",
-000196 => x"E5043FD7",
-000197 => x"E5002FBF",
-000198 => x"E2833019",
-000199 => x"E3A02001",
-000200 => x"E5003F7F",
-000201 => x"E5002FEF",
-000202 => x"EBFFFFC5",
-000203 => x"E1A06005",
-000204 => x"EA000001",
-000205 => x"E1A03846",
-000206 => x"E5053FFF",
-000207 => x"EBFFFF95",
-000208 => x"E2504000",
-000209 => x"E3E05A0F",
-000210 => x"E2866001",
-000211 => x"E3A010FF",
-000212 => x"BA000002",
-000213 => x"EBFFFF83",
-000214 => x"E20400FF",
-000215 => x"EBFFFF93",
-000216 => x"E5153F8B",
-000217 => x"E3130002",
-000218 => x"E3A010FF",
-000219 => x"0AFFFFF0",
-000220 => x"E3A03000",
-000221 => x"E5053F8B",
-000222 => x"E5154F8F",
-000223 => x"E1A00004",
-000224 => x"E20440FF",
-000225 => x"EBFFFF77",
-000226 => x"E1A00004",
-000227 => x"EBFFFF87",
-000228 => x"EAFFFFE7",
-000229 => x"0000039C",
-000230 => x"00000130",
-others => x"F0013007"
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/main.elf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/main.elf
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/main.elf (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/main.elf (nonexistent)
trunk/implementations/Altera DE2 Board/software/blink_demo/main.elf
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/Makefile
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/Makefile (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/Makefile (nonexistent)
@@ -1,431 +0,0 @@
-# Hey Emacs, this is a -*- makefile -*-
-#
-# WinARM template makefile
-# by Martin Thomas, Kaiserslautern, Germany
-#
-#
-# based on the WinAVR makefile written by Eric B. Weddington, Jörg Wunsch, et al.
-# Released to the Public Domain
-# Please read the make user manual!
-#
-#
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make program = Download the hex file to the device, using lpc21isp
-#
-# (TODO: make filename.s = Just compile filename.c into the assembler code only)
-#
-# To rebuild project do "make clean" then "make all".
-#
-# Changelog:
-# - 17. Feb. 2005 - added thumb-interwork support (mth)
-# - 28. Apr. 2005 - added C++ support (mth)
-# - 29. Arp. 2005 - changed handling for lst-Filename (mth)
-# - 22. Jan. 2012 - modified to handle storm core project
-#
-
-# MCU name and submodel
-MCU = arm7m
-SUBMDL = STORMcore
-
-
-THUMB =
-THUMB_IW =
-
-
-## Create RAM-Image
-RUN_MODE = RAM_RUN
-
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-
-# Target file name (without extension).
-TARGET = main
-
-
-# List C source files here. (C dependencies are automatically generated.)
-# use file-extension c for "c-only"-files
-#SRC =
-
-# List C source files here which must be compiled in ARM-Mode.
-# use file-extension c for "c-only"-files
-SRCARM = $(TARGET).c
-
-# List C++ source files here.
-# use file-extension cpp for C++-files
-CPPSRC =
-
-# List C++ source files here which must be compiled in ARM-Mode.
-# use file-extension cpp for C++-files
-# CPPSRCARM = $(TARGET).cpp
-CPPSRCARM =
-
-# List Assembler source files here.
-# Make them always end in a capital .S. Files ending in a lowercase .s
-# will not be considered source files but generated files (assembler
-# output from the compiler), and will be deleted upon "make clean"!
-# Even though the DOS/Win* filesystem matches both .s and .S the same,
-# it will preserve the spelling of the filenames, and gcc itself does
-# care about how the name is spelled on its command-line.
-ASRC =
-
-# List Assembler source files here which must be assembled in ARM-Mode..
-ASRCARM = build/storm_startup_code.S
-
-# Optimization level, can be [0, 1, 2, 3, s].
-# 0 = turn off optimization. s = optimize for size.
-# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = 2
-
-# Debugging format.
-# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
-# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
-#DEBUG = stabs
-DEBUG = dwarf-2
-
-# List any extra directories to look for include files here.
-# Each directory must be seperated by a space.
-#EXTRAINCDIRS = ./include
-EXTRAINCDIRS =
-
-# Compiler flag to set the C Standard level.
-# c89 - "ANSI" C
-# gnu89 - c89 plus GCC extensions
-# c99 - ISO C99 standard (not yet fully implemented)
-# gnu99 - c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-# Place -D or -U options for C here
-CDEFS = -D$(RUN_MODE)
-
-# Place -I options here
-CINCS =
-
-# Place -D or -U options for ASM here
-ADEFS = -D$(RUN_MODE)
-
-
-# Compiler flags.
-# -g*: generate debugging information
-# -O*: optimization level
-# -f...: tuning, see GCC manual and avr-libc documentation
-# -Wall...: warning level
-# -Wa,...: tell GCC to pass this to the assembler.
-# -adhlns...: create assembler listing
-#
-# Flags for C and C++ (arm-elf-gcc/arm-elf-g++)
-CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS) $(CINCS)
-CFLAGS += -O$(OPT)
-CFLAGS += -Wall -Wcast-align -Wcast-qual -Wimplicit
-CFLAGS += -Wpointer-arith -Wswitch
-CFLAGS += -Wredundant-decls -Wreturn-type -Wshadow -Wunused
-#CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
-CFLAGS += -Wa,-adhlns=$(subst $(suffix $<),.lst,$<)
-CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
-
-# flags only for C
-CONLYFLAGS = -Wstrict-prototypes -Wmissing-declarations
-CONLYFLAGS += -Wmissing-prototypes -Wnested-externs
-CONLYFLAGS += $(CSTANDARD)
-
-# flags only for C++ (arm-elf-g++)
-CPPFLAGS =
-
-# Assembler flags.
-# -Wa,...: tell GCC to pass this to the assembler.
-# -ahlms: create listing
-# -gstabs: have the assembler create line number information; note that
-# for use in COFF files, additional information about filenames
-# and function names needs to be present in the assembler source
-# files -- see avr-libc docs [FIXME: not yet described there]
-##ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:.S=.lst),-g$(DEBUG)
-
-#Additional libraries.
-
-#Support for newlibc-lpc (file: libnewlibc-lpc.a)
-#NEWLIBLPC = -lnewlib-lpc
-NEWLIBCLPC =
-
-MATH_LIB = -lm
-
-# Linker flags.
-# -Wl,...: tell GCC to pass this to linker.
-# -Map: create map file
-# --cref: add cross reference to map file
-LDFLAGS = -nostartfiles -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += -lc
-LDFLAGS += $(NEWLIBLPC) $(MATH_LIB)
-LDFLAGS += -lc -lgcc
-
-# Set Linker-Script Depending On Selected Memory
-ifeq ($(RUN_MODE),RAM_RUN)
-LDFLAGS +=-Tbuild/$(SUBMDL)-RAM.ld
-else
-LDFLAGS +=-Tbuild/$(SUBMDL)-ROM.ld
-endif
-
-
-
-# ---------------------------------------------------------------------------
-# Flash-Programming support using lpc21isp by Martin Maurer
-
-# Settings and variables:
-LPC21ISP = lpc21isp
-#LPC21ISP = lpc21isp_beta
-LPC21ISP_PORT = com1
-LPC21ISP_BAUD = 115200
-LPC21ISP_XTAL = 14746
-LPC21ISP_FLASHFILE = $(TARGET).hex
-# verbose output:
-## LPC21ISP_DEBUG = -debug
-# enter bootloader via RS232 DTR/RTS (only if hardware supports this
-# feature - see Philips AppNote):
-LPC21ISP_CONTROL = -control
-
-
-# ---------------------------------------------------------------------------
-
-# Define directories, if needed.
-## DIRARM = c:/WinARM/
-## DIRARMBIN = $(DIRAVR)/bin/
-## DIRAVRUTILS = $(DIRAVR)/utils/bin/
-
-# Define programs and commands.
-SHELL = sh
-CC = arm-elf-gcc -mbig-endian
-CPP = arm-elf-g++
-OBJCOPY = arm-elf-objcopy
-OBJDUMP = arm-elf-objdump
-SIZE = arm-elf-size
-NM = arm-elf-nm
-REMOVE = rm -f
-COPY = cp
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = -------- end --------
-MSG_EXTRACT = Extracting bootloader program file:
-MSG_SIZE_BEFORE = Size before:
-MSG_SIZE_AFTER = Size after:
-MSG_FLASH = Creating load file for Flash:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling C:
-MSG_COMPILING_ARM = "Compiling C (ARM-only):"
-MSG_COMPILINGCPP = Compiling C++:
-MSG_COMPILINGCPP_ARM = "Compiling C++ (ARM-only):"
-MSG_ASSEMBLING = Assembling:
-MSG_ASSEMBLING_ARM = "Assembling (ARM-only):"
-MSG_CLEANING = Cleaning project:
-MSG_LPC21_RESETREMINDER = You may have to bring the target in bootloader-mode now.
-
-
-# Define all object files.
-COBJ = $(SRC:.c=.o)
-AOBJ = $(ASRC:.S=.o)
-COBJARM = $(SRCARM:.c=.o)
-AOBJARM = $(ASRCARM:.S=.o)
-CPPOBJ = $(CPPSRC:.cpp=.o)
-CPPOBJARM = $(CPPSRCARM:.cpp=.o)
-
-# Define all listing files.
-LST = $(ASRC:.S=.lst) $(ASRCARM:.S=.lst) $(SRC:.c=.lst) $(SRCARM:.c=.lst)
-LST += $(CPPSRC:.cpp=.lst) $(CPPSRCARM:.cpp=.lst)
-
-# Compiler flags to generate dependency files.
-### GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d
-GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mcpu=$(MCU) $(THUMB_IW) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mcpu=$(MCU) $(THUMB_IW) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter finished cmp end
-
-build: elf hex lss
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-# Extract memory file.
-cmp:
- @echo
- @echo $(MSG_EXTRACT)
- storm_extractor.exe $(TARGET).elf
- @echo
-
-
-# Eye candy.
-begin:
- @echo
- @echo $(MSG_BEGIN)
-
-finished:
- @echo $(MSG_ERRORS_NONE)
-
-end:
- @echo $(MSG_END)
- @echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) -A $(TARGET).elf
-sizebefore:
- @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
-
-sizeafter:
- @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
-
-
-# Display compiler version information.
-gccversion :
- @$(CC) --version
-
-
-# Program the device.
-program: $(TARGET).hex
- @echo
- @echo $(MSG_LPC21_RESETREMINDER)
- $(LPC21ISP) $(LPC21ISP_CONTROL) $(LPC21ISP_DEBUG) $(LPC21ISP_FLASHFILE) $(LPC21ISP_PORT) $(LPC21ISP_BAUD) $(LPC21ISP_XTAL)
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-# TODO: handling the .eeprom-section should be redundant
-%.hex: %.elf
- @echo
- @echo $(MSG_FLASH) $@
- $(OBJCOPY) -O $(FORMAT) $< $@
-
-
-# Create extended listing file from ELF output file.
-# testing: option -C
-%.lss: %.elf
- @echo
- @echo $(MSG_EXTENDED_LISTING) $@
- $(OBJDUMP) -h -S -C $< > $@
-
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
- @echo
- @echo $(MSG_SYMBOL_TABLE) $@
- $(NM) -n $< > $@
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM)
-%.elf: $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM)
- @echo
- @echo $(MSG_LINKING) $@
- $(CC) $(THUMB) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) --output $@ $(LDFLAGS)
-# $(CPP) $(THUMB) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) --output $@ $(LDFLAGS)
-
-# Compile: create object files from C source files. ARM/Thumb
-$(COBJ) : %.o : %.c
- @echo
- @echo $(MSG_COMPILING) $<
- $(CC) -c $(THUMB) $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
-
-# Compile: create object files from C source files. ARM-only
-$(COBJARM) : %.o : %.c
- @echo
- @echo $(MSG_COMPILING_ARM) $<
- $(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
-
-# Compile: create object files from C++ source files. ARM/Thumb
-$(CPPOBJ) : %.o : %.cpp
- @echo
- @echo $(MSG_COMPILINGCPP) $<
- $(CPP) -c $(THUMB) $(ALL_CFLAGS) $(CPPFLAGS) $< -o $@
-
-# Compile: create object files from C++ source files. ARM-only
-$(CPPOBJARM) : %.o : %.cpp
- @echo
- @echo $(MSG_COMPILINGCPP_ARM) $<
- $(CPP) -c $(ALL_CFLAGS) $(CPPFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files. ARM/Thumb
-## does not work - TODO - hints welcome
-##$(COBJ) : %.s : %.c
-## $(CC) $(THUMB) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files. ARM/Thumb
-$(AOBJ) : %.o : %.S
- @echo
- @echo $(MSG_ASSEMBLING) $<
- $(CC) -c $(THUMB) $(ALL_ASFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files. ARM-only
-$(AOBJARM) : %.o : %.S
- @echo
- @echo $(MSG_ASSEMBLING_ARM) $<
- $(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-
-# Target: clean project.
-clean: begin clean_list finished end
-
-
-clean_list :
- @echo
- @echo $(MSG_CLEANING)
- $(REMOVE) $(TARGET).hex
- $(REMOVE) $(TARGET).obj
- $(REMOVE) $(TARGET).elf
- $(REMOVE) $(TARGET).map
- $(REMOVE) $(TARGET).obj
- $(REMOVE) $(TARGET).a90
- $(REMOVE) $(TARGET).sym
- $(REMOVE) $(TARGET).lnk
- $(REMOVE) $(TARGET).lss
- $(REMOVE) a.out
- $(REMOVE) storm_program.txt
- $(REMOVE) storm_program.dat
- $(REMOVE) $(COBJ)
- $(REMOVE) $(CPPOBJ)
- $(REMOVE) $(AOBJ)
- $(REMOVE) $(COBJARM)
- $(REMOVE) $(CPPOBJARM)
- $(REMOVE) $(AOBJARM)
- $(REMOVE) $(LST)
- $(REMOVE) $(SRC:.c=.s)
- $(REMOVE) $(SRC:.c=.d)
- $(REMOVE) $(SRCARM:.c=.s)
- $(REMOVE) $(SRCARM:.c=.d)
- $(REMOVE) $(CPPSRC:.cpp=.s)
- $(REMOVE) $(CPPSRC:.cpp=.d)
- $(REMOVE) $(CPPSRCARM:.cpp=.s)
- $(REMOVE) $(CPPSRCARM:.cpp=.d)
- $(REMOVE) .dep/*
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex lss sym clean clean_list program
-
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/build/storm_startup_code.S
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/build/storm_startup_code.S (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/build/storm_startup_code.S (nonexistent)
@@ -1,175 +0,0 @@
- .global main // int main(void)
-
- .global _etext // -> .data initial values in ROM
- .global _data // -> .data area in RAM
- .global _edata // end of .data area
- .global __bss_start // -> .bss area in RAM
- .global __bss_end__ // end of .bss area
- .global _stack // top of stack
-
-// Stack Sizes
- .set UND_STACK_SIZE, 0x00000080
- .set ABT_STACK_SIZE, 0x00000080
- .set FIQ_STACK_SIZE, 0x00000080
- .set IRQ_STACK_SIZE, 0X00000080
- .set SVC_STACK_SIZE, 0x00000080
-
-// Standard definitions of Mode bits and Interrupt flags in MSRs
- .set MODE_USR, 0x10 // User Mode
- .set MODE_FIQ, 0x11 // FIQ Mode
- .set MODE_IRQ, 0x12 // IRQ Mode
- .set MODE_SVC, 0x13 // Supervisor Mode
- .set MODE_ABT, 0x17 // Abort Mode
- .set MODE_UND, 0x1B // Undefined Mode
- .set MODE_SYS, 0x1F // System Mode
-
- .equ FIQ_BIT, 0x40 // when FIQ bit is set, FIQ is disabled
- .equ IRQ_BIT, 0x80 // when IRQ bit is set, IRQ is disabled
-
- .text
- .code 32
- .align 2
-
- .global _boot
- .func _boot
-_boot:
-
-// Runtime Interrupt Vectors
-// -------------------------------------------------------------------
-Vectors:
- b _start // reset - _start
- ldr pc,_undf // undefined - _undf
- ldr pc,_swi // SWI - _swi
- ldr pc,_pabt // program abort - _pabt
- ldr pc,_dabt // data abort - _dabt
- nop // reserved
- ldr pc,[pc,#-0xFF0] // IRQ - read the VIC
- ldr pc,_fiq // FIQ - _fiq
-
-
-// Use this group for development
-_undf: .word __undf // undefined
-_swi: .word __swi // SWI
-_pabt: .word __pabt // program abort
-_dabt: .word __dabt // data abort
-_irq: .word __irq // IRQ
-_fiq: .word __fiq // FIQ
-
-__undf: b . // undefined
-__swi: b . // SWI
-__pabt: b . // program abort
-__dabt: b . // data abort
-__irq: b . // IRQ
-__fiq: b . // FIQ
-
- .size _boot, . - _boot
- .endfunc
-
-
-// Setup the operating mode & stack.
-// -------------------------------------------------------------------
- .global _start, start, _mainCRTStartup
- .func _start
-
-_start:
-start:
-_mainCRTStartup:
-
-// Who am I? Where am I going?
-
-// Initialize Interrupt System
-// - Set stack location for each mode
-// - Leave in System Mode with Interrupts Disabled
-// ----------------------------------------------------
- ldr r0,=_stack // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_UND|IRQ_BIT|FIQ_BIT // Change to Undefined Instruction mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#UND_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_ABT|IRQ_BIT|FIQ_BIT // Change to Abort Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#ABT_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_FIQ|IRQ_BIT|FIQ_BIT // Change to FIQ Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#FIQ_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_IRQ|IRQ_BIT|FIQ_BIT // Change to IRQ Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#IRQ_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_SVC|IRQ_BIT|FIQ_BIT // Change to Supervisor Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#SVC_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_SYS|IRQ_BIT|FIQ_BIT // Change to System Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
-// Copy initialized data to its execution address in RAM
-// -------------------------------------------------------------------
-#ifdef ROM_RUN
- ldr r1,=_etext // -> ROM data start
- ldr r2,=_data // -> data start
- ldr r3,=_edata // -> end of data
-x01: cmp r2,r3 // check if data to move
- beq y01
- ldrlo r0,[r1],#4 // copy it
- strlo r0,[r2],#4
- blo x01 // loop until done
-y01:
-#endif
-// Clear .bss
-// ----------
- mov r0,#0 // get a zero
- ldr r1,=__bss_start // -> bss start
- ldr r2,=__bss_end__ // -> bss end
-x02: cmp r1,r2 // check if data to clear
- beq y02
- strlo r0,[r1],#4 // clear 4 bytes
- blo x02 // loop until done
-y02:
-// Call main program: main(0)
-// --------------------------
- mov r0,#0 // no arguments (argc = 0)
- mov r1,r0
- mov r2,r0
- mov fp,r0 // null frame pointer
- mov r7,r0 // null frame pointer for thumb
- ldr r10,=main
- mov lr,pc
- mov pc, r10 // enter main()
-
- .size _start, . - _start
- .endfunc
-
- .global _reset, reset, exit, abort
- .func _reset
-_reset:
-reset:
-exit:
-abort:
-
- b . // loop until reset
-
- .size _reset, . - _reset
- .endfunc
-
- .end
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/build/storm_startup_code.lst
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/build/storm_startup_code.lst (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/build/storm_startup_code.lst (nonexistent)
@@ -1,231 +0,0 @@
- 1 # 1 "build/storm_startup_code.S"
- 2 # 1 ""
- 1 .global main // int main(void)
- 0
- 0
- 2
- 3 .global _etext // -> .data initial values in ROM
- 4 .global _data // -> .data area in RAM
- 5 .global _edata // end of .data area
- 6 .global __bss_start // -> .bss area in RAM
- 7 .global __bss_end__ // end of .bss area
- 8 .global _stack // top of stack
- 9
- 10 // Stack Sizes
- 11 .set UND_STACK_SIZE, 0x00000080
- 12 .set ABT_STACK_SIZE, 0x00000080
- 13 .set FIQ_STACK_SIZE, 0x00000080
- 14 .set IRQ_STACK_SIZE, 0X00000080
- 15 .set SVC_STACK_SIZE, 0x00000080
- 16
- 17 // Standard definitions of Mode bits and Interrupt flags in MSRs
- 18 .set MODE_USR, 0x10 // User Mode
- 19 .set MODE_FIQ, 0x11 // FIQ Mode
- 20 .set MODE_IRQ, 0x12 // IRQ Mode
- 21 .set MODE_SVC, 0x13 // Supervisor Mode
- 22 .set MODE_ABT, 0x17 // Abort Mode
- 23 .set MODE_UND, 0x1B // Undefined Mode
- 24 .set MODE_SYS, 0x1F // System Mode
- 25
- 26 .equ FIQ_BIT, 0x40 // when FIQ bit is set, FIQ is disabled
- 27 .equ IRQ_BIT, 0x80 // when IRQ bit is set, IRQ is disabled
- 28
- 29 .text
- 30 .code 32
- 31 .align 2
- 32
- 33 .global _boot
- 34 .func _boot
- 35 _boot:
- 36
- 37 // Runtime Interrupt Vectors
- 38 // -------------------------------------------------------------------
- 39 Vectors:
- 40 0000 EAFFFFFE b _start // reset - _start
- 41 0004 E59FF014 ldr pc,_undf // undefined - _undf
- 42 0008 E59FF014 ldr pc,_swi // SWI - _swi
- 43 000c E59FF014 ldr pc,_pabt // program abort - _pabt
- 44 0010 E59FF014 ldr pc,_dabt // data abort - _dabt
- 45 0014 E1A00000 nop // reserved
- 46 0018 E51FFFF0 ldr pc,[pc,#-0xFF0] // IRQ - read the VIC
- 47 001c E59FF010 ldr pc,_fiq // FIQ - _fiq
- 48
- 49
- 50 // Use this group for development
- 51 0020 00000038 _undf: .word __undf // undefined
- 52 0024 0000003C _swi: .word __swi // SWI
- 53 0028 00000040 _pabt: .word __pabt // program abort
- 54 002c 00000044 _dabt: .word __dabt // data abort
- 55 0030 00000048 _irq: .word __irq // IRQ
- 56 0034 0000004C _fiq: .word __fiq // FIQ
- 57
- 58 0038 EAFFFFFE __undf: b . // undefined
- 59 003c EAFFFFFE __swi: b . // SWI
- 60 0040 EAFFFFFE __pabt: b . // program abort
- 61 0044 EAFFFFFE __dabt: b . // data abort
- 62 0048 EAFFFFFE __irq: b . // IRQ
- 63 004c EAFFFFFE __fiq: b . // FIQ
- 64
- 66 .endfunc
- 67
- 68
- 69 // Setup the operating mode & stack.
- 70 // -------------------------------------------------------------------
- 71 .global _start, start, _mainCRTStartup
- 72 .func _start
- 73
- 74 _start:
- 75 start:
- 76 _mainCRTStartup:
- 77
- 78 // Who am I? Where am I going?
- 79
- 80 // Initialize Interrupt System
- 81 // - Set stack location for each mode
- 82 // - Leave in System Mode with Interrupts Disabled
- 83 // ----------------------------------------------------
- 84 0050 E59F00C8 ldr r0,=_stack // Calc stack base
- 85 0054 E10F1000 mrs r1,CPSR
- 86 0058 E3C1107F bic r1,r1,#0x7F
- 87 005c E38110DB orr r1,r1,#MODE_UND|IRQ_BIT|FIQ_BIT // Change to Undefined Instruction mode
- 88 0060 E129F001 msr CPSR,r1
- 89 0064 E1A0D000 mov sp,r0 // Store stack base
- 90
- 91 0068 E2400080 sub r0,r0,#UND_STACK_SIZE // Calc stack base
- 92 006c E10F1000 mrs r1,CPSR
- 93 0070 E3C1107F bic r1,r1,#0x7F
- 94 0074 E38110D7 orr r1,r1,#MODE_ABT|IRQ_BIT|FIQ_BIT // Change to Abort Mode
- 95 0078 E129F001 msr CPSR,r1
- 96 007c E1A0D000 mov sp,r0 // Store stack base
- 97
- 98 0080 E2400080 sub r0,r0,#ABT_STACK_SIZE // Calc stack base
- 99 0084 E10F1000 mrs r1,CPSR
- 100 0088 E3C1107F bic r1,r1,#0x7F
- 101 008c E38110D1 orr r1,r1,#MODE_FIQ|IRQ_BIT|FIQ_BIT // Change to FIQ Mode
- 102 0090 E129F001 msr CPSR,r1
- 103 0094 E1A0D000 mov sp,r0 // Store stack base
- 104
- 105 0098 E2400080 sub r0,r0,#FIQ_STACK_SIZE // Calc stack base
- 106 009c E10F1000 mrs r1,CPSR
- 107 00a0 E3C1107F bic r1,r1,#0x7F
- 108 00a4 E38110D2 orr r1,r1,#MODE_IRQ|IRQ_BIT|FIQ_BIT // Change to IRQ Mode
- 109 00a8 E129F001 msr CPSR,r1
- 110 00ac E1A0D000 mov sp,r0 // Store stack base
- 111
- 112 00b0 E2400080 sub r0,r0,#IRQ_STACK_SIZE // Calc stack base
- 113 00b4 E10F1000 mrs r1,CPSR
- 114 00b8 E3C1107F bic r1,r1,#0x7F
- 115 00bc E38110D3 orr r1,r1,#MODE_SVC|IRQ_BIT|FIQ_BIT // Change to Supervisor Mode
- 116 00c0 E129F001 msr CPSR,r1
- 117 00c4 E1A0D000 mov sp,r0 // Store stack base
- 118
- 119 00c8 E2400080 sub r0,r0,#SVC_STACK_SIZE // Calc stack base
- 120 00cc E10F1000 mrs r1,CPSR
- 121 00d0 E3C1107F bic r1,r1,#0x7F
- 122 00d4 E38110DF orr r1,r1,#MODE_SYS|IRQ_BIT|FIQ_BIT // Change to System Mode
- 123 00d8 E129F001 msr CPSR,r1
- 124 00dc E1A0D000 mov sp,r0 // Store stack base
- 125
- 126 // Copy initialized data to its execution address in RAM
- 127 // -------------------------------------------------------------------
- 128 #ifdef ROM_RUN
- 129 ldr r1,=_etext // -> ROM data start
- 130 ldr r2,=_data // -> data start
- 131 ldr r3,=_edata // -> end of data
- 132 x01: cmp r2,r3 // check if data to move
- 133 beq y01
- 134 ldrlo r0,[r1],#4 // copy it
- 135 strlo r0,[r2],#4
- 136 blo x01 // loop until done
- 137 y01:
- 138 #endif
- 139 // Clear .bss
- 140 // ----------
- 141 00e0 E3A00000 mov r0,#0 // get a zero
- 142 00e4 E59F1038 ldr r1,=__bss_start // -> bss start
- 143 00e8 E59F2038 ldr r2,=__bss_end__ // -> bss end
- 144 00ec E1510002 x02: cmp r1,r2 // check if data to clear
- 145 00f0 0A000001 beq y02
- 146 00f4 34810004 strlo r0,[r1],#4 // clear 4 bytes
- 147 00f8 3AFFFFFB blo x02 // loop until done
- 148 y02:
- 149 // Call main program: main(0)
- 150 // --------------------------
- 151 00fc E3A00000 mov r0,#0 // no arguments (argc = 0)
- 152 0100 E1A01000 mov r1,r0
- 153 0104 E1A02000 mov r2,r0
- 154 0108 E1A0B000 mov fp,r0 // null frame pointer
- 155 010c E1A07000 mov r7,r0 // null frame pointer for thumb
- 156 0110 E59FA014 ldr r10,=main
- 157 0114 E1A0E00F mov lr,pc
- 158 0118 E1A0F00A mov pc, r10 // enter main()
- 159
- 161 .endfunc
- 162
- 163 .global _reset, reset, exit, abort
- 164 .func _reset
- 165 _reset:
- 166 reset:
- 167 exit:
- 168 abort:
- 169
- 170 011c EAFFFFFE b . // loop until reset
- 171
- 173 .endfunc
- 174
- 175 0120 00000000 .end
- 175 00000000
- 175 00000000
- 175 00000000
-DEFINED SYMBOLS
- *ABS*:00000000 build/storm_startup_code.S
-build/storm_startup_code.S:11 *ABS*:00000080 UND_STACK_SIZE
-build/storm_startup_code.S:12 *ABS*:00000080 ABT_STACK_SIZE
-build/storm_startup_code.S:13 *ABS*:00000080 FIQ_STACK_SIZE
-build/storm_startup_code.S:14 *ABS*:00000080 IRQ_STACK_SIZE
-build/storm_startup_code.S:15 *ABS*:00000080 SVC_STACK_SIZE
-build/storm_startup_code.S:18 *ABS*:00000010 MODE_USR
-build/storm_startup_code.S:19 *ABS*:00000011 MODE_FIQ
-build/storm_startup_code.S:20 *ABS*:00000012 MODE_IRQ
-build/storm_startup_code.S:21 *ABS*:00000013 MODE_SVC
-build/storm_startup_code.S:22 *ABS*:00000017 MODE_ABT
-build/storm_startup_code.S:23 *ABS*:0000001b MODE_UND
-build/storm_startup_code.S:24 *ABS*:0000001f MODE_SYS
-build/storm_startup_code.S:26 *ABS*:00000040 FIQ_BIT
-build/storm_startup_code.S:27 *ABS*:00000080 IRQ_BIT
-build/storm_startup_code.S:30 .text:00000000 $a
-build/storm_startup_code.S:35 .text:00000000 _boot
-build/storm_startup_code.S:39 .text:00000000 Vectors
-build/storm_startup_code.S:74 .text:00000050 _start
-build/storm_startup_code.S:51 .text:00000020 _undf
-build/storm_startup_code.S:52 .text:00000024 _swi
-build/storm_startup_code.S:53 .text:00000028 _pabt
-build/storm_startup_code.S:54 .text:0000002c _dabt
-build/storm_startup_code.S:56 .text:00000034 _fiq
-build/storm_startup_code.S:51 .text:00000020 $d
-build/storm_startup_code.S:58 .text:00000038 __undf
-build/storm_startup_code.S:59 .text:0000003c __swi
-build/storm_startup_code.S:60 .text:00000040 __pabt
-build/storm_startup_code.S:61 .text:00000044 __dabt
-build/storm_startup_code.S:55 .text:00000030 _irq
-build/storm_startup_code.S:62 .text:00000048 __irq
-build/storm_startup_code.S:63 .text:0000004c __fiq
-build/storm_startup_code.S:58 .text:00000038 $a
-build/storm_startup_code.S:75 .text:00000050 start
-build/storm_startup_code.S:76 .text:00000050 _mainCRTStartup
-build/storm_startup_code.S:144 .text:000000ec x02
-build/storm_startup_code.S:148 .text:000000fc y02
-build/storm_startup_code.S:165 .text:0000011c _reset
-build/storm_startup_code.S:166 .text:0000011c reset
-build/storm_startup_code.S:167 .text:0000011c exit
-build/storm_startup_code.S:168 .text:0000011c abort
-build/storm_startup_code.S:175 .text:00000120 $d
-
-UNDEFINED SYMBOLS
-main
-_etext
-_data
-_edata
-__bss_start
-__bss_end__
-_stack
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/build/STORMcore-RAM.ld
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/build/STORMcore-RAM.ld (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/build/STORMcore-RAM.ld (nonexistent)
@@ -1,101 +0,0 @@
-/***********************************************************************/
-/* */
-/* RAM.ld: Linker Script File */
-/* */
-/***********************************************************************/
-ENTRY(_start)
-STACK_SIZE = 0x1000;
-
-/* Memory Definitions */
-MEMORY
-{
- ROM (rx) : ORIGIN = 0xFFF00000, LENGTH = 0x00000800
- RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 0x00002000
-}
-
-/* Section Definitions */
-SECTIONS
-{
- /* first section is .text which is used for code */
- .text :
- {
- *storm_startup_code.o (.text) /* Startup code */
- *(.text) /* remaining code */
- *(.rodata) /* read-only data (constants) */
- *(.rodata*)
- *(.glue_7)
- *(.glue_7t)
- } > RAM
-
- . = ALIGN(4);
- _etext = . ;
- PROVIDE (etext = .);
-
- /* .data section which is used for initialized data */
- .data :
- {
- _data = .;
- *(.data)
- } > RAM
-
- . = ALIGN(4);
- _edata = . ;
- PROVIDE (edata = .);
-
- /* .bss section which is used for uninitialized data */
- .bss (NOLOAD) :
- {
- __bss_start = . ;
- __bss_start__ = . ;
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- } > RAM
-
- . = ALIGN(4);
- __bss_end__ = . ;
- PROVIDE (__bss_end = .);
-
- .stack ALIGN(256) :
- {
- . += STACK_SIZE;
- PROVIDE (_stack = .);
- } > RAM
-
- _end = . ;
- PROVIDE (end = .);
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-}
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/storm_extractor.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/storm_extractor.exe
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/storm_extractor.exe (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/storm_extractor.exe (nonexistent)
trunk/implementations/Altera DE2 Board/software/blink_demo/storm_extractor.exe
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/main.map
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/main.map (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/main.map (nonexistent)
@@ -1,210 +0,0 @@
-
-Allocating common symbols
-Common symbol size file
-
-timeval 0x4 main.o
-
-Memory Configuration
-
-Name Origin Length Attributes
-ROM 0xfff00000 0x00000800 xr
-RAM 0x00000000 0x00002000 xrw
-*default* 0x00000000 0xffffffff
-
-Linker script and memory map
-
-LOAD build/storm_startup_code.o
-LOAD main.o
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libc.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libm.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libc.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/be\libgcc.a
-START GROUP
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/be\libgcc.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libg.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libc.a
-END GROUP
- 0x00001000 STACK_SIZE = 0x1000
-
-.text 0x00000000 0x39c
- *storm_startup_code.o(.text)
- .text 0x00000000 0x130 build/storm_startup_code.o
- 0x0000011c reset
- 0x00000000 _boot
- 0x00000050 _mainCRTStartup
- 0x0000011c abort
- 0x00000050 _start
- 0x0000011c _reset
- 0x0000011c exit
- 0x00000050 start
- *(.text)
- .text 0x00000130 0x26c main.o
- 0x00000168 spi0_send_byte
- 0x00000244 enable_irq
- 0x000001b0 uart0_send_byte
- 0x00000198 uart0_read_byte
- 0x00000294 main
- 0x000001cc i2c0_send_byte
- 0x00000264 delay
- 0x00000130 timer0_isr
- 0x00000254 disable_irq
- *(.rodata)
- *(.rodata*)
- *(.glue_7)
- .glue_7 0x0000039c 0x0 build/storm_startup_code.o
- .glue_7 0x0000039c 0x0 main.o
- *(.glue_7t)
- .glue_7t 0x0000039c 0x0 build/storm_startup_code.o
- .glue_7t 0x0000039c 0x0 main.o
- 0x0000039c . = ALIGN (0x4)
- 0x0000039c _etext = .
- 0x0000039c PROVIDE (etext, .)
-
-.data 0x0000039c 0x0
- 0x0000039c _data = .
- *(.data)
- .data 0x0000039c 0x0 build/storm_startup_code.o
- .data 0x0000039c 0x0 main.o
- 0x0000039c . = ALIGN (0x4)
- 0x0000039c _edata = .
- 0x0000039c PROVIDE (edata, .)
-
-.bss 0x0000039c 0x4
- 0x0000039c __bss_start = .
- 0x0000039c __bss_start__ = .
- *(.bss)
- .bss 0x0000039c 0x0 build/storm_startup_code.o
- .bss 0x0000039c 0x0 main.o
- *(COMMON)
- COMMON 0x0000039c 0x4 main.o
- 0x0000039c timeval
- 0x000003a0 . = ALIGN (0x4)
- 0x000003a0 . = ALIGN (0x4)
- 0x000003a0 __bss_end__ = .
- 0x000003a0 PROVIDE (__bss_end, .)
-
-.stack 0x00000400 0x1000
- 0x00001400 . = (. + STACK_SIZE)
- *fill* 0x00000400 0x1000 00
- 0x00001400 PROVIDE (_stack, .)
- 0x00001400 _end = .
- 0x00001400 PROVIDE (end, .)
-
-.stab
- *(.stab)
-
-.stabstr
- *(.stabstr)
-
-.stab.excl
- *(.stab.excl)
-
-.stab.exclstr
- *(.stab.exclstr)
-
-.stab.index
- *(.stab.index)
-
-.stab.indexstr
- *(.stab.indexstr)
-
-.comment 0x00000000 0x1b
- *(.comment)
- .comment 0x00000000 0x1b main.o
-
-.debug
- *(.debug)
-
-.line
- *(.line)
-
-.debug_srcinfo
- *(.debug_srcinfo)
-
-.debug_sfnames
- *(.debug_sfnames)
-
-.debug_aranges 0x00000000 0x40
- *(.debug_aranges)
- .debug_aranges
- 0x00000000 0x20 build/storm_startup_code.o
- .debug_aranges
- 0x00000020 0x20 main.o
-
-.debug_pubnames
- 0x00000000 0xad
- *(.debug_pubnames)
- .debug_pubnames
- 0x00000000 0xad main.o
-
-.debug_info 0x00000000 0x25e
- *(.debug_info .gnu.linkonce.wi.*)
- .debug_info 0x00000000 0x92 build/storm_startup_code.o
- .debug_info 0x00000092 0x1cc main.o
-
-.debug_abbrev 0x00000000 0x125
- *(.debug_abbrev)
- .debug_abbrev 0x00000000 0x14 build/storm_startup_code.o
- .debug_abbrev 0x00000014 0x111 main.o
-
-.debug_line 0x00000000 0x138
- *(.debug_line)
- .debug_line 0x00000000 0x93 build/storm_startup_code.o
- .debug_line 0x00000093 0xa5 main.o
-
-.debug_frame 0x00000000 0xb8
- *(.debug_frame)
- .debug_frame 0x00000000 0xb8 main.o
-
-.debug_str 0x00000000 0x113
- *(.debug_str)
- .debug_str 0x00000000 0x113 main.o
-
-.debug_loc 0x00000000 0xbb
- *(.debug_loc)
- .debug_loc 0x00000000 0xbb main.o
-
-.debug_macinfo
- *(.debug_macinfo)
-
-.debug_weaknames
- *(.debug_weaknames)
-
-.debug_funcnames
- *(.debug_funcnames)
-
-.debug_typenames
- *(.debug_typenames)
-
-.debug_varnames
- *(.debug_varnames)
-OUTPUT(main.elf elf32-bigarm)
-
-Cross Reference Table
-
-Symbol File
-__bss_end__ build/storm_startup_code.o
-__bss_start build/storm_startup_code.o
-_boot build/storm_startup_code.o
-_data build/storm_startup_code.o
-_edata build/storm_startup_code.o
-_etext build/storm_startup_code.o
-_mainCRTStartup build/storm_startup_code.o
-_reset build/storm_startup_code.o
-_stack build/storm_startup_code.o
-_start build/storm_startup_code.o
-abort build/storm_startup_code.o
-delay main.o
-disable_irq main.o
-enable_irq main.o
-exit build/storm_startup_code.o
-i2c0_send_byte main.o
-main main.o
- build/storm_startup_code.o
-reset build/storm_startup_code.o
-spi0_send_byte main.o
-start build/storm_startup_code.o
-timer0_isr main.o
-timeval main.o
-uart0_read_byte main.o
-uart0_send_byte main.o
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/storm_core.h
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/storm_core.h (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/storm_core.h (nonexistent)
@@ -1,42 +0,0 @@
-#ifndef storm_core_h
-#define storm_core_h
-
-////////////////////////////////////////////////////////////////////////////////
-// storm_core.h - STORM Core internal definitions
-//
-// Created by Stephan Nolting (stnolting@googlemail.com)
-// http://www.opencores.com/project,storm_core
-// Last modified 13. Mar. 2012
-////////////////////////////////////////////////////////////////////////////////
-
-/* Internal System Coprocessor Register Set */
-#define SYS_CP 15 // system coprocessor #
-#define ID_REG_0 0 // ID register 0
-#define ID_REG_1 1 // ID register 1
-#define ID_REG_2 2 // ID register 2
-#define SYS_CTRL_0 6 // system control register 0
-#define CSTAT 8 // cache statistics register
-#define ADR_FB 9 // adr feedback from bus unit -> for exception analysis
-#define LFSR_POLY 11 // Internal LFSR, polynomial
-#define LFSR_DATA 12 // Internal LFSR, shift register
-#define SYS_IO 13 // System IO ports
-
-/* CP_SYS_CTRL_0 */
-#define DC_FLUSH 0 // flush d-cache
-#define DC_CLEAR 1 // clear d-cache
-#define IC_CLEAR 2 // flush i-cache
-#define DC_WTHRU 3 // cache write-thru enable
-#define DC_AUTOPR 4 // auto pre-reload d-cache page
-#define IC_AUTOPR 5 // auto pre-reload i-cache page
-#define CACHED_IO 6 // cached IO
-#define PRTC_IO 7 // protected IO
-#define DC_SYNC 8 // d-cache is sync
-#define LFSR_EN 13 // enable lfsr
-#define LFSR_M 14 // lfsr update mode
-#define LFSR_D 15 // lfsr shift direction
-#define MBC_0 16 // max bus cycle length bit 0
-#define MBC_LSB 16
-#define MBC_15 31 // max bus cycle length bit 15
-#define MBC_MSB 31
-
-#endif // storm_core_h
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/storm_program.dat
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/storm_program.dat
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/storm_program.dat (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/storm_program.dat (nonexistent)
trunk/implementations/Altera DE2 Board/software/blink_demo/storm_program.dat
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/main.lss
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/main.lss (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/main.lss (nonexistent)
@@ -1,592 +0,0 @@
-
-main.elf: file format elf32-bigarm
-
-Sections:
-Idx Name Size VMA LMA File off Algn
- 0 .text 0000039c 00000000 00000000 00008000 2**2
- CONTENTS, ALLOC, LOAD, READONLY, CODE
- 1 .bss 00000004 0000039c 0000039c 0000839c 2**2
- ALLOC
- 2 .stack 00001000 00000400 00000400 0000839c 2**0
- ALLOC
- 3 .comment 0000001b 00000000 00000000 0000839c 2**0
- CONTENTS, READONLY
- 4 .debug_aranges 00000040 00000000 00000000 000083b8 2**3
- CONTENTS, READONLY, DEBUGGING
- 5 .debug_pubnames 000000ad 00000000 00000000 000083f8 2**0
- CONTENTS, READONLY, DEBUGGING
- 6 .debug_info 0000025e 00000000 00000000 000084a5 2**0
- CONTENTS, READONLY, DEBUGGING
- 7 .debug_abbrev 00000125 00000000 00000000 00008703 2**0
- CONTENTS, READONLY, DEBUGGING
- 8 .debug_line 00000138 00000000 00000000 00008828 2**0
- CONTENTS, READONLY, DEBUGGING
- 9 .debug_frame 000000b8 00000000 00000000 00008960 2**2
- CONTENTS, READONLY, DEBUGGING
- 10 .debug_str 00000113 00000000 00000000 00008a18 2**0
- CONTENTS, READONLY, DEBUGGING
- 11 .debug_loc 000000bb 00000000 00000000 00008b2b 2**0
- CONTENTS, READONLY, DEBUGGING
-Disassembly of section .text:
-
-00000000 <_boot>:
-
-// Runtime Interrupt Vectors
-// -------------------------------------------------------------------
-Vectors:
- b _start // reset - _start
- 0: ea000012 b 50 <_mainCRTStartup>
- ldr pc,_undf // undefined - _undf
- 4: e59ff014 ldr pc, [pc, #20] ; 20 <_undf>
- ldr pc,_swi // SWI - _swi
- 8: e59ff014 ldr pc, [pc, #20] ; 24 <_swi>
- ldr pc,_pabt // program abort - _pabt
- c: e59ff014 ldr pc, [pc, #20] ; 28 <_pabt>
- ldr pc,_dabt // data abort - _dabt
- 10: e59ff014 ldr pc, [pc, #20] ; 2c <_dabt>
- nop // reserved
- 14: e1a00000 nop (mov r0,r0)
- ldr pc,[pc,#-0xFF0] // IRQ - read the VIC
- 18: e51ffff0 ldr pc, [pc, #-4080] ; fffff030 <_end+0xffffdc30>
- ldr pc,_fiq // FIQ - _fiq
- 1c: e59ff010 ldr pc, [pc, #16] ; 34 <_fiq>
-
-00000020 <_undf>:
- 20: 00000038 andeq r0, r0, r8, lsr r0
-
-00000024 <_swi>:
- 24: 0000003c andeq r0, r0, ip, lsr r0
-
-00000028 <_pabt>:
- 28: 00000040 andeq r0, r0, r0, asr #32
-
-0000002c <_dabt>:
- 2c: 00000044 andeq r0, r0, r4, asr #32
-
-00000030 <_irq>:
- 30: 00000048 andeq r0, r0, r8, asr #32
-
-00000034 <_fiq>:
- 34: 0000004c andeq r0, r0, ip, asr #32
-
-00000038 <__undf>:
-
-
-// Use this group for development
-_undf: .word __undf // undefined
-_swi: .word __swi // SWI
-_pabt: .word __pabt // program abort
-_dabt: .word __dabt // data abort
-_irq: .word __irq // IRQ
-_fiq: .word __fiq // FIQ
-
-__undf: b . // undefined
- 38: eafffffe b 38 <__undf>
-
-0000003c <__swi>:
-__swi: b . // SWI
- 3c: eafffffe b 3c <__swi>
-
-00000040 <__pabt>:
-__pabt: b . // program abort
- 40: eafffffe b 40
-
-00000044 <__dabt>:
-__dabt: b . // data abort
- 44: eafffffe b 44 <__dabt>
-
-00000048 <__irq>:
-__irq: b . // IRQ
- 48: eafffffe b 48 <__irq>
-
-0000004c <__fiq>:
-__fiq: b . // FIQ
- 4c: eafffffe b 4c <__fiq>
-
-00000050 <_mainCRTStartup>:
-
- .size _boot, . - _boot
- .endfunc
-
-
-// Setup the operating mode & stack.
-// -------------------------------------------------------------------
- .global _start, start, _mainCRTStartup
- .func _start
-
-_start:
-start:
-_mainCRTStartup:
-
-// Who am I? Where am I going?
-
-// Initialize Interrupt System
-// - Set stack location for each mode
-// - Leave in System Mode with Interrupts Disabled
-// ----------------------------------------------------
- ldr r0,=_stack // Calc stack base
- 50: e59f00c8 ldr r0, [pc, #200] ; 120 <.text+0x120>
- mrs r1,CPSR
- 54: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
- 58: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_UND|IRQ_BIT|FIQ_BIT // Change to Undefined Instruction mode
- 5c: e38110db orr r1, r1, #219 ; 0xdb
- msr CPSR,r1
- 60: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
- 64: e1a0d000 mov sp, r0
-
- sub r0,r0,#UND_STACK_SIZE // Calc stack base
- 68: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
- 6c: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
- 70: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_ABT|IRQ_BIT|FIQ_BIT // Change to Abort Mode
- 74: e38110d7 orr r1, r1, #215 ; 0xd7
- msr CPSR,r1
- 78: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
- 7c: e1a0d000 mov sp, r0
-
- sub r0,r0,#ABT_STACK_SIZE // Calc stack base
- 80: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
- 84: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
- 88: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_FIQ|IRQ_BIT|FIQ_BIT // Change to FIQ Mode
- 8c: e38110d1 orr r1, r1, #209 ; 0xd1
- msr CPSR,r1
- 90: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
- 94: e1a0d000 mov sp, r0
-
- sub r0,r0,#FIQ_STACK_SIZE // Calc stack base
- 98: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
- 9c: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
- a0: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_IRQ|IRQ_BIT|FIQ_BIT // Change to IRQ Mode
- a4: e38110d2 orr r1, r1, #210 ; 0xd2
- msr CPSR,r1
- a8: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
- ac: e1a0d000 mov sp, r0
-
- sub r0,r0,#IRQ_STACK_SIZE // Calc stack base
- b0: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
- b4: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
- b8: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_SVC|IRQ_BIT|FIQ_BIT // Change to Supervisor Mode
- bc: e38110d3 orr r1, r1, #211 ; 0xd3
- msr CPSR,r1
- c0: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
- c4: e1a0d000 mov sp, r0
-
- sub r0,r0,#SVC_STACK_SIZE // Calc stack base
- c8: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
- cc: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
- d0: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_SYS|IRQ_BIT|FIQ_BIT // Change to System Mode
- d4: e38110df orr r1, r1, #223 ; 0xdf
- msr CPSR,r1
- d8: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
- dc: e1a0d000 mov sp, r0
-
-// Copy initialized data to its execution address in RAM
-// -------------------------------------------------------------------
-#ifdef ROM_RUN
- ldr r1,=_etext // -> ROM data start
- ldr r2,=_data // -> data start
- ldr r3,=_edata // -> end of data
-x01: cmp r2,r3 // check if data to move
- beq y01
- ldrlo r0,[r1],#4 // copy it
- strlo r0,[r2],#4
- blo x01 // loop until done
-y01:
-#endif
-// Clear .bss
-// ----------
- mov r0,#0 // get a zero
- e0: e3a00000 mov r0, #0 ; 0x0
- ldr r1,=__bss_start // -> bss start
- e4: e59f1038 ldr r1, [pc, #56] ; 124 <.text+0x124>
- ldr r2,=__bss_end__ // -> bss end
- e8: e59f2038 ldr r2, [pc, #56] ; 128 <.text+0x128>
-
-000000ec :
-x02: cmp r1,r2 // check if data to clear
- ec: e1510002 cmp r1, r2
- beq y02
- f0: 0a000001 beq fc
- strlo r0,[r1],#4 // clear 4 bytes
- f4: 34810004 strcc r0, [r1], #4
- blo x02 // loop until done
- f8: 3afffffb bcc ec
-
-000000fc :
-y02:
-// Call main program: main(0)
-// --------------------------
- mov r0,#0 // no arguments (argc = 0)
- fc: e3a00000 mov r0, #0 ; 0x0
- mov r1,r0
- 100: e1a01000 mov r1, r0
- mov r2,r0
- 104: e1a02000 mov r2, r0
- mov fp,r0 // null frame pointer
- 108: e1a0b000 mov fp, r0
- mov r7,r0 // null frame pointer for thumb
- 10c: e1a07000 mov r7, r0
- ldr r10,=main
- 110: e59fa014 ldr sl, [pc, #20] ; 12c <.text+0x12c>
- mov lr,pc
- 114: e1a0e00f mov lr, pc
- mov pc, r10 // enter main()
- 118: e1a0f00a mov pc, sl
-
-0000011c <_reset>:
-
- .size _start, . - _start
- .endfunc
-
- .global _reset, reset, exit, abort
- .func _reset
-_reset:
-reset:
-exit:
-abort:
-
- b . // loop until reset
- 11c: eafffffe b 11c <_reset>
- 120: 00001400 andeq r1, r0, r0, lsl #8
- 124: 0000039c muleq r0, ip, r3
- 128: 000003a0 andeq r0, r0, r0, lsr #7
- 12c: 00000294 muleq r0, r4, r2
-
-00000130 :
-/* ---- IRQ: Timer ISR ---- */
-volatile unsigned long timeval;
-void __attribute__ ((interrupt("IRQ"))) timer0_isr(void);
-void timer0_isr(void)
-{
- 130: e92d000e stmdb sp!, {r1, r2, r3}
- timeval++;
- 134: e59f2028 ldr r2, [pc, #40] ; 164 <.text+0x164>
- 138: e5923000 ldr r3, [r2]
- 13c: e2833001 add r3, r3, #1 ; 0x1
- 140: e5823000 str r3, [r2]
- SSEG0_DATA = timeval;
- 144: e5921000 ldr r1, [r2]
- 148: e3e03a0f mvn r3, #61440 ; 0xf000
- 14c: e5031ff7 str r1, [r3, #-4087]
- VICVectAddr = 0;
- 150: e3a02000 mov r2, #0 ; 0x0
- 154: e2833a0f add r3, r3, #61440 ; 0xf000
- 158: e5032fcf str r2, [r3, #-4047]
-}
- 15c: e8bd000e ldmia sp!, {r1, r2, r3}
- 160: e25ef004 subs pc, lr, #4 ; 0x4
- 164: 0000039c muleq r0, ip, r3
-
-00000168 :
-
-
-/* ---- SPI 0 Transmission ---- */
-void spi0_send_byte(int data, int slave_id)
-{
- 168: e3e0ca0f mvn ip, #61440 ; 0xf000
- while((SPI0_CONF & (1<<8)) != 0); // spi busy?
- 16c: e51c3fcf ldr r3, [ip, #-4047]
- 170: e3130c01 tst r3, #256 ; 0x100
- 174: 1afffffc bne 16c
- SPI0_DAT0 = data;
- SPI0_SCSR = ~slave_id & 255;
- 178: e1e02001 mvn r2, r1
- 17c: e20220ff and r2, r2, #255 ; 0xff
- 180: e50c0fbf str r0, [ip, #-4031]
- 184: e50c2fc7 str r2, [ip, #-4039]
- SPI0_CONF = SPI0_CONF | 256;
- 188: e51c3fcf ldr r3, [ip, #-4047]
- 18c: e3833c01 orr r3, r3, #256 ; 0x100
- 190: e50c3fcf str r3, [ip, #-4047]
-}
- 194: e1a0f00e mov pc, lr
-
-00000198 :
-
-
-/* ---- UART0 read byte ---- */
-int uart0_read_byte(void)
-{
- if ((UART0_SREG & (1<<1)) != 0) // byte available?
- 198: e3e02a0f mvn r2, #61440 ; 0xf000
- 19c: e5123fe3 ldr r3, [r2, #-4067]
- 1a0: e3130002 tst r3, #2 ; 0x2
- 1a4: e3e00000 mvn r0, #0 ; 0x0
- return UART0_DATA;
- 1a8: 15120fe7 ldrne r0, [r2, #-4071]
- else
- return -1;
-}
- 1ac: e1a0f00e mov pc, lr
-
-000001b0 :
-
-
-/* ---- UART0 write byte ---- */
-int uart0_send_byte(char ch)
-{
- 1b0: e20000ff and r0, r0, #255 ; 0xff
- 1b4: e3e02a0f mvn r2, #61440 ; 0xf000
- while((UART0_SREG & (1<<0)) == 0); // uart busy?
- 1b8: e5123fe3 ldr r3, [r2, #-4067]
- 1bc: e3130001 tst r3, #1 ; 0x1
- 1c0: 0afffffc beq 1b8
- ch = ch & 255;
- UART0_DATA = ch;
- 1c4: e5020fe7 str r0, [r2, #-4071]
- return (int)ch;
-}
- 1c8: e1a0f00e mov pc, lr
-
-000001cc :
-
-
-/* ---- I2C0 write byte ---- */
-int i2c0_send_byte(char adr, int data)
-{
- I2C0_CMD = (1<<7) | (1<<4); // start condition
- 1cc: e3e03a0f mvn r3, #61440 ; 0xf000
- 1d0: e3a02090 mov r2, #144 ; 0x90
- 1d4: e5032faf str r2, [r3, #-4015]
- 1d8: e20000ff and r0, r0, #255 ; 0xff
- 1dc: e1a02003 mov r2, r3
- while((I2C0_STAT & (1<<1)) != 0); // wait for execution
- 1e0: e5123faf ldr r3, [r2, #-4015]
- 1e4: e3130002 tst r3, #2 ; 0x2
- 1e8: 1afffffc bne 1e0
-
- I2C0_DATA = adr;
- I2C0_CMD = (1<<4); // write to slave
- 1ec: e3a03010 mov r3, #16 ; 0x10
- 1f0: e5020f93 str r0, [r2, #-3987]
- 1f4: e5023faf str r3, [r2, #-4015]
- 1f8: e3e02a0f mvn r2, #61440 ; 0xf000
- while((I2C0_STAT & (1<<7)) != 0); // wait for ack
- 1fc: e5123faf ldr r3, [r2, #-4015]
- 200: e3130080 tst r3, #128 ; 0x80
- 204: 1afffffc bne 1fc
-
- I2C0_DATA = data;
- I2C0_CMD = (1<<4); // write to slave
- 208: e3a03010 mov r3, #16 ; 0x10
- 20c: e5021f93 str r1, [r2, #-3987]
- 210: e5023faf str r3, [r2, #-4015]
- 214: e3e02a0f mvn r2, #61440 ; 0xf000
- while((I2C0_STAT & (1<<7)) != 0); // wait for ack
- 218: e5123faf ldr r3, [r2, #-4015]
- 21c: e3130080 tst r3, #128 ; 0x80
- 220: 1afffffc bne 218
-
- I2C0_CMD = (1<<6); // stop condition
- 224: e3a03040 mov r3, #64 ; 0x40
- 228: e5023faf str r3, [r2, #-4015]
- 22c: e3e02a0f mvn r2, #61440 ; 0xf000
- while((I2C0_STAT & (1<<1)) != 0); // wait for execution
- 230: e5123faf ldr r3, [r2, #-4015]
- 234: e3130002 tst r3, #2 ; 0x2
- 238: 1afffffc bne 230
- return data;
-}
- 23c: e1a00001 mov r0, r1
- 240: e1a0f00e mov pc, lr
-
-00000244 :
-
-
-/* ---- Enable IRQ ---- */
-void enable_irq(void)
-{
- unsigned long _cpsr;
- asm volatile (" mrs %0, cpsr" : "=r" (_cpsr) : /* no inputs */ );
- 244: e10f3000 mrs r3, CPSR
- _cpsr = _cpsr & ~(1<<7);
- asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (_cpsr) );
- 248: e3c33080 bic r3, r3, #128 ; 0x80
- 24c: e129f003 msr CPSR_fc, r3
-}
- 250: e1a0f00e mov pc, lr
-
-00000254 :
-
-
-/* ---- Disable IRQ ---- */
-void disable_irq(void)
-{
- unsigned long _cpsr;
- asm volatile (" mrs %0, cpsr" : "=r" (_cpsr) : /* no inputs */ );
- 254: e10f3000 mrs r3, CPSR
- _cpsr = _cpsr | (1<<7);
- asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (_cpsr) );
- 258: e3833080 orr r3, r3, #128 ; 0x80
- 25c: e129f003 msr CPSR_fc, r3
-}
- 260: e1a0f00e mov pc, lr
-
-00000264 :
-
-
-/* ---- Delay function ---- */
-void delay(int delay)
-{
- int i;
- for(i=0; i
- 290: e1a0f00e mov pc, lr
-
-00000294 :
-}
-
-
-/* ---- Main function ---- */
-int main(void)
-{
- int led_timer;
- int data;
-
- // display clear
- SSEG1_DATA = 0;
- SSEG0_DATA = 0;
-
- // SPI 0 init
- led_timer = 0;
- SPI0_CONF = (1<<10) | (1<<9) | 8;
- 294: e3a02c06 mov r2, #1536 ; 0x600
- 298: e92d4070 stmdb sp!, {r4, r5, r6, lr}
- 29c: e2822008 add r2, r2, #8 ; 0x8
- 2a0: e3e04a0f mvn r4, #61440 ; 0xf000
- 2a4: e3a05000 mov r5, #0 ; 0x0
- SPI0_PRSC = 500; // 100kHz
- 2a8: e3a03f7d mov r3, #500 ; 0x1f4
- 2ac: e5045fef str r5, [r4, #-4079]
- spi0_send_byte(0, 255);
- 2b0: e3a010ff mov r1, #255 ; 0xff
- 2b4: e5045ff7 str r5, [r4, #-4087]
- 2b8: e1a00005 mov r0, r5
- 2bc: e5042fcf str r2, [r4, #-4047]
- 2c0: e5043fcb str r3, [r4, #-4043]
- 2c4: ebffffa7 bl 168
- spi0_send_byte(0, 255);
- 2c8: e1a00005 mov r0, r5
- 2cc: e3a010ff mov r1, #255 ; 0xff
- 2d0: ebffffa4 bl 168
-
- // I²C 0 init
- I2C0_PRLO = 99; // for 100kHz
- 2d4: e3a03063 mov r3, #99 ; 0x63
- I2C0_PRHI = 0;
- I2C0_CTRL = (1<<7); // i2c enable
-
- // timer init
- timeval = 0;
- 2d8: e59f20b4 ldr r2, [pc, #180] ; 394 <.text+0x394>
- 2dc: e5043f9f str r3, [r4, #-3999]
- STME0_CNT = 0;
- STME0_VAL = 50000000; // threshold value for 1s ticks
- 2e0: e3a017be mov r1, #49807360 ; 0x2f80000
- 2e4: e283301d add r3, r3, #29 ; 0x1d
- 2e8: e5045f9b str r5, [r4, #-3995]
- 2ec: e2811a2f add r1, r1, #192512 ; 0x2f000
- 2f0: e5043f97 str r3, [r4, #-3991]
- 2f4: e5825000 str r5, [r2]
- STME0_CONF = (1<<2) | (1<<1) | (1<<0); // interrupt en, auto reset, timer enable
- VICVectAddr0 = (unsigned long)timer0_isr;
- 2f8: e59f2098 ldr r2, [pc, #152] ; 398 <.text+0x398>
- 2fc: e3e00000 mvn r0, #0 ; 0x0
- 300: e2811080 add r1, r1, #128 ; 0x80
- 304: e2433079 sub r3, r3, #121 ; 0x79
- 308: e5045fdf str r5, [r4, #-4063]
- 30c: e5041fdb str r1, [r4, #-4059]
- 310: e5043fd7 str r3, [r4, #-4055]
- 314: e5002fbf str r2, [r0, #-4031]
- VICVectCntl0 = (1<<5) | 0; // enable and channel select = 0 (timer0)
- 318: e2833019 add r3, r3, #25 ; 0x19
- VICIntEnable = (1<<0); // enable channel 0 (timer0)
- 31c: e3a02001 mov r2, #1 ; 0x1
- 320: e5003f7f str r3, [r0, #-3967]
- 324: e5002fef str r2, [r0, #-4079]
-
- //i2c0_send_byte(56, 0xCC);
-
- enable_irq();
- 328: ebffffc5 bl 244
- 32c: e1a06005 mov r6, r5
- 330: ea000001 b 33c
-
- while(1)
- {
- //disable_irq();
- data = uart0_read_byte();
- if(data > -1)
- {
- spi0_send_byte(data, 255);
- uart0_send_byte(data);
- }
- if((PS2_STAT & (1<<1)) != 0) // char available?
- {
- PS2_STAT = 0; // ack
- data = PS2_DATA;
- spi0_send_byte(data, 255);
- uart0_send_byte(data);
- }
- //enable_irq();
- led_timer++;
- GPIO0_OUT = led_timer >> 16;
- 334: e1a03846 mov r3, r6, asr #16
- 338: e5053fff str r3, [r5, #-4095]
- 33c: ebffff95 bl 198
- 340: e2504000 subs r4, r0, #0 ; 0x0
- 344: e3e05a0f mvn r5, #61440 ; 0xf000
- 348: e2866001 add r6, r6, #1 ; 0x1
- 34c: e3a010ff mov r1, #255 ; 0xff
- 350: ba000002 blt 360
- 354: ebffff83 bl 168
- 358: e20400ff and r0, r4, #255 ; 0xff
- 35c: ebffff93 bl 1b0
- 360: e5153f8b ldr r3, [r5, #-3979]
- 364: e3130002 tst r3, #2 ; 0x2
- 368: e3a010ff mov r1, #255 ; 0xff
- 36c: 0afffff0 beq 334
- 370: e3a03000 mov r3, #0 ; 0x0
- 374: e5053f8b str r3, [r5, #-3979]
- 378: e5154f8f ldr r4, [r5, #-3983]
- 37c: e1a00004 mov r0, r4
- 380: e20440ff and r4, r4, #255 ; 0xff
- 384: ebffff77 bl 168
- 388: e1a00004 mov r0, r4
- 38c: ebffff87 bl 1b0
- 390: eaffffe7 b 334
- 394: 0000039c muleq r0, ip, r3
- 398: 00000130 andeq r0, r0, r0, lsr r1
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/main.c
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/main.c (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/main.c (nonexistent)
@@ -1,154 +0,0 @@
-#include "storm_core.h"
-#include "storm_soc_de2.h"
-
-// +--------------------------+
-// | STORM SoC DE2-Board Demo |
-// +--------------------------+
-
-
-/* ---- IRQ: Timer ISR ---- */
-volatile unsigned long timeval;
-void __attribute__ ((interrupt("IRQ"))) timer0_isr(void);
-void timer0_isr(void)
-{
- timeval++;
- SSEG0_DATA = timeval;
- VICVectAddr = 0;
-}
-
-
-/* ---- SPI 0 Transmission ---- */
-void spi0_send_byte(int data, int slave_id)
-{
- while((SPI0_CONF & (1<<8)) != 0); // spi busy?
- SPI0_DAT0 = data;
- SPI0_SCSR = ~slave_id & 255;
- SPI0_CONF = SPI0_CONF | 256;
-}
-
-
-/* ---- UART0 read byte ---- */
-int uart0_read_byte(void)
-{
- if ((UART0_SREG & (1<<1)) != 0) // byte available?
- return UART0_DATA;
- else
- return -1;
-}
-
-
-/* ---- UART0 write byte ---- */
-int uart0_send_byte(char ch)
-{
- while((UART0_SREG & (1<<0)) == 0); // uart busy?
- ch = ch & 255;
- UART0_DATA = ch;
- return (int)ch;
-}
-
-
-/* ---- I2C0 write byte ---- */
-int i2c0_send_byte(char adr, int data)
-{
- I2C0_CMD = (1<<7) | (1<<4); // start condition
- while((I2C0_STAT & (1<<1)) != 0); // wait for execution
-
- I2C0_DATA = adr;
- I2C0_CMD = (1<<4); // write to slave
- while((I2C0_STAT & (1<<7)) != 0); // wait for ack
-
- I2C0_DATA = data;
- I2C0_CMD = (1<<4); // write to slave
- while((I2C0_STAT & (1<<7)) != 0); // wait for ack
-
- I2C0_CMD = (1<<6); // stop condition
- while((I2C0_STAT & (1<<1)) != 0); // wait for execution
- return data;
-}
-
-
-/* ---- Enable IRQ ---- */
-void enable_irq(void)
-{
- unsigned long _cpsr;
- asm volatile (" mrs %0, cpsr" : "=r" (_cpsr) : /* no inputs */ );
- _cpsr = _cpsr & ~(1<<7);
- asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (_cpsr) );
-}
-
-
-/* ---- Disable IRQ ---- */
-void disable_irq(void)
-{
- unsigned long _cpsr;
- asm volatile (" mrs %0, cpsr" : "=r" (_cpsr) : /* no inputs */ );
- _cpsr = _cpsr | (1<<7);
- asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (_cpsr) );
-}
-
-
-/* ---- Delay function ---- */
-void delay(int delay)
-{
- int i;
- for(i=0; i -1)
- {
- spi0_send_byte(data, 255);
- uart0_send_byte(data);
- }
- if((PS2_STAT & (1<<1)) != 0) // char available?
- {
- PS2_STAT = 0; // ack
- data = PS2_DATA;
- spi0_send_byte(data, 255);
- uart0_send_byte(data);
- }
- //enable_irq();
- led_timer++;
- GPIO0_OUT = led_timer >> 16;
- }
-}
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/main.lst
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/main.lst (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/main.lst (nonexistent)
@@ -1,552 +0,0 @@
- 1 .file "main.c"
- 9 .Ltext0:
- 10 .align 2
- 11 .global timer0_isr
- 13 timer0_isr:
- 14 .LFB2:
- 15 .file 1 "main.c"
- 1:main.c **** #include "storm_core.h"
- 2:main.c **** #include "storm_soc_de2.h"
- 3:main.c ****
- 4:main.c **** // +--------------------------+
- 5:main.c **** // | STORM SoC DE2-Board Demo |
- 6:main.c **** // +--------------------------+
- 7:main.c ****
- 8:main.c ****
- 9:main.c **** /* ---- IRQ: Timer ISR ---- */
- 10:main.c **** volatile unsigned long timeval;
- 11:main.c **** void __attribute__ ((interrupt("IRQ"))) timer0_isr(void);
- 12:main.c **** void timer0_isr(void)
- 13:main.c **** {
- 16 Interrupt Service Routine.
- 17 @ args = 0, pretend = 0, frame = 0
- 18 @ frame_needed = 0, uses_anonymous_args = 0
- 19 @ link register save eliminated.
- 20 stmfd sp!, {r1, r2, r3}
- 21 0000 E92D000E .LCFI0:
- 22 .loc 1 14 0
- 14:main.c **** timeval++;
- 23 , .L3
- 24 0004 E59F2028 ldr r3, [r2, #0]
- 25 0008 E5923000 add r3, r3, #1
- 26 000c E2833001 str r3, [r2, #0]
- 27 0010 E5823000 .loc 1 15 0
- 15:main.c **** SSEG0_DATA = timeval;
- 28 r1, [r2, #0]
- 29 0014 E5921000 mvn r3, #61440
- 30 0018 E3E03A0F str r1, [r3, #-4087]
- 31 001c E5031FF7 .loc 1 16 0
- 16:main.c **** VICVectAddr = 0;
- 32 r2, #0
- 33 0020 E3A02000 add r3, r3, #61440
- 34 0024 E2833A0F .loc 1 13 0
- 35 @ lr needed for prologue
- 36 .loc 1 16 0
- 37 str r2, [r3, #-4047]
- 38 0028 E5032FCF .loc 1 17 0
- 17:main.c **** }
- 39 sp!, {r1, r2, r3}
- 40 002c E8BD000E subs pc, lr, #4
- 41 0030 E25EF004 .L4:
- 42 .align 2
- 43 .L3:
- 44 .word timeval
- 45 0034 00000000 .LFE2:
- 47 .align 2
- 48 .global spi0_send_byte
- 50 spi0_send_byte:
- 51 .LFB3:
- 52 .loc 1 22 0
- 18:main.c ****
- 19:main.c ****
- 20:main.c **** /* ---- SPI 0 Transmission ---- */
- 21:main.c **** void spi0_send_byte(int data, int slave_id)
- 22:main.c **** {
- 53 retend = 0, frame = 0
- 54 @ frame_needed = 0, uses_anonymous_args = 0
- 55 @ link register save eliminated.
- 56 .LVL0:
- 57 @ lr needed for prologue
- 58 mvn ip, #61440
- 59 0038 E3E0CA0F .L7:
- 60 .loc 1 23 0
- 23:main.c **** while((SPI0_CONF & (1<<8)) != 0); // spi busy?
- 61 [ip, #-4047]
- 62 003c E51C3FCF tst r3, #256
- 63 0040 E3130C01 bne .L7
- 64 0044 1AFFFFFC .loc 1 25 0
- 24:main.c **** SPI0_DAT0 = data;
- 25:main.c **** SPI0_SCSR = ~slave_id & 255;
- 65 r2, r1
- 66 0048 E1E02001 and r2, r2, #255
- 67 004c E20220FF .loc 1 24 0
- 68 str r0, [ip, #-4031]
- 69 0050 E50C0FBF .loc 1 25 0
- 70 str r2, [ip, #-4039]
- 71 0054 E50C2FC7 .loc 1 26 0
- 26:main.c **** SPI0_CONF = SPI0_CONF | 256;
- 72 , [ip, #-4047]
- 73 0058 E51C3FCF orr r3, r3, #256
- 74 005c E3833C01 str r3, [ip, #-4047]
- 75 0060 E50C3FCF .loc 1 27 0
- 27:main.c **** }
- 76 pc, lr
- 77 0064 E1A0F00E .LFE3:
- 79 .align 2
- 80 .global uart0_read_byte
- 82 uart0_read_byte:
- 83 .LFB4:
- 84 .loc 1 32 0
- 28:main.c ****
- 29:main.c ****
- 30:main.c **** /* ---- UART0 read byte ---- */
- 31:main.c **** int uart0_read_byte(void)
- 32:main.c **** {
- 85 0, pretend = 0, frame = 0
- 86 @ frame_needed = 0, uses_anonymous_args = 0
- 87 @ link register save eliminated.
- 88 .loc 1 33 0
- 33:main.c **** if ((UART0_SREG & (1<<1)) != 0) // byte available?
- 89 r2, #61440
- 90 0068 E3E02A0F ldr r3, [r2, #-4067]
- 91 006c E5123FE3 tst r3, #2
- 92 0070 E3130002 mvn r0, #0
- 93 0074 E3E00000 .loc 1 34 0
- 34:main.c **** return UART0_DATA;
- 94 e r0, [r2, #-4071]
- 95 0078 15120FE7 .loc 1 32 0
- 96 @ lr needed for prologue
- 97 .loc 1 37 0
- 35:main.c **** else
- 36:main.c **** return -1;
- 37:main.c **** }
- 98 pc, lr
- 99 007c E1A0F00E .LFE4:
- 101 .align 2
- 102 .global uart0_send_byte
- 104 uart0_send_byte:
- 105 .LFB5:
- 106 .loc 1 42 0
- 38:main.c ****
- 39:main.c ****
- 40:main.c **** /* ---- UART0 write byte ---- */
- 41:main.c **** int uart0_send_byte(char ch)
- 42:main.c **** {
- 107 0, pretend = 0, frame = 0
- 108 @ frame_needed = 0, uses_anonymous_args = 0
- 109 @ link register save eliminated.
- 110 .LVL1:
- 111 @ lr needed for prologue
- 112 .loc 1 42 0
- 113 and r0, r0, #255
- 114 0080 E20000FF mvn r2, #61440
- 115 0084 E3E02A0F .L20:
- 116 .loc 1 43 0
- 43:main.c **** while((UART0_SREG & (1<<0)) == 0); // uart busy?
- 117 r2, #-4067]
- 118 0088 E5123FE3 tst r3, #1
- 119 008c E3130001 beq .L20
- 120 0090 0AFFFFFC .loc 1 45 0
- 44:main.c **** ch = ch & 255;
- 45:main.c **** UART0_DATA = ch;
- 121 r0, [r2, #-4071]
- 122 0094 E5020FE7 .LVL2:
- 123 .loc 1 47 0
- 46:main.c **** return (int)ch;
- 47:main.c **** }
- 124 v pc, lr
- 125 0098 E1A0F00E .LFE5:
- 127 .align 2
- 128 .global i2c0_send_byte
- 130 i2c0_send_byte:
- 131 .LFB6:
- 132 .loc 1 52 0
- 48:main.c ****
- 49:main.c ****
- 50:main.c **** /* ---- I2C0 write byte ---- */
- 51:main.c **** int i2c0_send_byte(char adr, int data)
- 52:main.c **** {
- 133 0, pretend = 0, frame = 0
- 134 @ frame_needed = 0, uses_anonymous_args = 0
- 135 @ link register save eliminated.
- 136 .LVL3:
- 137 .loc 1 53 0
- 53:main.c **** I2C0_CMD = (1<<7) | (1<<4); // start condition
- 138 r3, #61440
- 139 009c E3E03A0F mov r2, #144
- 140 00a0 E3A02090 str r2, [r3, #-4015]
- 141 00a4 E5032FAF .loc 1 52 0
- 142 @ lr needed for prologue
- 143 .loc 1 52 0
- 144 and r0, r0, #255
- 145 00a8 E20000FF mov r2, r3
- 146 00ac E1A02003 .L26:
- 147 .loc 1 54 0
- 54:main.c **** while((I2C0_STAT & (1<<1)) != 0); // wait for execution
- 148 r2, #-4015]
- 149 00b0 E5123FAF tst r3, #2
- 150 00b4 E3130002 bne .L26
- 151 00b8 1AFFFFFC .loc 1 57 0
- 55:main.c ****
- 56:main.c **** I2C0_DATA = adr;
- 57:main.c **** I2C0_CMD = (1<<4); // write to slave
- 152 r3, #16
- 153 00bc E3A03010 .loc 1 56 0
- 154 str r0, [r2, #-3987]
- 155 00c0 E5020F93 .loc 1 57 0
- 156 str r3, [r2, #-4015]
- 157 00c4 E5023FAF mvn r2, #61440
- 158 00c8 E3E02A0F .L28:
- 159 .loc 1 58 0
- 58:main.c **** while((I2C0_STAT & (1<<7)) != 0); // wait for ack
- 160 [r2, #-4015]
- 161 00cc E5123FAF tst r3, #128
- 162 00d0 E3130080 bne .L28
- 163 00d4 1AFFFFFC .loc 1 61 0
- 59:main.c ****
- 60:main.c **** I2C0_DATA = data;
- 61:main.c **** I2C0_CMD = (1<<4); // write to slave
- 164 r3, #16
- 165 00d8 E3A03010 .loc 1 60 0
- 166 str r1, [r2, #-3987]
- 167 00dc E5021F93 .loc 1 61 0
- 168 str r3, [r2, #-4015]
- 169 00e0 E5023FAF mvn r2, #61440
- 170 00e4 E3E02A0F .L30:
- 171 .loc 1 62 0
- 62:main.c **** while((I2C0_STAT & (1<<7)) != 0); // wait for ack
- 172 [r2, #-4015]
- 173 00e8 E5123FAF tst r3, #128
- 174 00ec E3130080 bne .L30
- 175 00f0 1AFFFFFC .loc 1 64 0
- 63:main.c ****
- 64:main.c **** I2C0_CMD = (1<<6); // stop condition
- 176 r3, #64
- 177 00f4 E3A03040 str r3, [r2, #-4015]
- 178 00f8 E5023FAF mvn r2, #61440
- 179 00fc E3E02A0F .L32:
- 180 .loc 1 65 0
- 65:main.c **** while((I2C0_STAT & (1<<1)) != 0); // wait for execution
- 181 r3, [r2, #-4015]
- 182 0100 E5123FAF tst r3, #2
- 183 0104 E3130002 bne .L32
- 184 0108 1AFFFFFC .loc 1 67 0
- 66:main.c **** return data;
- 67:main.c **** }
- 185 r0, r1
- 186 010c E1A00001 .LVL4:
- 187 mov pc, lr
- 188 0110 E1A0F00E .LFE6:
- 190 .align 2
- 191 .global enable_irq
- 193 enable_irq:
- 194 .LFB7:
- 195 .loc 1 72 0
- 68:main.c ****
- 69:main.c ****
- 70:main.c **** /* ---- Enable IRQ ---- */
- 71:main.c **** void enable_irq(void)
- 72:main.c **** {
- 196 , pretend = 0, frame = 0
- 197 @ frame_needed = 0, uses_anonymous_args = 0
- 198 @ link register save eliminated.
- 199 @ lr needed for prologue
- 200 .loc 1 74 0
- 73:main.c **** unsigned long _cpsr;
- 74:main.c **** asm volatile (" mrs %0, cpsr" : "=r" (_cpsr) : /* no inputs */ );
- 201 r3, cpsr
- 202 0114 E10F3000 .LVL5:
- 203 .loc 1 76 0
- 75:main.c **** _cpsr = _cpsr & ~(1<<7);
- 76:main.c **** asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (_cpsr) );
- 204 c r3, r3, #128
- 205 0118 E3C33080 .LVL6:
- 206 msr cpsr, r3
- 207 011c E129F003 .loc 1 77 0
- 77:main.c **** }
- 208 pc, lr
- 209 0120 E1A0F00E .LFE7:
- 211 .align 2
- 212 .global disable_irq
- 214 disable_irq:
- 215 .LFB8:
- 216 .loc 1 82 0
- 78:main.c ****
- 79:main.c ****
- 80:main.c **** /* ---- Disable IRQ ---- */
- 81:main.c **** void disable_irq(void)
- 82:main.c **** {
- 217 0, pretend = 0, frame = 0
- 218 @ frame_needed = 0, uses_anonymous_args = 0
- 219 @ link register save eliminated.
- 220 @ lr needed for prologue
- 221 .loc 1 84 0
- 83:main.c **** unsigned long _cpsr;
- 84:main.c **** asm volatile (" mrs %0, cpsr" : "=r" (_cpsr) : /* no inputs */ );
- 222 r3, cpsr
- 223 0124 E10F3000 .LVL7:
- 224 .loc 1 86 0
- 85:main.c **** _cpsr = _cpsr | (1<<7);
- 86:main.c **** asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (_cpsr) );
- 225 r r3, r3, #128
- 226 0128 E3833080 .LVL8:
- 227 msr cpsr, r3
- 228 012c E129F003 .loc 1 87 0
- 87:main.c **** }
- 229 pc, lr
- 230 0130 E1A0F00E .LFE8:
- 232 .align 2
- 233 .global delay
- 235 delay:
- 236 .LFB9:
- 237 .loc 1 92 0
- 88:main.c ****
- 89:main.c ****
- 90:main.c **** /* ---- Delay function ---- */
- 91:main.c **** void delay(int delay)
- 92:main.c **** {
- 238 0, pretend = 0, frame = 0
- 239 @ frame_needed = 0, uses_anonymous_args = 0
- 240 @ link register save eliminated.
- 241 .LVL9:
- 242 .loc 1 94 0
- 93:main.c **** int i;
- 94:main.c **** for(i=0; i -1)
- 139:main.c **** {
- 140:main.c **** spi0_send_byte(data, 255);
- 141:main.c **** uart0_send_byte(data);
- 142:main.c **** }
- 143:main.c **** if((PS2_STAT & (1<<1)) != 0) // char available?
- 144:main.c **** {
- 145:main.c **** PS2_STAT = 0; // ack
- 146:main.c **** data = PS2_DATA;
- 147:main.c **** spi0_send_byte(data, 255);
- 148:main.c **** uart0_send_byte(data);
- 149:main.c **** }
- 150:main.c **** //enable_irq();
- 151:main.c **** led_timer++;
- 152:main.c **** GPIO0_OUT = led_timer >> 16;
- 352 137 0
- 353 0204 E1A03846 bl uart0_read_byte
- 354 0208 E5053FFF .loc 1 138 0
- 355 subs r4, r0, #0
- 356 .loc 1 143 0
- 357 020c EBFFFFFE mvn r5, #61440
- 358 .loc 1 151 0
- 359 0210 E2504000 add r6, r6, #1
- 360 .loc 1 140 0
- 361 0214 E3E05A0F mov r1, #255
- 362 .loc 1 138 0
- 363 0218 E2866001 blt .L55
- 364 .loc 1 140 0
- 365 021c E3A010FF bl spi0_send_byte
- 366 .loc 1 141 0
- 367 0220 BA000002 and r0, r4, #255
- 368 bl uart0_send_byte
- 369 0224 EBFFFFFE .L55:
- 370 .loc 1 143 0
- 371 0228 E20400FF ldr r3, [r5, #-3979]
- 372 022c EBFFFFFE tst r3, #2
- 373 .loc 1 147 0
- 374 mov r1, #255
- 375 0230 E5153F8B .loc 1 143 0
- 376 0234 E3130002 beq .L57
- 377 .loc 1 145 0
- 378 0238 E3A010FF mov r3, #0
- 379 str r3, [r5, #-3979]
- 380 023c 0AFFFFF0 .loc 1 146 0
- 381 ldr r4, [r5, #-3983]
- 382 0240 E3A03000 .LVL14:
- 383 0244 E5053F8B .loc 1 147 0
- 384 mov r0, r4
- 385 0248 E5154F8F .LVL15:
- 386 .loc 1 148 0
- 387 and r4, r4, #255
- 388 024c E1A00004 .loc 1 147 0
- 389 bl spi0_send_byte
- 390 .LVL16:
- 391 0250 E20440FF .loc 1 148 0
- 392 mov r0, r4
- 393 0254 EBFFFFFE bl uart0_send_byte
- 394 b .L57
- 395 .L61:
- 396 0258 E1A00004 .align 2
- 397 025c EBFFFFFE .L60:
- 398 0260 EAFFFFE7 .word timeval
- 399 .word timer0_isr
- 400 .LFE10:
- 402 0264 00000000 .comm timeval,4,4
- 403 0268 00000000 .section .debug_frame,"",%progbits
- 404 .Lframe0:
- 405 .4byte .LECIE0-.LSCIE0
- 406 .LSCIE0:
- 517 .4byte .LFB2-.Ltext0
-DEFINED SYMBOLS
- *ABS*:00000000 main.c
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:13 .text:00000000 timer0_isr
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:21 .text:00000000 $a
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:45 .text:00000034 $d
- *COM*:00000004 timeval
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:51 .text:00000038 spi0_send_byte
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:59 .text:00000038 $a
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:83 .text:00000068 uart0_read_byte
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:105 .text:00000080 uart0_send_byte
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:131 .text:0000009c i2c0_send_byte
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:194 .text:00000114 enable_irq
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:215 .text:00000124 disable_irq
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:236 .text:00000134 delay
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:269 .text:00000164 main
-C:\Users\STNOLT~1\AppData\Local\Temp/ccMVaaaa.s:402 .text:00000264 $d
-
-NO UNDEFINED SYMBOLS
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/.dep/main.o.d
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/.dep/main.o.d (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/.dep/main.o.d (nonexistent)
@@ -1,5 +0,0 @@
-main.o: main.c storm_core.h storm_soc_de2.h
-
-storm_core.h:
-
-storm_soc_de2.h:
Index: trunk/implementations/Altera DE2 Board/software/blink_demo/main.hex
===================================================================
--- trunk/implementations/Altera DE2 Board/software/blink_demo/main.hex (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/blink_demo/main.hex (nonexistent)
@@ -1,60 +0,0 @@
-:10000000EA000012E59FF014E59FF014E59FF0145C
-:10001000E59FF014E1A00000E51FFFF0E59FF01060
-:10002000000000380000003C0000004000000044D8
-:10003000000000480000004CEAFFFFFEEAFFFFFE60
-:10004000EAFFFFFEEAFFFFFEEAFFFFFEEAFFFFFE18
-:10005000E59F00C8E10F1000E3C1107FE38110DBD2
-:10006000E129F001E1A0D000E2400080E10F1000A2
-:10007000E3C1107FE38110D7E129F001E1A0D000B6
-:10008000E2400080E10F1000E3C1107FE38110D156
-:10009000E129F001E1A0D000E2400080E10F100072
-:1000A000E3C1107FE38110D2E129F001E1A0D0008B
-:1000B000E2400080E10F1000E3C1107FE38110D324
-:1000C000E129F001E1A0D000E2400080E10F100042
-:1000D000E3C1107FE38110DFE129F001E1A0D0004E
-:1000E000E3A00000E59F1038E59F2038E1510002B1
-:1000F0000A000001348100043AFFFFFBE3A0000086
-:10010000E1A01000E1A02000E1A0B000E1A070009B
-:10011000E59FA014E1A0E00FE1A0F00AEAFFFFFED6
-:10012000000014000000039C000003A000000294E3
-:10013000E92D000EE59F2028E5923000E283300192
-:10014000E5823000E5921000E3E03A0FE5031FF787
-:10015000E3A02000E2833A0FE5032FCFE8BD000EB5
-:10016000E25EF0040000039CE3E0CA0FE51C3FCF11
-:10017000E3130C011AFFFFFCE1E02001E20220FF83
-:10018000E50C0FBFE50C2FC7E51C3FCFE3833C0117
-:10019000E50C3FCFE1A0F00EE3E02A0FE5123FE3CC
-:1001A000E3130002E3E0000015120FE7E1A0F00EF8
-:1001B000E20000FFE3E02A0FE5123FE3E313000152
-:1001C0000AFFFFFCE5020FE7E1A0F00EE3E03A0FC3
-:1001D000E3A02090E5032FAFE20000FFE1A02003A1
-:1001E000E5123FAFE31300021AFFFFFCE3A030105B
-:1001F000E5020F93E5023FAFE3E02A0FE5123FAFC0
-:10020000E31300801AFFFFFCE3A03010E5021F9308
-:10021000E5023FAFE3E02A0FE5123FAFE3130080B2
-:100220001AFFFFFCE3A03040E5023FAFE3E02A0FF6
-:10023000E5123FAFE31300021AFFFFFCE1A000014B
-:10024000E1A0F00EE10F3000E3C33080E129F003BC
-:10025000E1A0F00EE10F3000E3833080E129F003EC
-:10026000E1A0F00EE0603280E0800103E080010058
-:10027000E1A00200E3500000D1A0F00EE3A03000A6
-:10028000E1A00000E2833001E15300001AFFFFFB10
-:10029000E1A0F00EE3A02C06E92D4070E2822008D8
-:1002A000E3E04A0FE3A05000E3A03F7DE5045FEFE9
-:1002B000E3A010FFE5045FF7E1A00005E5042FCF00
-:1002C000E5043FCBEBFFFFA7E1A00005E3A010FF93
-:1002D000EBFFFFA4E3A03063E59F20B4E5043F9F5C
-:1002E000E3A017BEE283301DE5045F9BE2811A2F75
-:1002F000E5043F97E5825000E59F2098E3E0000089
-:10030000E2811080E2433079E5045FDFE5041FDB22
-:10031000E5043FD7E5002FBFE2833019E3A02001B9
-:10032000E5003F7FE5002FEFEBFFFFC5E1A0600593
-:10033000EA000001E1A03846E5053FFFEBFFFF952D
-:10034000E2504000E3E05A0FE2866001E3A010FFB4
-:10035000BA000002EBFFFF83E20400FFEBFFFF9314
-:10036000E5153F8BE3130002E3A010FF0AFFFFF047
-:10037000E3A03000E5053F8BE5154F8FE1A00004B9
-:10038000E20440FFEBFFFF77E1A00004EBFFFF87F3
-:0C039000EAFFFFE70000039C00000130C2
-:0400000300000050A9
-:00000001FF
Index: trunk/implementations/Altera DE2 Board/software/bootloader/storm_core.h
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/storm_core.h (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/storm_core.h (nonexistent)
@@ -1,42 +0,0 @@
-#ifndef storm_core_h
-#define storm_core_h
-
-////////////////////////////////////////////////////////////////////////////////
-// storm_core.h - STORM Core internal definitions
-//
-// Created by Stephan Nolting (stnolting@googlemail.com)
-// http://www.opencores.com/project,storm_core
-// Last modified 13. Mar. 2012
-////////////////////////////////////////////////////////////////////////////////
-
-/* Internal System Coprocessor Register Set */
-#define SYS_CP 15 // system coprocessor #
-#define ID_REG_0 0 // ID register 0
-#define ID_REG_1 1 // ID register 1
-#define ID_REG_2 2 // ID register 2
-#define SYS_CTRL_0 6 // system control register 0
-#define CSTAT 8 // cache statistics register
-#define ADR_FB 9 // adr feedback from bus unit -> for exception analysis
-#define LFSR_POLY 11 // Internal LFSR, polynomial
-#define LFSR_DATA 12 // Internal LFSR, shift register
-#define SYS_IO 13 // System IO ports
-
-/* CP_SYS_CTRL_0 */
-#define DC_FLUSH 0 // flush d-cache
-#define DC_CLEAR 1 // clear d-cache
-#define IC_CLEAR 2 // flush i-cache
-#define DC_WTHRU 3 // cache write-thru enable
-#define DC_AUTOPR 4 // auto pre-reload d-cache page
-#define IC_AUTOPR 5 // auto pre-reload i-cache page
-#define CACHED_IO 6 // cached IO
-#define PRTC_IO 7 // protected IO
-#define DC_SYNC 8 // d-cache is sync
-#define LFSR_EN 13 // enable lfsr
-#define LFSR_M 14 // lfsr update mode
-#define LFSR_D 15 // lfsr shift direction
-#define MBC_0 16 // max bus cycle length bit 0
-#define MBC_LSB 16
-#define MBC_15 31 // max bus cycle length bit 15
-#define MBC_MSB 31
-
-#endif // storm_core_h
Index: trunk/implementations/Altera DE2 Board/software/bootloader/storm_program.dat
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/implementations/Altera DE2 Board/software/bootloader/storm_program.dat
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/storm_program.dat (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/storm_program.dat (nonexistent)
trunk/implementations/Altera DE2 Board/software/bootloader/storm_program.dat
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/implementations/Altera DE2 Board/software/bootloader/main.lss
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/main.lss (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/main.lss (nonexistent)
@@ -1,720 +0,0 @@
-
-main.elf: file format elf32-bigarm
-
-Sections:
-Idx Name Size VMA LMA File off Algn
- 0 .text 0000052c fff00000 fff00000 00008000 2**2
- CONTENTS, ALLOC, LOAD, READONLY, CODE
- 1 .stack 00002000 00000000 00000000 00000074 2**0
- ALLOC
- 2 .comment 0000001b 00000000 00000000 0000852c 2**0
- CONTENTS, READONLY
- 3 .debug_aranges 00000040 00000000 00000000 00008548 2**3
- CONTENTS, READONLY, DEBUGGING
- 4 .debug_pubnames 00000081 00000000 00000000 00008588 2**0
- CONTENTS, READONLY, DEBUGGING
- 5 .debug_info 00000271 00000000 00000000 00008609 2**0
- CONTENTS, READONLY, DEBUGGING
- 6 .debug_abbrev 0000011d 00000000 00000000 0000887a 2**0
- CONTENTS, READONLY, DEBUGGING
- 7 .debug_line 00000167 00000000 00000000 00008997 2**0
- CONTENTS, READONLY, DEBUGGING
- 8 .debug_frame 000000b8 00000000 00000000 00008b00 2**2
- CONTENTS, READONLY, DEBUGGING
- 9 .debug_str 0000010e 00000000 00000000 00008bb8 2**0
- CONTENTS, READONLY, DEBUGGING
- 10 .debug_loc 000001b7 00000000 00000000 00008cc6 2**0
- CONTENTS, READONLY, DEBUGGING
-Disassembly of section .text:
-
-fff00000 <_boot>:
-
-// Runtime Interrupt Vectors
-// -------------------------------------------------------------------
-Vectors:
- b _start // reset - _start
-fff00000: ea000012 b fff00050 <_mainCRTStartup>
- ldr pc,_undf // undefined - _undf
-fff00004: e59ff014 ldr pc, [pc, #20] ; fff00020 <_undf>
- ldr pc,_swi // SWI - _swi
-fff00008: e59ff014 ldr pc, [pc, #20] ; fff00024 <_swi>
- ldr pc,_pabt // program abort - _pabt
-fff0000c: e59ff014 ldr pc, [pc, #20] ; fff00028 <_pabt>
- ldr pc,_dabt // data abort - _dabt
-fff00010: e59ff014 ldr pc, [pc, #20] ; fff0002c <_dabt>
- nop // reserved
-fff00014: e1a00000 nop (mov r0,r0)
- ldr pc,[pc,#-0xFF0] // IRQ - read the VIC
-fff00018: e51ffff0 ldr pc, [pc, #-4080] ; ffeff030 <_stack+0xffefd030>
- ldr pc,_fiq // FIQ - _fiq
-fff0001c: e59ff010 ldr pc, [pc, #16] ; fff00034 <_fiq>
-
-fff00020 <_undf>:
-fff00020: fff00038 undefined instruction 0xfff00038
-
-fff00024 <_swi>:
-fff00024: fff0003c undefined instruction 0xfff0003c
-
-fff00028 <_pabt>:
-fff00028: fff00040 undefined instruction 0xfff00040
-
-fff0002c <_dabt>:
-fff0002c: fff00044 undefined instruction 0xfff00044
-
-fff00030 <_irq>:
-fff00030: fff00048 undefined instruction 0xfff00048
-
-fff00034 <_fiq>:
-fff00034: fff0004c undefined instruction 0xfff0004c
-
-fff00038 <__undf>:
-
-
-// Use this group for development
-_undf: .word __undf // undefined
-_swi: .word __swi // SWI
-_pabt: .word __pabt // program abort
-_dabt: .word __dabt // data abort
-_irq: .word __irq // IRQ
-_fiq: .word __fiq // FIQ
-
-__undf: b . // undefined
-fff00038: eafffffe b fff00038 <__undf>
-
-fff0003c <__swi>:
-__swi: b . // SWI
-fff0003c: eafffffe b fff0003c <__swi>
-
-fff00040 <__pabt>:
-__pabt: b . // program abort
-fff00040: eafffffe b fff00040 <__pabt>
-
-fff00044 <__dabt>:
-__dabt: b . // data abort
-fff00044: eafffffe b fff00044 <__dabt>
-
-fff00048 <__irq>:
-__irq: b . // IRQ
-fff00048: eafffffe b fff00048 <__irq>
-
-fff0004c <__fiq>:
-__fiq: b . // FIQ
-fff0004c: eafffffe b fff0004c <__fiq>
-
-fff00050 <_mainCRTStartup>:
-
- .size _boot, . - _boot
- .endfunc
-
-
-// Setup the operating mode & stack.
-// -------------------------------------------------------------------
- .global _start, start, _mainCRTStartup
- .func _start
-
-_start:
-start:
-_mainCRTStartup:
-
-// Who am I? Where am I going?
-
-// Initialize Interrupt System
-// - Set stack location for each mode
-// - Leave in System Mode with Interrupts Disabled
-// ----------------------------------------------------
- ldr r0,=_stack // Calc stack base
-fff00050: e59f00e8 ldr r0, [pc, #232] ; fff00140 <.text+0x140>
- mrs r1,CPSR
-fff00054: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
-fff00058: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_UND|IRQ_BIT|FIQ_BIT // Change to Undefined Instruction mode
-fff0005c: e38110db orr r1, r1, #219 ; 0xdb
- msr CPSR,r1
-fff00060: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
-fff00064: e1a0d000 mov sp, r0
-
- sub r0,r0,#UND_STACK_SIZE // Calc stack base
-fff00068: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
-fff0006c: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
-fff00070: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_ABT|IRQ_BIT|FIQ_BIT // Change to Abort Mode
-fff00074: e38110d7 orr r1, r1, #215 ; 0xd7
- msr CPSR,r1
-fff00078: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
-fff0007c: e1a0d000 mov sp, r0
-
- sub r0,r0,#ABT_STACK_SIZE // Calc stack base
-fff00080: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
-fff00084: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
-fff00088: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_FIQ|IRQ_BIT|FIQ_BIT // Change to FIQ Mode
-fff0008c: e38110d1 orr r1, r1, #209 ; 0xd1
- msr CPSR,r1
-fff00090: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
-fff00094: e1a0d000 mov sp, r0
-
- sub r0,r0,#FIQ_STACK_SIZE // Calc stack base
-fff00098: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
-fff0009c: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
-fff000a0: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_IRQ|IRQ_BIT|FIQ_BIT // Change to IRQ Mode
-fff000a4: e38110d2 orr r1, r1, #210 ; 0xd2
- msr CPSR,r1
-fff000a8: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
-fff000ac: e1a0d000 mov sp, r0
-
- sub r0,r0,#IRQ_STACK_SIZE // Calc stack base
-fff000b0: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
-fff000b4: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
-fff000b8: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_SVC|IRQ_BIT|FIQ_BIT // Change to Supervisor Mode
-fff000bc: e38110d3 orr r1, r1, #211 ; 0xd3
- msr CPSR,r1
-fff000c0: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
-fff000c4: e1a0d000 mov sp, r0
-
- sub r0,r0,#SVC_STACK_SIZE // Calc stack base
-fff000c8: e2400080 sub r0, r0, #128 ; 0x80
- mrs r1,CPSR
-fff000cc: e10f1000 mrs r1, CPSR
- bic r1,r1,#0x7F
-fff000d0: e3c1107f bic r1, r1, #127 ; 0x7f
- orr r1,r1,#MODE_SYS|IRQ_BIT|FIQ_BIT // Change to System Mode
-fff000d4: e38110df orr r1, r1, #223 ; 0xdf
- msr CPSR,r1
-fff000d8: e129f001 msr CPSR_fc, r1
- mov sp,r0 // Store stack base
-fff000dc: e1a0d000 mov sp, r0
-
-// Copy initialized data to its execution address in RAM
-// -------------------------------------------------------------------
-#ifdef ROM_RUN
- ldr r1,=_etext // -> ROM data start
-fff000e0: e59f105c ldr r1, [pc, #92] ; fff00144 <.text+0x144>
- ldr r2,=_data // -> data start
-fff000e4: e59f205c ldr r2, [pc, #92] ; fff00148 <.text+0x148>
- ldr r3,=_edata // -> end of data
-fff000e8: e59f305c ldr r3, [pc, #92] ; fff0014c <.text+0x14c>
-
-fff000ec :
-x01: cmp r2,r3 // check if data to move
-fff000ec: e1520003 cmp r2, r3
- beq y01
-fff000f0: 0a000002 beq fff00100
- ldrlo r0,[r1],#4 // copy it
-fff000f4: 34910004 ldrcc r0, [r1], #4
- strlo r0,[r2],#4
-fff000f8: 34820004 strcc r0, [r2], #4
- blo x01 // loop until done
-fff000fc: 3afffffa bcc fff000ec
-
-fff00100 :
-y01:
-#endif
-// Clear .bss
-// ----------
- mov r0,#0 // get a zero
-fff00100: e3a00000 mov r0, #0 ; 0x0
- ldr r1,=__bss_start // -> bss start
-fff00104: e59f1044 ldr r1, [pc, #68] ; fff00150 <.text+0x150>
- ldr r2,=__bss_end__ // -> bss end
-fff00108: e59f2044 ldr r2, [pc, #68] ; fff00154 <.text+0x154>
-
-fff0010c :
-x02: cmp r1,r2 // check if data to clear
-fff0010c: e1510002 cmp r1, r2
- beq y02
-fff00110: 0a000001 beq fff0011c
- strlo r0,[r1],#4 // clear 4 bytes
-fff00114: 34810004 strcc r0, [r1], #4
- blo x02 // loop until done
-fff00118: 3afffffb bcc fff0010c
-
-fff0011c :
-y02:
-// Call main program: main(0)
-// --------------------------
- mov r0,#0 // no arguments (argc = 0)
-fff0011c: e3a00000 mov r0, #0 ; 0x0
- mov r1,r0
-fff00120: e1a01000 mov r1, r0
- mov r2,r0
-fff00124: e1a02000 mov r2, r0
- mov fp,r0 // null frame pointer
-fff00128: e1a0b000 mov fp, r0
- mov r7,r0 // null frame pointer for thumb
-fff0012c: e1a07000 mov r7, r0
- ldr r10,=main
-fff00130: e59fa020 ldr sl, [pc, #32] ; fff00158 <.text+0x158>
- mov lr,pc
-fff00134: e1a0e00f mov lr, pc
- mov pc, r10 // enter main()
-fff00138: e1a0f00a mov pc, sl
-
-fff0013c <_reset>:
-
- .size _start, . - _start
- .endfunc
-
- .global _reset, reset, exit, abort
- .func _reset
-_reset:
-reset:
-exit:
-abort:
-
- b . // loop until reset
-fff0013c: eafffffe b fff0013c <_reset>
-fff00140: 00002000 andeq r2, r0, r0
-fff00144: fff0052c undefined instruction 0xfff0052c
-fff00148: 00000000 andeq r0, r0, r0
-fff0014c: fff0052c undefined instruction 0xfff0052c
-fff00150: 00000000 andeq r0, r0, r0
-fff00154: fff0052c undefined instruction 0xfff0052c
-fff00158: fff002e4 undefined instruction 0xfff002e4
-
-fff0015c :
-
-/* ---- UART0 read byte ---- */
-int uart0_read_byte(void)
-{
- if ((UART0_SREG & 2) != 0) // byte available?
-fff0015c: e3e02a0f mvn r2, #61440 ; 0xf000
-fff00160: e5123fe3 ldr r3, [r2, #-4067]
-fff00164: e3130002 tst r3, #2 ; 0x2
-fff00168: e3e00000 mvn r0, #0 ; 0x0
- return UART0_DATA;
-fff0016c: 15120fe7 ldrne r0, [r2, #-4071]
- else
- return -1;
-}
-fff00170: e1a0f00e mov pc, lr
-
-fff00174 :
-
-
-/* ---- UART0 write byte ---- */
-int uart0_send_byte(char ch)
-{
-fff00174: e20000ff and r0, r0, #255 ; 0xff
-fff00178: e3e02a0f mvn r2, #61440 ; 0xf000
- while((UART0_SREG & 1) == 0); // uart busy?
-fff0017c: e5123fe3 ldr r3, [r2, #-4067]
-fff00180: e3130001 tst r3, #1 ; 0x1
-fff00184: 0afffffc beq fff0017c
- ch = ch & 255;
- UART0_DATA = ch;
-fff00188: e5020fe7 str r0, [r2, #-4071]
- return (int)ch;
-}
-fff0018c: e1a0f00e mov pc, lr
-
-fff00190 :
-
-
-/* ---- UART0 send string ---- */
-const char *uart0_printf(const char *string)
-{
-fff00190: e92d4010 stmdb sp!, {r4, lr}
-fff00194: e1a04000 mov r4, r0
- char ch;
- while ((ch = *string)) {
-fff00198: e5d00000 ldrb r0, [r0]
-fff0019c: e3500000 cmp r0, #0 ; 0x0
-fff001a0: 1a000003 bne fff001b4
-fff001a4: ea000005 b fff001c0
-fff001a8: e5f40001 ldrb r0, [r4, #1]!
-fff001ac: e3500000 cmp r0, #0 ; 0x0
-fff001b0: 0a000002 beq fff001c0
- if (uart0_send_byte(ch)<0) break;
-fff001b4: ebffffee bl fff00174
-fff001b8: e3500000 cmp r0, #0 ; 0x0
-fff001bc: aafffff9 bge fff001a8
- string++;
- }
- return string;
-}
-fff001c0: e1a00004 mov r0, r4
-fff001c4: e8bd8010 ldmia sp!, {r4, pc}
-
-fff001c8 :
-
-
-/* ---- Memory Dump ---- */
-void mem_dump(void)
-{
-fff001c8: e92d4030 stmdb sp!, {r4, r5, lr}
-fff001cc: e3a05000 mov r5, #0 ; 0x0
- unsigned long word_buffer;
- unsigned long *data_pointer = 0;
-
- while(data_pointer != RAM_SIZE)
- {
- word_buffer = *data_pointer;
-fff001d0: e4954004 ldr r4, [r5], #4
- uart0_send_byte(word_buffer >> 24);
-fff001d4: e1a00c24 mov r0, r4, lsr #24
-fff001d8: ebffffe5 bl fff00174
- uart0_send_byte(word_buffer >> 16);
-fff001dc: e1a00824 mov r0, r4, lsr #16
-fff001e0: e20000ff and r0, r0, #255 ; 0xff
-fff001e4: ebffffe2 bl fff00174
- uart0_send_byte(word_buffer >> 8);
-fff001e8: e1a00424 mov r0, r4, lsr #8
-fff001ec: e20000ff and r0, r0, #255 ; 0xff
- uart0_send_byte(word_buffer >> 0);
-fff001f0: e20440ff and r4, r4, #255 ; 0xff
-fff001f4: ebffffde bl fff00174
-fff001f8: e1a00004 mov r0, r4
-fff001fc: ebffffdc bl fff00174
-fff00200: e3a03502 mov r3, #8388608 ; 0x800000
-fff00204: e2833a02 add r3, r3, #8192 ; 0x2000
-fff00208: e1550003 cmp r5, r3
-fff0020c: 1affffef bne fff001d0
- data_pointer++;
- }
- while(1)
- asm volatile ("NOP");
-fff00210: e1a00000 nop (mov r0,r0)
-fff00214: e1a00000 nop (mov r0,r0)
-fff00218: eafffffc b fff00210
-
-fff0021c :
-}
-
-
-/* ---- Jump to application ---- */
-void jump_app(void)
-{
- unsigned long _cp_val;
-
- SSEG0_CTRL = 0; // deactivate status display
-fff0021c: e3e02a0f mvn r2, #61440 ; 0xf000
-fff00220: e3a03000 mov r3, #0 ; 0x0
-fff00224: e5023ff3 str r3, [r2, #-4083]
-fff00228: e52de004 str lr, [sp, #-4]!
- SSEG1_CTRL = 0; // deactivate counter display
-fff0022c: e5023feb str r3, [r2, #-4075]
-
- uart0_printf("\r\nStarting application...\r\n");
-fff00230: e59f001c ldr r0, [pc, #28] ; fff00254 <.text+0x254>
-fff00234: ebffffd5 bl fff00190
-
- asm volatile ("mrc p15, 0, %0, c6, c6" : "=r" (_cp_val) : /* no inputs */ );
-fff00238: ee163f16 mrc 15, 0, r3, cr6, cr6, {0}
- _cp_val = _cp_val & ~(1<<3); // disable write-through strategy
- asm volatile ("mcr p15, 0, %0, c6, c6, 0" : /* no outputs */ : "r" (_cp_val));
-fff0023c: e3c33008 bic r3, r3, #8 ; 0x8
-fff00240: ee063f16 mcr 15, 0, r3, cr6, cr6, {0}
-
- asm volatile ("mov PC, #0"); // jump to application
-fff00244: e3a0f000 mov pc, #0 ; 0x0
- while(1)
- asm volatile ("NOP");
-fff00248: e1a00000 nop (mov r0,r0)
-fff0024c: e1a00000 nop (mov r0,r0)
-fff00250: eafffffc b fff00248
-fff00254: fff0042c undefined instruction 0xfff0042c
-
-fff00258 :
-}
-
-
-/* ---- Download Program ---- */
-void program_loader(void)
-{
-fff00258: e92d40f0 stmdb sp!, {r4, r5, r6, r7, lr}
- int timer, data, shift;
- unsigned long _cp_val;
- unsigned long word_buffer;
- unsigned long *data_pointer;
-
- uart0_printf("\r\nWaiting for data\r\n");
-fff0025c: e59f0078 ldr r0, [pc, #120] ; fff002dc <.text+0x2dc>
-fff00260: ebffffca bl fff00190
-
- SSEG0_CTRL = 118963166; // show 'LoAd' screen
-fff00264: e59f2074 ldr r2, [pc, #116] ; fff002e0 <.text+0x2e0>
- SSEG1_CTRL = 0; // deactivate counter display
-fff00268: e3a01000 mov r1, #0 ; 0x0
-fff0026c: e3e03a0f mvn r3, #61440 ; 0xf000
-fff00270: e3a04626 mov r4, #39845888 ; 0x2600000
-fff00274: e5032ff3 str r2, [r3, #-4083]
-fff00278: e2844b96 add r4, r4, #153600 ; 0x25800
-fff0027c: e5031feb str r1, [r3, #-4075]
-fff00280: e1a06001 mov r6, r1
-fff00284: e2844c02 add r4, r4, #512 ; 0x200
-fff00288: e3a05020 mov r5, #32 ; 0x20
-fff0028c: e1a07001 mov r7, r1
-
- data_pointer = 0; // beginning of RAM
- shift = 32;
- word_buffer = 0;
- timer = timeout;
- while(timer != 0) // timer loop
- {
- data = uart0_read_byte();
-fff00290: ebffffb1 bl fff0015c
- if(data == -1)
-fff00294: e3700001 cmn r0, #1 ; 0x1
-fff00298: 0a00000b beq fff002cc
- timer--;
- else // byte received
- {
- // reset timer
- timer = timeout;
- // construct 32-bit memory entry
- shift = shift - 8;
-fff0029c: e2455008 sub r5, r5, #8 ; 0x8
- word_buffer = word_buffer | (data << shift);
-fff002a0: e1866510 orr r6, r6, r0, lsl r5
- if(shift == 0) // word completed
-fff002a4: e3550000 cmp r5, #0 ; 0x0
- {
- // store memory entry
- *data_pointer = word_buffer;
-fff002a8: 04876004 streq r6, [r7], #4
- data_pointer = data_pointer + 1;
-fff002ac: 02855020 addeq r5, r5, #32 ; 0x20
-fff002b0: 03a06000 moveq r6, #0 ; 0x0
-fff002b4: ebffffa8 bl fff0015c
- word_buffer = 0;
- shift = 32;
- }
- }
- }
- jump_app();
-fff002b8: e3a04626 mov r4, #39845888 ; 0x2600000
-fff002bc: e2844b96 add r4, r4, #153600 ; 0x25800
-fff002c0: e3700001 cmn r0, #1 ; 0x1
-fff002c4: e2844c02 add r4, r4, #512 ; 0x200
-fff002c8: 1afffff3 bne fff0029c
-fff002cc: e2544001 subs r4, r4, #1 ; 0x1
-fff002d0: 1affffee bne fff00290
-}
-fff002d4: e8bd40f0 ldmia sp!, {r4, r5, r6, r7, lr}
-fff002d8: eaffffcf b fff0021c
-fff002dc: fff00448 undefined instruction 0xfff00448
-fff002e0: 07173bde undefined
-
-fff002e4 :
-
-
-/* ---- Main function ---- */
-int main(void)
-{
- int timer, data;
- unsigned long _cp_val;
- unsigned long *data_pointer;
-
- SSEG0_CTRL = 261566072; // show 'boot' screen
-fff002e4: e59f3120 ldr r3, [pc, #288] ; fff0040c <.text+0x40c>
-fff002e8: e3e01a0f mvn r1, #61440 ; 0xf000
- SSEG1_CTRL = 0; // clear counter display
-fff002ec: e3a02000 mov r2, #0 ; 0x0
-fff002f0: e5013ff3 str r3, [r1, #-4083]
-fff002f4: e92d4030 stmdb sp!, {r4, r5, lr}
-fff002f8: e5012feb str r2, [r1, #-4075]
-
- // enable write-through -> flush-cache required
- asm volatile (" mrc p15, 0, %0, c6, c6" : "=r" (_cp_val) : /* no inputs */ );
-fff002fc: ee163f16 mrc 15, 0, r3, cr6, cr6, {0}
-//_cp_val = _cp_val | (1<<0) | (1<<3);
- _cp_val = _cp_val | (1<<3);
- asm volatile (" mcr p15, 0, %0, c6, c6, 0" : /* no outputs */ : "r" (_cp_val));
-fff00300: e3833008 orr r3, r3, #8 ; 0x8
-fff00304: ee063f16 mcr 15, 0, r3, cr6, cr6, {0}
-
- // configure external memory controller
- XMC_CSR = 0x0B000600; // refresh prescaler || refresh interval
- XMC_BA_MASK = 255;
- // Trfc, Trp, Trcd, Twr, Burst length = pog, opmode, cas lat = 2, burst type = seq, burst length = 8
- XMC_TMS0 = 0x04138023; // = (4<<24) || (1<<20) || (1<<17) || (4<<15) || (0<<9) || (0<<7) || (2<<4) || (0<<3) || (3<<0);
-fff00308: e3a0c641 mov ip, #68157440 ; 0x4100000
-fff0030c: e28cc90e add ip, ip, #229376 ; 0x38000
-fff00310: e3a0140b mov r1, #184549376 ; 0xb000000
- // Base addr, no parity, row open, bank-col addr , wp = 0, size = ?, b_width = 16, type = sdram, en
- XMC_CSC0 = 0x00000411; // = (0<<16) || (0<<11) || (1<<10) || (0<<9) || (0<<8) || (0<<6) || (1<<4) || (0<<1) || (1<<0);
-fff00314: e3a04e41 mov r4, #1040 ; 0x410
-fff00318: e3e02a01 mvn r2, #4096 ; 0x1000
-fff0031c: e2811c06 add r1, r1, #1536 ; 0x600
-fff00320: e28cc023 add ip, ip, #35 ; 0x23
-fff00324: e3a030ff mov r3, #255 ; 0xff
-fff00328: e2844001 add r4, r4, #1 ; 0x1
-fff0032c: e50210ff str r1, [r2, #-255]
-
- uart0_printf("\r\nSTORM Core Processor System - by Stephan Nolting\r\n");
-fff00330: e59f00d8 ldr r0, [pc, #216] ; fff00410 <.text+0x410>
-fff00334: e50230f7 str r3, [r2, #-247]
-fff00338: e502c0eb str ip, [r2, #-235]
-fff0033c: e50240ef str r4, [r2, #-239]
-fff00340: ebffff92 bl fff00190
- uart0_printf("Bootloader for STORM SoC on Altera DE2-Board\r\n");
-fff00344: e59f00c8 ldr r0, [pc, #200] ; fff00414 <.text+0x414>
-fff00348: ebffff90 bl fff00190
- uart0_printf("Version: 19.03.2012\r\n");
-fff0034c: e59f00c4 ldr r0, [pc, #196] ; fff00418 <.text+0x418>
-fff00350: ebffff8e bl fff00190
-
- uart0_printf("\r\n0: RAM dump\r\n");
-fff00354: e59f00c0 ldr r0, [pc, #192] ; fff0041c <.text+0x41c>
-fff00358: ebffff8c bl fff00190
- uart0_printf("1: Load via UART\r\n");
-fff0035c: e59f00bc ldr r0, [pc, #188] ; fff00420 <.text+0x420>
-fff00360: ebffff8a bl fff00190
- uart0_printf("x: Jump to application\r\n");
-fff00364: e59f00b8 ldr r0, [pc, #184] ; fff00424 <.text+0x424>
-fff00368: ebffff88 bl fff00190
- uart0_printf("\r\nSelect: ");
-fff0036c: e59f00b4 ldr r0, [pc, #180] ; fff00428 <.text+0x428>
-fff00370: ebffff86 bl fff00190
-fff00374: e3a04626 mov r4, #39845888 ; 0x2600000
-fff00378: e2844b96 add r4, r4, #153600 ; 0x25800
-fff0037c: e2844c02 add r4, r4, #512 ; 0x200
-fff00380: e3e05a0f mvn r5, #61440 ; 0xf000
-fff00384: ea00000b b fff003b8
-
- timer = timeout;
- while(timer != 0)
- {
- data = uart0_read_byte();
- if(data == '1') // start program downloader
- {
- uart0_send_byte((char)data);
- program_loader();
- }
- else if((data == 'x') || ((GPIO0_IN & (1<<16)) == 0)) // start application
-fff00388: e3500078 cmp r0, #120 ; 0x78
-fff0038c: 0a000019 beq fff003f8
-fff00390: e5153ffb ldr r3, [r5, #-4091]
-fff00394: e3130801 tst r3, #65536 ; 0x10000
-fff00398: 0a000016 beq fff003f8
- {
- uart0_send_byte((char)data);
- break;
- }
- else if(data == '0') // print memory content
-fff0039c: e3500030 cmp r0, #48 ; 0x30
- {
- uart0_send_byte((char)data);
- mem_dump();
- }
- else
- timer--;
-fff003a0: 12444001 subne r4, r4, #1 ; 0x1
-fff003a4: 0a000010 beq fff003ec
- SSEG1_DATA = timer >> 18;
-fff003a8: e1a03944 mov r3, r4, asr #18
-fff003ac: e3540000 cmp r4, #0 ; 0x0
-fff003b0: e5053fef str r3, [r5, #-4079]
-fff003b4: 0a000009 beq fff003e0
-fff003b8: ebffff67 bl fff0015c
-fff003bc: e3500031 cmp r0, #49 ; 0x31
-fff003c0: e1a02000 mov r2, r0
-fff003c4: 1affffef bne fff00388
-fff003c8: ebffff69 bl fff00174
-fff003cc: ebffffa1 bl fff00258
-fff003d0: e1a03944 mov r3, r4, asr #18
-fff003d4: e3540000 cmp r4, #0 ; 0x0
-fff003d8: e5053fef str r3, [r5, #-4079]
-fff003dc: 1afffff5 bne fff003b8
- }
- jump_app();
-fff003e0: ebffff8d bl fff0021c
-}
-fff003e4: e3a00000 mov r0, #0 ; 0x0
-fff003e8: e8bd8030 ldmia sp!, {r4, r5, pc}
-fff003ec: ebffff60 bl fff00174
-fff003f0: ebffff74 bl fff001c8
-fff003f4: eaffffeb b fff003a8
-fff003f8: e20200ff and r0, r2, #255 ; 0xff
-fff003fc: ebffff5c bl fff00174
-fff00400: ebffff85 bl fff0021c
-fff00404: e3a00000 mov r0, #0 ; 0x0
-fff00408: e8bd8030 ldmia sp!, {r4, r5, pc}
-fff0040c: 0f972e78 svceq 0x00972e78
-fff00410: fff00460 undefined instruction 0xfff00460
-fff00414: fff00498 undefined instruction 0xfff00498
-fff00418: fff004c8 undefined instruction 0xfff004c8
-fff0041c: fff004e0 undefined instruction 0xfff004e0
-fff00420: fff004f0 undefined instruction 0xfff004f0
-fff00424: fff00504 undefined instruction 0xfff00504
-fff00428: fff00520 undefined instruction 0xfff00520
-fff0042c: 0d0a5374 stceq 3, cr5, [sl, #-464]
-fff00430: 61727469 cmnvs r2, r9, ror #8
-fff00434: 6e672061 cdpvs 0, 6, cr2, cr7, cr1, {3}
-fff00438: 70706c69 rsbvcs r6, r0, r9, ror #24
-fff0043c: 63617469 cmnvs r1, #1761607680 ; 0x69000000
-fff00440: 6f6e2e2e svcvs 0x006e2e2e
-fff00444: 2e0d0a00 fmacscs s0, s26, s0
-fff00448: 0d0a5761 stceq 7, cr5, [sl, #-388]
-fff0044c: 6974696e ldmvsdb r4!, {r1, r2, r3, r5, r6, r8, fp, sp, lr}^
-fff00450: 6720666f strvs r6, [r0, -pc, ror #12]!
-fff00454: 72206461 eorvc r6, r0, #1627389952 ; 0x61000000
-fff00458: 74610d0a strvcbt r0, [r1], #-3338
-fff0045c: 00000000 andeq r0, r0, r0
-fff00460: 0d0a5354 stceq 3, cr5, [sl, #-336]
-fff00464: 4f524d20 svcmi 0x00524d20
-fff00468: 436f7265 cmnmi pc, #1342177286 ; 0x50000006
-fff0046c: 2050726f subcss r7, r0, pc, ror #4
-fff00470: 63657373 cmnvs r5, #-872415231 ; 0xcc000001
-fff00474: 6f722053 svcvs 0x00722053
-fff00478: 79737465 ldmvcdb r3!, {r0, r2, r5, r6, sl, ip, sp, lr}^
-fff0047c: 6d202d20 stcvs 13, cr2, [r0, #-128]!
-fff00480: 62792053 rsbvss r2, r9, #83 ; 0x53
-fff00484: 74657068 strvcbt r7, [r5], #-104
-fff00488: 616e204e cmnvs lr, lr, asr #32
-fff0048c: 6f6c7469 svcvs 0x006c7469
-fff00490: 6e670d0a cdpvs 13, 6, cr0, cr7, cr10, {0}
-fff00494: 00000000 andeq r0, r0, r0
-fff00498: 426f6f74 rsbmi r6, pc, #464 ; 0x1d0
-fff0049c: 6c6f6164 stfvse f6, [pc], #-400
-fff004a0: 65722066 ldrvsb r2, [r2, #-102]!
-fff004a4: 6f722053 svcvs 0x00722053
-fff004a8: 544f524d strplb r5, [pc], #589 ; fff004b0 <.text+0x4b0>
-fff004ac: 20536f43 subcss r6, r3, r3, asr #30
-fff004b0: 206f6e20 rsbcs r6, pc, r0, lsr #28
-fff004b4: 416c7465 cmnmi ip, r5, ror #8
-fff004b8: 72612044 rsbvc r2, r1, #68 ; 0x44
-fff004bc: 45322d42 ldrmi r2, [r2, #-3394]!
-fff004c0: 6f617264 svcvs 0x00617264
-fff004c4: 0d0a0000 stceq 0, cr0, [sl]
-fff004c8: 56657273 undefined
-fff004cc: 696f6e3a stmvsdb pc!, {r1, r3, r4, r5, r9, sl, fp, sp, lr}^
-fff004d0: 2031392e eorcss r3, r1, lr, lsr #18
-fff004d4: 30332e32 eorccs r2, r3, r2, lsr lr
-fff004d8: 3031320d eorccs r3, r1, sp, lsl #4
-fff004dc: 0a000000 beq fff004e4 <.text+0x4e4>
-fff004e0: 0d0a303a stceq 0, cr3, [sl, #-232]
-fff004e4: 2052414d subcss r4, r2, sp, asr #2
-fff004e8: 2064756d rsbcs r7, r4, sp, ror #10
-fff004ec: 700d0a00 andvc r0, sp, r0, lsl #20
-fff004f0: 313a204c teqcc sl, ip, asr #32
-fff004f4: 6f616420 svcvs 0x00616420
-fff004f8: 76696120 strvcbt r6, [r9], -r0, lsr #2
-fff004fc: 55415254 strplb r5, [r1, #-596]
-fff00500: 0d0a0000 stceq 0, cr0, [sl]
-fff00504: 783a204a ldmvcda sl!, {r1, r3, r6, sp}
-fff00508: 756d7020 strvcb r7, [sp, #-32]!
-fff0050c: 746f2061 strvcbt r2, [pc], #97 ; fff00514 <.text+0x514>
-fff00510: 70706c69 rsbvcs r6, r0, r9, ror #24
-fff00514: 63617469 cmnvs r1, #1761607680 ; 0x69000000
-fff00518: 6f6e0d0a svcvs 0x006e0d0a
-fff0051c: 00000000 andeq r0, r0, r0
-fff00520: 0d0a5365 stceq 3, cr5, [sl, #-404]
-fff00524: 6c656374 stcvsl 3, cr6, [r5], #-464
-fff00528: 3a200000 bcc 700530 <_stack+0x6fe530>
Index: trunk/implementations/Altera DE2 Board/software/bootloader/main.c
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/main.c (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/main.c (nonexistent)
@@ -1,195 +0,0 @@
-#include "storm_core.h"
-#include "storm_soc_de2.h"
-
-// +-------------------------------------------+
-// | STORM SoC Bootloader for Altera DE2-Board |
-// +-------------------------------------------+
-
-
-/* ---- Constants ---- */
-#define timeout 40000000
-
-
-/* ---- Function Prototypes ---- */
-int uart0_read_byte(void);
-int uart0_send_byte(char ch);
-const char *uart0_printf(const char *string);
-void mem_dump(void);
-void jump_app(void);
-void program_loader(void);
-int main(void);
-
-
-/* ---- UART0 read byte ---- */
-int uart0_read_byte(void)
-{
- if ((UART0_SREG & 2) != 0) // byte available?
- return UART0_DATA;
- else
- return -1;
-}
-
-
-/* ---- UART0 write byte ---- */
-int uart0_send_byte(char ch)
-{
- while((UART0_SREG & 1) == 0); // uart busy?
- ch = ch & 255;
- UART0_DATA = ch;
- return (int)ch;
-}
-
-
-/* ---- UART0 send string ---- */
-const char *uart0_printf(const char *string)
-{
- char ch;
- while ((ch = *string)) {
- if (uart0_send_byte(ch)<0) break;
- string++;
- }
- return string;
-}
-
-
-/* ---- Memory Dump ---- */
-void mem_dump(void)
-{
- unsigned long word_buffer;
- unsigned long *data_pointer = 0;
-
- while(data_pointer != RAM_SIZE)
- {
- word_buffer = *data_pointer;
- uart0_send_byte(word_buffer >> 24);
- uart0_send_byte(word_buffer >> 16);
- uart0_send_byte(word_buffer >> 8);
- uart0_send_byte(word_buffer >> 0);
- data_pointer++;
- }
- while(1)
- asm volatile ("NOP");
-}
-
-
-/* ---- Jump to application ---- */
-void jump_app(void)
-{
- unsigned long _cp_val;
-
- SSEG0_CTRL = 0; // deactivate status display
- SSEG1_CTRL = 0; // deactivate counter display
-
- uart0_printf("\r\nStarting application...\r\n");
-
- asm volatile ("mrc p15, 0, %0, c6, c6" : "=r" (_cp_val) : /* no inputs */ );
- _cp_val = _cp_val & ~(1<<3); // disable write-through strategy
- asm volatile ("mcr p15, 0, %0, c6, c6, 0" : /* no outputs */ : "r" (_cp_val));
-
- asm volatile ("mov PC, #0"); // jump to application
- while(1)
- asm volatile ("NOP");
-}
-
-
-/* ---- Download Program ---- */
-void program_loader(void)
-{
- int timer, data, shift;
- unsigned long _cp_val;
- unsigned long word_buffer;
- unsigned long *data_pointer;
-
- uart0_printf("\r\nWaiting for data\r\n");
-
- SSEG0_CTRL = 118963166; // show 'LoAd' screen
- SSEG1_CTRL = 0; // deactivate counter display
-
- data_pointer = 0; // beginning of RAM
- shift = 32;
- word_buffer = 0;
- timer = timeout;
- while(timer != 0) // timer loop
- {
- data = uart0_read_byte();
- if(data == -1)
- timer--;
- else // byte received
- {
- // reset timer
- timer = timeout;
- // construct 32-bit memory entry
- shift = shift - 8;
- word_buffer = word_buffer | (data << shift);
- if(shift == 0) // word completed
- {
- // store memory entry
- *data_pointer = word_buffer;
- data_pointer = data_pointer + 1;
- word_buffer = 0;
- shift = 32;
- }
- }
- }
- jump_app();
-}
-
-
-/* ---- Main function ---- */
-int main(void)
-{
- int timer, data;
- unsigned long _cp_val;
- unsigned long *data_pointer;
-
- SSEG0_CTRL = 261566072; // show 'boot' screen
- SSEG1_CTRL = 0; // clear counter display
-
- // enable write-through -> flush-cache required
- asm volatile (" mrc p15, 0, %0, c6, c6" : "=r" (_cp_val) : /* no inputs */ );
-//_cp_val = _cp_val | (1<<0) | (1<<3);
- _cp_val = _cp_val | (1<<3);
- asm volatile (" mcr p15, 0, %0, c6, c6, 0" : /* no outputs */ : "r" (_cp_val));
-
- // configure external memory controller
- XMC_CSR = 0x0B000600; // refresh prescaler || refresh interval
- XMC_BA_MASK = 255;
- // Trfc, Trp, Trcd, Twr, Burst length = pog, opmode, cas lat = 2, burst type = seq, burst length = 8
- XMC_TMS0 = 0x04138023; // = (4<<24) || (1<<20) || (1<<17) || (4<<15) || (0<<9) || (0<<7) || (2<<4) || (0<<3) || (3<<0);
- // Base addr, no parity, row open, bank-col addr , wp = 0, size = ?, b_width = 16, type = sdram, en
- XMC_CSC0 = 0x00000411; // = (0<<16) || (0<<11) || (1<<10) || (0<<9) || (0<<8) || (0<<6) || (1<<4) || (0<<1) || (1<<0);
-
- uart0_printf("\r\nSTORM Core Processor System - by Stephan Nolting\r\n");
- uart0_printf("Bootloader for STORM SoC on Altera DE2-Board\r\n");
- uart0_printf("Version: 19.03.2012\r\n");
-
- uart0_printf("\r\n0: RAM dump\r\n");
- uart0_printf("1: Load via UART\r\n");
- uart0_printf("x: Jump to application\r\n");
- uart0_printf("\r\nSelect: ");
-
- timer = timeout;
- while(timer != 0)
- {
- data = uart0_read_byte();
- if(data == '1') // start program downloader
- {
- uart0_send_byte((char)data);
- program_loader();
- }
- else if((data == 'x') || ((GPIO0_IN & (1<<16)) == 0)) // start application
- {
- uart0_send_byte((char)data);
- break;
- }
- else if(data == '0') // print memory content
- {
- uart0_send_byte((char)data);
- mem_dump();
- }
- else
- timer--;
- SSEG1_DATA = timer >> 18;
- }
- jump_app();
-}
Index: trunk/implementations/Altera DE2 Board/software/bootloader/main.lst
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/main.lst (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/main.lst (nonexistent)
@@ -1,691 +0,0 @@
- 1 .file "main.c"
- 9 .Ltext0:
- 10 .align 2
- 11 .global uart0_read_byte
- 13 uart0_read_byte:
- 14 .LFB2:
- 15 .file 1 "main.c"
- 1:main.c **** #include "storm_core.h"
- 2:main.c **** #include "storm_soc_de2.h"
- 3:main.c ****
- 4:main.c **** // +-------------------------------------------+
- 5:main.c **** // | STORM SoC Bootloader for Altera DE2-Board |
- 6:main.c **** // +-------------------------------------------+
- 7:main.c ****
- 8:main.c ****
- 9:main.c **** /* ---- Constants ---- */
- 10:main.c **** #define timeout 40000000
- 11:main.c ****
- 12:main.c ****
- 13:main.c **** /* ---- Function Prototypes ---- */
- 14:main.c **** int uart0_read_byte(void);
- 15:main.c **** int uart0_send_byte(char ch);
- 16:main.c **** const char *uart0_printf(const char *string);
- 17:main.c **** void mem_dump(void);
- 18:main.c **** void jump_app(void);
- 19:main.c **** void program_loader(void);
- 20:main.c **** int main(void);
- 21:main.c ****
- 22:main.c ****
- 23:main.c **** /* ---- UART0 read byte ---- */
- 24:main.c **** int uart0_read_byte(void)
- 25:main.c **** {
- 16 args = 0, pretend = 0, frame = 0
- 17 @ frame_needed = 0, uses_anonymous_args = 0
- 18 @ link register save eliminated.
- 19 .loc 1 26 0
- 26:main.c **** if ((UART0_SREG & 2) != 0) // byte available?
- 20 r2, #61440
- 21 0000 E3E02A0F ldr r3, [r2, #-4067]
- 22 0004 E5123FE3 tst r3, #2
- 23 0008 E3130002 mvn r0, #0
- 24 000c E3E00000 .loc 1 27 0
- 27:main.c **** return UART0_DATA;
- 25 e r0, [r2, #-4071]
- 26 0010 15120FE7 .loc 1 25 0
- 27 @ lr needed for prologue
- 28 .loc 1 30 0
- 28:main.c **** else
- 29:main.c **** return -1;
- 30:main.c **** }
- 29 pc, lr
- 30 0014 E1A0F00E .LFE2:
- 32 .align 2
- 33 .global uart0_send_byte
- 35 uart0_send_byte:
- 36 .LFB3:
- 37 .loc 1 35 0
- 31:main.c ****
- 32:main.c ****
- 33:main.c **** /* ---- UART0 write byte ---- */
- 34:main.c **** int uart0_send_byte(char ch)
- 35:main.c **** {
- 38 0, pretend = 0, frame = 0
- 39 @ frame_needed = 0, uses_anonymous_args = 0
- 40 @ link register save eliminated.
- 41 .LVL0:
- 42 @ lr needed for prologue
- 43 .loc 1 35 0
- 44 and r0, r0, #255
- 45 0018 E20000FF mvn r2, #61440
- 46 001c E3E02A0F .L8:
- 47 .loc 1 36 0
- 36:main.c **** while((UART0_SREG & 1) == 0); // uart busy?
- 48 r2, #-4067]
- 49 0020 E5123FE3 tst r3, #1
- 50 0024 E3130001 beq .L8
- 51 0028 0AFFFFFC .loc 1 38 0
- 37:main.c **** ch = ch & 255;
- 38:main.c **** UART0_DATA = ch;
- 52 r0, [r2, #-4071]
- 53 002c E5020FE7 .LVL1:
- 54 .loc 1 40 0
- 39:main.c **** return (int)ch;
- 40:main.c **** }
- 55 v pc, lr
- 56 0030 E1A0F00E .LFE3:
- 58 .align 2
- 59 .global uart0_printf
- 61 uart0_printf:
- 62 .LFB4:
- 63 .loc 1 45 0
- 41:main.c ****
- 42:main.c ****
- 43:main.c **** /* ---- UART0 send string ---- */
- 44:main.c **** const char *uart0_printf(const char *string)
- 45:main.c **** {
- 64 0, pretend = 0, frame = 0
- 65 @ frame_needed = 0, uses_anonymous_args = 0
- 66 .LVL2:
- 67 stmfd sp!, {r4, lr}
- 68 0034 E92D4010 .LCFI0:
- 69 .loc 1 45 0
- 70 mov r4, r0
- 71 0038 E1A04000 .loc 1 47 0
- 46:main.c **** char ch;
- 47:main.c **** while ((ch = *string)) {
- 72 , [r0, #0] @ zero_extendqisi2
- 73 003c E5D00000 .LVL3:
- 74 cmp r0, #0
- 75 0040 E3500000 bne .L19
- 76 0044 1A000003 b .L15
- 77 0048 EA000005 .LVL4:
- 78 .L21:
- 79 ldrb r0, [r4, #1]! @ zero_extendqisi2
- 80 004c E5F40001 .LVL5:
- 81 cmp r0, #0
- 82 0050 E3500000 beq .L15
- 83 0054 0A000002 .L19:
- 84 .loc 1 48 0
- 48:main.c **** if (uart0_send_byte(ch)<0) break;
- 85 d_byte
- 86 0058 EBFFFFFE .LVL6:
- 87 cmp r0, #0
- 88 005c E3500000 bge .L21
- 89 0060 AAFFFFF9 .LVL7:
- 90 .L15:
- 91 .loc 1 52 0
- 49:main.c **** string++;
- 50:main.c **** }
- 51:main.c **** return string;
- 52:main.c **** }
- 92 , r4
- 93 0064 E1A00004 .LVL8:
- 94 ldmfd sp!, {r4, pc}
- 95 0068 E8BD8010 .LFE4:
- 97 .align 2
- 98 .global mem_dump
- 100 mem_dump:
- 101 .LFB5:
- 102 .loc 1 57 0
- 53:main.c ****
- 54:main.c ****
- 55:main.c **** /* ---- Memory Dump ---- */
- 56:main.c **** void mem_dump(void)
- 57:main.c **** {
- 103 , pretend = 0, frame = 0
- 104 @ frame_needed = 0, uses_anonymous_args = 0
- 105 stmfd sp!, {r4, r5, lr}
- 106 006c E92D4030 .LCFI1:
- 107 .loc 1 57 0
- 108 mov r5, #0
- 109 0070 E3A05000 .LVL9:
- 110 .L23:
- 111 .loc 1 63 0
- 58:main.c **** unsigned long word_buffer;
- 59:main.c **** unsigned long *data_pointer = 0;
- 60:main.c ****
- 61:main.c **** while(data_pointer != RAM_SIZE)
- 62:main.c **** {
- 63:main.c **** word_buffer = *data_pointer;
- 112 [r5], #4
- 113 0074 E4954004 .LVL10:
- 114 .loc 1 64 0
- 64:main.c **** uart0_send_byte(word_buffer >> 24);
- 115 v r0, r4, lsr #24
- 116 0078 E1A00C24 bl uart0_send_byte
- 117 007c EBFFFFFE .loc 1 65 0
- 65:main.c **** uart0_send_byte(word_buffer >> 16);
- 118 v r0, r4, lsr #16
- 119 0080 E1A00824 and r0, r0, #255
- 120 0084 E20000FF bl uart0_send_byte
- 121 0088 EBFFFFFE .loc 1 66 0
- 66:main.c **** uart0_send_byte(word_buffer >> 8);
- 122 r0, r4, lsr #8
- 123 008c E1A00424 and r0, r0, #255
- 124 0090 E20000FF .loc 1 67 0
- 67:main.c **** uart0_send_byte(word_buffer >> 0);
- 125 d r4, r4, #255
- 126 0094 E20440FF .LVL11:
- 127 .loc 1 66 0
- 128 bl uart0_send_byte
- 129 0098 EBFFFFFE .loc 1 67 0
- 130 mov r0, r4
- 131 009c E1A00004 bl uart0_send_byte
- 132 00a0 EBFFFFFE .loc 1 61 0
- 133 mov r3, #8388608
- 134 00a4 E3A03502 add r3, r3, #8192
- 135 00a8 E2833A02 cmp r5, r3
- 136 00ac E1550003 bne .L23
- 137 00b0 1AFFFFEF .L27:
- 138 .loc 1 71 0
- 68:main.c **** data_pointer++;
- 69:main.c **** }
- 70:main.c **** while(1)
- 71:main.c **** asm volatile ("NOP");
- 139 L27
- 140 00b4 E1A00000 .LFE5:
- 142 00bc EAFFFFFC .section .rodata.str1.4,"aMS",%progbits,1
- 143 .align 2
- 144 .LC0:
- 145 .ascii "\015\012Starting application...\015\012\000"
- 146 .text
- 147 .align 2
- 148 0000 0D0A5374 .global jump_app
- 148 61727469
- 148 6E672061
- 148 70706C69
- 148 63617469
- 150 jump_app:
- 151 .LFB6:
- 152 .loc 1 77 0
- 153 @ args = 0, pretend = 0, frame = 0
- 154 @ frame_needed = 0, uses_anonymous_args = 0
- 72:main.c **** }
- 73:main.c ****
- 74:main.c ****
- 75:main.c **** /* ---- Jump to application ---- */
- 76:main.c **** void jump_app(void)
- 77:main.c **** {
- 155 n r2, #61440
- 156 mov r3, #0
- 157 str r3, [r2, #-4083]
- 78:main.c **** unsigned long _cp_val;
- 79:main.c ****
- 80:main.c **** SSEG0_CTRL = 0; // deactivate status display
- 158 oc 1 77 0
- 159 00c0 E3E02A0F str lr, [sp, #-4]!
- 160 00c4 E3A03000 .LCFI2:
- 161 00c8 E5023FF3 .loc 1 81 0
- 162 str r3, [r2, #-4075]
- 163 00cc E52DE004 .loc 1 83 0
- 164 ldr r0, .L31
- 81:main.c **** SSEG1_CTRL = 0; // deactivate counter display
- 165 t0_printf
- 166 00d0 E5023FEB .loc 1 85 0
- 82:main.c ****
- 83:main.c **** uart0_printf("\r\nStarting application...\r\n");
- 167 rc p15, 0, r3, c6, c6
- 168 00d4 E59F001C .LVL12:
- 169 00d8 EBFFFFFE .loc 1 87 0
- 84:main.c ****
- 85:main.c **** asm volatile ("mrc p15, 0, %0, c6, c6" : "=r" (_cp_val) : /* no inputs */ );
- 170 c r3, r3, #8
- 171 00dc EE163F16 .LVL13:
- 172 mcr p15, 0, r3, c6, c6, 0
- 86:main.c **** _cp_val = _cp_val & ~(1<<3); // disable write-through strategy
- 87:main.c **** asm volatile ("mcr p15, 0, %0, c6, c6, 0" : /* no outputs */ : "r" (_cp_val));
- 173 oc 1 89 0
- 174 00e0 E3C33008 mov PC, #0
- 175 .L29:
- 176 00e4 EE063F16 .loc 1 91 0
- 88:main.c ****
- 89:main.c **** asm volatile ("mov PC, #0"); // jump to application
- 177
- 178 00e8 E3A0F000 NOP
- 179 b .L29
- 90:main.c **** while(1)
- 91:main.c **** asm volatile ("NOP");
- 180 32:
- 181 00ec E1A00000 .align 2
- 182 00f0 E1A00000 .L31:
- 183 00f4 EAFFFFFC .word .LC0
- 184 .LFE6:
- 186 .section .rodata.str1.4
- 187 00f8 00000000 .align 2
- 188 .LC1:
- 189 .ascii "\015\012Waiting for data\015\012\000"
- 190 .text
- 191 .align 2
- 192 .global program_loader
- 194 program_loader:
- 195 .LFB7:
- 196 .loc 1 97 0
- 197 @ args = 0, pretend = 0, frame = 0
- 198 @ frame_needed = 0, uses_anonymous_args = 0
- 199 stmfd sp!, {r4, r5, r6, r7, lr}
- 92:main.c **** }
- 93:main.c ****
- 94:main.c ****
- 95:main.c **** /* ---- Download Program ---- */
- 96:main.c **** void program_loader(void)
- 97:main.c **** {
- 200 0
- 201 ldr r0, .L49
- 202 bl uart0_printf
- 203 00fc E92D40F0 .loc 1 105 0
- 204 ldr r2, .L49+4
- 98:main.c **** int timer, data, shift;
- 99:main.c **** unsigned long _cp_val;
- 100:main.c **** unsigned long word_buffer;
- 101:main.c **** unsigned long *data_pointer;
- 102:main.c ****
- 103:main.c **** uart0_printf("\r\nWaiting for data\r\n");
- 205 1 106 0
- 206 0100 E59F0078 mov r1, #0
- 207 0104 EBFFFFFE .loc 1 105 0
- 104:main.c ****
- 105:main.c **** SSEG0_CTRL = 118963166; // show 'LoAd' screen
- 208 n r3, #61440
- 209 0108 E59F2074 .loc 1 106 0
- 106:main.c **** SSEG1_CTRL = 0; // deactivate counter display
- 210 ov r4, #39845888
- 211 010c E3A01000 .LVL14:
- 212 .loc 1 105 0
- 213 0110 E3E03A0F str r2, [r3, #-4083]
- 214 .loc 1 106 0
- 215 0114 E3A04626 add r4, r4, #153600
- 216 str r1, [r3, #-4075]
- 217 mov r6, r1
- 218 0118 E5032FF3 .LVL15:
- 219 add r4, r4, #512
- 220 011c E2844B96 mov r5, #32
- 221 0120 E5031FEB .LVL16:
- 222 0124 E1A06001 mov r7, r1
- 223 .LVL17:
- 224 0128 E2844C02 .LVL18:
- 225 012c E3A05020 .L47:
- 226 .loc 1 114 0
- 227 0130 E1A07001 bl uart0_read_byte
- 228 .LVL19:
- 229 .LVL20:
- 230 .loc 1 115 0
- 107:main.c ****
- 108:main.c **** data_pointer = 0; // beginning of RAM
- 109:main.c **** shift = 32;
- 110:main.c **** word_buffer = 0;
- 111:main.c **** timer = timeout;
- 112:main.c **** while(timer != 0) // timer loop
- 113:main.c **** {
- 114:main.c **** data = uart0_read_byte();
- 231
- 232 0134 EBFFFFFE .L35:
- 233 .loc 1 122 0
- 234 sub r5, r5, #8
- 115:main.c **** if(data == -1)
- 235 oc 1 123 0
- 236 0138 E3700001 orr r6, r6, r0, asl r5
- 237 013c 0A00000B .loc 1 124 0
- 238 cmp r5, #0
- 116:main.c **** timer--;
- 117:main.c **** else // byte received
- 118:main.c **** {
- 119:main.c **** // reset timer
- 120:main.c **** timer = timeout;
- 121:main.c **** // construct 32-bit memory entry
- 122:main.c **** shift = shift - 8;
- 239 c 1 127 0
- 240 0140 E2455008 streq r6, [r7], #4
- 123:main.c **** word_buffer = word_buffer | (data << shift);
- 241 loc 1 128 0
- 242 0144 E1866510 addeq r5, r5, #32
- 124:main.c **** if(shift == 0) // word completed
- 243 oveq r6, #0
- 244 0148 E3550000 .loc 1 114 0
- 125:main.c **** {
- 126:main.c **** // store memory entry
- 127:main.c **** *data_pointer = word_buffer;
- 245 l uart0_read_byte
- 246 014c 04876004 .LVL21:
- 128:main.c **** data_pointer = data_pointer + 1;
- 247 loc 1 134 0
- 248 0150 02855020 mov r4, #39845888
- 249 0154 03A06000 add r4, r4, #153600
- 250 .LVL22:
- 251 0158 EBFFFFFE .loc 1 115 0
- 252 cmn r0, #1
- 129:main.c **** word_buffer = 0;
- 130:main.c **** shift = 32;
- 131:main.c **** }
- 132:main.c **** }
- 133:main.c **** }
- 134:main.c **** jump_app();
- 253 1 134 0
- 254 015c E3A04626 add r4, r4, #512
- 255 0160 E2844B96 .loc 1 115 0
- 256 bne .L35
- 257 .L48:
- 258 0164 E3700001 .loc 1 112 0
- 259 subs r4, r4, #1
- 260 0168 E2844C02 bne .L47
- 261 .loc 1 135 0
- 262 016c 1AFFFFF3 ldmfd sp!, {r4, r5, r6, r7, lr}
- 263 .loc 1 134 0
- 264 b jump_app
- 265 0170 E2544001 .LVL23:
- 266 0174 1AFFFFEE .L50:
- 135:main.c **** }
- 267 :
- 268 0178 E8BD40F0 .word .LC1
- 269 .word 118963166
- 270 017c EAFFFFFE .LFE7:
- 272 .section .rodata.str1.4
- 273 .align 2
- 274 .LC2:
- 275 0180 0000001C .ascii "\015\012STORM Core Processor System - by Stephan No"
- 276 0184 07173BDE .ascii "lting\015\012\000"
- 277 .align 2
- 278 .LC3:
- 279 .ascii "Bootloader for STORM SoC on Altera DE2-Board\015\012"
- 280 0031 000000 .ascii "\000"
- 281 .align 2
- 282 0034 0D0A5354 .LC4:
- 282 4F524D20
- 282 436F7265
- 282 2050726F
- 282 63657373
- 283 0061 6C74696E .ascii "Version: 19.03.2012\015\012\000"
- 283 670D0A00
- 284 0069 000000 .align 2
- 285 .LC5:
- 286 006c 426F6F74 .ascii "\015\0120: RAM dump\015\012\000"
- 286 6C6F6164
- 286 65722066
- 286 6F722053
- 286 544F524D
- 287 009a 00 .align 2
- 288 009b 00 .LC6:
- 289 .ascii "1: Load via UART\015\012\000"
- 290 009c 56657273 .align 2
- 290 696F6E3A
- 290 2031392E
- 290 30332E32
- 290 3031320D
- 291 00b2 0000 .LC7:
- 292 .ascii "x: Jump to application\015\012\000"
- 293 00b4 0D0A303A .align 2
- 293 2052414D
- 293 2064756D
- 293 700D0A00
- 294 .LC8:
- 295 .ascii "\015\012Select: \000"
- 296 00c4 313A204C .text
- 296 6F616420
- 296 76696120
- 296 55415254
- 296 0D0A00
- 297 00d7 00 .align 2
- 298 .global main
- 300 00f1 000000 main:
- 301 .LFB8:
- 302 00f4 0D0A5365 .loc 1 140 0
- 302 6C656374
- 302 3A2000
- 303 00ff 00 @ args = 0, pretend = 0, frame = 0
- 304 @ frame_needed = 0, uses_anonymous_args = 0
- 305 .loc 1 145 0
- 306 ldr r3, .L65
- 307 mvn r1, #61440
- 308 .loc 1 146 0
- 136:main.c ****
- 137:main.c ****
- 138:main.c **** /* ---- Main function ---- */
- 139:main.c **** int main(void)
- 140:main.c **** {
- 309 4083]
- 310 .loc 1 140 0
- 311 stmfd sp!, {r4, r5, lr}
- 141:main.c **** int timer, data;
- 142:main.c **** unsigned long _cp_val;
- 143:main.c **** unsigned long *data_pointer;
- 144:main.c ****
- 145:main.c **** SSEG0_CTRL = 261566072; // show 'boot' screen
- 312 FI4:
- 313 0188 E59F3120 .loc 1 146 0
- 314 018c E3E01A0F str r2, [r1, #-4075]
- 146:main.c **** SSEG1_CTRL = 0; // clear counter display
- 315 oc 1 149 0
- 316 0190 E3A02000 mrc p15, 0, r3, c6, c6
- 317 .LVL24:
- 318 0194 E5013FF3 .loc 1 152 0
- 319 orr r3, r3, #8
- 320 0198 E92D4030 .LVL25:
- 321 mcr p15, 0, r3, c6, c6, 0
- 322 .loc 1 158 0
- 323 019c E5012FEB mov ip, #68157440
- 147:main.c ****
- 148:main.c **** // enable write-through -> flush-cache required
- 149:main.c **** asm volatile (" mrc p15, 0, %0, c6, c6" : "=r" (_cp_val) : /* no inputs */ );
- 324 ip, #229376
- 325 01a0 EE163F16 .loc 1 155 0
- 326 mov r1, #184549376
- 150:main.c **** //_cp_val = _cp_val | (1<<0) | (1<<3);
- 151:main.c **** _cp_val = _cp_val | (1<<3);
- 152:main.c **** asm volatile (" mcr p15, 0, %0, c6, c6, 0" : /* no outputs */ : "r" (_cp_val));
- 327 oc 1 160 0
- 328 01a4 E3833008 mov r4, #1040
- 329 .loc 1 155 0
- 330 01a8 EE063F16 mvn r2, #4096
- 153:main.c ****
- 154:main.c **** // configure external memory controller
- 155:main.c **** XMC_CSR = 0x0B000600; // refresh prescaler || refresh interval
- 156:main.c **** XMC_BA_MASK = 255;
- 157:main.c **** // Trfc, Trp, Trcd, Twr, Burst length = pog, opmode, cas lat = 2, burst type = seq, burst length
- 158:main.c **** XMC_TMS0 = 0x04138023; // = (4<<24) || (1<<20) || (1<<17) || (4<<15) || (0<<9) || (0<<7) || (2<<4
- 331 r1, r1, #1536
- 332 01ac E3A0C641 .loc 1 158 0
- 333 01b0 E28CC90E add ip, ip, #35
- 334 .loc 1 156 0
- 335 01b4 E3A0140B mov r3, #255
- 159:main.c **** // Base addr, no parity, row open, bank-col addr , wp = 0, size = ?, b_width = 16, type = sdram,
- 160:main.c **** XMC_CSC0 = 0x00000411; // = (0<<16) || (0<<11) || (1<<10) || (0<<9) || (0<<8) || (0<<6) || (1<<4)
- 336 1 160 0
- 337 01b8 E3A04E41 add r4, r4, #1
- 338 .loc 1 155 0
- 339 01bc E3E02A01 str r1, [r2, #-255]
- 340 01c0 E2811C06 .loc 1 162 0
- 341 ldr r0, .L65+4
- 342 01c4 E28CC023 .loc 1 156 0
- 343 str r3, [r2, #-247]
- 344 01c8 E3A030FF .loc 1 158 0
- 345 str ip, [r2, #-235]
- 346 01cc E2844001 .loc 1 160 0
- 347 str r4, [r2, #-239]
- 348 01d0 E50210FF .loc 1 162 0
- 161:main.c ****
- 162:main.c **** uart0_printf("\r\nSTORM Core Processor System - by Stephan Nolting\r\n");
- 349 ntf
- 350 01d4 E59F00D8 .loc 1 163 0
- 351 ldr r0, .L65+8
- 352 01d8 E50230F7 bl uart0_printf
- 353 .loc 1 164 0
- 354 01dc E502C0EB ldr r0, .L65+12
- 355 bl uart0_printf
- 356 01e0 E50240EF .loc 1 166 0
- 357 ldr r0, .L65+16
- 358 01e4 EBFFFFFE bl uart0_printf
- 163:main.c **** uart0_printf("Bootloader for STORM SoC on Altera DE2-Board\r\n");
- 359 7 0
- 360 01e8 E59F00C8 ldr r0, .L65+20
- 361 01ec EBFFFFFE bl uart0_printf
- 164:main.c **** uart0_printf("Version: 19.03.2012\r\n");
- 362 oc 1 168 0
- 363 01f0 E59F00C4 ldr r0, .L65+24
- 364 01f4 EBFFFFFE bl uart0_printf
- 165:main.c ****
- 166:main.c **** uart0_printf("\r\n0: RAM dump\r\n");
- 365 oc 1 169 0
- 366 01f8 E59F00C0 ldr r0, .L65+28
- 367 01fc EBFFFFFE bl uart0_printf
- 167:main.c **** uart0_printf("1: Load via UART\r\n");
- 368 v r4, #39845888
- 369 0200 E59F00BC .LVL26:
- 370 0204 EBFFFFFE add r4, r4, #153600
- 168:main.c **** uart0_printf("x: Jump to application\r\n");
- 371 d r4, r4, #512
- 372 0208 E59F00B8 mvn r5, #61440
- 373 020c EBFFFFFE b .L52
- 169:main.c **** uart0_printf("\r\nSelect: ");
- 374 L27:
- 375 0210 E59F00B4 .L53:
- 376 0214 EBFFFFFE .loc 1 180 0
- 377 0218 E3A04626 cmp r0, #120
- 378 beq .L56
- 379 021c E2844B96 .LVL28:
- 380 0220 E2844C02 ldr r3, [r5, #-4091]
- 381 0224 E3E05A0F tst r3, #65536
- 382 0228 EA00000B beq .L56
- 383 .loc 1 185 0
- 384 cmp r0, #48
- 170:main.c ****
- 171:main.c **** timer = timeout;
- 172:main.c **** while(timer != 0)
- 173:main.c **** {
- 174:main.c **** data = uart0_read_byte();
- 175:main.c **** if(data == '1') // start program downloader
- 176:main.c **** {
- 177:main.c **** uart0_send_byte((char)data);
- 178:main.c **** program_loader();
- 179:main.c **** }
- 180:main.c **** else if((data == 'x') || ((GPIO0_IN & (1<<16)) == 0)) // start application
- 385 0
- 386 022c E3500078 subne r4, r4, #1
- 387 0230 0A000019 .loc 1 185 0
- 388 beq .L64
- 389 0234 E5153FFB .L55:
- 390 0238 E3130801 .loc 1 192 0
- 391 023c 0A000016 mov r3, r4, asr #18
- 181:main.c **** {
- 182:main.c **** uart0_send_byte((char)data);
- 183:main.c **** break;
- 184:main.c **** }
- 185:main.c **** else if(data == '0') // print memory content
- 392 172 0
- 393 0240 E3500030 cmp r4, #0
- 186:main.c **** {
- 187:main.c **** uart0_send_byte((char)data);
- 188:main.c **** mem_dump();
- 189:main.c **** }
- 190:main.c **** else
- 191:main.c **** timer--;
- 394 loc 1 192 0
- 395 0244 12444001 str r3, [r5, #-4079]
- 396 .loc 1 172 0
- 397 0248 0A000010 beq .L59
- 398 .L52:
- 192:main.c **** SSEG1_DATA = timer >> 18;
- 399 1 174 0
- 400 024c E1A03944 bl uart0_read_byte
- 401 .LVL29:
- 402 0250 E3540000 .LVL30:
- 403 .loc 1 175 0
- 404 0254 E5053FEF cmp r0, #49
- 405 .LVL31:
- 406 0258 0A000009 .loc 1 174 0
- 407 mov r2, r0
- 408 .LVL32:
- 409 025c EBFFFFFE .loc 1 175 0
- 410 bne .L53
- 411 .loc 1 177 0
- 412 bl uart0_send_byte
- 413 0260 E3500031 .LVL33:
- 414 .loc 1 178 0
- 415 bl program_loader
- 416 0264 E1A02000 .loc 1 192 0
- 417 mov r3, r4, asr #18
- 418 .loc 1 172 0
- 419 0268 1AFFFFEF cmp r4, #0
- 420 .loc 1 192 0
- 421 026c EBFFFFFE str r3, [r5, #-4079]
- 422 .loc 1 172 0
- 423 bne .L52
- 424 0270 EBFFFFFE .LVL34:
- 425 .L59:
- 426 0274 E1A03944 .loc 1 194 0
- 427 bl jump_app
- 428 0278 E3540000 .LVL35:
- 429 .loc 1 195 0
- 430 027c E5053FEF mov r0, #0
- 431 ldmfd sp!, {r4, r5, pc}
- 432 0280 1AFFFFF5 .LVL36:
- 433 .L64:
- 434 .loc 1 187 0
- 193:main.c **** }
- 194:main.c **** jump_app();
- 435 188 0
- 436 0284 EBFFFFFE bl mem_dump
- 437 b .L55
- 195:main.c **** }
- 438 L38:
- 439 0288 E3A00000 .L56:
- 440 028c E8BD8030 .loc 1 182 0
- 441 and r0, r2, #255
- 442 .LVL39:
- 443 bl uart0_send_byte
- 444 0290 EBFFFFFE .LVL40:
- 445 .loc 1 194 0
- 446 bl jump_app
- 447 0294 EBFFFFFE .loc 1 195 0
- 448 0298 EAFFFFEB mov r0, #0
- 449 ldmfd sp!, {r4, r5, pc}
- 450 .L66:
- 451 .align 2
- 452 029c E20200FF .L65:
- 453 .word 261566072
- 454 02a0 EBFFFFFE .word .LC2
- 455 .word .LC3
- 456 .word .LC4
- 457 02a4 EBFFFFFE .word .LC5
- 458 .word .LC6
- 459 02a8 E3A00000 .word .LC7
- 460 02ac E8BD8030 .word .LC8
- 461 .LFE8:
- 463 .section .debug_frame,"",%progbits
- 464 02b0 0F972E78 .Lframe0:
- 465 02b4 00000034 .4byte .LECIE0-.LSCIE0
- 466 02b8 0000006C .LSCIE0:
- 467 02bc 0000009C .4byte 0xffffffff
- 468 02c0 000000B4 .byte 0x1
- 469 02c4 000000C4 .ascii "\000"
- 470 02c8 000000D8 .uleb128 0x1
- 471 02cc 000000F4 .sleb128 -4
- 472 .byte 0xe
- 473 .byte 0xc
- 594 .4byte .LFB4-.Ltext0
-DEFINED SYMBOLS
- *ABS*:00000000 main.c
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:13 .text:00000000 uart0_read_byte
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:21 .text:00000000 $a
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:36 .text:00000018 uart0_send_byte
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:62 .text:00000034 uart0_printf
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:101 .text:0000006c mem_dump
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:153 .text:000000c0 jump_app
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:187 .text:000000f8 $d
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:198 .text:000000fc program_loader
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:203 .text:000000fc $a
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:275 .text:00000180 $d
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:307 .text:00000188 main
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:313 .text:00000188 $a
-C:\Users\STNOLT~1\AppData\Local\Temp/ccuAaaaa.s:464 .text:000002b0 $d
-
-NO UNDEFINED SYMBOLS
Index: trunk/implementations/Altera DE2 Board/software/bootloader/.dep/main.o.d
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/.dep/main.o.d (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/.dep/main.o.d (nonexistent)
@@ -1,5 +0,0 @@
-main.o: main.c storm_core.h storm_soc_de2.h
-
-storm_core.h:
-
-storm_soc_de2.h:
Index: trunk/implementations/Altera DE2 Board/software/bootloader/main.hex
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/main.hex (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/main.hex (nonexistent)
@@ -1,86 +0,0 @@
-:02000004FFF00B
-:10000000EA000012E59FF014E59FF014E59FF0145C
-:10001000E59FF014E1A00000E51FFFF0E59FF01060
-:10002000FFF00038FFF0003CFFF00040FFF000441C
-:10003000FFF00048FFF0004CEAFFFFFEEAFFFFFE82
-:10004000EAFFFFFEEAFFFFFEEAFFFFFEEAFFFFFE18
-:10005000E59F00E8E10F1000E3C1107FE38110DBB2
-:10006000E129F001E1A0D000E2400080E10F1000A2
-:10007000E3C1107FE38110D7E129F001E1A0D000B6
-:10008000E2400080E10F1000E3C1107FE38110D156
-:10009000E129F001E1A0D000E2400080E10F100072
-:1000A000E3C1107FE38110D2E129F001E1A0D0008B
-:1000B000E2400080E10F1000E3C1107FE38110D324
-:1000C000E129F001E1A0D000E2400080E10F100042
-:1000D000E3C1107FE38110DFE129F001E1A0D0004E
-:1000E000E59F105CE59F205CE59F305CE1520003DA
-:1000F0000A00000234910004348200043AFFFFFA3F
-:10010000E3A00000E59F1044E59F2044E151000278
-:100110000A000001348100043AFFFFFBE3A0000065
-:10012000E1A01000E1A02000E1A0B000E1A070007B
-:10013000E59FA020E1A0E00FE1A0F00AEAFFFFFEAA
-:1001400000002000FFF0052C00000000FFF0052C4F
-:1001500000000000FFF0052CFFF002E4E3E02A0FAE
-:10016000E5123FE3E3130002E3E0000015120FE79E
-:10017000E1A0F00EE20000FFE3E02A0FE5123FE30A
-:10018000E31300010AFFFFFCE5020FE7E1A0F00E18
-:10019000E92D4010E1A04000E5D00000E350000050
-:1001A0001A000003EA000005E5F40001E350000036
-:1001B0000A000002EBFFFFEEE3500000AAFFFFF988
-:1001C000E1A00004E8BD8010E92D4030E3A050001C
-:1001D000E4954004E1A00C24EBFFFFE5E1A0082436
-:1001E000E20000FFEBFFFFE2E1A00424E20000FFD9
-:1001F000E20440FFEBFFFFDEE1A00004EBFFFFDCC9
-:10020000E3A03502E2833A02E15500031AFFFFEF53
-:10021000E1A00000E1A00000EAFFFFFCE3E02A0FFC
-:10022000E3A03000E5023FF3E52DE004E5023FEBFB
-:10023000E59F001CEBFFFFD5EE163F16E3C3300829
-:10024000EE063F16E3A0F000E1A00000E1A00000F0
-:10025000EAFFFFFCFFF0042CE92D40F0E59F007859
-:10026000EBFFFFCAE59F2074E3A01000E3E03A0F24
-:10027000E3A04626E5032FF3E2844B96E5031FEB4C
-:10028000E1A06001E2844C02E3A05020E1A07001F3
-:10029000EBFFFFB1E37000010A00000BE2455008DC
-:1002A000E1866510E3550000048760040285502054
-:1002B00003A06000EBFFFFA8E3A04626E2844B9674
-:1002C000E3700001E2844C021AFFFFF3E2544001A4
-:1002D0001AFFFFEEE8BD40F0EAFFFFCFFFF0044851
-:1002E00007173BDEE59F3120E3E01A0FE3A0200073
-:1002F000E5013FF3E92D4030E5012FEBEE163F1607
-:10030000E3833008EE063F16E3A0C641E28CC90E37
-:10031000E3A0140BE3A04E41E3E02A01E2811C06B6
-:10032000E28CC023E3A030FFE2844001E50210FF2D
-:10033000E59F00D8E50230F7E502C0EBE50240EFAB
-:10034000EBFFFF92E59F00C8EBFFFF90E59F00C425
-:10035000EBFFFF8EE59F00C0EBFFFF8CE59F00BC2D
-:10036000EBFFFF8AE59F00B8EBFFFF88E59F00B435
-:10037000EBFFFF86E3A04626E2844B96E2844C0224
-:10038000E3E05A0FEA00000BE35000780A0000197E
-:10039000E5153FFBE31308010A000016E3500030A7
-:1003A000124440010A000010E1A03944E354000067
-:1003B000E5053FEF0A000009EBFFFF67E35000315E
-:1003C000E1A020001AFFFFEFEBFFFF69EBFFFFA1A9
-:1003D000E1A03944E3540000E5053FEF1AFFFFF5C3
-:1003E000EBFFFF8DE3A00000E8BD8030EBFFFF6076
-:1003F000EBFFFF74EAFFFFEBE20200FFEBFFFF5CA5
-:10040000EBFFFF85E3A00000E8BD80300F972E785A
-:10041000FFF00460FFF00498FFF004C8FFF004E070
-:10042000FFF004F0FFF00504FFF005200D0A5374FF
-:10043000617274696E67206170706C696361746960
-:100440006F6E2E2E2E0D0A000D0A57616974696EAB
-:100450006720666F7220646174610D0A00000000FD
-:100460000D0A53544F524D20436F72652050726FE6
-:10047000636573736F722053797374656D202D20DB
-:100480006279205374657068616E204E6F6C746978
-:100490006E670D0A00000000426F6F746C6F61643C
-:1004A000657220666F722053544F524D20536F4334
-:1004B000206F6E20416C74657261204445322D427C
-:1004C0006F6172640D0A000056657273696F6E3A4F
-:1004D0002031392E30332E323031320D0A000000F7
-:1004E0000D0A303A2052414D2064756D700D0A009E
-:1004F000313A204C6F616420766961205541525435
-:100500000D0A0000783A204A756D7020746F2061E2
-:1005100070706C69636174696F6E0D0A0000000091
-:0C0520000D0A53656C6563743A200000FE
-:04000005FFF0000008
-:00000001FF
Index: trunk/implementations/Altera DE2 Board/software/bootloader/storm_soc_de2.h
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/storm_soc_de2.h (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/storm_soc_de2.h (nonexistent)
@@ -1,173 +0,0 @@
-#ifndef storm_soc_h
-#define storm_soc_h
-
-/////////////////////////////////////////////////////////////////
-// storm_soc_de2.h - STORM SoC for Altera DE2-Board
-// Based on the STORM Core Processor System
-//
-// Created by Stephan Nolting (stnolting@googlemail.com)
-// http://www.opencores.com/project,storm_core
-// http://www.opencores.com/project,storm_soc
-// Last modified 07. Mar. 2012
-/////////////////////////////////////////////////////////////////
-
-#define REG32 (volatile unsigned int*)
-
-/* Internal RAM */
-#define IRAM_BASE (*(REG32 (0x00000000)))
-#define IRAM_SIZE 8*1024
-
-/* External RAM */
-#define XRAM_BASE (*(REG32 (0x00002000)))
-#define XRAM_SIZE 8*1024*1024
-
-/* Complete RAM */
-#define RAM_BASE (*(REG32 (0x00000000)))
-#define RAM_SIZE IRAM_SIZE+XRAM_SIZE
-
-/* Internal ROM (boot ROM) */
-#define ROM_BASE (*(REG32 (0xFFF00000)))
-#define ROM_SIZE 2*1024
-
-/* De-Cached IO Area */
-#define IO_AREA_BEGIN (*(REG32 (0xFFFF0000)))
-#define IO_AREA_END (*(REG32 (0xFFFFFFFF)))
-#define IO_AREA_SIZE 524288;
-
-/* General Purpose IO Controller 0 */
-#define GPIO0_BASE (*(REG32 (0xFFFF0000)))
-#define GPIO0_SIZE 2*4
-#define GPIO0_OUT (*(REG32 (0xFFFF0000)))
-#define GPIO0_IN (*(REG32 (0xFFFF0004)))
-
-/* Seven Segment Controller 0 */
-#define SSEG0_BASE (*(REG32 (0xFFFF0008)))
-#define SSEG0_SIZE 2*4
-#define SSEG0_DATA (*(REG32 (0xFFFF0008)))
-#define SSEG0_CTRL (*(REG32 (0xFFFF000C)))
-
-/* Seven Segment Controller 1 */
-#define SSEG1_BASE (*(REG32 (0xFFFF0010)))
-#define SSEG1_SIZE 2*4
-#define SSEG1_DATA (*(REG32 (0xFFFF0010)))
-#define SSEG1_CTRL (*(REG32 (0xFFFF0014)))
-
-/* UART 0 - miniUART */
-#define UART0_BASE (*(REG32 (0xFFFF0018)))
-#define UART0_SIZE 2*4
-#define UART0_DATA (*(REG32 (0xFFFF0018)))
-#define UART0_SREG (*(REG32 (0xFFFF001C)))
-
-/* System Timer 0 */
-#define STME0_BASE (*(REG32 (0xFFFF0020)))
-#define STME0_SIZE 4*4
-#define STME0_CNT (*(REG32 (0xFFFF0020)))
-#define STME0_VAL (*(REG32 (0xFFFF0024)))
-#define STME0_CONF (*(REG32 (0xFFFF0028)))
-#define STME0_SCRT (*(REG32 (0xFFFF002C)))
-
-/* SPI 0 */
-#define SPI0_BASE (*(REG32 (0xFFFF0030)))
-#define SPI0_SIZE 8*4
-#define SPI0_CONF (*(REG32 (0xFFFF0030)))
-#define SPI0_PRSC (*(REG32 (0xFFFF0034)))
-#define SPI0_SCSR (*(REG32 (0xFFFF0038)))
-// unused location (*(REG32 (0xFFFF003C)))
-#define SPI0_DAT0 (*(REG32 (0xFFFF0040)))
-#define SPI0_DAT1 (*(REG32 (0xFFFF0044)))
-#define SPI0_DAT2 (*(REG32 (0xFFFF0048)))
-#define SPI0_DAT3 (*(REG32 (0xFFFF004C)))
-
-/* I²C 0 */
-#define I2C0_BASE (*(REG32 (0xFFFF0050)))
-#define I2C0_SIZE 8*4
-#define I2C0_CMD (*(REG32 (0xFFFF0050)))
-#define I2C0_STAT (*(REG32 (0xFFFF0050)))
-// unused location (*(REG32 (0xFFFF0054)))
-// unused location (*(REG32 (0xFFFF0058)))
-// unused location (*(REG32 (0xFFFF005C)))
-#define I2C0_PRLO (*(REG32 (0xFFFF0060)))
-#define I2C0_PRHI (*(REG32 (0xFFFF0064)))
-#define I2C0_CTRL (*(REG32 (0xFFFF0068)))
-#define I2C0_DATA (*(REG32 (0xFFFF006C)))
-
-/* Ps2 Interface */
-#define PS2_BASE (*(REG32 (0xFFFF0070)))
-#define PS2_SIZE 2*4
-#define PS2_DATA (*(REG32 (0xFFFF0070)))
-#define PS2_STAT (*(REG32 (0xFFFF0074)))
-
-/* External Memory CTRL */
-#define XMC_BASE (*(REG32 (0xFFFFEF00)))
-#define XMC_SIZE 20*4
-#define XMC_CSR (*(REG32 (0xFFFFEF00)))
-#define XMC_POC (*(REG32 (0xFFFFEF04)))
-#define XMC_BA_MASK (*(REG32 (0xFFFFEF08)))
-// unused location (*(REG32 (0xFFFFEF0C)))
-#define XMC_CSC0 (*(REG32 (0xFFFFEF10)))
-#define XMC_TMS0 (*(REG32 (0xFFFFEF14)))
-#define XMC_CSC1 (*(REG32 (0xFFFFEF18)))
-#define XMC_TMS1 (*(REG32 (0xFFFFEF1C)))
-#define XMC_CSC2 (*(REG32 (0xFFFFEF20)))
-#define XMC_TMS2 (*(REG32 (0xFFFFEF24)))
-#define XMC_CSC3 (*(REG32 (0xFFFFEF28)))
-#define XMC_TMS3 (*(REG32 (0xFFFFEF2C)))
-#define XMC_CSC4 (*(REG32 (0xFFFFEF30)))
-#define XMC_TMS4 (*(REG32 (0xFFFFEF34)))
-#define XMC_CSC5 (*(REG32 (0xFFFFEF38)))
-#define XMC_TMS5 (*(REG32 (0xFFFFEF3C)))
-#define XMC_CSC6 (*(REG32 (0xFFFFEF40)))
-#define XMC_TMS6 (*(REG32 (0xFFFFEF44)))
-#define XMC_CSC7 (*(REG32 (0xFFFFEF48)))
-#define XMC_TMS7 (*(REG32 (0xFFFFEF4C)))
-
-/* Vector Interrupt Controller */
-#define VIC_BASE (*(REG32 (0xFFFFF000)))
-#define VIC_SIZE 64*4
-#define VICIRQStatus (*(REG32 (0xFFFFF000)))
-#define VICFIQStatus (*(REG32 (0xFFFFF004)))
-#define VICRawIntr (*(REG32 (0xFFFFF008)))
-#define VICIntSelect (*(REG32 (0xFFFFF00C)))
-#define VICIntEnable (*(REG32 (0xFFFFF010)))
-#define VICIntEnClear (*(REG32 (0xFFFFF014)))
-#define VICSoftInt (*(REG32 (0xFFFFF018)))
-#define VICSoftIntClear (*(REG32 (0xFFFFF01C)))
-#define VICProtection (*(REG32 (0xFFFFF020)))
-#define VICVectAddr (*(REG32 (0xFFFFF030)))
-#define VICDefVectAddr (*(REG32 (0xFFFFF034)))
-#define VICTrigLevel (*(REG32 (0xFFFFF038)))
-#define VICTrigMode (*(REG32 (0xFFFFF03C)))
-#define VICVectAddr0 (*(REG32 (0xFFFFF040)))
-#define VICVectAddr1 (*(REG32 (0xFFFFF044)))
-#define VICVectAddr2 (*(REG32 (0xFFFFF048)))
-#define VICVectAddr3 (*(REG32 (0xFFFFF04C)))
-#define VICVectAddr4 (*(REG32 (0xFFFFF050)))
-#define VICVectAddr5 (*(REG32 (0xFFFFF054)))
-#define VICVectAddr6 (*(REG32 (0xFFFFF058)))
-#define VICVectAddr7 (*(REG32 (0xFFFFF05C)))
-#define VICVectAddr8 (*(REG32 (0xFFFFF060)))
-#define VICVectAddr9 (*(REG32 (0xFFFFF064)))
-#define VICVectAddr10 (*(REG32 (0xFFFFF068)))
-#define VICVectAddr11 (*(REG32 (0xFFFFF06C)))
-#define VICVectAddr12 (*(REG32 (0xFFFFF070)))
-#define VICVectAddr13 (*(REG32 (0xFFFFF074)))
-#define VICVectAddr14 (*(REG32 (0xFFFFF078)))
-#define VICVectAddr15 (*(REG32 (0xFFFFF07C)))
-#define VICVectCntl0 (*(REG32 (0xFFFFF080)))
-#define VICVectCntl1 (*(REG32 (0xFFFFF084)))
-#define VICVectCntl2 (*(REG32 (0xFFFFF088)))
-#define VICVectCntl3 (*(REG32 (0xFFFFF08C)))
-#define VICVectCntl4 (*(REG32 (0xFFFFF090)))
-#define VICVectCntl5 (*(REG32 (0xFFFFF094)))
-#define VICVectCntl6 (*(REG32 (0xFFFFF098)))
-#define VICVectCntl7 (*(REG32 (0xFFFFF09C)))
-#define VICVectCntl8 (*(REG32 (0xFFFFF0A0)))
-#define VICVectCntl9 (*(REG32 (0xFFFFF0A4)))
-#define VICVectCntl10 (*(REG32 (0xFFFFF0A8)))
-#define VICVectCntl11 (*(REG32 (0xFFFFF0AC)))
-#define VICVectCntl12 (*(REG32 (0xFFFFF0B0)))
-#define VICVectCntl13 (*(REG32 (0xFFFFF0B4)))
-#define VICVectCntl14 (*(REG32 (0xFFFFF0B8)))
-#define VICVectCntl15 (*(REG32 (0xFFFFF0BC)))
-
-#endif // storm_soc_h
Index: trunk/implementations/Altera DE2 Board/software/bootloader/storm_program.txt
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/storm_program.txt (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/storm_program.txt (nonexistent)
@@ -1,332 +0,0 @@
-000000 => x"EA000012",
-000001 => x"E59FF014",
-000002 => x"E59FF014",
-000003 => x"E59FF014",
-000004 => x"E59FF014",
-000005 => x"E1A00000",
-000006 => x"E51FFFF0",
-000007 => x"E59FF010",
-000008 => x"FFF00038",
-000009 => x"FFF0003C",
-000010 => x"FFF00040",
-000011 => x"FFF00044",
-000012 => x"FFF00048",
-000013 => x"FFF0004C",
-000014 => x"EAFFFFFE",
-000015 => x"EAFFFFFE",
-000016 => x"EAFFFFFE",
-000017 => x"EAFFFFFE",
-000018 => x"EAFFFFFE",
-000019 => x"EAFFFFFE",
-000020 => x"E59F00E8",
-000021 => x"E10F1000",
-000022 => x"E3C1107F",
-000023 => x"E38110DB",
-000024 => x"E129F001",
-000025 => x"E1A0D000",
-000026 => x"E2400080",
-000027 => x"E10F1000",
-000028 => x"E3C1107F",
-000029 => x"E38110D7",
-000030 => x"E129F001",
-000031 => x"E1A0D000",
-000032 => x"E2400080",
-000033 => x"E10F1000",
-000034 => x"E3C1107F",
-000035 => x"E38110D1",
-000036 => x"E129F001",
-000037 => x"E1A0D000",
-000038 => x"E2400080",
-000039 => x"E10F1000",
-000040 => x"E3C1107F",
-000041 => x"E38110D2",
-000042 => x"E129F001",
-000043 => x"E1A0D000",
-000044 => x"E2400080",
-000045 => x"E10F1000",
-000046 => x"E3C1107F",
-000047 => x"E38110D3",
-000048 => x"E129F001",
-000049 => x"E1A0D000",
-000050 => x"E2400080",
-000051 => x"E10F1000",
-000052 => x"E3C1107F",
-000053 => x"E38110DF",
-000054 => x"E129F001",
-000055 => x"E1A0D000",
-000056 => x"E59F105C",
-000057 => x"E59F205C",
-000058 => x"E59F305C",
-000059 => x"E1520003",
-000060 => x"0A000002",
-000061 => x"34910004",
-000062 => x"34820004",
-000063 => x"3AFFFFFA",
-000064 => x"E3A00000",
-000065 => x"E59F1044",
-000066 => x"E59F2044",
-000067 => x"E1510002",
-000068 => x"0A000001",
-000069 => x"34810004",
-000070 => x"3AFFFFFB",
-000071 => x"E3A00000",
-000072 => x"E1A01000",
-000073 => x"E1A02000",
-000074 => x"E1A0B000",
-000075 => x"E1A07000",
-000076 => x"E59FA020",
-000077 => x"E1A0E00F",
-000078 => x"E1A0F00A",
-000079 => x"EAFFFFFE",
-000080 => x"00002000",
-000081 => x"FFF0052C",
-000082 => x"00000000",
-000083 => x"FFF0052C",
-000084 => x"00000000",
-000085 => x"FFF0052C",
-000086 => x"FFF002E4",
-000087 => x"E3E02A0F",
-000088 => x"E5123FE3",
-000089 => x"E3130002",
-000090 => x"E3E00000",
-000091 => x"15120FE7",
-000092 => x"E1A0F00E",
-000093 => x"E20000FF",
-000094 => x"E3E02A0F",
-000095 => x"E5123FE3",
-000096 => x"E3130001",
-000097 => x"0AFFFFFC",
-000098 => x"E5020FE7",
-000099 => x"E1A0F00E",
-000100 => x"E92D4010",
-000101 => x"E1A04000",
-000102 => x"E5D00000",
-000103 => x"E3500000",
-000104 => x"1A000003",
-000105 => x"EA000005",
-000106 => x"E5F40001",
-000107 => x"E3500000",
-000108 => x"0A000002",
-000109 => x"EBFFFFEE",
-000110 => x"E3500000",
-000111 => x"AAFFFFF9",
-000112 => x"E1A00004",
-000113 => x"E8BD8010",
-000114 => x"E92D4030",
-000115 => x"E3A05000",
-000116 => x"E4954004",
-000117 => x"E1A00C24",
-000118 => x"EBFFFFE5",
-000119 => x"E1A00824",
-000120 => x"E20000FF",
-000121 => x"EBFFFFE2",
-000122 => x"E1A00424",
-000123 => x"E20000FF",
-000124 => x"E20440FF",
-000125 => x"EBFFFFDE",
-000126 => x"E1A00004",
-000127 => x"EBFFFFDC",
-000128 => x"E3A03502",
-000129 => x"E2833A02",
-000130 => x"E1550003",
-000131 => x"1AFFFFEF",
-000132 => x"E1A00000",
-000133 => x"E1A00000",
-000134 => x"EAFFFFFC",
-000135 => x"E3E02A0F",
-000136 => x"E3A03000",
-000137 => x"E5023FF3",
-000138 => x"E52DE004",
-000139 => x"E5023FEB",
-000140 => x"E59F001C",
-000141 => x"EBFFFFD5",
-000142 => x"EE163F16",
-000143 => x"E3C33008",
-000144 => x"EE063F16",
-000145 => x"E3A0F000",
-000146 => x"E1A00000",
-000147 => x"E1A00000",
-000148 => x"EAFFFFFC",
-000149 => x"FFF0042C",
-000150 => x"E92D40F0",
-000151 => x"E59F0078",
-000152 => x"EBFFFFCA",
-000153 => x"E59F2074",
-000154 => x"E3A01000",
-000155 => x"E3E03A0F",
-000156 => x"E3A04626",
-000157 => x"E5032FF3",
-000158 => x"E2844B96",
-000159 => x"E5031FEB",
-000160 => x"E1A06001",
-000161 => x"E2844C02",
-000162 => x"E3A05020",
-000163 => x"E1A07001",
-000164 => x"EBFFFFB1",
-000165 => x"E3700001",
-000166 => x"0A00000B",
-000167 => x"E2455008",
-000168 => x"E1866510",
-000169 => x"E3550000",
-000170 => x"04876004",
-000171 => x"02855020",
-000172 => x"03A06000",
-000173 => x"EBFFFFA8",
-000174 => x"E3A04626",
-000175 => x"E2844B96",
-000176 => x"E3700001",
-000177 => x"E2844C02",
-000178 => x"1AFFFFF3",
-000179 => x"E2544001",
-000180 => x"1AFFFFEE",
-000181 => x"E8BD40F0",
-000182 => x"EAFFFFCF",
-000183 => x"FFF00448",
-000184 => x"07173BDE",
-000185 => x"E59F3120",
-000186 => x"E3E01A0F",
-000187 => x"E3A02000",
-000188 => x"E5013FF3",
-000189 => x"E92D4030",
-000190 => x"E5012FEB",
-000191 => x"EE163F16",
-000192 => x"E3833008",
-000193 => x"EE063F16",
-000194 => x"E3A0C641",
-000195 => x"E28CC90E",
-000196 => x"E3A0140B",
-000197 => x"E3A04E41",
-000198 => x"E3E02A01",
-000199 => x"E2811C06",
-000200 => x"E28CC023",
-000201 => x"E3A030FF",
-000202 => x"E2844001",
-000203 => x"E50210FF",
-000204 => x"E59F00D8",
-000205 => x"E50230F7",
-000206 => x"E502C0EB",
-000207 => x"E50240EF",
-000208 => x"EBFFFF92",
-000209 => x"E59F00C8",
-000210 => x"EBFFFF90",
-000211 => x"E59F00C4",
-000212 => x"EBFFFF8E",
-000213 => x"E59F00C0",
-000214 => x"EBFFFF8C",
-000215 => x"E59F00BC",
-000216 => x"EBFFFF8A",
-000217 => x"E59F00B8",
-000218 => x"EBFFFF88",
-000219 => x"E59F00B4",
-000220 => x"EBFFFF86",
-000221 => x"E3A04626",
-000222 => x"E2844B96",
-000223 => x"E2844C02",
-000224 => x"E3E05A0F",
-000225 => x"EA00000B",
-000226 => x"E3500078",
-000227 => x"0A000019",
-000228 => x"E5153FFB",
-000229 => x"E3130801",
-000230 => x"0A000016",
-000231 => x"E3500030",
-000232 => x"12444001",
-000233 => x"0A000010",
-000234 => x"E1A03944",
-000235 => x"E3540000",
-000236 => x"E5053FEF",
-000237 => x"0A000009",
-000238 => x"EBFFFF67",
-000239 => x"E3500031",
-000240 => x"E1A02000",
-000241 => x"1AFFFFEF",
-000242 => x"EBFFFF69",
-000243 => x"EBFFFFA1",
-000244 => x"E1A03944",
-000245 => x"E3540000",
-000246 => x"E5053FEF",
-000247 => x"1AFFFFF5",
-000248 => x"EBFFFF8D",
-000249 => x"E3A00000",
-000250 => x"E8BD8030",
-000251 => x"EBFFFF60",
-000252 => x"EBFFFF74",
-000253 => x"EAFFFFEB",
-000254 => x"E20200FF",
-000255 => x"EBFFFF5C",
-000256 => x"EBFFFF85",
-000257 => x"E3A00000",
-000258 => x"E8BD8030",
-000259 => x"0F972E78",
-000260 => x"FFF00460",
-000261 => x"FFF00498",
-000262 => x"FFF004C8",
-000263 => x"FFF004E0",
-000264 => x"FFF004F0",
-000265 => x"FFF00504",
-000266 => x"FFF00520",
-000267 => x"0D0A5374",
-000268 => x"61727469",
-000269 => x"6E672061",
-000270 => x"70706C69",
-000271 => x"63617469",
-000272 => x"6F6E2E2E",
-000273 => x"2E0D0A00",
-000274 => x"0D0A5761",
-000275 => x"6974696E",
-000276 => x"6720666F",
-000277 => x"72206461",
-000278 => x"74610D0A",
-000279 => x"00000000",
-000280 => x"0D0A5354",
-000281 => x"4F524D20",
-000282 => x"436F7265",
-000283 => x"2050726F",
-000284 => x"63657373",
-000285 => x"6F722053",
-000286 => x"79737465",
-000287 => x"6D202D20",
-000288 => x"62792053",
-000289 => x"74657068",
-000290 => x"616E204E",
-000291 => x"6F6C7469",
-000292 => x"6E670D0A",
-000293 => x"00000000",
-000294 => x"426F6F74",
-000295 => x"6C6F6164",
-000296 => x"65722066",
-000297 => x"6F722053",
-000298 => x"544F524D",
-000299 => x"20536F43",
-000300 => x"206F6E20",
-000301 => x"416C7465",
-000302 => x"72612044",
-000303 => x"45322D42",
-000304 => x"6F617264",
-000305 => x"0D0A0000",
-000306 => x"56657273",
-000307 => x"696F6E3A",
-000308 => x"2031392E",
-000309 => x"30332E32",
-000310 => x"3031320D",
-000311 => x"0A000000",
-000312 => x"0D0A303A",
-000313 => x"2052414D",
-000314 => x"2064756D",
-000315 => x"700D0A00",
-000316 => x"313A204C",
-000317 => x"6F616420",
-000318 => x"76696120",
-000319 => x"55415254",
-000320 => x"0D0A0000",
-000321 => x"783A204A",
-000322 => x"756D7020",
-000323 => x"746F2061",
-000324 => x"70706C69",
-000325 => x"63617469",
-000326 => x"6F6E0D0A",
-000327 => x"00000000",
-000328 => x"0D0A5365",
-000329 => x"6C656374",
-000330 => x"3A200000",
-others => x"F0013007"
Index: trunk/implementations/Altera DE2 Board/software/bootloader/main.elf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/implementations/Altera DE2 Board/software/bootloader/main.elf
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/main.elf (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/main.elf (nonexistent)
trunk/implementations/Altera DE2 Board/software/bootloader/main.elf
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/implementations/Altera DE2 Board/software/bootloader/Makefile
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/Makefile (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/Makefile (nonexistent)
@@ -1,431 +0,0 @@
-# Hey Emacs, this is a -*- makefile -*-
-#
-# WinARM template makefile
-# by Martin Thomas, Kaiserslautern, Germany
-#
-#
-# based on the WinAVR makefile written by Eric B. Weddington, Jörg Wunsch, et al.
-# Released to the Public Domain
-# Please read the make user manual!
-#
-#
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make program = Download the hex file to the device, using lpc21isp
-#
-# (TODO: make filename.s = Just compile filename.c into the assembler code only)
-#
-# To rebuild project do "make clean" then "make all".
-#
-# Changelog:
-# - 17. Feb. 2005 - added thumb-interwork support (mth)
-# - 28. Apr. 2005 - added C++ support (mth)
-# - 29. Arp. 2005 - changed handling for lst-Filename (mth)
-# - 22. Jan. 2012 - modified to handle storm core project
-#
-
-# MCU name and submodel
-MCU = arm7m
-SUBMDL = STORMcore
-
-
-THUMB =
-THUMB_IW =
-
-
-## Create ROM-Image
-RUN_MODE = ROM_RUN
-
-
-# Output format. (can be srec, ihex, binary)
-FORMAT = ihex
-
-
-# Target file name (without extension).
-TARGET = main
-
-
-# List C source files here. (C dependencies are automatically generated.)
-# use file-extension c for "c-only"-files
-#SRC =
-
-# List C source files here which must be compiled in ARM-Mode.
-# use file-extension c for "c-only"-files
-SRCARM = $(TARGET).c
-
-# List C++ source files here.
-# use file-extension cpp for C++-files
-CPPSRC =
-
-# List C++ source files here which must be compiled in ARM-Mode.
-# use file-extension cpp for C++-files
-# CPPSRCARM = $(TARGET).cpp
-CPPSRCARM =
-
-# List Assembler source files here.
-# Make them always end in a capital .S. Files ending in a lowercase .s
-# will not be considered source files but generated files (assembler
-# output from the compiler), and will be deleted upon "make clean"!
-# Even though the DOS/Win* filesystem matches both .s and .S the same,
-# it will preserve the spelling of the filenames, and gcc itself does
-# care about how the name is spelled on its command-line.
-ASRC =
-
-# List Assembler source files here which must be assembled in ARM-Mode..
-ASRCARM = build/storm_startup_code.S
-
-# Optimization level, can be [0, 1, 2, 3, s].
-# 0 = turn off optimization. s = optimize for size.
-# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
-OPT = 2
-
-# Debugging format.
-# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
-# AVR (extended) COFF requires stabs, plus an avr-objcopy run.
-#DEBUG = stabs
-DEBUG = dwarf-2
-
-# List any extra directories to look for include files here.
-# Each directory must be seperated by a space.
-#EXTRAINCDIRS = ./include
-EXTRAINCDIRS =
-
-# Compiler flag to set the C Standard level.
-# c89 - "ANSI" C
-# gnu89 - c89 plus GCC extensions
-# c99 - ISO C99 standard (not yet fully implemented)
-# gnu99 - c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-# Place -D or -U options for C here
-CDEFS = -D$(RUN_MODE)
-
-# Place -I options here
-CINCS =
-
-# Place -D or -U options for ASM here
-ADEFS = -D$(RUN_MODE)
-
-
-# Compiler flags.
-# -g*: generate debugging information
-# -O*: optimization level
-# -f...: tuning, see GCC manual and avr-libc documentation
-# -Wall...: warning level
-# -Wa,...: tell GCC to pass this to the assembler.
-# -adhlns...: create assembler listing
-#
-# Flags for C and C++ (arm-elf-gcc/arm-elf-g++)
-CFLAGS = -g$(DEBUG)
-CFLAGS += $(CDEFS) $(CINCS)
-CFLAGS += -O$(OPT)
-CFLAGS += -Wall -Wcast-align -Wcast-qual -Wimplicit
-CFLAGS += -Wpointer-arith -Wswitch
-CFLAGS += -Wredundant-decls -Wreturn-type -Wshadow -Wunused
-#CFLAGS += -Wa,-adhlns=$(<:.c=.lst)
-CFLAGS += -Wa,-adhlns=$(subst $(suffix $<),.lst,$<)
-CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
-
-# flags only for C
-CONLYFLAGS = -Wstrict-prototypes -Wmissing-declarations
-CONLYFLAGS += -Wmissing-prototypes -Wnested-externs
-CONLYFLAGS += $(CSTANDARD)
-
-# flags only for C++ (arm-elf-g++)
-CPPFLAGS =
-
-# Assembler flags.
-# -Wa,...: tell GCC to pass this to the assembler.
-# -ahlms: create listing
-# -gstabs: have the assembler create line number information; note that
-# for use in COFF files, additional information about filenames
-# and function names needs to be present in the assembler source
-# files -- see avr-libc docs [FIXME: not yet described there]
-##ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
-ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:.S=.lst),-g$(DEBUG)
-
-#Additional libraries.
-
-#Support for newlibc-lpc (file: libnewlibc-lpc.a)
-#NEWLIBLPC = -lnewlib-lpc
-NEWLIBCLPC =
-
-MATH_LIB = -lm
-
-# Linker flags.
-# -Wl,...: tell GCC to pass this to linker.
-# -Map: create map file
-# --cref: add cross reference to map file
-LDFLAGS = -nostartfiles -Wl,-Map=$(TARGET).map,--cref
-LDFLAGS += -lc
-LDFLAGS += $(NEWLIBLPC) $(MATH_LIB)
-LDFLAGS += -lc -lgcc
-
-# Set Linker-Script Depending On Selected Memory
-ifeq ($(RUN_MODE),RAM_RUN)
-LDFLAGS +=-Tbuild/$(SUBMDL)-RAM.ld
-else
-LDFLAGS +=-Tbuild/$(SUBMDL)-ROM.ld
-endif
-
-
-
-# ---------------------------------------------------------------------------
-# Flash-Programming support using lpc21isp by Martin Maurer
-
-# Settings and variables:
-LPC21ISP = lpc21isp
-#LPC21ISP = lpc21isp_beta
-LPC21ISP_PORT = com1
-LPC21ISP_BAUD = 115200
-LPC21ISP_XTAL = 14746
-LPC21ISP_FLASHFILE = $(TARGET).hex
-# verbose output:
-## LPC21ISP_DEBUG = -debug
-# enter bootloader via RS232 DTR/RTS (only if hardware supports this
-# feature - see Philips AppNote):
-LPC21ISP_CONTROL = -control
-
-
-# ---------------------------------------------------------------------------
-
-# Define directories, if needed.
-## DIRARM = c:/WinARM/
-## DIRARMBIN = $(DIRAVR)/bin/
-## DIRAVRUTILS = $(DIRAVR)/utils/bin/
-
-# Define programs and commands.
-SHELL = sh
-CC = arm-elf-gcc -mbig-endian
-CPP = arm-elf-g++
-OBJCOPY = arm-elf-objcopy
-OBJDUMP = arm-elf-objdump
-SIZE = arm-elf-size
-NM = arm-elf-nm
-REMOVE = rm -f
-COPY = cp
-
-
-# Define Messages
-# English
-MSG_ERRORS_NONE = Errors: none
-MSG_BEGIN = -------- begin --------
-MSG_END = -------- end --------
-MSG_EXTRACT = Extracting bootloader program file:
-MSG_SIZE_BEFORE = Size before:
-MSG_SIZE_AFTER = Size after:
-MSG_FLASH = Creating load file for Flash:
-MSG_EXTENDED_LISTING = Creating Extended Listing:
-MSG_SYMBOL_TABLE = Creating Symbol Table:
-MSG_LINKING = Linking:
-MSG_COMPILING = Compiling C:
-MSG_COMPILING_ARM = "Compiling C (ARM-only):"
-MSG_COMPILINGCPP = Compiling C++:
-MSG_COMPILINGCPP_ARM = "Compiling C++ (ARM-only):"
-MSG_ASSEMBLING = Assembling:
-MSG_ASSEMBLING_ARM = "Assembling (ARM-only):"
-MSG_CLEANING = Cleaning project:
-MSG_LPC21_RESETREMINDER = You may have to bring the target in bootloader-mode now.
-
-
-# Define all object files.
-COBJ = $(SRC:.c=.o)
-AOBJ = $(ASRC:.S=.o)
-COBJARM = $(SRCARM:.c=.o)
-AOBJARM = $(ASRCARM:.S=.o)
-CPPOBJ = $(CPPSRC:.cpp=.o)
-CPPOBJARM = $(CPPSRCARM:.cpp=.o)
-
-# Define all listing files.
-LST = $(ASRC:.S=.lst) $(ASRCARM:.S=.lst) $(SRC:.c=.lst) $(SRCARM:.c=.lst)
-LST += $(CPPSRC:.cpp=.lst) $(CPPSRCARM:.cpp=.lst)
-
-# Compiler flags to generate dependency files.
-### GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d
-GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_CFLAGS = -mcpu=$(MCU) $(THUMB_IW) -I. $(CFLAGS) $(GENDEPFLAGS)
-ALL_ASFLAGS = -mcpu=$(MCU) $(THUMB_IW) -I. -x assembler-with-cpp $(ASFLAGS)
-
-
-# Default target.
-all: begin gccversion sizebefore build sizeafter finished cmp end
-
-build: elf hex lss
-
-elf: $(TARGET).elf
-hex: $(TARGET).hex
-lss: $(TARGET).lss
-sym: $(TARGET).sym
-
-# Extract memory file.
-cmp:
- @echo
- @echo $(MSG_EXTRACT)
- storm_extractor.exe $(TARGET).elf
- @echo
-
-
-# Eye candy.
-begin:
- @echo
- @echo $(MSG_BEGIN)
-
-finished:
- @echo $(MSG_ERRORS_NONE)
-
-end:
- @echo $(MSG_END)
- @echo
-
-
-# Display size of file.
-HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
-ELFSIZE = $(SIZE) -A $(TARGET).elf
-sizebefore:
- @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
-
-sizeafter:
- @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
-
-
-# Display compiler version information.
-gccversion :
- @$(CC) --version
-
-
-# Program the device.
-program: $(TARGET).hex
- @echo
- @echo $(MSG_LPC21_RESETREMINDER)
- $(LPC21ISP) $(LPC21ISP_CONTROL) $(LPC21ISP_DEBUG) $(LPC21ISP_FLASHFILE) $(LPC21ISP_PORT) $(LPC21ISP_BAUD) $(LPC21ISP_XTAL)
-
-
-# Create final output files (.hex, .eep) from ELF output file.
-# TODO: handling the .eeprom-section should be redundant
-%.hex: %.elf
- @echo
- @echo $(MSG_FLASH) $@
- $(OBJCOPY) -O $(FORMAT) $< $@
-
-
-# Create extended listing file from ELF output file.
-# testing: option -C
-%.lss: %.elf
- @echo
- @echo $(MSG_EXTENDED_LISTING) $@
- $(OBJDUMP) -h -S -C $< > $@
-
-
-# Create a symbol table from ELF output file.
-%.sym: %.elf
- @echo
- @echo $(MSG_SYMBOL_TABLE) $@
- $(NM) -n $< > $@
-
-
-# Link: create ELF output file from object files.
-.SECONDARY : $(TARGET).elf
-.PRECIOUS : $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM)
-%.elf: $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM)
- @echo
- @echo $(MSG_LINKING) $@
- $(CC) $(THUMB) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) --output $@ $(LDFLAGS)
-# $(CPP) $(THUMB) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) --output $@ $(LDFLAGS)
-
-# Compile: create object files from C source files. ARM/Thumb
-$(COBJ) : %.o : %.c
- @echo
- @echo $(MSG_COMPILING) $<
- $(CC) -c $(THUMB) $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
-
-# Compile: create object files from C source files. ARM-only
-$(COBJARM) : %.o : %.c
- @echo
- @echo $(MSG_COMPILING_ARM) $<
- $(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
-
-# Compile: create object files from C++ source files. ARM/Thumb
-$(CPPOBJ) : %.o : %.cpp
- @echo
- @echo $(MSG_COMPILINGCPP) $<
- $(CPP) -c $(THUMB) $(ALL_CFLAGS) $(CPPFLAGS) $< -o $@
-
-# Compile: create object files from C++ source files. ARM-only
-$(CPPOBJARM) : %.o : %.cpp
- @echo
- @echo $(MSG_COMPILINGCPP_ARM) $<
- $(CPP) -c $(ALL_CFLAGS) $(CPPFLAGS) $< -o $@
-
-
-# Compile: create assembler files from C source files. ARM/Thumb
-## does not work - TODO - hints welcome
-##$(COBJ) : %.s : %.c
-## $(CC) $(THUMB) -S $(ALL_CFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files. ARM/Thumb
-$(AOBJ) : %.o : %.S
- @echo
- @echo $(MSG_ASSEMBLING) $<
- $(CC) -c $(THUMB) $(ALL_ASFLAGS) $< -o $@
-
-
-# Assemble: create object files from assembler source files. ARM-only
-$(AOBJARM) : %.o : %.S
- @echo
- @echo $(MSG_ASSEMBLING_ARM) $<
- $(CC) -c $(ALL_ASFLAGS) $< -o $@
-
-
-# Target: clean project.
-clean: begin clean_list finished end
-
-
-clean_list :
- @echo
- @echo $(MSG_CLEANING)
- $(REMOVE) $(TARGET).hex
- $(REMOVE) $(TARGET).obj
- $(REMOVE) $(TARGET).elf
- $(REMOVE) $(TARGET).map
- $(REMOVE) $(TARGET).obj
- $(REMOVE) $(TARGET).a90
- $(REMOVE) $(TARGET).sym
- $(REMOVE) $(TARGET).lnk
- $(REMOVE) $(TARGET).lss
- $(REMOVE) a.out
- $(REMOVE) storm_program.txt
- $(REMOVE) storm_program.dat
- $(REMOVE) $(COBJ)
- $(REMOVE) $(CPPOBJ)
- $(REMOVE) $(AOBJ)
- $(REMOVE) $(COBJARM)
- $(REMOVE) $(CPPOBJARM)
- $(REMOVE) $(AOBJARM)
- $(REMOVE) $(LST)
- $(REMOVE) $(SRC:.c=.s)
- $(REMOVE) $(SRC:.c=.d)
- $(REMOVE) $(SRCARM:.c=.s)
- $(REMOVE) $(SRCARM:.c=.d)
- $(REMOVE) $(CPPSRC:.cpp=.s)
- $(REMOVE) $(CPPSRC:.cpp=.d)
- $(REMOVE) $(CPPSRCARM:.cpp=.s)
- $(REMOVE) $(CPPSRCARM:.cpp=.d)
- $(REMOVE) .dep/*
-
-
-# Include the dependency files.
--include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
-
-
-# Listing of phony targets.
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
-build elf hex lss sym clean clean_list program
-
Index: trunk/implementations/Altera DE2 Board/software/bootloader/build/STORMcore-ROM.ld
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/build/STORMcore-ROM.ld (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/build/STORMcore-ROM.ld (nonexistent)
@@ -1,127 +0,0 @@
-/***********************************************************************/
-/* */
-/* ROM.ld: Linker Script File */
-/* */
-/***********************************************************************/
-ENTRY(_boot)
-STACK_SIZE = 0x2000;
-
-/* Memory Definitions */
-MEMORY
-{
- ROM (rx) : ORIGIN = 0xFFF00000, LENGTH = 0x00000800
- RAM (rw) : ORIGIN = 0x00000000, LENGTH = 0x00002000
-}
-
-/* Section Definitions */
-SECTIONS
-{
- /* first section is .text which is used for code */
- .text :
- {
- *storm_startup_code.o (.text) /* Startup code */
- *(.text) /* remaining code */
- *(.rodata) /* read-only data (constants) */
- *(.rodata*)
- *(.glue_7)
- *(.glue_7t)
- } > ROM
-
- . = ALIGN(4);
-
- /* .ctors .dtors are used for c++ constructors/destructors */
- /* added by Martin Thomas 4/2005 based on Anglia Design example */
- .ctors :
- {
- PROVIDE(__ctors_start__ = .);
- KEEP(*(SORT(.ctors.*)))
- KEEP(*(.ctors))
- PROVIDE(__ctors_end__ = .);
- } >ROM
-
- .dtors :
- {
- PROVIDE(__dtors_start__ = .);
- KEEP(*(SORT(.dtors.*)))
- KEEP(*(.dtors))
- PROVIDE(__dtors_end__ = .);
- } >ROM
-
- . = ALIGN(4);
- /* mthomas - end */
-
-
- _etext = . ;
- PROVIDE (etext = .);
-
- /* .data section which is used for initialized data */
- .data : AT (_etext)
- {
- _data = .;
- *(.data)
- SORT(CONSTRUCTORS) /* mt 4/2005 */
- } > RAM
-
- . = ALIGN(4);
- _edata = . ;
- PROVIDE (edata = .);
-
- /* .bss section which is used for uninitialized data */
- .bss (NOLOAD) :
- {
- __bss_start = . ;
- __bss_start__ = . ;
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- } > RAM
-
- . = ALIGN(4);
- __bss_end__ = . ;
- PROVIDE (__bss_end = .);
-
- /* .stack ALIGN(256) : */
- .stack :
- {
- . = ALIGN(256);
- . += STACK_SIZE;
- PROVIDE (_stack = .);
- } > RAM
-
- _end = . ;
- PROVIDE (end = .);
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-}
Index: trunk/implementations/Altera DE2 Board/software/bootloader/build/storm_startup_code.S
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/build/storm_startup_code.S (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/build/storm_startup_code.S (nonexistent)
@@ -1,175 +0,0 @@
- .global main // int main(void)
-
- .global _etext // -> .data initial values in ROM
- .global _data // -> .data area in RAM
- .global _edata // end of .data area
- .global __bss_start // -> .bss area in RAM
- .global __bss_end__ // end of .bss area
- .global _stack // top of stack
-
-// Stack Sizes
- .set UND_STACK_SIZE, 0x00000080
- .set ABT_STACK_SIZE, 0x00000080
- .set FIQ_STACK_SIZE, 0x00000080
- .set IRQ_STACK_SIZE, 0X00000080
- .set SVC_STACK_SIZE, 0x00000080
-
-// Standard definitions of Mode bits and Interrupt flags in MSRs
- .set MODE_USR, 0x10 // User Mode
- .set MODE_FIQ, 0x11 // FIQ Mode
- .set MODE_IRQ, 0x12 // IRQ Mode
- .set MODE_SVC, 0x13 // Supervisor Mode
- .set MODE_ABT, 0x17 // Abort Mode
- .set MODE_UND, 0x1B // Undefined Mode
- .set MODE_SYS, 0x1F // System Mode
-
- .equ FIQ_BIT, 0x40 // when FIQ bit is set, FIQ is disabled
- .equ IRQ_BIT, 0x80 // when IRQ bit is set, IRQ is disabled
-
- .text
- .code 32
- .align 2
-
- .global _boot
- .func _boot
-_boot:
-
-// Runtime Interrupt Vectors
-// -------------------------------------------------------------------
-Vectors:
- b _start // reset - _start
- ldr pc,_undf // undefined - _undf
- ldr pc,_swi // SWI - _swi
- ldr pc,_pabt // program abort - _pabt
- ldr pc,_dabt // data abort - _dabt
- nop // reserved
- ldr pc,[pc,#-0xFF0] // IRQ - read the VIC
- ldr pc,_fiq // FIQ - _fiq
-
-
-// Use this group for development
-_undf: .word __undf // undefined
-_swi: .word __swi // SWI
-_pabt: .word __pabt // program abort
-_dabt: .word __dabt // data abort
-_irq: .word __irq // IRQ
-_fiq: .word __fiq // FIQ
-
-__undf: b . // undefined
-__swi: b . // SWI
-__pabt: b . // program abort
-__dabt: b . // data abort
-__irq: b . // IRQ
-__fiq: b . // FIQ
-
- .size _boot, . - _boot
- .endfunc
-
-
-// Setup the operating mode & stack.
-// -------------------------------------------------------------------
- .global _start, start, _mainCRTStartup
- .func _start
-
-_start:
-start:
-_mainCRTStartup:
-
-// Who am I? Where am I going?
-
-// Initialize Interrupt System
-// - Set stack location for each mode
-// - Leave in System Mode with Interrupts Disabled
-// ----------------------------------------------------
- ldr r0,=_stack // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_UND|IRQ_BIT|FIQ_BIT // Change to Undefined Instruction mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#UND_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_ABT|IRQ_BIT|FIQ_BIT // Change to Abort Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#ABT_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_FIQ|IRQ_BIT|FIQ_BIT // Change to FIQ Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#FIQ_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_IRQ|IRQ_BIT|FIQ_BIT // Change to IRQ Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#IRQ_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_SVC|IRQ_BIT|FIQ_BIT // Change to Supervisor Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
- sub r0,r0,#SVC_STACK_SIZE // Calc stack base
- mrs r1,CPSR
- bic r1,r1,#0x7F
- orr r1,r1,#MODE_SYS|IRQ_BIT|FIQ_BIT // Change to System Mode
- msr CPSR,r1
- mov sp,r0 // Store stack base
-
-// Copy initialized data to its execution address in RAM
-// -------------------------------------------------------------------
-#ifdef ROM_RUN
- ldr r1,=_etext // -> ROM data start
- ldr r2,=_data // -> data start
- ldr r3,=_edata // -> end of data
-x01: cmp r2,r3 // check if data to move
- beq y01
- ldrlo r0,[r1],#4 // copy it
- strlo r0,[r2],#4
- blo x01 // loop until done
-y01:
-#endif
-// Clear .bss
-// ----------
- mov r0,#0 // get a zero
- ldr r1,=__bss_start // -> bss start
- ldr r2,=__bss_end__ // -> bss end
-x02: cmp r1,r2 // check if data to clear
- beq y02
- strlo r0,[r1],#4 // clear 4 bytes
- blo x02 // loop until done
-y02:
-// Call main program: main(0)
-// --------------------------
- mov r0,#0 // no arguments (argc = 0)
- mov r1,r0
- mov r2,r0
- mov fp,r0 // null frame pointer
- mov r7,r0 // null frame pointer for thumb
- ldr r10,=main
- mov lr,pc
- mov pc, r10 // enter main()
-
- .size _start, . - _start
- .endfunc
-
- .global _reset, reset, exit, abort
- .func _reset
-_reset:
-reset:
-exit:
-abort:
-
- b . // loop until reset
-
- .size _reset, . - _reset
- .endfunc
-
- .end
Index: trunk/implementations/Altera DE2 Board/software/bootloader/build/storm_startup_code.lst
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/build/storm_startup_code.lst (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/build/storm_startup_code.lst (nonexistent)
@@ -1,234 +0,0 @@
- 1 # 1 "build/storm_startup_code.S"
- 2 # 1 ""
- 1 .global main // int main(void)
- 0
- 0
- 2
- 3 .global _etext // -> .data initial values in ROM
- 4 .global _data // -> .data area in RAM
- 5 .global _edata // end of .data area
- 6 .global __bss_start // -> .bss area in RAM
- 7 .global __bss_end__ // end of .bss area
- 8 .global _stack // top of stack
- 9
- 10 // Stack Sizes
- 11 .set UND_STACK_SIZE, 0x00000080
- 12 .set ABT_STACK_SIZE, 0x00000080
- 13 .set FIQ_STACK_SIZE, 0x00000080
- 14 .set IRQ_STACK_SIZE, 0X00000080
- 15 .set SVC_STACK_SIZE, 0x00000080
- 16
- 17 // Standard definitions of Mode bits and Interrupt flags in MSRs
- 18 .set MODE_USR, 0x10 // User Mode
- 19 .set MODE_FIQ, 0x11 // FIQ Mode
- 20 .set MODE_IRQ, 0x12 // IRQ Mode
- 21 .set MODE_SVC, 0x13 // Supervisor Mode
- 22 .set MODE_ABT, 0x17 // Abort Mode
- 23 .set MODE_UND, 0x1B // Undefined Mode
- 24 .set MODE_SYS, 0x1F // System Mode
- 25
- 26 .equ FIQ_BIT, 0x40 // when FIQ bit is set, FIQ is disabled
- 27 .equ IRQ_BIT, 0x80 // when IRQ bit is set, IRQ is disabled
- 28
- 29 .text
- 30 .code 32
- 31 .align 2
- 32
- 33 .global _boot
- 34 .func _boot
- 35 _boot:
- 36
- 37 // Runtime Interrupt Vectors
- 38 // -------------------------------------------------------------------
- 39 Vectors:
- 40 0000 EAFFFFFE b _start // reset - _start
- 41 0004 E59FF014 ldr pc,_undf // undefined - _undf
- 42 0008 E59FF014 ldr pc,_swi // SWI - _swi
- 43 000c E59FF014 ldr pc,_pabt // program abort - _pabt
- 44 0010 E59FF014 ldr pc,_dabt // data abort - _dabt
- 45 0014 E1A00000 nop // reserved
- 46 0018 E51FFFF0 ldr pc,[pc,#-0xFF0] // IRQ - read the VIC
- 47 001c E59FF010 ldr pc,_fiq // FIQ - _fiq
- 48
- 49
- 50 // Use this group for development
- 51 0020 00000038 _undf: .word __undf // undefined
- 52 0024 0000003C _swi: .word __swi // SWI
- 53 0028 00000040 _pabt: .word __pabt // program abort
- 54 002c 00000044 _dabt: .word __dabt // data abort
- 55 0030 00000048 _irq: .word __irq // IRQ
- 56 0034 0000004C _fiq: .word __fiq // FIQ
- 57
- 58 0038 EAFFFFFE __undf: b . // undefined
- 59 003c EAFFFFFE __swi: b . // SWI
- 60 0040 EAFFFFFE __pabt: b . // program abort
- 61 0044 EAFFFFFE __dabt: b . // data abort
- 62 0048 EAFFFFFE __irq: b . // IRQ
- 63 004c EAFFFFFE __fiq: b . // FIQ
- 64
- 66 .endfunc
- 67
- 68
- 69 // Setup the operating mode & stack.
- 70 // -------------------------------------------------------------------
- 71 .global _start, start, _mainCRTStartup
- 72 .func _start
- 73
- 74 _start:
- 75 start:
- 76 _mainCRTStartup:
- 77
- 78 // Who am I? Where am I going?
- 79
- 80 // Initialize Interrupt System
- 81 // - Set stack location for each mode
- 82 // - Leave in System Mode with Interrupts Disabled
- 83 // ----------------------------------------------------
- 84 0050 E59F00E8 ldr r0,=_stack // Calc stack base
- 85 0054 E10F1000 mrs r1,CPSR
- 86 0058 E3C1107F bic r1,r1,#0x7F
- 87 005c E38110DB orr r1,r1,#MODE_UND|IRQ_BIT|FIQ_BIT // Change to Undefined Instruction mode
- 88 0060 E129F001 msr CPSR,r1
- 89 0064 E1A0D000 mov sp,r0 // Store stack base
- 90
- 91 0068 E2400080 sub r0,r0,#UND_STACK_SIZE // Calc stack base
- 92 006c E10F1000 mrs r1,CPSR
- 93 0070 E3C1107F bic r1,r1,#0x7F
- 94 0074 E38110D7 orr r1,r1,#MODE_ABT|IRQ_BIT|FIQ_BIT // Change to Abort Mode
- 95 0078 E129F001 msr CPSR,r1
- 96 007c E1A0D000 mov sp,r0 // Store stack base
- 97
- 98 0080 E2400080 sub r0,r0,#ABT_STACK_SIZE // Calc stack base
- 99 0084 E10F1000 mrs r1,CPSR
- 100 0088 E3C1107F bic r1,r1,#0x7F
- 101 008c E38110D1 orr r1,r1,#MODE_FIQ|IRQ_BIT|FIQ_BIT // Change to FIQ Mode
- 102 0090 E129F001 msr CPSR,r1
- 103 0094 E1A0D000 mov sp,r0 // Store stack base
- 104
- 105 0098 E2400080 sub r0,r0,#FIQ_STACK_SIZE // Calc stack base
- 106 009c E10F1000 mrs r1,CPSR
- 107 00a0 E3C1107F bic r1,r1,#0x7F
- 108 00a4 E38110D2 orr r1,r1,#MODE_IRQ|IRQ_BIT|FIQ_BIT // Change to IRQ Mode
- 109 00a8 E129F001 msr CPSR,r1
- 110 00ac E1A0D000 mov sp,r0 // Store stack base
- 111
- 112 00b0 E2400080 sub r0,r0,#IRQ_STACK_SIZE // Calc stack base
- 113 00b4 E10F1000 mrs r1,CPSR
- 114 00b8 E3C1107F bic r1,r1,#0x7F
- 115 00bc E38110D3 orr r1,r1,#MODE_SVC|IRQ_BIT|FIQ_BIT // Change to Supervisor Mode
- 116 00c0 E129F001 msr CPSR,r1
- 117 00c4 E1A0D000 mov sp,r0 // Store stack base
- 118
- 119 00c8 E2400080 sub r0,r0,#SVC_STACK_SIZE // Calc stack base
- 120 00cc E10F1000 mrs r1,CPSR
- 121 00d0 E3C1107F bic r1,r1,#0x7F
- 122 00d4 E38110DF orr r1,r1,#MODE_SYS|IRQ_BIT|FIQ_BIT // Change to System Mode
- 123 00d8 E129F001 msr CPSR,r1
- 124 00dc E1A0D000 mov sp,r0 // Store stack base
- 125
- 126 // Copy initialized data to its execution address in RAM
- 127 // -------------------------------------------------------------------
- 128 #ifdef ROM_RUN
- 129 00e0 E59F105C ldr r1,=_etext // -> ROM data start
- 130 00e4 E59F205C ldr r2,=_data // -> data start
- 131 00e8 E59F305C ldr r3,=_edata // -> end of data
- 132 00ec E1520003 x01: cmp r2,r3 // check if data to move
- 133 00f0 0A000002 beq y01
- 134 00f4 34910004 ldrlo r0,[r1],#4 // copy it
- 135 00f8 34820004 strlo r0,[r2],#4
- 136 00fc 3AFFFFFA blo x01 // loop until done
- 137 y01:
- 138 #endif
- 139 // Clear .bss
- 140 // ----------
- 141 0100 E3A00000 mov r0,#0 // get a zero
- 142 0104 E59F1044 ldr r1,=__bss_start // -> bss start
- 143 0108 E59F2044 ldr r2,=__bss_end__ // -> bss end
- 144 010c E1510002 x02: cmp r1,r2 // check if data to clear
- 145 0110 0A000001 beq y02
- 146 0114 34810004 strlo r0,[r1],#4 // clear 4 bytes
- 147 0118 3AFFFFFB blo x02 // loop until done
- 148 y02:
- 149 // Call main program: main(0)
- 150 // --------------------------
- 151 011c E3A00000 mov r0,#0 // no arguments (argc = 0)
- 152 0120 E1A01000 mov r1,r0
- 153 0124 E1A02000 mov r2,r0
- 154 0128 E1A0B000 mov fp,r0 // null frame pointer
- 155 012c E1A07000 mov r7,r0 // null frame pointer for thumb
- 156 0130 E59FA020 ldr r10,=main
- 157 0134 E1A0E00F mov lr,pc
- 158 0138 E1A0F00A mov pc, r10 // enter main()
- 159
- 161 .endfunc
- 162
- 163 .global _reset, reset, exit, abort
- 164 .func _reset
- 165 _reset:
- 166 reset:
- 167 exit:
- 168 abort:
- 169
- 170 013c EAFFFFFE b . // loop until reset
- 171
- 173 .endfunc
- 174
- 175 0140 00000000 .end
- 175 00000000
- 175 00000000
- 175 00000000
- 175 00000000
-DEFINED SYMBOLS
- *ABS*:00000000 build/storm_startup_code.S
-build/storm_startup_code.S:11 *ABS*:00000080 UND_STACK_SIZE
-build/storm_startup_code.S:12 *ABS*:00000080 ABT_STACK_SIZE
-build/storm_startup_code.S:13 *ABS*:00000080 FIQ_STACK_SIZE
-build/storm_startup_code.S:14 *ABS*:00000080 IRQ_STACK_SIZE
-build/storm_startup_code.S:15 *ABS*:00000080 SVC_STACK_SIZE
-build/storm_startup_code.S:18 *ABS*:00000010 MODE_USR
-build/storm_startup_code.S:19 *ABS*:00000011 MODE_FIQ
-build/storm_startup_code.S:20 *ABS*:00000012 MODE_IRQ
-build/storm_startup_code.S:21 *ABS*:00000013 MODE_SVC
-build/storm_startup_code.S:22 *ABS*:00000017 MODE_ABT
-build/storm_startup_code.S:23 *ABS*:0000001b MODE_UND
-build/storm_startup_code.S:24 *ABS*:0000001f MODE_SYS
-build/storm_startup_code.S:26 *ABS*:00000040 FIQ_BIT
-build/storm_startup_code.S:27 *ABS*:00000080 IRQ_BIT
-build/storm_startup_code.S:30 .text:00000000 $a
-build/storm_startup_code.S:35 .text:00000000 _boot
-build/storm_startup_code.S:39 .text:00000000 Vectors
-build/storm_startup_code.S:74 .text:00000050 _start
-build/storm_startup_code.S:51 .text:00000020 _undf
-build/storm_startup_code.S:52 .text:00000024 _swi
-build/storm_startup_code.S:53 .text:00000028 _pabt
-build/storm_startup_code.S:54 .text:0000002c _dabt
-build/storm_startup_code.S:56 .text:00000034 _fiq
-build/storm_startup_code.S:51 .text:00000020 $d
-build/storm_startup_code.S:58 .text:00000038 __undf
-build/storm_startup_code.S:59 .text:0000003c __swi
-build/storm_startup_code.S:60 .text:00000040 __pabt
-build/storm_startup_code.S:61 .text:00000044 __dabt
-build/storm_startup_code.S:55 .text:00000030 _irq
-build/storm_startup_code.S:62 .text:00000048 __irq
-build/storm_startup_code.S:63 .text:0000004c __fiq
-build/storm_startup_code.S:58 .text:00000038 $a
-build/storm_startup_code.S:75 .text:00000050 start
-build/storm_startup_code.S:76 .text:00000050 _mainCRTStartup
-build/storm_startup_code.S:132 .text:000000ec x01
-build/storm_startup_code.S:137 .text:00000100 y01
-build/storm_startup_code.S:144 .text:0000010c x02
-build/storm_startup_code.S:148 .text:0000011c y02
-build/storm_startup_code.S:165 .text:0000013c _reset
-build/storm_startup_code.S:166 .text:0000013c reset
-build/storm_startup_code.S:167 .text:0000013c exit
-build/storm_startup_code.S:168 .text:0000013c abort
-build/storm_startup_code.S:175 .text:00000140 $d
-
-UNDEFINED SYMBOLS
-main
-_etext
-_data
-_edata
-__bss_start
-__bss_end__
-_stack
Index: trunk/implementations/Altera DE2 Board/software/bootloader/storm_extractor.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/implementations/Altera DE2 Board/software/bootloader/storm_extractor.exe
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/storm_extractor.exe (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/storm_extractor.exe (nonexistent)
trunk/implementations/Altera DE2 Board/software/bootloader/storm_extractor.exe
Property changes :
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: trunk/implementations/Altera DE2 Board/software/bootloader/main.map
===================================================================
--- trunk/implementations/Altera DE2 Board/software/bootloader/main.map (revision 3)
+++ trunk/implementations/Altera DE2 Board/software/bootloader/main.map (nonexistent)
@@ -1,214 +0,0 @@
-
-Memory Configuration
-
-Name Origin Length Attributes
-ROM 0xfff00000 0x00000800 xr
-RAM 0x00000000 0x00002000 rw
-*default* 0x00000000 0xffffffff
-
-Linker script and memory map
-
-LOAD build/storm_startup_code.o
-LOAD main.o
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libc.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libm.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libc.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/be\libgcc.a
-START GROUP
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/be\libgcc.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libg.a
-LOAD c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib/be\libc.a
-END GROUP
- 0x00002000 STACK_SIZE = 0x2000
-
-.text 0xfff00000 0x52c
- *storm_startup_code.o(.text)
- .text 0xfff00000 0x15c build/storm_startup_code.o
- 0xfff0013c reset
- 0xfff00000 _boot
- 0xfff00050 _mainCRTStartup
- 0xfff0013c abort
- 0xfff00050 _start
- 0xfff0013c _reset
- 0xfff0013c exit
- 0xfff00050 start
- *(.text)
- .text 0xfff0015c 0x2d0 main.o
- 0xfff00258 program_loader
- 0xfff0021c jump_app
- 0xfff00174 uart0_send_byte
- 0xfff0015c uart0_read_byte
- 0xfff00190 uart0_printf
- 0xfff001c8 mem_dump
- 0xfff002e4 main
- *(.rodata)
- *(.rodata*)
- .rodata.str1.4
- 0xfff0042c 0x100 main.o
- *(.glue_7)
- .glue_7 0xfff0052c 0x0 build/storm_startup_code.o
- .glue_7 0xfff0052c 0x0 main.o
- *(.glue_7t)
- .glue_7t 0xfff0052c 0x0 build/storm_startup_code.o
- .glue_7t 0xfff0052c 0x0 main.o
- 0xfff0052c . = ALIGN (0x4)
-
-.ctors 0xfff0052c 0x0
- 0xfff0052c PROVIDE (__ctors_start__, .)
- *(SORT(.ctors.*))
- *(.ctors)
- 0xfff0052c PROVIDE (__ctors_end__, .)
-
-.dtors 0xfff0052c 0x0
- 0xfff0052c PROVIDE (__dtors_start__, .)
- *(SORT(.dtors.*))
- *(.dtors)
- 0xfff0052c PROVIDE (__dtors_end__, .)
- 0xfff0052c . = ALIGN (0x4)
- 0xfff0052c _etext = .
- 0xfff0052c PROVIDE (etext, .)
-
-.data 0x00000000 0x0 load address 0xfff0052c
- 0x00000000 _data = .
- *(.data)
- .data 0x00000000 0x0 build/storm_startup_code.o
- .data 0x00000000 0x0 main.o
- 0x00000000 . = ALIGN (0x4)
- 0x00000000 _edata = .
- 0x00000000 PROVIDE (edata, .)
-
-.bss 0x00000000 0x0
- 0x00000000 __bss_start = .
- 0x00000000 __bss_start__ = .
- *(.bss)
- .bss 0x00000000 0x0 build/storm_startup_code.o
- .bss 0x00000000 0x0 main.o
- *(COMMON)
- 0x00000000 . = ALIGN (0x4)
- 0x00000000 . = ALIGN (0x4)
- 0x00000000 __bss_end__ = .
- 0x00000000 PROVIDE (__bss_end, .)
-
-.stack 0x00000000 0x2000
- 0x00000000 . = ALIGN (0x100)
- 0x00002000 . = (. + STACK_SIZE)
- *fill* 0x00000000 0x2000 00
- 0x00002000 PROVIDE (_stack, .)
- 0x00002000 _end = .
- 0x00002000 PROVIDE (end, .)
-
-.stab
- *(.stab)
-
-.stabstr
- *(.stabstr)
-
-.stab.excl
- *(.stab.excl)
-
-.stab.exclstr
- *(.stab.exclstr)
-
-.stab.index
- *(.stab.index)
-
-.stab.indexstr
- *(.stab.indexstr)
-
-.comment 0x00000000 0x1b
- *(.comment)
- .comment 0x00000000 0x1b main.o
-
-.debug
- *(.debug)
-
-.line
- *(.line)
-
-.debug_srcinfo
- *(.debug_srcinfo)
-
-.debug_sfnames
- *(.debug_sfnames)
-
-.debug_aranges 0x00000000 0x40
- *(.debug_aranges)
- .debug_aranges
- 0x00000000 0x20 build/storm_startup_code.o
- .debug_aranges
- 0x00000020 0x20 main.o
-
-.debug_pubnames
- 0x00000000 0x81
- *(.debug_pubnames)
- .debug_pubnames
- 0x00000000 0x81 main.o
-
-.debug_info 0x00000000 0x271
- *(.debug_info .gnu.linkonce.wi.*)
- .debug_info 0x00000000 0x92 build/storm_startup_code.o
- .debug_info 0x00000092 0x1df main.o
-
-.debug_abbrev 0x00000000 0x11d
- *(.debug_abbrev)
- .debug_abbrev 0x00000000 0x14 build/storm_startup_code.o
- .debug_abbrev 0x00000014 0x109 main.o
-
-.debug_line 0x00000000 0x167
- *(.debug_line)
- .debug_line 0x00000000 0x99 build/storm_startup_code.o
- .debug_line 0x00000099 0xce main.o
-
-.debug_frame 0x00000000 0xb8
- *(.debug_frame)
- .debug_frame 0x00000000 0xb8 main.o
-
-.debug_str 0x00000000 0x10e
- *(.debug_str)
- .debug_str 0x00000000 0x10e main.o
-
-.debug_loc 0x00000000 0x1b7
- *(.debug_loc)
- .debug_loc 0x00000000 0x1b7 main.o
-
-.debug_macinfo
- *(.debug_macinfo)
-
-.debug_weaknames
- *(.debug_weaknames)
-
-.debug_funcnames
- *(.debug_funcnames)
-
-.debug_typenames
- *(.debug_typenames)
-
-.debug_varnames
- *(.debug_varnames)
-OUTPUT(main.elf elf32-bigarm)
-
-Cross Reference Table
-
-Symbol File
-__bss_end__ build/storm_startup_code.o
-__bss_start build/storm_startup_code.o
-_boot build/storm_startup_code.o
-_data build/storm_startup_code.o
-_edata build/storm_startup_code.o
-_etext build/storm_startup_code.o
-_mainCRTStartup build/storm_startup_code.o
-_reset build/storm_startup_code.o
-_stack build/storm_startup_code.o
-_start build/storm_startup_code.o
-abort build/storm_startup_code.o
-exit build/storm_startup_code.o
-jump_app main.o
-main main.o
- build/storm_startup_code.o
-mem_dump main.o
-program_loader main.o
-reset build/storm_startup_code.o
-start build/storm_startup_code.o
-uart0_printf main.o
-uart0_read_byte main.o
-uart0_send_byte main.o