Author Topic: What IDE are you using ?  (Read 14911 times)

0 Members and 1 Guest are viewing this topic.

Offline techman-001

  • Frequent Contributor
  • **
  • !
  • Posts: 748
  • Country: au
  • Electronics technician for the last 50 years
    • Mecrisp Stellaris Unofficial UserDoc
Re: What IDE are you using ?
« Reply #75 on: April 25, 2019, 01:01:59 pm »
@techman-001
Very interesting setup, forth is always an handy resource for its balance between interactivity and performance.

I think Forth on Cortex-M0 is a hard to beat combination as the resources available are just mind boggling. My STM32F051's cost 0.56 USD each, and for that I get 8 timers plus all the usual serial (usually two of each), adc, dac and GPIO  suspects and 48MHz  operation, easily overclocked to 96 MHz (if I want to raise the power usage by about 4x).

One resource I spent a fair bit of time creating and which is not apparent in my description or screen-pics is the automatic creation of all memory mapped resources for the MCU using CMSIS-SVD. These are created in the 1 second it takes for the Project Builder to set up a new project.

For instance, Words for every one of the 413 registers and every one of the 3044 register bitfields for all 34 peripherals in the STM32F051 are created automatically.

In the IDE screenpic you can see the list of bitfields for the RCC  AHBENR register, complete with the bitfield description in Gvim, partially reproduced below. Including the description in the bitfield file saves me a lot of time searching the databooks for bitfield functionality:-

\ RCC_AHBENR (read-write)
: RCC_AHBENR_DMAEN   %1 0 lshift RCC_AHBENR bis! ;  \ RCC_AHBENR_DMAEN    DMA1 clock enable
: RCC_AHBENR_SRAMEN   %1 2 lshift RCC_AHBENR bis! ;  \ RCC_AHBENR_SRAMEN    SRAM interface clock  enable
: RCC_AHBENR_FLITFEN   %1 4 lshift RCC_AHBENR bis! ;  \ RCC_AHBENR_FLITFEN    FLITF clock enable
: RCC_AHBENR_CRCEN   %1 6 lshift RCC_AHBENR bis! ;  \ RCC_AHBENR_CRCEN    CRC clock enable
...

The GnuScreen part of that picture shows the real time value of all RCC_AHBENR register bitfields at the moment I hit the enter key. There are 130 register bitfields for RCC alone spread across 14 registers.

Solving the Cortex-M memory mapping issue makes Forth application development from scratch much easier, I mean if I had to make up each Word by hand it would take me a lifetime plus using CMSIS-SVD provides consistency  at the register and bitfield level of Forth programs for Cortex-M.

I've written about this process in my Forth notes. They're a bit out of date as I'm the only maintainer, so apologies for any errors or omissions :
http://hightechdoc.net/mecrisp-stellaris/_build/html/register-generator.html#svd2forth

 
 
The following users thanked this post: newbrain, panoss

Offline Sal Ammoniac

  • Super Contributor
  • ***
  • Posts: 1662
  • Country: us
Re: What IDE are you using ?
« Reply #76 on: April 25, 2019, 03:47:33 pm »
I think Forth on Cortex-M0 is a hard to beat combination as the resources available are just mind boggling.

I use various Cortex-M4 parts, particularly the Infineon XMC4000 series, and wrote a forth extension language in ARM assembly code. It's great for doing little things interactively, but I must admit to a definate love/hate relationship with forth. I love the architecture of its internals and love using it to do simple interactive things, but doing anything complex in it just puts me off.  :palm:
Complexity is the number-one enemy of high-quality code.
 

Offline panoss

  • Frequent Contributor
  • **
  • Posts: 325
  • Country: gr
Re: What IDE are you using ?
« Reply #77 on: April 25, 2019, 04:44:17 pm »
I'm using my own IDE design, it uses a collection of applications written by others, like many IDE's.

I wrote a "Project Builder' application which pulls in all the needed programs, files, templates, data etc and creates a IDE tailored for each new project in about 1 second.

It's designed for STM32Fxx 32 bit MCU's  tho I tend to only use STM32F051 QFN (64KB Flash, 8KB Ram) MCU's so far as they have far more resources than I'll ever need.

My design environment is near real time and uses cooperative multitasking, in other words I can light a LED driven by a GPIO by a command typed in the IDE, then turn it off the same way. I can see the contents of any MCU register in near real time, any time I want, while a LED is blinking.

The many benefits of interactivity are too many to list, but one of my favorites is examining the effect on the MCU when a bit or bits ares changed in a register to confirm what I *think* should happen when I find the STM documentation ambiguous. Even the "simple" STM32F051 has 37 peripherals, 413 registers and 3044 register bit-fields so you can imagine the humongous number of different combinations.

