VIC™ - A compiler for Microchip’s PIC® Microcontrollers
What is VIC™ ?
VIC™ is a domain specific language to develop firmware for
Microchip’s PIC® microcontrollers (MCU).
It’s aim is for users or developers to develop firmware that looks
simple, logical and can hide complexities that are in-built into VIC™ as language
primitives. The name of the compiler to compile the language is also called
Why should you use VIC™ ?
If you :
Why was the decision made to create VIC™ ?
While coding firmware for various MCU projects, we ended up using a lot of common code between them. So we abstracted them into header files with macros, but that wasn’t enough so we went down the path of auto-generating these macros and instead went a step further and created a domain specific language – VIC™. For more details look at its inception.
Our aim was to enable us to develop firmware that looked really simple, was
verifiable using a PIC® simulator like GNU PIC simulator
and did not need detailed reading of the data
sheets every time we chose a particular MCU. We wanted to read the MCU data
sheet once, abstract it out and then start using it. The work for abstraction is
already done and now anyone can use it without having to read all the pages of a
PIC® MCU’s data sheet.
Will VIC™ support other MCUs like AVR, 8051, ARM-Cortex etc. ?
Currently, we are focused on supporting PIC® MCUs. There are so many of them ! If you like using AVR, maybe the popular Arduino is a better bet. This doesn’t mean that in the future we will not support the Atmel or Maxim or Freescale MCU products.
For more details view the supported hardware list.
What license is the VIC™ released under ?
Can I create a proprietary compiler for the VIC™ language ?
Yes you may, but you cannot name it VIC™ or any derivative of that name. VIC™ is designed to make life easy for its users. Users should not have to pay for a compiler. If you have suggestions and improvements, we appreciate you contributing them for the betterment of the product and the benefit of the community.
You are free to make supporting applications like a debugger or a simulator for it though. We can help make VIC™ integrate with such applications.
Where can I download VIC™ ?
You can download the official development version of VIC™ from Github.
What are the operating systems that VIC™ supports ?
The VIC™ compiler works on Linux, Mac OS X, FreeBSD, OpenBSD and Microsoft Windows.
What are the compilers and auxilliary tools that VIC™ works with ?
So far, we have only tested the code generated by VIC™ with
gputils and the simulator we have tested with is gpsim. You may
want to test with Microchip’s PIC® compiler and simulator on Windows and
Linux and let us know how it fares.
We will be interested in seeing examples where it fails to work as expected.
How do I help in development of VIC™ ?
VIC™ needs more testing on real chips, more interesting examples and bug reports. If you are willing to do this, please feel free to fork VIC™ and send us pull requests or submit patches on the Github issue tracker.
What editor or IDE is needed for VIC™ ?
We use Vim as our editor of choice on all the systems we support,
but you could use any text editor of your choice. We provide a syntax
highlighting file located at
share/vic.vim for Vim as part of the distribution of VIC™.
How does one compile VIC™ programs ?
Please refer to the getting started documentation for more details.
How does one compile the PIC® assembly code generated by VIC™ ?
You can use
gpasm from the gputils toolkit on Linux, Mac OS X, FreeBSD
and OpenBSD. On Windows, if you have a Windows build of
gputils you may use
that or you can use Microchip’s compilers for PIC® assembly.
Which simulator is to be used with VIC™ ?
VIC™ supports gpsim as its default simulator but future support for other simulators may be added as time permits.
Vikas N Kumar (@vikasnkumar) is the author of VIC™. All copyrights belong to the author and Selective Intellect LLC.
This page was last updated on 2014-10-26 19:44:15 -0400.