d05a5bb3358b33220feb1770af8d3152672193c6
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 nicer output on LCD: decima...

Stefan Schuermans authored 12 years ago

13) void uint2digits(unsigned int uint, unsigned int cnt, char digits[])
14) {
15)   while (cnt > 0) {
16)     --cnt;
17)     digits[cnt] = '0' + uint % 10;
18)     uint /= 10;
19)   }
20) }
21) 
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

22) void switches(void)
23) {
Stefan Schuermans nicer output on LCD: decima...

Stefan Schuermans authored 12 years ago

24)   char cnt_digits[4];
25) 
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

26)   lcd_chr(1, 0, switches_get_state(sw_0) ? '0' : ' ');
27)   lcd_chr(1, 1, switches_get_state(sw_1) ? '1' : ' ');
28)   lcd_chr(1, 2, switches_get_state(sw_2) ? '2' : ' ');
29)   lcd_chr(1, 3, switches_get_state(sw_3) ? '3' : ' ');
30)   lcd_chr(1, 4, switches_get_state(sw_east) ? 'E' : ' ');
31)   lcd_chr(1, 5, switches_get_state(sw_north) ? 'N' : ' ');
32)   lcd_chr(1, 6, switches_get_state(sw_south) ? 'S' : ' ');
33)   lcd_chr(1, 7, switches_get_state(sw_west) ? 'W' : ' ');
34)   lcd_chr(1, 8, switches_get_state(sw_center) ? 'C' : ' ');
35)   lcd_chr(1, 9, switches_get_state(sw_rot_a) ? 'a' : ' ');
36)   lcd_chr(1, 10, switches_get_state(sw_rot_b) ? 'b' : ' ');
Stefan Schuermans implemented displaying rota...

Stefan Schuermans authored 12 years ago

37) 
Stefan Schuermans nicer output on LCD: decima...

Stefan Schuermans authored 12 years ago

38)   uint2digits(switches_get_rot_cnt(), 4, cnt_digits);
39)   lcd_chr(1, 12, cnt_digits[0]);
40)   lcd_chr(1, 13, cnt_digits[1]);
41)   lcd_chr(1, 14, cnt_digits[2]);
42)   lcd_chr(1, 15, cnt_digits[3]);
Stefan Schuermans implemented switches

Stefan Schuermans authored 12 years ago

43) }
44) 
Stefan Schuermans improve 200ms tick and task...

Stefan Schuermans authored 12 years ago

45) void uart(void)
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

46) {
47)   unsigned short chr;
48) 
49)   while (uart_can_rx()) {
50)     chr = uart_rx();
Stefan Schuermans improve 200ms tick and task...

Stefan Schuermans authored 12 years ago

51)     if (!uart_is_err(chr))
52)       uart_tx(chr);
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

53)   }
54) }
55) 
56) void eth_task(void)
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

59)   unsigned int sz, i;
Stefan Schuermans nicer output on LCD: decima...

Stefan Schuermans authored 12 years ago

60)   char digits[2];
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

61) 
Stefan Schuermans improve 200ms tick and task...

Stefan Schuermans authored 12 years ago

62)   while (eth_rx(&vptr, &sz))
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

63)     ethernet_recv(vptr, sz);
Stefan Schuermans added padding of ethernet p...

Stefan Schuermans authored 12 years ago

64) 
Stefan Schuermans nicer output on LCD: decima...

Stefan Schuermans authored 12 years ago

65)   uint2digits(eth_rx_get_cnt(), 2, digits);;
66)   lcd_chr(0, 11, digits[0]);
67)   lcd_chr(0, 12, digits[1]);
68)   uint2digits(eth_tx_get_cnt(), 2, digits);;
69)   lcd_chr(0, 14, digits[0]);
70)   lcd_chr(0, 15, digits[1]);
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

71) }
Stefan Schuermans initial firmware and testbed

Stefan Schuermans authored 12 years ago

72) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

73) void tasks(void)
74) {
75)   switches();
Stefan Schuermans improve 200ms tick and task...

Stefan Schuermans authored 12 years ago

76)   uart();
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

77)   eth_task();
78) }
79) 
80) void leds_tick200(void)
81) {
82)   leds_val = leds_val << 1 | leds_val >> 7;
83)   leds_set_state(leds_val);
84) }
85) 
86) void tick200(void)
87) {
88)   leds_tick200();
89)   arp_tick200();
Stefan Schuermans implemented IP + ICMP, fixe...

Stefan Schuermans authored 12 years ago

90)   ip_tick200();
91)   udp_tick200();
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

92) }
93) 
Stefan Schuermans initial firmware and testbed

Stefan Schuermans authored 12 years ago

94) int main()
95) {
Stefan Schuermans improve 200ms tick and task...

Stefan Schuermans authored 12 years ago

96)   unsigned int start_cyc;
Stefan Schuermans added "LEDs" I/O peripheral...

Stefan Schuermans authored 12 years ago

97) 
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

98)   leds_set_state(0x01);
99) 
Stefan Schuermans made MAC configurable in et...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

103) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

105) 
Stefan Schuermans implemented LCD peripheral

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

109) 
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

123) 
124)   leds_set_state(0x08);
125) 
126)   arp_init();
Stefan Schuermans implemented IP + ICMP, fixe...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

128) 
Stefan Schuermans implemented ethernet RX bus...

Stefan Schuermans authored 12 years ago

129)   leds_set_state(0x10);
130) 
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

131)   while (1) {
Stefan Schuermans improve 200ms tick and task...

Stefan Schuermans authored 12 years ago

132)     start_cyc = cyc_cnt_read();
133)     while (cyc_cnt_read() - start_cyc < 200 * CYC_CNT_MS)
Stefan Schuermans implementation of ethernet...

Stefan Schuermans authored 12 years ago

134)       tasks();
135)     tick200();
Stefan Schuermans slower LED animation for ex...

Stefan Schuermans authored 12 years ago

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

Stefan Schuermans authored 12 years ago

137)