My system doesn't use a compiler on the PC, so it doesn't need the usual edit, compile, upload, test, repeat methodology of C. Overall my code runs about three times slower than that produced by a optimized C compiler, however it's a price I'm more than happy to pay for the interactivity of the system.

Everything I use is GPL or FreeBSD Copyright

Elements integrated into my IDE are:
  • Editor: Gvim
  • Serial Terminal: GnuScreen
  • Schematic Capture: Geda
  • Flowchart: Graphviz
  • SCM: Fossil
  • OS: Mecrisp-Stellaris

The IDE:
http://hightechdoc.net/misc/ide-tp-1600.jpg

The SCM which is in a separate window being Web Browser based:
http://hightechdoc.net/misc/ide-fossil-1024.jpg
This sounds exrteamelly interesting even though there are lots of thing I don't understand.
If you could make a 'tutorial' on how to implement this interactivity I 'd be gratefull.

I had seen where microPython was used (with an interpreter on the MCU I  suppose), so no need for compilation.
Have you done something similar, only you 're using Forth instead of microPython?
 

Offline NorthGuy

  • Super Contributor
  • ***
  • Posts: 3137
  • Country: ca
Re: What IDE are you using ?
« Reply #78 on: April 25, 2019, 05:36:00 pm »
I'm not sure I understand the interactivity claim. Any decent debugger should allow setting/reading bits or whole registers. And the debugger does this without sacrificing any performance. Is this the same sort of interactivity?
 

Offline drescherjm

  • Contributor
  • Posts: 25
  • Country: us
Re: What IDE are you using ?
« Reply #79 on: April 25, 2019, 05:57:22 pm »
At work Visual Studio. I currently have 2013, 2017 and 2019 installed all for native / standard c++ development. Although I do have code that dates back to the 1990s here at work that if I needed to build I would have to access a VM to build using an old version of VS (not to clutter my development box with a rarely used IDE).

I also use Arduino IDE when I am working on Arduino projects but that is at home.


I also do have KDevelop and Qt-Creator installed at home on my linux machines. 
« Last Edit: April 25, 2019, 07:13:38 pm by drescherjm »
I have BS degrees in CS and EE both in 1996. Since this time I have worked for the same medical imaging research team primarily as a programmer. Now at 47 I am trying to get back into electronics projects.
 

Offline badman

  • Newbie
  • Posts: 3
  • Country: us
Re: What IDE are you using ?
« Reply #80 on: April 25, 2019, 06:11:29 pm »
I prefer to use Source Insight when possible. Has a great reference/symbol window that I use. With the micro I'm working on now I'm using Eclipse, but mostly just for the big "build" button!  ^-^
 

Offline ale500

  • Frequent Contributor
  • **
  • Posts: 415
Re: What IDE are you using ?
« Reply #81 on: April 25, 2019, 06:21:40 pm »
I use IAR Workbench for 8051, it is far from perfect but usable. It has column highlight :). I wish it was like Notepad++... some features work erratically like show declaration/Implementation. For what it costs gimme Eclipse any day, it works better for me.
I use Notepad++ for most not 8051-related things, verilog, VHDL, Python, C.
I use Visual Studio Code, it has a nice integrated console but colum highlight and copy/paste works differently than in NP++ don't like it much.
Eclipse for C and some Embedded thing.
Netbeans for Java (been using that since it was Forte for Java...), and MPLAB X for PIC32.
jEdit on Linux because... we cannot install anything there... that one I have been also using for ages.
Spyder for some Python, it is quite slow.
 

Offline techman-001

  • Frequent Contributor
  • **
  • !
  • Posts: 748
  • Country: au
  • Electronics technician for the last 50 years
    • Mecrisp Stellaris Unofficial UserDoc
Re: What IDE are you using ?
« Reply #82 on: April 25, 2019, 09:54:43 pm »

I had seen where microPython was used (with an interpreter on the MCU I  suppose), so no need for compilation.
Have you done something similar, only you 're using Forth instead of microPython?

I have made some Youtube videos showing Forth in use, here is  a stepper motor controller demo

I'm only using Forth for a number of reasons. One is that there is no way that Micropython can run on a 64KB Flash Cortex-M0, the second is I would find the whole Python process tedious and the third is that I can fairly easily modify the Forth OS to my needs at the assembly level, which I do for a number of reasons.

One assembly code mod I do is to raise the standard serial speed from 115K Baud no handshaking, to 460800 Baud with RTS handshaking.

