Chapter 1: Beginnings
Chapter 2: Further Beginnings
Chapter 3: Hello World
Chapter 4: More On GPIO
Chapter 5: Interrupts
Chapter 6: More On Interrupts
Chapter 7: Timers
Chapter 8: Adding Some Real-World Hardware
Chapter 9: More Timers and Displays
Chapter 10: Buttons and Bouncing
Chapter 11: Button Matrix & Auto Repeating
Chapter 12: Driving WS2812 RGB LEDs
Would you like to be notified by email when Victor Yurkovsky publishes a new blog?
Over the past decade I often wondered why anyone uses Windows. It's just so... proprietary. And pedestrian. As I grew up my OS of choice went nothing to CPM to DOS (on Apple ][), GEM on Atari ST, MS-DOS, DOS extenders, Mac OS, Windows NT, Windows XP, Linux... Now, I again find myself a fan of Windows XP, the platform of the future. And bare metal, of course.
Maybe I am not totally serious, but I, a self-proclaimed freedom lover and opensource proponent, find myself spending more and more time using an old (pre-service-pack) Windows XP inside a virtual box.
As a software developer I find myself thinking of writing software against Win32 as the lowest common denominator operating system for cross-platform compatibility. And I find myself using Windows XP (offline and inside a VM) as the development platform.
As an FPGA developer, my needs are constrained around the limitations of the Xilinx tools. There is no going around it. Again, I find Windows tools (at least up to ISE 13.4) working faster and with fewer bugs on Windows XP inside a VM.
I started with NT long before it was out as a Microsoft MSDN beta tester. I was pretty happy with it for many years, until XP arrived. Then, after years with XP, I switched to Linux. I swore I would never go back. I kept my promise for many years, until Ubuntu became a bloated Mac-shaped cesspool full of eye-candy, bulldozing through hundreds of megabytes of useless updates that are slowly breaking everything. At this point I can't even get files to print consistently, monitors to turn on after the computer goes to sleep, or have a simple desktop on the correct monitor.
Every now and then after listening to advice of Linux geek friends I try different distros, different window managers and various linux tools to fix the problems. However, none of them are what I need without lots of twiddling. And twiddling is exactly what I don't want to do, given how many machines I own and how often I have to buy new ones.
I even switched to Linux Mint because they promised to keep the old Gnome-like desktop. But it was lacking basic controls for my laptop.
It's not like I am asking for too much - a desktop like the one old Windows platforms had (and Linux, until recently). No crazy Mac-like carousels with jumping icons, please. I want to drop an icon and have it stay there. No search-based idiocy - a simple tree-like file manager. Enough 'control panel' applications to be able to deal with my computer. But no.
The final nail in the coffin was trying to instal the Xilinx WebPACKTM on a new laptop recently... My old machine was getting long in the tooth, and I was afraid that I would be stranded without a Xilinx setup.
I do want to repeat that this is XP we are talking about. Inside a VM, offline. Why XP, an OS that is so old that you probably can't even install it on a modern machine (outside of a VM anyway)? Simple, it's the lowest stable common denominator for the Win32 platforms. It is extremely stable, relatively DRM free and provides a better-than-reasonable experience on a modern machine.
Windows 7? I will just not go there, with its DRM nonsense and tracking. Windows 8 is even worse. But Windows XP in a VM with a Linux host is just retro-fantastic.
As an FPGA developer, I mentioned before, I am forced to use Xilinx tools, simply because I don't have a choice. At all.
To give credit where it's due, Xilinx does make a Linux version of the tools. However, it's not nearly as good as the Windows version. It runs on a very limited range of distros that I am not just not willing to install, so perhaps my complaining is unjustified - but give me a break, do you really expect me to install a version of Linux to run your software?
So I did manage to get it all to work on a 64-bit Ubuntu - not an easy task. It took me some days to iron out the problems. It took many more days to get IMPACT to work with USB (don't even get me started on the subject of USB!). I think it was about a month of trying and giving up in disgust. I don't know exactly how I got it to work - Impact segfaulted forever, and then, all of a sudden, after getting something from github it worked. I don't know if I can ever repeat the process - it was an accident, really. And then it was an adventure to get FPGA Editor to start (I say start because the word 'work' is not applicable here - it is pretty much useless compared to the Windows version).
Looking for a way to use FPGA Editor and Impact (I couldn't get them to work for a long time), I noticed that VirtualBox virtual machine technology was getting pretty mature, and installed an old Windows XP CD (pre-service pack, mind you). Hah - Windows XP screams in a VM with a couple of gigs of RAM. I installed the tools, got USB working without a glitch (requires an extra VirtualBox module), and what do you know - I have a dream machine!
The GUI works really fast and well. I generally use simplistic makefiles to build my FPGA projects anyway, so I simply created a few batch files to run the Xilinx tools. I'm kind of sick of make anyhow, and it's not worth setting up mingw just for that. And I still have to find a text editor I like (I am used to Kate...)
I still use linux most of the time, but I have to admit that I am close to dumping Ubuntu. Unless I can find distro that is comprehensive but not stupid, I just might go back to XP inside a VM.
Developing New Software
Huh? New software for Windows XP?
As a developer, I try to be as cross-platform as possible. But I am just a guy, I don't have thousands of developers to chase the latest software tools and platforms. I have some real limitations, and have to clearly define at least
1) What platform do I use for development
2) What other platforms can I support
To me, the platforms look like this:
- Windows - (-)Proprietary (+)Xilinx tools work.
- Linux - (+)Open-source (-)Xilinx tools barely work. Runs Win32 apps via Wine.
- Mac - really, who cares, but runs Win32 apps in an emulator, I think.
To work with, Linux had been a hands down winner for many years. The tools are free, support good enough, environment stable. But then, all of a sudden, updates got more frequent and drastic. Then, well, I already ranted enough about the rise and fall of Ubuntu... Suffice it to say that for a while I spent days of massaging Gnome2 remnants trying to make my machine even remotely usable (with all kinds of controls missing). Thank I gave up and started using Unity (and hating every moment).
So now I, the guy who was trying to convert everyone to Ubuntu just a few years back, hate it - HATE IT!
However, it doesn't take that long to install VirtualBox and load the old XP... add MinGW and I think I may like it better!
Seriously, I am not interested in phone apps and Android or whatever. I just want to make simple tools that can co-exist with Xilinx tools, to run on old fashioned computers, with as few limitations as possible. So what's a lone software writer to do about writing cross-platform software? Why not just write software in C/C++ for Win32? Windows users can run it on any Windows OS, and Linux users can Wine it without any problems that any Linux user can't easily fix.
Editors? There are a number of them that are decent (although some eerily weird!).
File managment - Windows Explorer just screams! Ubuntu file managers have been getting slower and slower, and I got used to the delay. Man, Windows XP is fast!
Now, the development environment. MinGW is ok. After all these years of dealing with idiotic cross-platform GUI libraries of increasing complexity, the simple Win32 UI is pretty easy to deal with.
The trick is to stick to minimal Win32 and common libraries. Avoid advanced technologies like OLE, COM and ActiveX, whatever that is. You'll have your code running on everything!
So there you have it. If you don't already have a copy of the good ol' XP running in a VM on whatever platform you have, give it a try. You might like it. And inside a VM, it's pretty easy to keep it off the net, if you are worried about viruses. As if anyone still writes viruses for Windows XP :)
Xilinx, ISE, WebPack are trademarks of Xilinx Inc.
Add a Comment