Root/lm32/logic/sakc/firmware/hw-test/main.c

1/**
2 *
3 */
4
5#include "soc-hw.h"
6
7inline void writeint(uint32_t val)
8{
9    uint32_t i, digit;
10
11    for (i=0; i<8; i++) {
12        digit = (val & 0xf0000000) >> 28;
13        if (digit >= 0xA)
14            uart_putchar('A'+digit-10);
15        else
16            uart_putchar('0'+digit);
17        val <<= 4;
18    }
19}
20
21void test2() {
22    uart_putchar('b');
23}
24
25void test() {
26    uart_putchar('a');
27    test2();
28    uart_putchar('c');
29}
30
31char glob[] = "Global";
32
33volatile uint32_t *p;
34volatile uint8_t *p2;
35
36extern uint32_t tic_msec;
37
38int main()
39{
40    char test2[] = "Lokalerstr";
41    char *str = test2;
42    uint32_t i;
43    
44// for (i = 0; i < 4; i++)
45 // test2[i] = 'l';
46  // glob[0] = 'g';
47    
48     // Initialize stuff
49    uart_init();
50
51    // Say Hello!
52    uart_putstr( "** Spike Test Firmware **\n" );
53
54    // Initialize TIC
55    isr_init();
56    tic_init();
57    irq_set_mask( 0x00000002 );
58    irq_enable();
59
60    // Say Hello!
61    uart_putstr( "Timer Interrupt instelled.\n" );
62
63    // Do some trivial tests
64    uart_putstr( "Subroutine-Return Test: " );
65    test();
66    uart_putchar('\n');
67
68    uart_putstr( "Local-Pointer Test:" );
69    for (;*str; str++) {
70       uart_putchar(*str);
71    }
72    uart_putchar('\n');
73    
74    uart_putstr( "Global-Pointer Test:" );
75    str = glob;
76    for (;*str; str++) {
77       uart_putchar(*str);
78    }
79    uart_putchar('\n');
80
81    uart_putstr( "Stack Pointer : " );
82    writeint(get_sp());
83    uart_putchar('\n');
84
85    uart_putstr( "Global Pointer: " );
86    writeint(get_gp());
87    uart_putchar('\n');
88
89    uart_putstr( "Timer Test (1s): " );
90    for(i=0; i<4; i++) {
91        uart_putstr("tic...");
92        msleep(1000);
93    }
94    uart_putchar('\n');
95
96    uart_putstr( "Timer Interrupt counter: " );
97    writeint( tic_msec );
98    uart_putchar('\n');
99
100    int val = tic_msec;
101    uart_putstr( "Shift: " );
102    writeint( val );
103    uart_putstr(" <-> ");
104    for(i=0; i<32; i++) {
105        if (val & 0x80000000)
106            uart_putchar( '1' );
107        else
108            uart_putchar( '0' );
109            
110        val <<= 1;
111    }
112    uart_putstr("\r\n");
113    
114    uart_putstr( "GPIO Test..." );
115    gpio0->oe = 0x000000ff;
116    for(;;) {
117        for(i=0; i<8; i++) {
118            uint32_t out1, out2;
119
120            out1 = 0x01 << i;
121            out2 = 0x80 >> i;
122            gpio0->out = out1 | out2;
123
124            msleep(100);
125        }
126    }
127
128
129/*
130    uart_putstr( "Memory Dump: " );
131    uint32_t *start = (uint32_t *)0x40000000;
132    uint32_t *end = (uint32_t *)0x40000100;
133    uint32_t *p;
134    for (p=start; p<end; p++) {
135        if (((uint32_t)p & 12) == 0) {
136            uart_putstr("\r\n[");
137            writeint((uint32_t) p);
138            uart_putchar(']');
139        }
140
141        uart_putchar(' ');
142        writeint(*p);
143    }
144*/
145
146    uart_putstr("Entering Echo Test...\n");
147    while (1) {
148       uart_putchar(uart_getchar());
149    }
150}
151
152

Archive Download this file

Branches:
master



interactive