Copy and pasting SREC/BIN files fails

I realise this is weird and offbeat.

I have the Freescale Arm Development kit. The microcontroller reports itself via CDC device drivers. DOPUS recognises the Arm device as attached and issues a drive letter, so far so good.

The Arm bootloader uses OpenSDA to program Motorola S files or raw BIN files into the device, it should work by drag and dropping - drag from the PC project folder and drop it onto the Arm device showing as an attached drive, the programming should be almost instant in human terms. However if DOPUS is used the programming fails, if Windows Explorer is used everything works as advertised.

Either DOPUS mistakes something in a SREC or BIN file and terminates the copy before it should or maybe it doesn't terminate at all so the bootloader doesn't get all the housekeeping bits it requires. The Arm device self reports via an HTM file what state the programming is in - and reports either Ready (which is wrong) or Programming... but never Completed which it should.

As it works with Windows Explorer, I'm assuming it is in DOPUS where the problem lies.

The USB driver loaded is OpenSDA -CDC Serial Port from Freescale P&E Micro v1.1.2600.1

My OS is W7 Ult 64 bit.

Colin

I have just discovered it is the pasting that fails, if I drag from a DOPUS window to an Explorer window the device is a happy chappy :slight_smile:

Are we talking about drag & drop or copy & paste? They're two different things.

I've tried both from within DOPUS with the same result, I've only tried dragging and dropping from DOPUS to Windows Explorer.

I've just tried Ctrl+c -> Crtl+v, Crtl+c -> shift + insert, context menu copy and paste, copy files via the toolbar buttons and as I said drag and drop. Perhaps EOF gets stripped off?

Copy from DOPUS and Paste into Explorer doesn't work, only drag from DOPUS into Explorer works. The file actually shows up in the lister showing the Arm device, but hasn't arrived in a form the bootloader/programmer can use.

Thanks

Colin

Could you post a screenshot of the Freescale drive letter open in both Opus and Explorer so we can see if it's likely to be a real drive or a virtual folder?

Screenshots as requested, I included Windows Disk Management view as well.




Colin

Is the actual byte size of the copied file different when copying in Opus compared to Explorer?

I think you are onto something, I dragged and dropped a 20.9kB file using Explorer and the used space is reported as 160kB, the dragging the same file using Opus reports 192kB.


My guess is that the drive does not handle non-buffered IO correctly. Try turning it off under Settings -> Preferences -> Miscellaneous -> Advanced, by setting copy_nonbufferio_threshold to zero.

What's the actual byte size of the file before and after the copy? (use the Properties dialog to get this)

Also check if the file attributes are being set the same by both programs.

@Leo

I made the suggested change to th enon buffered IO setting - no difference.

@ Jon

The file sizes are the same in both Explorer and Opus.

On right click of the file and selection of properties, the source directory shows. Size = 54,844 bytes, Size On Disk 57,344 bytes, Owner is Admin and Archive bit is set. After being transferred to the Freescale board, the Size is the same but the Size On Disk increases to 65,536 bytes (I assume filling out a 16 bit block), the owner changes to Everyone and the archive bit is still set.

These results are the same in both Explorer and Opus.

Colin

Are the file contents identical after copying?

If you don't have a diff tool to compare the files, you can turn on the SHA-1 Checksum column in Opus and compare the checksums. (Or use the "fc /B" command built into Windows, via a command prompt.)