moved pkernel in a own directory
[pyfrprog.git] / pkernel / kernel.py
1 #!/usr/bin/env python
2 import sys, time
3 from SerialPort_linux import *
4
5 # serial device to communicate with
6 DEVICE="/dev/ttyUSB0"
7 # baudrate used for communication with pkernel
8 KERNEL_BAUDRATE=38400
9
10 print "Initializing serial port..."
11 tty = SerialPort(DEVICE, 500, INIT_BAUDRATE)
12
13 while 1:
14         tty.write('V')
15         tty.flush()
16         try: 
17                 if tty.read() == 'F':
18                         break
19         except SerialPortException: 
20                 # timeout happened, who cares ;-)
21                 pass
22
23 print "OK, trying to set baudrate..."
24 # set baudrate
25 cmdBAUDRATE(REAL_BAUDRATE)
26 tty = SerialPort(DEVICE, 100, REAL_BAUDRATE)
27
28 """
29 print
30 sendByte(0x01)
31 print recvByte()
32 sendByte(0x02)
33 print recvByte()
34 sys.exit(0)
35 """
36 """
37 # execute (existing) program in ram
38 cmdCALL(0x00033ffc)
39 sys.exit(0)
40 """
41
42 # read something from the IRAM
43 #print cmdREAD(0x00030000, 32)
44
45 #data = []
46 #for i in range(0, 32):
47 #       data.append(i)
48 #cmdWRITE(0x00030000, 32, data)
49
50
51 """
52 # write something to the begin of the IRAM
53 data_wr = []
54 checksum = 0
55 for i in range(0, 0x400):
56         value = i%256
57         data_wr.append(value)
58         checksum = (checksum + value) % (2**16)
59
60 print "Calculated checksum:", checksum
61 print "Writing", data_wr, "to the IRAM..."
62 cmdWRITE(0x00030000, len(data_wr), data_wr)
63 print "Received Checksum:", last_checksum
64 print
65
66 print "Reading from the IRAM again..."
67 data_re = cmdREAD(0x00030000, len(data_wr))
68 print "Received data:", data_re, "Checksum:", last_checksum
69 """
70
71 """
72 # see whats in the iram at the moment
73 data_wr = []
74 print "Reading from the IRAM..."
75 data_re = cmdREAD(0x00030000, 0x10000-4)
76 print "Received data:", data_re, "Checksum:", last_checksum
77 """
78
79 """
80 # see whats in the dram at the moment
81 data_wr = []
82 print "Reading from the DRAM..."
83 data_re = cmdREAD(0x0002C000, 0x10000-0xC000-4)
84 print "Received data:", data_re, "Checksum:", last_checksum
85 """
86
87 """
88 # blank the iram
89 data_wr = []
90 for i in range(0, 0x10000-4):
91         value = 0
92         data_wr.append(value)
93
94 print "Writing", data_wr, "to the IRAM..."
95 cmdWRITE(0x00030000, len(data_wr), data_wr)
96 print "Received Checksum:", last_checksum
97 print
98 """
99
100 """
101 # blank the dram
102 data_wr = []
103 for i in range(0, 0x10000-0xC000-4):
104         value = 0
105         data_wr.append(value)
106
107 print "Writing", data_wr, "to the DRAM..."
108 cmdWRITE(0x0002C000, len(data_wr), data_wr)
109 print "Received Checksum:", last_checksum
110 print
111 """
112
113
114 # write some data in the iram and try to execute it
115 data_wr =[
116                 0x9B,0x00,
117                 0x0D,0x4e,
118                 0xcf,0xf1,
119                 0x16,0x01,
120                 0x9b,0x05,
121                 0x04,0xc7,
122                 0xc1,0x06,
123                 0x16,0x56,
124                 0xe0,0xfb, #branch
125                 0x9f,0xa0,0x9f,0xa0,0x9f,0xa0, #nop
126                 0x9f,0xa0,0x9f,0xa0,0x9f,0xa0,
127                 0x9f,0xa0,0x9f,0xa0,0x9f,0xa0,
128                 0x9f,0xa0,0x9f,0xa0,0x9f,0xa0,
129                 0x9f,0xa0,0x9f,0xa0,0x9f,0xa0,
130                 0x9f,0xa0,0x9f,0xa0,0x9f,0xa0,
131                 0x9f,0xa0,0x9f,0xa0,0x9f,0xa0]
132 print "Writing", data_wr, "to the IRAM..."
133 cmdWRITE(0x00030000, len(data_wr), data_wr)
134 print "Received Checksum:", last_checksum
135 print
136 cmdCALL(0x00030000)