Identification of firmware while teardown

FreshmanNewbie

Advanced Member level 1
Joined
May 10, 2020
Messages
437
Helped
0
Reputation
0
Reaction score
3
Trophy points
18
Activity points
4,333
So, I had this idea.

When I do a product teardown, I can find what are the hardware ICs/components that are there.

How about to go and find what is the type of firmware that the product actually uses?

Where it uses like RTOS, or Bare metal coding? - Any idea on how to identify this (software perspective) when doing product teardown?
 

Big clue is all firmware is stored in memory. The memory will either be in a marked IC or inside the processor, checking part numbers against data sheets will give some insight. As for the actual OS or programming language, that is more difficult, if it shows no characteristics checkable from outside you have to try reading the code out of it and looking for clues there. Sometimes you will see copyright messages in the code or modular sections that have obvious purposes but there is no standard way to do it.

Brian.
 

But how to identify :

1. Whether the product has firmware or software? Can we assume, if the product is an embedded device/product, then only firmware will be there. And if the product is a network switch or network router, then it will be software, correct?
2. In the case of firmware, what are the examples of firmware? How do you identify between bare metal programming MCU or RTOS?

Any ideas on what are the examples of RTOS will help me.
 

1. I'm not sure of your reasoning there. The basic difference between firmware and software is that one is permanently resident and the other is loaded as needed. All embedded devices with a processor will have firmware. I have never seen a network switch or router that you load a program in to. They may have update facility for their firmware but I can't imagine one that you run an externally written program on.

2. Each different kind of device will have its own firmware and there may be many different versions so there is no exact answer to your question. I will repeat, you have to read the contents of the memory (if it is possible, some devices are protected) and look for clues. For example, if you find an embedded message saying "(c)2024 Wizbang Corporation of Leftoveria, C Runtime library version 123" you could be sure it is a program written in C for a high level language. If it had no messages and seems to be a single block of code, it is more likely to be written in the MCU's assembler language. You might get some help if there is no external memory and the MCU only has a small internal memory, that would indicate dedicated MCU code as there wouldn't be enough storage space for a complex operating system.

Brian.
 

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…