Micropython, eLua and even the old BASIC are interactive just like Forth, however they need a LOT more resources and the time taken to provide Garbage Collection (where a part of the OS) can interfere with real time performance.
 

Offline techman-001

  • Frequent Contributor
  • **
  • !
  • Posts: 748
  • Country: au
  • Electronics technician for the last 50 years
    • Mecrisp Stellaris Unofficial UserDoc
Re: What IDE are you using ?
« Reply #83 on: April 25, 2019, 10:08:37 pm »
I'm not sure I understand the interactivity claim. Any decent debugger should allow setting/reading bits or whole registers. And the debugger does this without sacrificing any performance. Is this the same sort of interactivity?

I can't really say that Forth is like anything else people use for embedded development.

Can you define 'decent debugger' ? Do you mean some interactive serial bootloader/debugger on a MCU with no JTAG, SWD ? or a modern hitech MCU with JTAG, SWD or similar and using GDB etc?

Forth interactivity isn't at all like GDB over SWD as Forth interactivity is immediate however the the results are the much the same.

When you ask, "without sacrificing performance" are you referring to the performance of the MCU or the performance of the developer on a new project ?  :)
 

Offline NorthGuy

  • Super Contributor
  • ***
  • Posts: 3137
  • Country: ca
Re: What IDE are you using ?
« Reply #84 on: April 25, 2019, 10:50:47 pm »
Can you define 'decent debugger' ? Do you mean some interactive serial bootloader/debugger on a MCU with no JTAG, SWD ? or a modern hitech MCU with JTAG, SWD or similar and using GDB etc?

I mean any hardware debugging interface. JTAG is an example. I work a lot wih PICs, they have proprietary debugging interfaces, but it doesn't matter. The debugger, such as GDB, or a GUI version, lets you watch/change anything. Depending on hardware, you either need to halt the device to make changes/watch, or you can do it without halting. Or you can automatically halt/read/restart.

Forth interactivity isn't at all like GDB over SWD as Forth interactivity is immediate however the the results are the much the same.

What do you mean by "immediate"?

When you ask, "without sacrificing performance" are you referring to the performance of the MCU or the performance of the developer on a new project ?  :)

MCU performance. I mean you do not alter your program, it runs the same as without the debugger (unless you halt it, of course).
 

Offline rsjsouza

  • Super Contributor
  • ***
  • Posts: 5980
  • Country: us
  • Eternally curious
    • Vbe - vídeo blog eletrônico
Re: What IDE are you using ?
« Reply #85 on: April 26, 2019, 01:10:24 am »
I am curious about those points as well. For a Cortex M class of devices, accessing MMRs via the DAP (through JTAG) can be done unobtrusively w.r.t the CPU and the major pain is having absolutely ALL registers, bitfields, comments, etc. created by the manufacturer or someone else.

I work with TM4C/MSP devices from TI and their Eclipse-based IDE has all this (it has other idiosyncracies, but this works well).
Vbe - vídeo blog eletrônico http://videos.vbeletronico.com

Oh, the "whys" of the datasheets... The information is there not to be an axiomatic truth, but instead each speck of data must be slowly inhaled while carefully performing a deep search inside oneself to find the true metaphysical sense...
 

Offline techman-001

  • Frequent Contributor
  • **
  • !
  • Posts: 748
  • Country: au
  • Electronics technician for the last 50 years
    • Mecrisp Stellaris Unofficial UserDoc
Re: What IDE are you using ?
« Reply #86 on: April 26, 2019, 01:38:18 am »

Can you define 'decent debugger' ? Do you mean some interactive serial bootloader/debugger on a MCU with no JTAG, SWD ? or a modern hitech MCU with JTAG, SWD or similar and using GDB etc?

I mean any hardware debugging interface. JTAG is an example. I work a lot wih PICs, they have proprietary debugging interfaces, but it doesn't matter. The debugger, such as GDB, or a GUI version, lets you watch/change anything. Depending on hardware, you either need to halt the device to make changes/watch, or you can do it without halting. Or you can automatically halt/read/restart.

I never found the limited interactive serial bootloader/debuggers 'decent' myself, but I favor JTAG or SWD (where required, and Forth doesn't require them normally) because of all the non proprietary or low cost hardware to support them. Although I built commercial devices with the PIC 16C84 in the late 1990's I didn't have any decent debugging facilities.

Forth interactivity isn't at all like GDB over SWD as Forth interactivity is immediate however the the results are the much the same.

What do you mean by "immediate"?
I don't have to use a jtag,swd, or proprietary PIC debugger. I don't have to set breakpoints, watchpoints or halt the program. I can type a command to show me the current value of a MCU register, set a bit, clear a bit e.t.c. even while a cooperative multitasking program runs. I also don't need to learn all the non trivial commands of GDB or a similar debugger.

When you ask, "without sacrificing performance" are you referring to the performance of the MCU or the performance of the developer on a new project ?  :)

