Shop OBEX P1 Docs P2 Docs Learn Events
Introducing Omnia Creator - (Now With Spin Support)! — Parallax Forums

Introducing Omnia Creator - (Now With Spin Support)!

KyeKye Posts: 2,200
edited 2014-12-31 17:20 in Propeller 1
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
omniacreator.png

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!
2-graph1170x500.png

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).
4-graph1170x500.png

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)!
interface.png

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)!
terminal.png

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
«1

Comments

  • PublisonPublison Posts: 12,366
    edited 2014-11-28 12:51
    Kye,

    That's great work!

    Thanks for sharing.

    Jim
  • David BetzDavid Betz Posts: 14,516
    edited 2014-11-28 12:57
    Looks great! Can't wait to try the Mac version when it is available.
  • jmgjmg Posts: 15,173
    edited 2014-11-28 13:31
    Looks nifty - what is the install footprint ?
    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
  • RsadeikaRsadeika Posts: 3,837
    edited 2014-11-28 14:00
    I just installed it on my Windows 7 box, it looks like it is fairly large program although I did include the Arduino stuff also. First impression, it will take some getting used to, like, I tried doing a simple printf('Hello, World\") and have it show up on the terminal screen, did not work for me. I guess you have to add specific terminal code to get it too show up on the terminal screen. It also looks like you can do some Spin programming, but how to do it is not very clear.

    Ray
  • KyeKye Posts: 2,200
    edited 2014-11-28 14:17
    Hi Rsadeika,

    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.
  • edited 2014-11-28 14:44
    Kye wrote: »
    Linux and Mac support will be coming soon!

    This looks great! Define 'coming soon'.

    Sandy
  • KyeKye Posts: 2,200
    edited 2014-11-28 15:00
    Linux in January, Mac in Febuary, maybe sooner. The code is already cross platform. However, I have to setup the build system for mac and linux. I pull in a lot of different things that have to be compiled in certain ways. I'm not exactly sure how long it will take to port. But, it may actually go quickly.
  • steddymansteddyman Posts: 91
    edited 2014-11-28 16:07
    Looks great. Does it use openspin to compile spin binaries?
  • KyeKye Posts: 2,200
    edited 2014-11-28 16:13
    Yes, it uses openspin and propeller-gcc. The propeller SDK is actually just a SimpleIDE's install.
  • pmrobertpmrobert Posts: 673
    edited 2014-11-28 16:31
    Thanks, Kye - this will be very cool, no doubt. But -what am I doing wrong? Trying to run "Hello Message.c" several ways and managing to get "SerialTerminal::receive[Serial Terminal] -> Received invalid UTF8 character 0xd1". Baud Rate set to 115200, C3 LMM, judging by board LEDs it's programming the C3 correctly.

    -Mike
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2014-11-28 16:40
    Kwabena,

    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
  • Cluso99Cluso99 Posts: 18,069
    edited 2014-11-28 16:43
    Congratulations Kye! Looks great!
  • KyeKye Posts: 2,200
    edited 2014-11-28 17:29
    Everything works and is ready to go Phil - there are bugs but for the most part everything works fine. Please download the tool and try it out. Read through this help page to get started: http://omniacreator.com/help/widgets/oscilloscope/

    @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...
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2014-11-28 17:43
    Kwabena,

    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
  • KyeKye Posts: 2,200
    edited 2014-11-28 17:52
    Unfortunately, right now there is no such object. I don't have plans on making one anytime soon. That said, I could put something simple together on Sunday that could give you the ability to draw graphs if you'd like. The object won't grant all the features the C++ library has but it will get you up and running for graphing at least. Does that sound good?
  • Cluso99Cluso99 Posts: 18,069
    edited 2014-11-28 19:02
    I would be interested to see how spin works too. I presume this also means PASM also since you are using openspin and simpleide. I am not a C/C++ fan/programmer.
  • David BetzDavid Betz Posts: 14,516
    edited 2014-11-28 19:10
    Kye wrote: »
    Yes, it uses openspin and propeller-gcc. The propeller SDK is actually just a SimpleIDE's install.
    Do you actually use SimpleIDE or are you just using the PropGCC distribution that comes with it?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2014-11-28 20:58
    Kwabena,

    I wouldn't really need a ready-made Spin object; just some documentation for the required serial protocol would be enough.

    Thanks,
    -Phil
  • KyeKye Posts: 2,200
    edited 2014-11-28 21:02
    @David - Just the prop gcc distro that comes with it. However, I still distribute the entire simple ide install.

    @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! :)
  • KyeKye Posts: 2,200
    edited 2014-11-28 21:07
    @Phil Pilgrim (PhiPi) - No, don't worry about it. Its my pleasure that your interested in my software. I don't think I'll be able to finish the object by Sunday, but, I'll get it done as soon as possible. There's no good documentation for the protocol right now. The best I can do for you is to point you to the interface library code. However, it's in C++. http://omniacreator.com/wp-download/libraries/InterfaceLibrary/InterfaceLibrary.h There's a small block of comments at the top defining the basics of the protocol.
  • KyeKye Posts: 2,200
    edited 2014-11-29 05:29
    @pmrobert - I think there's something going wrong in the build system related to the C flags I pass to GCC for building your code. I'm not sure what the issue is right now but you can change those flags by editing this file:

    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.
  • DavidZemonDavidZemon Posts: 2,973
    edited 2014-11-29 07:32
    Glad to see Omnia Creator officially announced! Congrats! :)
  • pmrobertpmrobert Posts: 673
    edited 2014-11-29 10:29
    I removed the "-g"s from the flags and things now compile and load properly. I loaded the test.cpp file you suggested I try and it worked fine. I couldn't get the serial link for the scope widget to stop so I could try other code no matter what - killed and restarted Omnia, rebooted machine, etc. I did a Widgets->Remove Widget and that worked - unfortunately too well as the scope widget has not been seen since despite deleting Omnia, deleting Omnia Creator directory in Program Files(x86) that existed after an uninstall and reboot and removing any references to Omnia or lock files to it in AppData/local/temp. Fresh reinstalls were performed without issue after these "reset" attempts but the scope widget remains MIA. Also, where do the pertinent .cfg board files live? Any I have found and edited had no effect on the propeller-load command line. I have 100mHz clockfreqs on my main projects and have brute forced the speed assignment in Propeller.cmake - this does provide the proper parm to the propeller-load command line.
    set(CMAKE_C_FLAGS
    "-Os ${PROPELLER_C_FLAGS} -std=c99") 
    #Original line: "-g -Os ${PROPELLER_C_FLAGS} -std=c99") 
    
    set(CMAKE_CXX_FLAGS
    "-Os ${PROPELLER_CXX_FLAGS} -std=gnu++0x")
    #Original line: "-g -Os ${PROPELLER_CXX_FLAGS} -std=gnu++0x")
    
    if((DEFINED ${TARGET_NAME}_CF)
        AND (NOT "${${TARGET_NAME}_CF}" STREQUAL ""))
    #        list(APPEND UPLOAD_COMMAND_LIST "-D" "clkfreq=${${TARGET_NAME}_CF}")
            list(APPEND UPLOAD_COMMAND_LIST "-D" "clkfreq=100000000")
        endif()
    

    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!
  • DavidZemonDavidZemon Posts: 2,973
    edited 2014-11-29 18:42
    pmrobert wrote: »
    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.
  • KyeKye Posts: 2,200
    edited 2014-11-29 18:48
    Hi pmrobert,

    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.
  • MJBMJB Posts: 1,235
    edited 2014-11-30 04:04
    Kye,
    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
  • KyeKye Posts: 2,200
    edited 2014-11-30 08:35
    As long as there are command line tools available to build forth code you only need to create the build system cmake scripts (if compiling forth is like compiling spin then this is easy) for Omnia Creator to support forth. The 200 languages supported is just code highlighting and forth is not one of them. Adding new highlighting support just requires writing a kate syntax highlighting file.

    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.
  • MJBMJB Posts: 1,235
    edited 2014-11-30 12:39
    Kye wrote: »
    As long as there are command line tools available to build forth code you only need to create the build system cmake scripts (if compiling forth is like compiling spin then this is easy) for Omnia Creator to support forth. The 200 languages supported is just code highlighting and forth is not one of them. Adding new highlighting support just requires writing a kate syntax highlighting file.

    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.
    Hi Kye,
    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
  • David BetzDavid Betz Posts: 14,516
    edited 2014-11-30 15:42
    Kye wrote: »
    Thanks for finding the issue with the "-g" flag. I guess there's a bug with propgcc when enabling debug info for builds.
    This could be true. However, if it is a bug, it might be fixed already in the default branch of propgcc. Could you try that and let me know if you have the same problem?

    Thanks,
    David
Sign In or Register to comment.