firmware interview questions
Top firmware frequently asked interview questions
How can I use c++11
when programming the Arduino? I would be fine using either the Arduino IDE or another environment. I am most interested in the core language improvements, not things that require standard library changes.
Source: (StackOverflow)
Does anyone have especially good (or bad) experiences with any of the following embedded TCP / IP stacks?
My needs are for a solid, easy-to-port stack. Code size isn't terribly important, performance is relatively important, but ease of use & porting is very important.
The system will probably use an RTOS, that hasn't been decided, but in my experience most stacks can be used with or without an RTOS. Most likely the platform will be an ARM variant (ARM7 or CM3 in all likelihood).
Not too concerned about bolting the stack to the Ethernet driver, so that isn't a big priority in the selection.
I'm not terribly interested in extracting a stack out of an OS, such as Linux, RTEMS, etc.
I'm also not interested in commercial offerings such as Interniche, Micrium, etc...
The stack doesn't need all sorts of bells & whistles, doesn't need IPv6, and I don't need any stuff on top of it (web servers, FTP servers, etc..) In fact it's possible that I'll only use UDP, although I can envision a couple scenarios where TCP would be preferable.
Experiences with other stacks I've missed are of course also very much of interest.
Thanks for your time & input.
Source: (StackOverflow)
This question is related to this other one. I have recompiled Android framework and generated a new image. I need to add some classes to the original framework and did it by adding new jars that go into /system/framework. I modified BOOTCLASSPATH to take into account these new jars.
Building the image and flashing to the device does not work. Some optimizations must be run prior to that, but I do not know how that process is.
What building steps should I execute before generating the image or what other alternatives do I have so the extended framework classes are accesible from applications?
Source: (StackOverflow)
Here i already make one customize home screen launcher application for android.
Now i want to add this application in Android Source code.
And Remove Default android home screen source code from Android 2.3 source code. than i want to built whole Android Source code after replacing default home screen source code on EVOLUTION MODULE
.
I want to know Steps About this how can i achieve this.
So please Share your idea how can i replace default home screen source code to my home screen source code.
i already download the source code of android 2.3. but i have no idea where i have to change in code. which files i have to replace.? i want changes in framework level
Source: (StackOverflow)
I'm looking to do some hobby firmware development at home and need a device programmer. Hoping to keep to Open Source solutions, I found the OpenOCD project and also the Bus Pirate. For $30 it seems like a no-brainer, especially since it supports more than just JTAG (SPI, I2C, etc.). I have seen a few mentions that it isn't the fastest interface out there.
Has anyone used one of these and has an opinion on it? Any comparisons to the other programmers listed in the Debug Adapter Hardware page of the OpenOCD documentation?
Source: (StackOverflow)
I'm looking for interesting online resources on FPGA development - sites, blogs, that sort of thing. What I'm after is examples of fun (and hopefully not too expensive) projects that one can try out and learn from.
Source: (StackOverflow)
I'm working on the firmware of a device that is going to be connected to PCs using Bluetooth in serial port emulation mode.
During testing, I found out that modem-manager on Linux "helpfully" tries to detect it as a modem, sending the AT+GCAP
command; to this, currently my device replies with something like INVALIDCMD AT+GCAP
. That is the correct response for my protocol, but obviously isn't an AT reply, so modem-manager isn't satisfied and tries again with AT+GCAP
and other modem-related stuff.
Now, I found some workarounds for modem-manager (see here and thus here, in particular the udev rule method), but:
- they are not extremely robust (I have to make a custom udev rule that may break if we change the Bluetooth module);
- I fear that not only modem-manager, but similar software/OS features (e.g. on Windows or OS X) may give me similar annoyances.
Also, having full control over the firmware, I can add a special case for AT+GCAP
and similar stuff; so, coming to my question:
Is there a standard/safe reply to AT+GCAP
and other similar modem-probing queries to tell "I'm not a modem, go away and leave me alone?"
Source: (StackOverflow)
I read "custom ROM" and "customized firmware" all over the internet.
To my understanding ROM stands for Read Only Memory. Despite that I see links to files, that I suppose, are filesystem images, containing an operating system with preinstalled libraries and applications. What are these actually? Why do people refer to these as ROMs?
Also: cyanogen-mod's official description says: "[...] is [...] firmware distribution [...] increase [...] over Android-based ROMs [...] these versions of Android [...]". So they seem to use firmware, hardware component storing the firmware, and operating system interchageably. Do I see that right? Why is that?
Source: (StackOverflow)
I am trying to reverse engineer a MIPS firmware. The firmware is big endian encoded, for a 32bit r4kec processor.
I have disassembled (using objdump) the binary to see what the assembly looks like, and everything looks like valid code, but right at the beginning of the code I see the following two instructions:
bfc00220 152a0001 bne t1, t2, 0xbfc00228
bfc00224 10000009 b 0xbfc0024c
The first instruction checks the values of the t1 and t2 registers, and jumps to an address if they are not equal. The second instruction seems to handle the fall-through case, to skip directly to a subsequent address. So far so good, or not?
To my knowledge, this is not legal. All of the available MIPS documentation that I have read state that the instruction directly following any branch/jump instruction is treated as a jump delay slot, whose instruction is always (except for the branch-likely class of instructions) executed before the actual jump is performed.
The key problem here is that another branch/jump is not allowed in the jump delay slot, and this will leave the processor in an undefined state.
So what I am to make of this code? I don't believe that this is handcrafted assembly (although it would not be too farfetched for it to be) for a cpu that handles this situation in a known deterministic fashion. I also cannot believe that a compiler will knowingly produce code like this. The other possibility is that I am using the wrong decompiler for the binary, or that I have the endianness wrong, or something else...
Can anyone explain what is going on here?
Source: (StackOverflow)
I've installed XCode4 and I need to build for iOS 4.2.1 is there a possibility to install the "old" firmware 4.2.1 and build against it?
Source: (StackOverflow)
This question has been done to death, and I would agree that enums are the way to go. However, I am curious as to how enums compile in the final code- #defines are just string replacements, but do enums add anything to the compiled binary? Or are they both equivalent at that stage. When writing firmware and memory is very limited, is there any advantage, no matter how small, to using #defines?
Thanks!
EDIT: As requested by the comment below, by embedded, I mean a digital camera.
Thanks for the answers! I am all for enums!
Source: (StackOverflow)
I am trying to mount an .img file (rootfs.img) so I can modify the features of the firmware for a derivitive of the 4fff N618 (Pandigital Novel).
I have flashed it with the firmware of the bqAvant and it is fully operational, but I cannot find a way to do a loopback mount with OSX 10.5, neither do I have a cd with a linux distro. The efi won't even let me boot from a usb device using rEFIt.
Using:
mount -o loop rootfs.img /mnt/rootfs
replies that loop is not supported.
Source: (StackOverflow)
According to ADC documentation:
You can access Open Firmware this by holding down Command-Option-O-F at boot time.
However, in reality this does not work on current hardware. Does anybody know if there is a way (through trigger-keys, etc.) to get to an EFI console on contemporary-architecture (i.e., Intel) Macs?
EDIT: I am attempting to set up (and document) various Kernel Debug environments.
In experimenting with the boot-loading mechanisms of OS X, I have come to the following conclusion:
I had posted this question after encountering this 3rd case, which seems to occur on Core Duo (not Core 2 Duo!) machines: the result being that, once rEFIt is installed, the rEFIt menu DOES correctly get displayed at boot time, however is unusable because it receives no keyboard or mouse input (no USB drivers loaded?) and ultimately always ends up booting into the highest numbered boot partition.
Therefore, in scouring ADC documents and looking for a means to drop into a firmware/EFI console at boot-time, I came across the (somewhat outdated) statement from ADC [see above] and thought that it might be useful to ask on SO if anyone knew of an alternative.
Source: (StackOverflow)
I have an application running on phones that aren't meant to be touched or interacted with in any way. I want my application to run correctly 24/7/365.
The only issue I'm having is that every few weeks or so, a notification pops up about updating the firmware on the device. It doesn't immediately interrupt the app running but after a few days of no one accepting/declining the firmware download, the app crashes.
Is there any way (either programatically or by changing phone settings) to disable these firmware update popups, or to disable automated firmware updating in general?
Thank you very much!!
Source: (StackOverflow)