Skip to content

Commit c787081

Browse files
committed
tidy
1 parent d8f69b8 commit c787081

File tree

3 files changed

+52
-24
lines changed

3 files changed

+52
-24
lines changed

.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
.vs
22
RTD266xFlash/RTD266xFlash/bin/
33
RTD266xFlash/RTD266xFlash/obj/
4-
RTD266xPy/rtd266x/smbus.py
4+
RTD266xPy/rtd266x/smbus.py
5+
Gemfile.lock
6+
.bundle
7+
flash-contents.bin

RTD266xRuby/Gemfile

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
source "https://rubygems.org"
2+
3+
gem "rubyserial"

RTD266xFlash/RTD266xFlash/flash.rb RTD266xRuby/flash.rb

+45-23
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,33 @@ def read_response(len, timeout:)
112112
end
113113
end
114114

115+
def spinner(addr, top, start, code: nil, length: 80)
116+
xs = addr * length / top
117+
spaces = length - xs
118+
print "["
119+
print("X" * xs)
120+
print(" " * spaces)
121+
print "] #{code ? "#{code} " : ""}#{"/-\\|"[(Time.now - start).to_i % 4]} #{addr.to_s.reverse.scan(/\d{3}|.+/).join(",").reverse.rjust(9)} \r"
122+
STDOUT.flush
123+
end
124+
125+
def usage
126+
puts "usage:"
127+
puts " ruby #$0 dump"
128+
puts " dumps 4MiB of flash to 'flash-contents.bin'"
129+
puts " ruby #$0 write FILE"
130+
puts " writes FILE to flash. it should probably be a multiple of 4096 bytes long."
131+
puts " ruby #$0 verify FILE"
132+
puts " verifies FILE in flash"
133+
exit 1
134+
end
135+
136+
REQ_RES_SIZE = 256
137+
138+
if ARGV.length == 0 || !%w(dump write verify).include?(ARGV[0])
139+
usage
140+
end
141+
115142
arduino = RTD266xArduino.new
116143
retries = 5
117144
puts "connecting ..."
@@ -135,38 +162,30 @@ def read_response(len, timeout:)
135162

136163
cmd = ARGV.shift
137164

138-
def spinner(addr, top, start, code: nil, length: 80)
139-
xs = addr * length / top
140-
spaces = length - xs
141-
print "["
142-
print("X" * xs)
143-
print(" " * spaces)
144-
print "] #{code ? "#{code} " : ""}#{"/-\\|"[(Time.now - start).to_i % 4]} #{addr.to_s.reverse.scan(/\d{3}|.+/).join(",").reverse.rjust(9)} \r"
145-
STDOUT.flush
146-
end
147-
148165
if cmd == "dump"
149-
puts "dumping 4MiB of flash in 512 byte increments"
166+
usage if ARGV.any?
167+
168+
puts "dumping 4MiB of flash in #{REQ_RES_SIZE} byte increments"
150169
f = File.open("flash-contents.bin", "wb")
151170
addr = 0
152171
top = 4 * 1024 * 1024
153172
start = Time.now
154173
while addr < top
155174
spinner(addr, top, start)
156-
segment = arduino.read_segment(addr, 512)
175+
segment = arduino.read_segment(addr, REQ_RES_SIZE)
157176
f.write(segment)
158-
addr += 512
177+
addr += REQ_RES_SIZE
159178
end
160179
spinner(addr, top, start)
161180
print "\n"
162181
f.close
163182

164183
elsif cmd == "write"
165184
file = ARGV.shift
166-
raise "specify a filename" unless file
185+
usage if ARGV.any? || !file
167186

168187
content = File.open(file, "rb", &:read)
169-
puts "writing #{content.length} bytes to flash in 256 byte increments"
188+
puts "writing #{content.length} bytes to flash in #{REQ_RES_SIZE} byte increments"
170189

171190
addr = 0
172191
start = Time.now
@@ -176,30 +195,33 @@ def spinner(addr, top, start, code: nil, length: 80)
176195
arduino.erase_sector_containing(addr)
177196
end
178197
spinner(addr, content.length, start, code: 'W')
179-
arduino.write_data(addr, content[addr...addr+256])
180-
addr += 256
198+
arduino.write_data(addr, content[addr...addr+REQ_RES_SIZE])
199+
addr += REQ_RES_SIZE
181200
end
182201
spinner(addr, content.length, start)
183202
print "\n"
184203

185204
elsif cmd == "verify"
186205
file = ARGV.shift
187-
raise "specify a filename" unless file
206+
usage if ARGV.any? || !file
188207

189208
content = File.open(file, "rb", &:read)
190-
puts "verifying #{content.length} bytes in flash in 512 byte"
209+
puts "verifying #{content.length} bytes in flash in #{REQ_RES_SIZE} byte increments"
191210

192211
addr = 0
193212
start = Time.now
213+
errors = false
194214
while addr < content.length
195215
spinner(addr, content.length, start)
196-
segment = arduino.read_segment(addr, 512)
197-
if segment != content[addr...addr+512]
216+
segment = arduino.read_segment(addr, REQ_RES_SIZE)
217+
if segment != content[addr...addr+REQ_RES_SIZE]
198218
print "\n"
199-
puts "verify error in bytes #{addr}...#{addr+512}"
219+
errors = true
220+
puts "verify error in bytes #{addr}...#{addr+REQ_RES_SIZE}"
200221
end
201-
addr += 512
222+
addr += REQ_RES_SIZE
202223
end
203224
spinner(addr, content.length, start)
204225
print "\n"
226+
exit 2 if errors
205227
end

0 commit comments

Comments
 (0)