MCU performance. I mean you do not alter your program, it runs the same as without the debugger (unless you halt it, of course).
Forth is very different, but I'll try and answer to your satisfaction.
Assume I have a led blinker program running endlessly ...
I can type a Forth command to show me the value of a register and the blinker will continue to run, I haven't altered the blinker program at all.

However unlike a JTAG command which will be executed between CPU clock cycles with no MCU overhead, my MCU will use clock cycles to display my register print, which will also take additional time due to the interaction of the serial terminal which is running at only 460800 baud. This slowdown will only occur once at the exact time I enter my command and the normal timing of the blink program will resume when my "show me the value of a register" command execution is finished.

Clearly I wouldn't enter such a command while running a program with timing sensitive constraints and disastrous consequences if those constraints were not met, but even the act of initializing a GDB session via SWD would also be a problem under those conditions.

Such Forth interactive activities are reserved for development and fault finding, they don't occur during the 'normal' operation of a dedicated  embedded production device running Forth.



 

Offline techman-001

  • Frequent Contributor
  • **
  • !
  • Posts: 748
  • Country: au
  • Electronics technician for the last 50 years
    • Mecrisp Stellaris Unofficial UserDoc
Re: What IDE are you using ?
« Reply #87 on: April 26, 2019, 02:22:01 am »
I am curious about those points as well. For a Cortex M class of devices, accessing MMRs via the DAP (through JTAG) can be done unobtrusively w.r.t the CPU and the major pain is having absolutely ALL registers, bitfields, comments, etc. created by the manufacturer or someone else.

I work with TM4C/MSP devices from TI and their Eclipse-based IDE has all this (it has other idiosyncracies, but this works well).

Hopefully some of these questions have been resolved in a earlier reply, but if not, please feel free to rephrase until I produce a satisfactory answer for you.

The post I initially responded to was regarding which IDE people use, and being a Forth user I'm trying to avoid any and all flame wars with people who love their editor,SCM, MCU and programming language dearly, however I'll try and answer any questions providing members here understand that I believe the best editor,SCM, MCU and programming language is the one that suits THEM the best, not the one I happen to use :)

While I'm no expert with Eclipse I have used it when I evaluated such IDE's as Atollic Studio and I could see the attraction, but the fact that I'd need a i7 with 32GB ram to run it in a reasonable time, and given the humongous complexity lurking underneath meant that I lost interest within a couple days.

I have Forth running on TM4C/MSP devices, in fact I have a MSP430 (target) JTAG tethered Forth running *from* a Ti Connected Launchpad (host) which is doing live compilation for the target which means I can (seemingly) write a Forth program and run it interactively on the target MCU even if it only has a couple of hundred bytes of Flash, because the host is sending machine code to the target. At the end of my development the host will produce and flash the completed turnkey application binary to the target via the same JTAG used for the tether.  Tell me that's not cool ?

The interactive Forth that *seems* to be running on the target, is actually running on the Host. Hardware speed of the Forth target is about 20 times slower than when it's running the completed binary image produced by the host, however the interactive Forth speed of the target seems normal at 460800 Baud.

If you're interested please see http://hightechdoc.net/mecrisp-across/_build/html/index.html but be aware it's all beta level, and I'm not the creator, just a user.

Thanks to various (mainly Rust) users I have also made CMSIS-SVD's for TM4C/MSP devices which can then be used for automatic memory mapped Forth Word creation. One sure needs this when using a TM4C because the sheer number of registers and bitfields are just *unbelievable*!

The MSP430 on the other hand is just a cute lil thing, a master of low power and interrupts with the sweetest Assembly Language seen since the MC6800 (imho).

 

Offline Tomorokoshi

  • Super Contributor
  • ***
  • Posts: 1212
  • Country: us
Re: What IDE are you using ?
« Reply #88 on: April 26, 2019, 02:59:03 am »
No matter what the development environment is, make an instruction document on how to install the IDE, compiler, source control, licenses, utilities, tools, etc. from zero. Then show how to load up the project, check out and check in files, compile and build, program the target, run the debugger, etc. This can easily run to 20 or 30 pages with pictures. Save in native format and in PDF in the project.
 

Offline NorthGuy

  • Super Contributor
  • ***
  • Posts: 3137
  • Country: ca
