summaryrefslogtreecommitdiffstats
path: root/Bachelor/Mikroprozessorsysteme2/ARM202U/EXAMPLES/ROM/SPRINTF.C
blob: 6a5d4c932bca8ef17effe953445b53a721a67b12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>

/* We use the following Debug Monitor SWIs to write things out
 * in this example
 */
extern __swi(2) Write0(char *s);	/* Write a string */

/* The following symbols are defined by the linker and define
 * various memory regions which may need to be copied or initialised
 */
extern char Image$$RO$$Base[];
extern char Image$$RO$$Limit[];
extern char Image$$RW$$Base[];

/* We define some more meaningful names here */
#define rom_code_base Image$$RO$$Base
#define rom_data_base Image$$RO$$Limit
#define ram_data_base Image$$RW$$Base

void C_Entry(void)
{
  char s[80];

  if (rom_data_base == ram_data_base) {
    Write0("Warning: Image has been linked as an application. To link as a ROM image\r\n");
    Write0("         link with the options -RO <rom-base> -RW <ram-base>\r\n");
  }

  sprintf(s, "ROM is at address %p, RAM is at address %p\n", rom_code_base, ram_data_base);
  Write0(s);
}