I'm an RTL design engineer interested in low level hardware-software interaction (driver, OS, firmware, etc.). What should I do to gain some experience beyond RTL design?
-
I don't have any academic or professional experience in low level software development or drivers.
-
Answer:
Having actually done this I would suggest you take two paths, work that you can justify as part of your paid job, and off the clock work that will serve as your learning environment to get to the new areas. On the professional side, if you are writing RTL, I'm sure you are also creating test benches right? Verilog or VHDL? Doesn't matter, you need to verify your work. The key is to finding areas where your paid work can be benefited by figuring out how to interact with the RTL or gate-level sims using C code. Back in the early 2000s I did this in a combination of Verisity SpecMan, and running C in an RTL simulated MIPS processor! There are probably some open-source solutions that will let you do this today without running RTL simulations of the processor. Your goal here is to get good at writing tight and small C code and crossing the boundary between "hardware" (the RTL) and software (the C code running wherever). Start with trying to write a bootstrap code for the embedded processor. Then write code that interacts with your RTL from the processor, peek and poke at registers, perform bus transactions, etc. - learn the details about your processor bus, cache, etc. On the personal side, you can contribute to open-source projects. As your C coding skills from above get better, you'll be able to understand more of whats's on GitHub and elsewhere. Find an interesting project that you like to use, wether it be one of the tools you are using for your RTL work, or something completely unrelated like a device driver for your favorite game controller. Device drivers for Linux are HARD, so don't expect to get patches accepted by Linus tomorrow. It would be better to start with an RTOS, like one of the free RTOS projects. See if you can get one that runs on a cheap SBC like BeagleBone or RPi. Write a driver for something that is needed like a USB ethernet controller. Then take that expertise over to Linux and see what kind of new products are on the market that don't have a corresponding in-tree Linux driver. For the grand finale, combine the above expertise. Join one of the open-source processor projects like OpenRISC and help with the VHDL coding as well as generating test benches. There you'll find that your RTL expertise is directly applicable, and your C knowledge and kernel/driver knowledge is also applicable.
Theodore Vaida at Quora Visit the source
Related Q & A:
- What is considered a low level of TSH?Best solution by Yahoo! Answers
- Who do I contact if i'm interested in medical transcription from home?Best solution by Yahoo! Answers
- What can I do with customer service experience?Best solution by Yahoo! Answers
- What should I do after foundation diploma in art and design?Best solution by uk.answers.yahoo.com
- What is the different between low level language and high level language in a computer programing?
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.