Re: What IDE are you using ?
« Reply #89 on: April 26, 2019, 03:06:35 am »
I don't have to use a jtag,swd, or proprietary PIC debugger. I don't have to set breakpoints, watchpoints or halt the program. I can type a command to show me the current value of a MCU register, set a bit, clear a bit e.t.c. even while a cooperative multitasking program runs. I also don't need to learn all the non trivial commands of GDB or a similar debugger.

Since debuggers use hardware, what you can do depends on the hardware capabilities. For example, PIC24/dsPIC33 lets you watch/change variable without halting. You just put the variable onto the watch window and you can watch as the value changes when the program runs.
 

Offline josip

  • Regular Contributor
  • *
  • Posts: 149
  • Country: hr
Re: What IDE are you using ?
« Reply #90 on: April 26, 2019, 09:57:38 am »
While I'm no expert with Eclipse I have used it when I evaluated such IDE's as Atollic Studio and I could see the attraction, but the fact that I'd need a i7 with 32GB ram to run it in a reasonable time, and given the humongous complexity lurking underneath meant that I lost interest within a couple days.

Same here.

I have Forth running on TM4C/MSP devices, in fact I have a MSP430 (target) JTAG tethered Forth running *from* a Ti Connected Launchpad (host) which is doing live compilation for the target which means I can (seemingly) write a Forth program and run it interactively on the target MCU even if it only has a couple of hundred bytes of Flash, because the host is sending machine code to the target. At the end of my development the host will produce and flash the completed turnkey application binary to the target via the same JTAG used for the tether.  Tell me that's not cool ?

The interactive Forth that *seems* to be running on the target, is actually running on the Host. Hardware speed of the Forth target is about 20 times slower than when it's running the completed binary image produced by the host, however the interactive Forth speed of the target seems normal at 460800 Baud.

If you're interested please see http://hightechdoc.net/mecrisp-across/_build/html/index.html but be aware it's all beta level, and I'm not the creator, just a user.

Thanks to various (mainly Rust) users I have also made CMSIS-SVD's for TM4C/MSP devices which can then be used for automatic memory mapped Forth Word creation. One sure needs this when using a TM4C because the sheer number of registers and bitfields are just *unbelievable*!

The MSP430 on the other hand is just a cute lil thing, a master of low power and interrupts with the sweetest Assembly Language seen since the MC6800 (imho).

Never used Forth. I am using free assembler with good macro possibility in combination with my own pre build source code injector / translator.

I see that you are using TI devices, and they (F5xx/F6xx/FR) have mailbox system that can be used for exchange data between master and free running target device. Yes, high baud rate UART can be used for this, but mailbox system doesn't need any setup, device peripheral or pin. Communication is going by existing SBW / JTAG lines.

I used at the beginning extra CDC line from target device, for fast logging, but later switched to mailbox system and using it for years. It is not fast as CDC (of course,  depend on SBW / JTAG speed), but it is fast enough and simple. Unfortunately, it is not suported by TI tools and I am using it with my own tool.
 

Offline ehughes

  • Frequent Contributor
  • **
  • Posts: 409
  • Country: us
Re: What IDE are you using ?
« Reply #91 on: April 26, 2019, 12:49:00 pm »
Whatever IDE gets me going the quickest for a particular project.

Lately it has be MCUXpresso for NXP stuff
Segger Embedded Studio for Nordic NRF52
Vivado for Xilinx.
Visual Studio for C# stuff
Spyder for Python
Jupyter Notebooks for Julia





 

Offline cloudscapes

  • Regular Contributor
  • *
  • Posts: 198
Re: What IDE are you using ?
« Reply #92 on: April 29, 2019, 11:47:11 pm »
MikroC for ARM

I have my grievances with it. It's not the most stable and sometimes bugs out/crashes for no reason. It's pricey, and for a package that's being sold, has some glaring omissions in its examples and library (no DMA, and they never really bothered to help their users with setting up I2S despite selling a codec board for years). Among other things that annoy me.

But alas I do need some hand-holding, without going full arduino. It's only a hobby and have a limited amount of time, so I'm not about to install/learn linux or have to learn how to separately install/make an IDE and compiler work nice together. The only stuff I want to debug is my own code, not the environment. I'm also bad at registers/machine language. The more things look like real words and C, the better for me.

That said, I've read you can integrate the STM32 SPL within MikroC, so I may do that once I'm done with my current project. Small steps.
« Last Edit: April 29, 2019, 11:48:56 pm by cloudscapes »
 

Offline maurizze

  • Newbie
  • Posts: 7
  • Country: dk
Re: What IDE are you using ?
« Reply #93 on: May 08, 2019, 06:52:32 pm »
VSCode with PlatformIO, works flawlessly eventhough there was a learning curve for me in the beginning.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf