VIC™ - A compiler for Microchip’s PIC® Microcontrollers


Project sponsored by Selective Intellect Hosted on GitHub Pages — Theme by mattgraham

Table of Contents Prev  Next

What is VIC™ ?

  1. 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 vic.

  2. Why should you use VIC™ ?

    If you :

    • like using PIC® MCUs, do not like coding in PIC specific C and/or assembly, would like to understand what your code does months or years from now, then you should use VIC™.
    • want to port existing code seamlessly to other MCUs in the same family without making any changes, you can use VIC™.
    • want to automatically simulate your code using supported PIC® simulators, you should use VIC™.
    • like scripting languages you will like using VIC™. It is designed in the same vein.
  3. 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 gpsim, 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.

  4. 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.

  5. What license is the VIC™ released under ?

    VIC™ is dual licensed under the Perl Artistic license and the GNU General Public License. You can distribute the VIC™ compiler by following the requirements of the afore mentioned licenses.

  6. 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.

  7. Where can I download VIC™ ?

    You can download the official development version of VIC™ from Github.

    You can also download the releases from CPAN. For more details on installation refer to the installation page.

  8. What are the operating systems that VIC™ supports ?

    The VIC™ compiler works on Linux, Mac OS X, FreeBSD, OpenBSD and Microsoft Windows.

  9. What are the compilers and auxilliary tools that VIC™ works with ?

    So far, we have only tested the code generated by VIC™ with gpasm from 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.

  10. 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.

  11. 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™.

  12. How does one compile VIC™ programs ?

    Please refer to the getting started documentation for more details.

  13. 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.

  14. 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.


Table of Contents Prev  Next

Vikas N Kumar (@vikasnkumar) is the author of VIC™. All copyrights belong to the author and Selective Intellect LLC.

VIC™ is licensed under the license terms of Perl.
The development of VIC™ is sponsored by Selective Intellect LLC.

This page was last updated on 2014-10-26 19:44:15 -0400.