00d70bee0c1121134e74c1402ebdc9b80807a3bf
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 IP + ICMP, fixe...

Stefan Schuermans authored 12 years ago

4) #include "ip.h"
Stefan Schuermans implemented LCD peripheral

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

7) #include "switches.h"
Stefan Schuermans implemented IP + ICMP, fixe...

Stefan Schuermans authored 12 years ago

8) #include "uart.h"
9) #include "udp.h"
Stefan Schuermans added "LEDs" I/O peripheral...

Stefan Schuermans authored 12 years ago

10) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

12) 
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

32) }
33) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

67) }
Stefan Schuermans initial firmware and testbed

Stefan Schuermans authored 12 years ago

68) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

69) void tasks(void)
70) {
71)   switches();
72)   leds_uart();
73)   eth_task();
74) }
75) 
76) void leds_tick200(void)
77) {
78)   leds_val = leds_val << 1 | leds_val >> 7;
79)   leds_set_state(leds_val);
80) }
81) 
82) void tick200(void)
83) {
84)   leds_tick200();
85)   arp_tick200();
Stefan Schuermans implemented IP + ICMP, fixe...

Stefan Schuermans authored 12 years ago

86)   ip_tick200();
87)   udp_tick200();
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

88) }
89) 
Stefan Schuermans initial firmware and testbed

Stefan Schuermans authored 12 years ago

90) int main()
91) {
Stefan Schuermans added "LEDs" I/O peripheral...

Stefan Schuermans authored 12 years ago

92)   unsigned int i;
93) 
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

94)   leds_set_state(0x01);
95) 
Stefan Schuermans made MAC configurable in et...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

99) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

101) 
Stefan Schuermans implemented LCD peripheral

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

105) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

119) 
120)   leds_set_state(0x08);
121) 
122)   arp_init();
Stefan Schuermans implemented IP + ICMP, fixe...

Stefan Schuermans authored 12 years ago

123)   ip_init();
Stefan Schuermans implemented TX part of UART...

Stefan Schuermans authored 12 years ago

124) 
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

125)   leds_set_state(0x10);
126) 
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

128)     for (i = 0; i < 20; ++i) {
129)       tasks();
130)       cyc_cnt_delay_ms(10);
Stefan Schuermans add UART error check to FW

Stefan Schuermans authored 12 years ago

131)     }
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

134)