Programming+Environments

=Programming Environments and Tools=

Integraded Development/Design Environments (IDE)

 * I'd like to get comfortable with the Eclipse coding environment, so I'm using that at home for my projects, and using it at work as much as I can as well. At home it's for C and Verilog projects, perhaps some VHDL if it comes up. I'd like to learn C++ and Java, but have not to date seen them. Eclipse uses the CDT kit for C/C++ projects, and they have various plugins for Verilog/VHDL coding as well.
 * Microsoft provides free editions of their development environment, called Visual Studio Express.

Compilers & Cross-compilers

 * For working on the Das U-Boot bootloader firmware (I call it uboot), I'm using the ELDKfrom Denx Software Engineering for my cross-compiler kit. I believe most uboot developers use that as well, and I'm following suit. This is a gcc based kit for Linux x86 32bit. It can be used in Linux amd64 distros via the 32bit x86 compatibility libraries. The Ubuntu package for this is called [|ia32-libs].

Code Revision Control
Good practice uses Revision Control tools to track your code. These tools include RCS, CVS, SVN, Git, Mercurial, Bazaar, and others. SVN is very popular today, as is Git which was put together by the Linux kernel people. Revision control tracks changes you make to your code, allows you to recover an older version if you need to undo changes, allows you to compare versions of files, keep track of code that goes with a particular version release, etc. It also allows teams of people to work on the same files, and merge changes all people are working on into a single file semi-automatically, making team projects easier to deal with.

Code Analysis

 * I'm looking at cppcheckas a free code static analysis tool. Haven't looked at it yet though, but I hope to find time soon. I also hope it checks C style code as well as C++, but I don't know.
 * I'd also love to try PCLint, but it's a few hundred bucks and is for Windows platform. Though it's rumored to work in Linux via the Wine API wrapper, maybe I'll save up and check it out someday. They do have a Unix (Linux) version called FlexeLint, but that's even more expensive, I do not expect I'll ever see that one.
 * RSM is another relatively affordable code analysis tool. Doesnt' sound to me as much as a Lint tool, it sounds more as reporting code usage metrics. The folks at Netrino seem to like the idea of using pc-lint and RSM together.

APIs

 * WxWidgets is a cross-platform API that attempts to make applications look as native to each host OS as possible. So you don't end up using a Linux-shaped app in Windows and whatnot. There is an effort for an updated port to AmigaOS. Old port to AmigaOS is here.
 * wxDesigner is a RAD tool for designing GUI interface windows quickly and easily.

Simulation

 * Qemu is a popular processor and system emulation program that can allow you to test firmware and software for a variety of computer designs.
 * Tom Hopkins has some interesting tools: PowerPC Instruction set simulator, here is another copy or something similar, and a patchset for compiler to pure metal which may be similar to Denx ELDK (?).