Introducing Omnia Creator - (Now With Spin Support)!
Kye
Posts: 2,200
Omnia Creator is a new C/C++ IDE for Makers that brings advanced code editing and data visualization capabilities to your finger tips. With Omnia Creator you can now program your propeller chip with all the advanced features that a professional level C/C++ IDE offers without having to learn how to setup a custom build system. Omnia Creator gives you access to advanced code editing features like Code Completion, Precompile Warnings, Code Refeactoring, and more! Omnia Creator also includes a rich data visualization environment so that you can now more easily debug your code. Have you ever wanted to create an user interface for your microcontroller on demand? Omnia Creator has you covered! Have you ever needed to graph the output of multiple sensor at the same time? This is no problem with Omnia Creator!
Omnia Creator supports programming the propeller in C/C++ and SPIN
Omnia Creator is built on top of Qt Creator - a professional C/C++ IDE used by millions of Qt developers. This allows Omnia Creator to bring these code editing features to the table:
And more... (click me)
Omnia Creator's data visualization package makes creating graphs a snap. Omnia Creator accepts serial commands from the propeller chip for whatever you want to draw. Plotting multiple graphs with color fill in real time is easy!
Omnia Creator's Serial Interface Library makes easily plotting data possible. Checkout the code in the editor in the image above for how to draw a Sin and Cos wave (on the arduino). The serial interface library for C++ programs provides a nice object based interface to perform remote function calls to Omnia Creator over your serial port and command the program to do what you want. You can also control Omnia Creator in C and SPIN programs but you'll have to generate the serial messages yourself (not hard).
With Omnia Creator you can also take real time FFT's of data you plot to graphs! Put your oscilloscope away! You won't be needing it too much any more (yes, this graph was generated with a propeller chip).
But that's not all - Omnia Creator offers more than just the ability to draw multichannel graphs on demand, now you can also create user interfaces on demand! Using Omnia Creator's Serial Interface Library you can easily create user interfaces with check boxes, push buttons, line edits, radio buttons, spin boxes, sliders, progress bars, and more! Best of all - the state of user interface objects that you create on your microcontroller will automagically update their state based on how the user interacts with the objects on the computer. When the user drags a slider object that you created on the computer the state of the slider object will update on your microcontroller in real time (through the Omnia Creator Serial Interface Library - all of the complex code is done for you)!
Along with dynamic user interface generation Omnia Creator also supports creating widgets to view data in spread sheet format and tree format. Additionally, you can also create a graphics view widget to draw simple 2D shapes on an infinite canvas - a great feature for plotting objects that your robot sees as it drives around with a ping sensor. Last but not least, Omnia Creator supports creating multiple serial terminals to handle multiple streams of text (and you can color that text now too)!
Omnia Creator supports both the Propeller Chip and AVR based Arduino boards currently. However, Omnia Creator's build system runs through a flexible CMake backend. Omnia Creator frees you from the shackles of build systems controlled by an IDE. Now if you need to edit what the build system does you can by just editing a few lines of CMake code. Best of all, Omnia Creator uses Ninja Make to build your code. Ninja is a super fast build tool that parallelizes the build across all of your cores. Never fear working on a big project anymore.
Check out the Omnia Creator website for more information at http://omniacreator.com/. Omnia Creator is currently available for windows only right now but Linux and Mac support will be coming soon!
Thanks for reading,
Kwabena
Omnia Creator supports programming the propeller in C/C++ and SPIN
Omnia Creator is built on top of Qt Creator - a professional C/C++ IDE used by millions of Qt developers. This allows Omnia Creator to bring these code editing features to the table:
- File System, Bookmarks, Open Documents, and Code Outline Browser
- Multiple Code Editors
- C/C++ Code Editor
- Binary Editor
- Diff Editor
- Plain Text Editor
- Rapid Code Navigation Tools
- Switch Header/Source
- Follow Symbol Under Cursor
- Switch Between Function Declaration/Definition
- Find Usages
- Open Type Hierarchy
- Open Include Hierarchy
- Syntax Highlighting and Code Completion
- Built-in Syntax Highlighting support for over 200 languages
- Snippet Code Completion
- Doxygen Code Completion
- Static Code Checking and Style Hints
- Underlines potential compile errors in red
- Underlines potential compile warnings in green
- Code Folding
- Built-in support for over 200 languages
- Parenthesis Matching and Parenthesis Selection Modes
- Record/Play/Save Macros
- Text Editing
- Auto-indent Selection
- Text Wrapping
- Visualize Whitespace
- Clean Whitespace on save
- Issue Flaging
- Marks compile errors in text editor
- Marks compile warnings in text editor
And more... (click me)
Omnia Creator's data visualization package makes creating graphs a snap. Omnia Creator accepts serial commands from the propeller chip for whatever you want to draw. Plotting multiple graphs with color fill in real time is easy!
Omnia Creator's Serial Interface Library makes easily plotting data possible. Checkout the code in the editor in the image above for how to draw a Sin and Cos wave (on the arduino). The serial interface library for C++ programs provides a nice object based interface to perform remote function calls to Omnia Creator over your serial port and command the program to do what you want. You can also control Omnia Creator in C and SPIN programs but you'll have to generate the serial messages yourself (not hard).
With Omnia Creator you can also take real time FFT's of data you plot to graphs! Put your oscilloscope away! You won't be needing it too much any more (yes, this graph was generated with a propeller chip).
But that's not all - Omnia Creator offers more than just the ability to draw multichannel graphs on demand, now you can also create user interfaces on demand! Using Omnia Creator's Serial Interface Library you can easily create user interfaces with check boxes, push buttons, line edits, radio buttons, spin boxes, sliders, progress bars, and more! Best of all - the state of user interface objects that you create on your microcontroller will automagically update their state based on how the user interacts with the objects on the computer. When the user drags a slider object that you created on the computer the state of the slider object will update on your microcontroller in real time (through the Omnia Creator Serial Interface Library - all of the complex code is done for you)!
Along with dynamic user interface generation Omnia Creator also supports creating widgets to view data in spread sheet format and tree format. Additionally, you can also create a graphics view widget to draw simple 2D shapes on an infinite canvas - a great feature for plotting objects that your robot sees as it drives around with a ping sensor. Last but not least, Omnia Creator supports creating multiple serial terminals to handle multiple streams of text (and you can color that text now too)!
Omnia Creator supports both the Propeller Chip and AVR based Arduino boards currently. However, Omnia Creator's build system runs through a flexible CMake backend. Omnia Creator frees you from the shackles of build systems controlled by an IDE. Now if you need to edit what the build system does you can by just editing a few lines of CMake code. Best of all, Omnia Creator uses Ninja Make to build your code. Ninja is a super fast build tool that parallelizes the build across all of your cores. Never fear working on a big project anymore.
Check out the Omnia Creator website for more information at http://omniacreator.com/. Omnia Creator is currently available for windows only right now but Linux and Mac support will be coming soon!
Thanks for reading,
Kwabena
Comments
That's great work!
Thanks for sharing.
Jim
and can it run on the HP Stream 7 tablet, mentioned here ? (32bit Win 8.1)
http://forums.parallax.com/showthread.php/158242-Cheapest-Windows-Based-Propeller-Dev-Platform-found-at-Office-Max
Ray
Did you set the baudrate to 115,200 BPS? It defaults to the auto baud rate normally. Which is necessary for the interface library to work - see this for how to draw graphs: http://omniacreator.com/help/widgets/oscilloscope/ - It goes over how to use the system.
Also you don't need any terminal codes to get things to show up on the screen. Regular serial traffic is handled perfectly, just select a serial port and set the baud rate to the correct value. Once, you start using the Omnia Creator features you'll be able to leave the baud rate at auto which will make thinking about baud rates a thing of the past.
As for spin programming just open a spin file as the project file.
Thanks for downloading the program! (The Arduino SDK and Propeller SDK are what make it so large).
@ jmg - Yep, any windows x86 PC is fine. It uses about 150 MB while running. The install is about 1GB for Propeller and Arduino support, 600 MB for just propeller support, you can configure what SDKs are installed when running the installer.
This looks great! Define 'coming soon'.
Sandy
-Mike
This is quite the tour de force, man! I see some amazing potential here that Parallax should standardize on. Are the graphing, oscilloscope, and slider/switch widgets still in development? The only widget I saw was the serial (text) terminal.
Thanks,
-Phil
@pmrobert - I just ran "Hello Message.c" with my QuickStart and it works fine for CMM. Can you try running with CMM instead of LMM?
EDIT: LMM seems to be failing for me too. Please use CMM mode for now. I'll figure out what's up with LMM mode. From a quick look at my code the only difference between LMM mode and CMM mode is that I pass the -mlmm vs -mcmm flag to the compiler at every step and that I define __PROPELLER_LMM__ vs __PROPELLER_CMM__ for every file. Nothing else...
The Help section shows how to do it in C++. That doesn't interest me. Is there an equivalent Spin object that makes the same magic happen?
Thanks,
-Phil
https://drive.google.com/file/d/0B67D1X66rLDrdkxpWm9iNUxpS1U/view?usp=sharing
https://drive.google.com/file/d/0B67D1X66rLDrNk9Yc1BVU2RjbDg/view?usp=sharing
https://drive.google.com/file/d/0B67D1X66rLDrTDBTaWltTTNyN0E/view?usp=sharing
https://drive.google.com/file/d/0B67D1X66rLDrMm5RamdkN0ZPMkk/view?usp=sharing
I wouldn't really need a ready-made Spin object; just some documentation for the required serial protocol would be enough.
Thanks,
-Phil
@pmrobert - My board files right now default the clock frequency to 80MHz with clkmode set to pll16x+xtal1. Is this fine for the C3? It looks like LLM mode is crashing and CMM mode is running too fast from your traces.
Do this, change the board type to "Other Propeller Board" - this should make propeller-load pull in the eeprom.cfg file for loading the C3. I don't know what's wrong with LMM right now but CMM should work. I've been testing using that mode as my interface library doesn't fit in the hub using lmm mode.
Thanks for taking the time to try out the software, I'll get you sorted out!
Omnia Creator/ide/qtcreator/share/qtcreator/cmake-board-modules/propeller-cmake/cmake/platform/Propeller.cmake - The C and C++ flags are right at the top. You can change the defines used at the bottom of the file too. I think the -g -ffunction-sections -fdata-sections flags may be causing problems with fcache code.
Anyway, try this program out in CMM with the baud rate set to auto. Open the file by selecting open project file in the open dialog.
Also, any time the memory model is changed and the libs rebuild, sometimes the first run through fails but a subsequent rebuild request after that first failure works fine. I'll capture the compiler output next time it happens. As always, thanks for everything past, present and future!
Is Make being run with the "-j" option? Without knowing how exactly it's failing, that'd be my best guess as to what would cause it to fail once but not the second time.
The Serial Widget is created on demand by your microcontroller. All widgets except the default serial terminal are like this. So, they won't reappear unless your microcontroller tells the computer to create one. Once you delete a widget its gone unless the microcontroller recreates it. If you want to stop output to the widget just stop the microcontroller from sending data. Either add logic to your program or unplug the microcontroller.
Thanks for finding the issue with the "-g" flag. I guess there's a bug with propgcc when enabling debug info for builds.
As for the clock frequency. Just create a custom board file yourself and put it in the proper location - for the c3 at 100 MHz use the attached file and put it in this folder:
<Omnia Creator Workspace Directory - usually "My Documents/Omnia Creator>/cmake-board-types/Parallax/Propeller/Propeller C3 100 MHz
The files then should show up in your board types browser. You can also put them in the system folder which is ide/qtcreator/share/qtcreator/cmake-board-types/Parallax/Propeller
The structure of the cmake-board-types folder is what Omnia Creator shows in the board types browser.
...
The board .cfg files are in tools/propeller/propeller-gcc/propeller-load
...
Also Omnia Creator caches a separate build via a hash of your project path, serial port, board file, and workspace directory. This ensures that no two builds with different memory models or whatnot overlap each other. Since a build of the entire simple library is done only once the cost isn't really that much. Once you get into developing a large project you won't notice the one time build penalty.
...
@swimdude - I use ninja! Not make. Ninja automatically determines the best number of threads to run. I can't say why the build fails the first time and not the second. I've have to see the build output to know why.
...
Attached is a fixed propeller build system cmake file (the Propeller.zip - can't upload .cmake files directly):
Put it in the <Omnia Creator Install Dir>/ide/qtcreator/share/qtcreator/cmake-board-modules/propeller-cmake/cmake/platform and overwrite the file there with it.
I would be interrested in using the instrument displays and GUI functionality from Tachyon forth.
This would propalby require to use the serial protocol directly.
You mention the 200 languages supported -
maybe Forth is there and better even, could be customized to Tachyon Forth ?
Here we don't build in the classical sense usually,
just file-in new modules.
on top of the runtime residing in EEPROM/RAM
I don't have the bandwidth to support forth (nor do I know anything about it). But, if you'd like to contribute the necessary files I can guide you through what to do.
Attached is the spin highlighting file and here's a link to how to write a kate syntax highlighter: http://kate-editor.org/2005/03/24/writing-a-syntax-highlighting-file/
Omnia Creator will load up all the highlighting files on start up. So, just throw whatever file you write in ide/qtcreator/share/qtcreator/generic-hightligher and tell Omnia Creator to open a forth file. It will try to use the forth highlighting file you write to highlight code. If things don't look just right, close Omnia Creator, edit the highlighting file and then re-open Omnia Creator.
As for the cmake build system stuff we can work on that once you get hightlighting support to work.
building in Tachyon means
1. to use propellent or an other tool to load the Tachyon Kernel SPIN file.
2. to load a number of add on modules via serial into the running kernel system
3. maybe issue some commands in between
I have set up a simple build system using the macro facilities of the TERATERM terminal program. - don't know cmake - yet.
So mainly my interrest is in the GUI / Graphing capabilities
Thanks,
David