55a4ef917532453cc39576073284cfb60d9752af
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

1) #include "arp.h"
Stefan Schuermans added cycle counter peripheral

Stefan Schuermans authored 12 years ago

2) #include "cyc_cnt.h"
Stefan Schuermans begin of ethernet RX implem...

Stefan Schuermans authored 12 years ago

3) #include "eth.h"
Stefan Schuermans implemented LCD peripheral

Stefan Schuermans authored 12 years ago

4) #include "lcd.h"
Stefan Schuermans added "LEDs" I/O peripheral...

Stefan Schuermans authored 12 years ago

5) #include "leds.h"
Stefan Schuermans implemented TX part of UART...

Stefan Schuermans authored 12 years ago

6) #include "uart.h"
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

7) #include "switches.h"
Stefan Schuermans added "LEDs" I/O peripheral...

Stefan Schuermans authored 12 years ago

8) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

9) unsigned char leds_val = 0x88;
Stefan Schuermans send ethernet packet on cen...

Stefan Schuermans authored 12 years ago

10) 
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

11) void switches(void)
12) {
13)   lcd_chr(1, 0, switches_get_state(sw_0) ? '0' : ' ');
14)   lcd_chr(1, 1, switches_get_state(sw_1) ? '1' : ' ');
15)   lcd_chr(1, 2, switches_get_state(sw_2) ? '2' : ' ');
16)   lcd_chr(1, 3, switches_get_state(sw_3) ? '3' : ' ');
17)   lcd_chr(1, 4, switches_get_state(sw_east) ? 'E' : ' ');
18)   lcd_chr(1, 5, switches_get_state(sw_north) ? 'N' : ' ');
19)   lcd_chr(1, 6, switches_get_state(sw_south) ? 'S' : ' ');
20)   lcd_chr(1, 7, switches_get_state(sw_west) ? 'W' : ' ');
21)   lcd_chr(1, 8, switches_get_state(sw_center) ? 'C' : ' ');
22)   lcd_chr(1, 9, switches_get_state(sw_rot_a) ? 'a' : ' ');
23)   lcd_chr(1, 10, switches_get_state(sw_rot_b) ? 'b' : ' ');
Stefan Schuermans implemented displaying rota...

Stefan Schuermans authored 12 years ago

24) 
25)   unsigned int cnt = switches_get_rot_cnt();
26)   lcd_chr(1, 12, '0' + (cnt >> 9 & 0x7));
27)   lcd_chr(1, 13, '0' + (cnt >> 6 & 0x7));
28)   lcd_chr(1, 14, '0' + (cnt >> 3 & 0x7));
29)   lcd_chr(1, 15, '0' + (cnt & 0x7));
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

30) }
31) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

32) void leds_uart(void)
33) {
34)   unsigned short chr;
35) 
36)   while (uart_can_rx()) {
37)     chr = uart_rx();
38)     if (uart_is_err(chr))
39)       leds_val = 0;
40)     else
41)       leds_val = chr;
42)     leds_set_state(leds_val);
43)   }
44) }
45) 
46) void eth_task(void)
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

47) {
Stefan Schuermans implemented ethernet TX fir...

Stefan Schuermans authored 12 years ago

48)   void *vptr;
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

49)   unsigned int sz, i;
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

50)   unsigned char *ptr;
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

51) 
52)   while (eth_rx(&vptr, &sz)) {
53)     ptr = vptr;
54)     for (i = 0; i < sz; ++i)
55)       uart_tx(ptr[i]);
56)     ethernet_recv(vptr, sz);
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

57)   }
Stefan Schuermans added padding of ethernet p...

Stefan Schuermans authored 12 years ago

58) 
59)   i = eth_rx_get_cnt();
60)   lcd_chr(0, 11, '0' + (i >> 3 & 0x7));
61)   lcd_chr(0, 12, '0' + (i & 0x7));
62)   i = eth_tx_get_cnt();
63)   lcd_chr(0, 14, '0' + (i >> 3 & 0x7));
64)   lcd_chr(0, 15, '0' + (i & 0x7));
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

65) }
Stefan Schuermans initial firmware and testbed

Stefan Schuermans authored 12 years ago

66) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

67) void tasks(void)
68) {
69)   switches();
70)   leds_uart();
71)   eth_task();
72) }
73) 
74) void leds_tick200(void)
75) {
76)   leds_val = leds_val << 1 | leds_val >> 7;
77)   leds_set_state(leds_val);
78) }
79) 
80) void tick200(void)
81) {
82)   leds_tick200();
83)   arp_tick200();
84) }
85) 
Stefan Schuermans initial firmware and testbed

Stefan Schuermans authored 12 years ago

86) int main()
87) {
Stefan Schuermans added "LEDs" I/O peripheral...

Stefan Schuermans authored 12 years ago

88)   unsigned int i;
89) 
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

90)   leds_set_state(0x01);
91) 
Stefan Schuermans made MAC configurable in et...

Stefan Schuermans authored 12 years ago

92)   eth_mac_init();
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

93)   eth_rx_init();
Stefan Schuermans added padding of ethernet p...

Stefan Schuermans authored 12 years ago

94)   eth_tx_init();
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

95) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

96)   leds_set_state(0x02);
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

97) 
Stefan Schuermans implemented LCD peripheral

Stefan Schuermans authored 12 years ago

98)   lcd_init();
Stefan Schuermans added padding of ethernet p...

Stefan Schuermans authored 12 years ago

99)   lcd_str(0, "MIPS I");
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

100)   lcd_str(1, "");
Stefan Schuermans implemented LCD peripheral

Stefan Schuermans authored 12 years ago

101) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

102)   leds_set_state(0x04);
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

103) 
Stefan Schuermans implemented TX part of UART...

Stefan Schuermans authored 12 years ago

104)   uart_cfg_scale(62); /* 115200 */
105)   uart_cfg_bits(8);
106)   uart_cfg_stop(1);
107)   uart_tx('M');
108)   uart_tx('I');
109)   uart_tx('P');
110)   uart_tx('S');
111)   uart_tx(' ');
112)   uart_tx('I');
113)   uart_tx('\r');
114)   uart_tx('\n');
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

115) 
116)   leds_set_state(0x08);
117) 
118)   arp_init();
Stefan Schuermans implemented TX part of UART...

Stefan Schuermans authored 12 years ago

119) 
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

120)   leds_set_state(0x10);
121) 
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

122)   while (1) {
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

123)     for (i = 0; i < 20; ++i) {
124)       tasks();
125)       cyc_cnt_delay_ms(10);
Stefan Schuermans add UART error check to FW

Stefan Schuermans authored 12 years ago

126)     }
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

127)     tick200();
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

128)   }
Stefan Schuermans added "LEDs" I/O peripheral...

Stefan Schuermans authored 12 years ago

129)