print to uart0 [note: always printed on screen through DMA]
[cortex-from-scratch] / main.c
1 #include <stdbool.h>
2 #include <stddef.h>
3 #include <stdint.h>
4 #include <stm32.h> // <-- your own header file located located in ./include
5
6
7 void *memcpy(void *dest, void *src, size_t count)
8 {   
9     const char *sp = (const char *)src;
10     char *dp = (char *)dest;
11     for(; count != 0; count--) *dp++ = *sp++;
12     return dest;
13 }
14
15 /* fillout memory with 'val' (i.e. all zeroes)
16  */
17 void *memset(void *dest, unsigned char val, size_t count)
18 {
19     char *temp = (char *)dest;
20     for( ; count != 0; count--) *temp++ = val;
21     return dest;
22 }
23
24 /* same as above but shorter */
25 unsigned short *memsetw(unsigned short *dest, unsigned short val, size_t count)
26 {
27     unsigned short *temp = (unsigned short *)dest;
28     for( ; count != 0; count--) *temp++ = val;
29     return dest;
30 }
31
32 int strlen(const char *str)
33 {
34     int retval;
35     for(retval = 0; *str != '\0'; str++) retval++;
36     return retval;
37 }
38
39 unsigned char inportb (uint32_t _addr) 
40 {
41     unsigned char rv;
42     //__asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port));
43     return rv;
44
45 }
46
47 void outportb (uint32_t _addr, unsigned char _data)
48 {
49
50   // __asm__ __volatile__ ("str %1, %0"  : "=r" (_data)  : "m" (_addr) );
51
52    // __asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
53 }
54
55 void main()
56 {
57         uart_init();
58         uart_puts("LOADING SYSTEM...\n");
59         // loop
60         for(;;) {
61
62         }
63 }