uart small ping pong receive, update of register functions
[cortex-from-scratch] / main.c
1 #include <stdbool.h>
2 #include <stddef.h>
3 #include <stdint.h>
4 #include <stm32.h> // <-- my own header file located located in ./include
5 #include <mmap.h>
6
7
8 void *memcpy(void *dest, void *src, size_t count)
9 {   
10     const char *sp = (const char *)src;
11     char *dp = (char *)dest;
12     for(; count != 0; count--) *dp++ = *sp++;
13     return dest;
14 }
15
16 /* fillout memory with 'val' (i.e. all zeroes)
17  */
18 void *memset(void *dest, unsigned char val, size_t count)
19 {
20     char *temp = (char *)dest;
21     for( ; count != 0; count--) *temp++ = val;
22     return dest;
23 }
24
25 /* same as above but shorter */
26 unsigned short *memsetw(unsigned short *dest, unsigned short val, size_t count)
27 {
28     unsigned short *temp = (unsigned short *)dest;
29     for( ; count != 0; count--) *temp++ = val;
30     return dest;
31 }
32
33 int strlen(const char *str)
34 {
35     int retval;
36     for(retval = 0; *str != '\0'; str++) retval++;
37     return retval;
38 }
39
40
41
42
43 void main()
44 {
45
46         ivt_init();
47 //      clock_init();
48         uart_init();
49 //      systick_init();
50         uart_puts("LOADING SYSTEM 0.1 ...\n");
51         sysinfo();
52         mm_init();
53
54         //int * p2 = mm_alloc(512);
55         //memset(p2, 'a', 512);
56
57         //addrtohex(p2);
58         //addrtohex(*p2);
59
60         //uint32_t * p = (volatile unsigned)  0x21000000;
61         //regw_u32(p, 0x0CCCCCCCC, 4, 0x01);
62
63         //regw_u8(p, 0xFF, 0, 0x02);
64         
65         //addrtohex(*p);
66
67         //addrtohex((volatile uint32_t) 0x12345678 );
68         //addrtohex((volatile uint32_t) SCB_VTOR );
69
70 //      asm("cpsie i"); // enable irq , cpsied f (disable faukts(
71
72         // loop
73         for(;;) {
74
75         }
76 }