Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

How to browse files inside a single board embeded computer?

Status
Not open for further replies.

agoo

Member level 3
Joined
Sep 28, 2013
Messages
55
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,734
Hello, We are using a device with a single board computer inside. It has a usb and rs232 ports for its PC software to communicate with the device for data transfer. I want to browse files and directories inside this computer. I tried windows xp "ActiveSync" and windows 7 and 10 "windows device mobile center" but my PC did not detect the device and I couldn't sync and browse files and directories inside the device computer. Any advice how to do this? or is there any software I can find for this purpose?

thx

--- Updated ---


brand of the single board computer is attached

Single board brand.jpg
 
Last edited:

what makes you think there are “files inside“ the board? Do you even know what, if any, operating system it’s using?

And your picture shows the bare PCB info.94-V0 is the flame retardant property of the board.
 

Hi
Hello, We are using a device with
... and now we should find out what "device" you use and what communication protocol it uses?

There are many millions of different "devices", with different OS with different communication. And then there additinally are different file systems and maybe millions of different file formats.

Basically you don´t give us any information.

So my recommendation: Find out the manufacturer and type of device, then ask the manufacturer.

Klaus
 

Some says there might be no files or directories. Still it is OK if I can read the code inside SBC and inspect it directly and write it back. Is this possible? If so how? Any software in this regard to help?
 

Its possible with a bootloader of some sort in the SBC or a utility that SBC OS
runs. What OS is the SBC running ?

A portable flash drive, like an SSD, has its files managed thru USB port by a utility
in OS, in the case of Windows "File manager" is the utility that does this......a basic example.

Are you trying to manage the OS files of the OS running on the SBC ?

Regards, Dana.
 
Last edited:

Hi,
Is this possible? If so how? Any software in this regard to help?

See it like this:
"There is a creature I want to speak with. Please tell me how to communicate".
What would you recommend me?

*****
Again: the only way I see is to contact the manufacturer.

Klaus
 

Some says there might be no files or directories. Still it is OK if I can read the code inside SBC and inspect it directly and write it back. Is this possible? If so how? Any software in this regard to help?
First you say you want to ‘read the files inside the board’. Now you say you want to read the code.

WHAT ARE YOU TRYING TO DO??
Are you trying to reverse-engineer this board?
 

No. I don't want to reverse engineer this board. I want to save these information into a file for a backup. When device needs repair and replacing some chips then I can reload these info to the device and make it to work. Device is old and vendor no longer supports its repair.

Device software has an option which can read information I need and display these information on the computer monitor but there is no way of saving these info into a file. I want to save these information in a file.

I also tried to log info via "serial port monitor" when I use this option to read the information. This was successful and I can see information I need are there and I can save into a file but I don't know how to write them back.

I can connect to the device via rs232. I am looking for a way to send commands to the device to read info from a certain address of the memory and to be able to write it back into the same address. I think I can find the address of the info I want from "serial port monitor" log. Now I need to find a tool to be able to read info from that address in binary and write back using the same tool into the same address. Is this possible? If so what tools are out there to help me with this?


Device software uses IRP_MJ_READ command to read info I want (see attached log). May be I can use IRP_MJ_READ and IRP_MJ_write commands to read and write info I want directly. Any advice in this?

