diff --git a/adiv5-swd.rb b/adiv5-swd.rb index 3de5f0d..ac1dd52 100644 --- a/adiv5-swd.rb +++ b/adiv5-swd.rb @@ -54,7 +54,7 @@ def read(port, addr, opt={}) if !opt[:count] reply = @drv.transfer(req) else - req[:count] = readcount + req[:val] = readcount reply = @drv.transfer_block(req) end diff --git a/nrf51.rb b/nrf51.rb index 0009f03..600b6d4 100644 --- a/nrf51.rb +++ b/nrf51.rb @@ -70,6 +70,12 @@ def mass_erase sleep 0.01 end + self.ERASEUICR = 1 + while !self.READY.ready + Log(:nrf51, 1){ "waiting for UICR erase completion" } + sleep 0.01 + end + self.CONFIG.WEN = :REN # enable read if self.CONFIG.WEN != :REN diff --git a/swd-bitbang.rb b/swd-bitbang.rb index eb5c1ec..8488fd2 100644 --- a/swd-bitbang.rb +++ b/swd-bitbang.rb @@ -80,7 +80,7 @@ def transfer(req) # reads to the AP are posted, so we need to get the result in a # separate transfer. if req[:port] == :ap - rdbufret = transfer(dir: :read, port: :dp, addr: Adiv5Swd::RDBUFF) + rdbufret = transfer(op: :read, port: :dp, addr: Adiv5Swd::RDBUFF) ret[:ack] = rdbufret[:ack] data = rdbufret[:val] end @@ -109,4 +109,7 @@ def calc_parity(data) def hexify(str) str.unpack('C*').map{|e| "%02x" % e}.join(' ') end + + def flush! + end end