Code:
103 IRP_MJ_READ - Transfers data from a COM port to a client (COM4) - 349 bytes of 349
STATUS_SUCCESS
05 90 0c 00 e8 a1 50 01 00 00 5c 01 f6 00 04 00 ...è¡P...\.ö...
00 00 60 01 f6 00 2c 01 00 00 8c 02 f6 00 04 00 ..`.ö.,...Œ.ö...
00 00 90 02 f6 00 7c 00 00 00 0c 03 f6 00 a4 1f ...ö.|.....ö.¤.
00 00 b0 22 f6 00 a4 1f 00 00 54 42 f6 00 94 11 ..°"ö.¤...TBö.”.
00 00 e8 53 f6 00 20 0a 00 00 08 5e f6 00 08 07 ..èSö. ....^ö...
00 00 10 65 f6 00 c0 12 00 00 d0 77 f6 00 b0 04 ...eö.À...Ðwö.°.
00 00 80 7c f6 00 c4 09 00 00 44 86 f6 00 4c 04 ..€|ö.Ä...D†ö.L.
00 00 90 8a f6 00 b0 04 00 00 40 8f f6 00 34 08 ..Šö.°...@ö.4.
00 00 74 97 f6 00 4c 04 00 00 c0 9b f6 00 4c 04 ..t—ö.L...À›ö.L.
00 00 0c a0 f6 00 b8 0b 00 00 c4 ab f6 00 48 00 ... ö.¸...Ä«ö.H.
00 00 0c ac f6 00 0c 00 00 00 18 ac f6 00 10 0e ...¬ö......¬ö...
00 00 28 ba f6 00 10 0e 00 00 38 c8 f6 00 10 0e ..(ºö.....8Èö...
00 00 48 d6 f6 00 0c 00 00 00 54 d6 f6 00 80 04 ..HÖö.....TÖö.€.
00 00 d4 da f6 00 e0 01 00 00 b4 dc f6 00 a4 1f ..ÔÚö.à...´Üö.¤.
00 00 58 fc f6 00 e8 03 00 00 40 00 f7 00 80 00 ..Xüö.è...@.÷.€.
00 00 c0 00 f7 00 10 00 00 00 d0 00 f7 00 0c 00 ..À.÷.....Ð.÷...
00 00 dc 00 f7 00 0c 00 00 00 e8 00 f7 00 60 03 ..Ü.÷.....è.÷.`.
00 00 48 04 f7 00 b0 01 00 00 f8 05 f7 00 a4 1f ..H.÷.°...ø.÷.¤.
00 00 9c 25 f7 00 04 00 00 00 a0 25 f7 00 10 0e ..œ%÷..... %÷...
00 00 b0 33 f7 00 0c 00 00 00 bc 33 f7 00 ac 0d ..°3÷.....¼3÷.¬.
00 00 68 41 f7 00 a8 00 00 00 10 42 f7 00 a4 1f ..hA÷.¨....B÷.¤.
00 00 b4 61 f7 00 8c 00 00 00 f0 60 92 ..´a÷.Œ...ð`’
 
Last edited by a moderator:

writing to memory is not the same as programming this mythical “device” you keep talking about. I assume it’s a microprocessor, but that’s just a guess since you’re telling us nothing.
 

I don't have any information about this SBC. I tried to get some info from TTM but no reply from them. Following is a part of the serial port monitor log. There are read and write commands along with communication parameters commands which shows it may be possible to read, change and write back the info I want It seems with a small C program it can be done but I have no knowledge of any type of programing.


Code:
1 IRP_MJ_CREATE - Opens a COM port (COM4)
STATUS_SUCCESS
Opened by:
C:\device\Transfer.exe

3 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_SET_QUEUE_SIZE - Request sets the size of the internal receive buffer
InSize - 204900
OutSize - 200

5 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_BAUD_RATE - Returns the baud rate that is currently set for a COM port
BaudRate - 115200

7 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_LINE_CONTROL - Request returns information about the line control set for a COM port
StopBits - 0 (1 stop bit)
Parity - 0 (NO_PARITY)
WordLength - 8

9 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_CHARS - Request returns the special characters that Serial uses with handshake flow control
EofChar - 0
ErrorChar - 0
BreakChar - 0
EventChar - 0
XonChar - 17
XoffChar - 19

11 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port
ControlHandShake - 0x00
FlowReplace - 0x00
XonLimit - 102450
XoffLimit - 25612

13 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_PROPERTIES - Request returns information about the capabilities of a COM port
wPacketLength - 64
wPacketVersion - 2
dwServiceMask - 0x00000001 (SP_SERIALCOMM)
dwMaxTxQueue - 0
dwMaxRxQueue - 0
dwMaxBaud - 0x10000000 (Programmable baud rates available)
dwProvSubType - 0x00000001 (RS-232 serial port)
dwProvCapabilities - 0x000000ff (DTR and DSR | Interval timeouts | Parity checking | Receive Line Signal Detect | RTS and CTS | XON and XOFF | Total elapsed timeouts | XON and XOFF flow control)
dwSettableParams - 0x0000007f (Baud rate | Data bits | Handshaking (flow control) | Parity | Parity checking | Receive Line Signal Detect | Stop bits)
dwSettableBaud - 0x1007ffff (75 bps | 110 bps | 134.5 bps | 150 bps | 300 bps | 600 bps | 1200 bps | 1800 bps | 2400 bps | 4800 bps | 7200 bps | 9600 bps | 14400 bps | 19200 bps | 38400 bps | 56K bps | 57600 bps | 115200 bps | 128K bps | Programmable baud rates available)
wSettableData - 0x0000000f (5 data bits | 6 data bits | 7 data bits | 8 data bits)
wSettableStopParity - 0x00001f07 (Even parity | Mark parity | No parity | Odd parity | Space parity | 1 stop bit | 1.5 stop bits | 2 stop bits)
dwCurrentTxQueue - 0
dwCurrentRxQueue - 204900

15 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_BAUD_RATE - Returns the baud rate that is currently set for a COM port
BaudRate - 115200

17 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_LINE_CONTROL - Request returns information about the line control set for a COM port
StopBits - 0 (1 stop bit)
Parity - 0 (NO_PARITY)
WordLength - 8

19 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_CHARS - Request returns the special characters that Serial uses with handshake flow control
EofChar - 0
ErrorChar - 0
BreakChar - 0
EventChar - 0
XonChar - 17
XoffChar - 19

21 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port
ControlHandShake - 0x00
FlowReplace - 0x00
XonLimit - 102450
XoffLimit - 25612

23 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_SET_BAUD_RATE - Request sets the baud rate on a COM port. Serial verifies the specified baud rate
BaudRate - 115200

25 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_CLR_RTS - Request clears the RTS control signal

27 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_CLR_DTR - Request clears the DTR control signal.

29 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_SET_LINE_CONTROL - Request sets the line control register
StopBits - 0 (1 stop bit)
Parity - 0 (NO_PARITY)
WordLength - 8

31 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_SET_CHARS - Request sets the special characters that Serial uses for handshake flow control
EofChar - 0
ErrorChar - 0
BreakChar - 0
EventChar - 0
XonChar - 17
XoffChar - 19

33 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_SET_HANDFLOW - Request sets the configuration of handshake flow control
ControlHandShake - 0x00
FlowReplace - 0x00
XonLimit - 51225
XoffLimit - 51225

35 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_SET_TIMEOUTS - Request sets the timeout value's that the driver uses with read and write requests
ReadIntervalTimeout - 50
ReadTotalTimeoutMultiplier - 0
ReadTotalTimeoutConstant - 50
WriteTotalTimeoutMultiplier - 0
WriteTotalTimeoutConstant - 0

37 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_SET_WAIT_MASK - Request configures Serial to notify a client after the occurrence of any one of a specified set of wait events
Mask - 0x00000001 (EV_RXCHAR)

40 IRP_MJ_WRITE - Request transfers data from a client to a COM port (COM4) - 9 bytes of 9
STATUS_SUCCESS
a0 09 00 00 00 01 3c 01 92 12345678

41 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_WAIT_ON_MASK - Request is used to wait for the occurrence of any wait event specified by using an IOCTL_SERIAL_SET_WAIT_MASK request
Mask - 0x00000001 (EV_RXCHAR)

43 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4)
STATUS_SUCCESS
IOCTL_SERIAL_GET_COMMSTATUS - Request returns information about the communication status of a COM port
Errors - 0
HoldReasons - 0
AmountInInQueue - 11
AmountInOutQueue - 0
EofReceived - 0
WaitForImmediate - 0

45 IRP_MJ_READ - Transfers data from a COM port to a client (COM4) - 5 bytes of 5 
    STATUS_SUCCESS 
            a0 12 00 00 00                                     ....

From all of the lines bellow I am interested in the purple lines. This lines reads and write data from and to the device. I need a small program (in C for example) to do all the above lines. I want it ask me first "enter com port" then "enter baud rate" then "enter data address" and then starts reading my requested bytes (for example 12345678) and saving it inside hard disk in a txt file (asking me the file name and place) asks me "enter new value (for example 22222222) and write the new value in place of the previous 12345678 byts (overwriting it) and confirm write was successful.
Would this be possible? I would appreciate if some one has time to do this for me. I can pay in Crypto if it was successful.
Please reply or email me at [moderator action: removed private eMail address]
 
Last edited by a moderator:

Hi,

I guess oyu don´t understand what these lines mean.
It´s just a communiction on your Windows(r) PC.
It does not necessarily mean that there is communication from your device.

"READ" in this case does not mean that it requests data from your device. It requests data for the "device driver" inside the OS.

You can easily check this:
--> Connect a scope to the communication lines and check the signals while performing a READ.
For further discussion show us the scope signals.

I expect:
* no "read" command is sent to your device at all.
* thus no menaingful answer if read from your device.
I see there is data in the in_buffer. In my eyes this is either random data from noise or from a non flushed / not initialized buffer ... or the device sends some data without being requested. Some status informations for instance.

****
I don´t want to discourage you, but the chance of a meaningful communication is rather low. And the chance of reading and writing executable code goes to zero .. as long as you don´t have a protocol descrioption for your device.

Klaus
 

I don't have any information about this SBC. I tried to get some info from TTM but no reply from them.
TTM is a major US PCB manufacturer, not the board vendor. We are still waiting for vendor and type info or at least a meaningful board photo.
 

@ KlausST
I am sure data are read from device. I know what are the data and are all inside the device. I am 100 percent sure data have read from inside device SBC.

@FvM
Picture of the two types of SBC inside the two different models of the device are attached. I can take higher resolution pics tomorrow if can help.
 

Attachments

  • SBC1.jpg
    SBC1.jpg
    241.5 KB · Views: 147
  • SBC2.jpg
    SBC2.jpg
    184.6 KB · Views: 147

Hi,

I don´t want to waste time, thus I come back when we get the scope pictures requested in post#11.
The scope shows "hard facts" that we need to see what´s going on.

Klaus
 

@ KlausST
I forgot to tell that this log is recorded when I click on "download" which is intentionally included inside the device pc software for downloading these information for using these information for calibration purpose but there is no way to save these information into a file otherwise I could have save them into a file and upload them into the device later after altering using an upload command which is also included inside the device pc software for uploading these data. That is why I am sure these data are inside the device.
--- Updated ---

Hi,

I don´t want to waste time, thus I come back when we get the scope pictures requested in post#11.
The scope shows "hard facts" that we need to see what´s going on.

Klaus
Scope signal is not possible because "read" command is sent by the device pc software and it is not under my control and no way I can send "
read" command. Also there are many "read" commands sent to the dveice with high speed and no way I can take any picture of scope signal at the exact time of "read" command going into.
 

Hi,

In my 30+ years of microcontroller developing and debugging I never heard nor experienced that one can not trace UART signals with a scope.

Also you can´t say the manufacturer while you have the hardware and the software for it.
Nor can you tell us the typ of device.

It´s rather a riddle than a technical discussion.
Thus it´s better for me to leave this thread.

Good luck

Klaus
 

agoo,

I fully agree with Klaus that this thread is going nowhere as you are unable to understand that if you intend to track what is being transacted over the serial, you need to sniff the data electrically. BTW, do you have any scopemeter there ? If so, do your scopemeter has UART decoder feature? If not, this topic will become a bit fruitless from now on.
 

I have a normal oscilloscope but it does not have capabilities for UART tracking. I might be able to borrow one but still I don't have enough expertise to do tracking unless I see no way except using this tracking method which in this case I have to find an expert person and required equipment locally.

Regarding device it is a Niton Xl3t portable xrf. This device is controlled by a SBC. When I turn it on it boots to its own software and I have no access to its computer files and directories if there were any. Device has a miniature X-ray tube inside which sends x-rays to the sample and a miniature detector which measures returned x-rays from the sample and analyze its content. It save analysis data into the device automatically. Device has a NDT.exe pc software which can be used for data transfer from device to PC. NDT software also can be used for uploading calibration library, firmware and calibration DLL (this DLL is the file I am interested in). This file being uploaded into the device once at the time of shipment and it contains calibration information along with some other info. When device needs repair and some parts are replaced, this DLL file should be uploaded to the device to make it work again. NDT.exe has commands for uploading this DLL file into the device but has no command for downloading and saving it into the hard disk .

I have different versions of NDT.exe but only one version (7.2.2) has a "download" command for downloading this DLL information which is included in this version for creating user defined calibration factors but there is no way to save it. It only shows information on the screen for the user to use these information. I used serial port monitor for logging communication between device and my desktop PC when I click on download DLL in order to reconstruct this DLL file and save it into my hard disk. All NDT.exe version has upload command for uploading this DLL file but only ver 7.2.2. has a download command to read DLL data from the device which only display DLL information on the monitor and no command to save these information.

DLL file is created from a Cal file (txt format) using a software suite which vendor has it and they will not give it to device operators. I do have a device and happened to get Cal and DLL files for this device from vendor. I am attaching these Cal and DLL files here for you to have a look. I am trying to develop a small program for deconstructing the DLL file with the help of serial port monitor logs when I click on "download DLL" using experts help. With this program I want to be able to read and save DLL file for other devices I have and write back these data to each device when device need. Each device has its own dedicated DLL. I want to be able to reconstruct DLL file or part of it for each device and save it inside a file for the future use.

If finally I was unable to reconstruct the whole DLL file, I want at least to be able to read some parts of the data and write them back after changing to a proper value.
 

Attachments

  • calibration.rar
    132.2 KB · Views: 144

Here are high resolution pics of our device SBC:
 

Attachments

  • 20220928_092908446.jpg
    20220928_092908446.jpg
    626.1 KB · Views: 140
  • 20220928_092915946.jpg
    20220928_092915946.jpg
    700.6 KB · Views: 140
  • 20220928_093037010.jpg
    20220928_093037010.jpg
    3.6 MB · Views: 137
  • SBC.jpg
    SBC.jpg
    3.1 MB · Views: 140
  • 20220928_092351009.jpg
    20220928_092351009.jpg
    2.4 MB · Views: 144


Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top