OT: low cost development hardware and software

I'm considering moving from an Atmel XMEGA environment to and ARM
environment. (various reasons, one being the purchase of Atmel by
Microchip and some corresponding price increases...)

I'm looking at the following scenario:

1) buying an explorer/development board: Nucleo 64 bit with a F446RET6
processor from STM. Seems to have the highest performance for
processor intensive solutions and would support daughterboards with
memory access (good for things like displays and extra memory).

2) I will probably (for these designs) go bare metal. The reasoning
is that I do not want Linux at the moment, and these are embedded
building blocks of larger systems. I already have an operating system
that needs to be rewritten (low level drivers only) for the ARM. It
already exists for the Xmega.... no, it's not FreeRtos. (there are
reasons).

2A) kinds of designs are display drivers mostly, which is where I need
the most processing power. May end up keeping the Xmega stuff for
smaller functions, that's not all that bad depending on what Microchip
does with the prices (already up some....)

3) Assuming that a 13 dollar development board will do well enough
(it's cheaper than I can make a board and populate it), and that there
are enough processor pins to run the daughter boards (which I don't
mind designing)...

4) What development tools are there that would work reasonably well?
I'd be using the (purchased with board) ST_link protocol.

5) cost IS an object, so I'd be looking for a free version that is NOT
code size limited. I've had Xmega projects at about 100K bytes of
code, which knocks out the "go see what it's like then pay us money"
approach of the major compiler vendors.

6) I'm hoping that people here with experience in ARM development have
some preferences and could help. The BBB is not a hardware candidate
for several reasons, one being cost (I tend to do distributed systems,
which means lots of processors), another of which is simply
complexity. A processor with add-ons (Arduino approach) seems to be a
minimalist hardware approach, which for now, is worth investigating.

Currently I am using the AVR studio IDE, and developing in either C or
C++, PC projects tend to be Lazarus Pascal for historical reasons and
the fact that Microsoft's .net framework drives me up a wall.

Comments welcome, and if this is sufficiently off topic for the group,
please reply directly. Also would like to hear about inexpensive
hardware development boards that might work. Considered the PSOC 5LP
boards, but they're such a loss leader that I wonder if they're going
to be permanent... Then again, everything changes.

Thanks

Harvey

whats this got to do with a beaglebone ?

whats this got to do with a beaglebone ?

Not a thing, of course, except that they are both ARM processors.

Hence the OT.
Hence the hope that someone here might be doing similar ARM
development, and also the thought that what works well for the BBB
might cross over into another hardware platform.

Harvey

Harvey, I agree with wulf. Not only that, this is something that someone who ever needs the doing, pays me, or someone like me to look into.

By the way, “bare metal ARM” means exactly nothing. The AM335x on the beaglebone black is not exactly something you’d want to write bare metal code for / on. Yes, it can be done ,but that is not a reason to do so. The AM335x
is an applications processor which means it was designed to run an OS.

Anyway, your post is rather vague, and long winded that tells us nothing. Seriously. “Display driver” - What does that mean ? a 128x8 display ? Or are you talking about 1080p or something crazy on a bare metal board ?

On Sun, 07 Aug 2016 20:33:51 -0400, Harvey White
<madyn@dragonworks.info> declaimed the following:

whats this got to do with a beaglebone ?

Not a thing, of course, except that they are both ARM processors.

Hence the OT.
Hence the hope that someone here might be doing similar ARM
development, and also the thought that what works well for the BBB
might cross over into another hardware platform.

  The Beaglebone, like the Raspberry PI, is an ARM A-series processor;
likely needing a fairly full OS to be usable. But your comparison boards
(at least the STM's I've seen) are likely M-series processors. The closest
TI equivalent is probably the TIVA TM4C123 (followed by the 1294 and 129E
boards if you need built-in ethernet [both] and hardware encryption [129E]
support). Price points direct are about US$13, 20, 25 respectively.

  Supposedly, if using the TIVA's built-in programming/debug interface,
Code Composer Studio is not code-size limited on the TIVA. Or if one
prefers the Arduino-style, Energia is a look-alike environment.

Hi Harvey,
I routinely use low cost development boards for specific application and attach them to either a PC or one of low cost Linux board such as Beagleboard or Raspberry. I also find they work nicely in low cost test fixtures.

You haven't mentioned you development environment, but for Windows you are probably already familiar with the tools players and associated cost. I settled on the Nucleo boards using OpenSTM32 running Linux since I am not a big Windows fan, however they do offer a Windows version. The Linux was a bit painful getting running, but it might be a little easier on Windows. For some crazy reason you have to register before you can even get to the documentation which to me is the most important part when researching development tools. ST's CubeMx really helps in getting the low level hardware code running without having to do a bunch of custom work.

Also you might want to take a look at Mbed as most if not all of the ST Nucleo board support it. There is quite a bit of community code available and it does not tie you to a single vendor. At one time they only offered on-line development tools, but may now have alternatives.

http://www.openstm32.org/HomePage
https://www.mbed.com/en/

Google has a wealth of information.

Good luck,
Mark

<snip>

Hi Harvey,
I routinely use low cost development boards for
specific application and attach them to either a
PC or one of low cost Linux board such as
Beagleboard or Raspberry. I also find they work
nicely in low cost test fixtures.

You haven't mentioned you development environment,
but for Windows you are probably already familiar
with the tools players and associated cost. I
settled on the Nucleo boards using OpenSTM32
running Linux since I am not a big Windows fan,
however they do offer a Windows version.

Thank you, I shall look into that.

The Linux
was a bit painful getting running, but it might be
a little easier on Windows. For some crazy reason
you have to register before you can even get to
the documentation which to me is the most
important part when researching development tools.
ST's CubeMx really helps in getting the low level
hardware code running without having to do a bunch
of custom work.

That also is a factor.

Also you might want to take a look at Mbed as
most if not all of the ST Nucleo board support it.
There is quite a bit of community code available
and it does not tie you to a single vendor. At one
time they only offered on-line development tools,
but may now have alternatives.

Apparently, they do not yet offer anything much other than online. I
somewhat prefer an IDE if I can get it.

http://www.openstm32.org/HomePage
https://www.mbed.com/en/

Google has a wealth of information.

I've been searching, however, I thought I might try here to see if
anyone did anything similar.

Things should get interesting now.

Thanks for the help.

Harvey

By the way, "bare metal ARM" means exactly nothing. The AM335x on the
beaglebone black is not exactly something you'd want to write bare metal
code for / on. Yes, it can be done ,but that is not a reason to do so. The
AM335x
is an applications processor which means it was designed to run an OS.

OK, I was rather thinking tools first, operating system secondly.

Anyway, your post is rather vague, and long winded that tells us nothing.
Seriously. "Display driver" - What does that mean ? a 128x8 display ? Or
are you talking about 1080p or something crazy on a bare metal board ?

Oh, well, I was thinking the Epson S1D13781 chip driven in a parallel
interface mode, 16 bit, using the external memory interface to memory
map it. I already wrote the code using an SPI interface, so only the
communications needs to be changed.

If I said "I want to use a free compiler to generate C and C++ code
for the Nucleo boards" and that's all I asked, someone would ask me
what I wanted to do it for, and why I didn't use the BBB, and why I
didn't use some other board... etc.

I was not asking for help in *doing* any of this, I was looking for
tool suggestions.

Thanks for the help

Harvey

Oh, well, I was thinking the Epson S1D13781 chip driven in a parallel

interface mode, 16 bit, using the external memory interface to memory
map it. I already wrote the code using an SPI interface, so only the
communications needs to be changed.

In this case, any Cortex M0/M0+ or Cortex M3/M4 board should work. But
these boards:
http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-discovery-kits/stm32f4discovery.html
are supposed to be one of the best supported boards by the open source
community. Well, meaning excellent gcc support.

If I said "I want to use a free compiler to generate C and C++ code
for the Nucleo boards" and that's all I asked, someone would ask me
what I wanted to do it for, and why I didn't use the BBB, and why I
didn't use some other board... etc.

Ubuntu 14.04 standard package:
http://packages.ubuntu.com/trusty/devel/gcc-arm-none-eabi is the only real
tool in my mind. The trick is picking a board that is very well documented,
that is well supported by this toolchain. *That* is where you need help,
and where people like me typically get paid well to figure this out( if we
do not know already ). But knowing the gcc toolchain, as in how to setup
gcc, g++, and gdb with an IDE( if an IDE is even needed ) is the key. Then
there will be slight differences between gcc port, to gcc port.

Oh, and FYI, TI dev boards typically are well supported in CSS, and CSS is free, and full support for most if not all of their dev boards. Meaning: no memory limit.

The STM32F4 boards also have excellent open source JTAG support options too. Or so I’ve read. OpenOCD
as I recall. IF JTAG is a consideration.

stm32 based cortex-m based boards such as those st nucleo (http://www.st.com/en/evaluation-tools/stm32-mcu-nucleo.html?querycriteria=productId=LN1847) lines or leaflab maple (a ‘clone’ such as olimexino-stm32
https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/ ) comes to mind.
they have good industry and open source development tools support

i’ve got the beagle bone black as well as olimexino-stm32. the context for ‘upgrading’ to boards such as beaglebone black is such that unless your application scenario fits nicely in the ‘microcontroller’ context e.g. is able to live in 20k (yup 20k not 20megs) of ram u may quickly run out of ‘headroom’ for bulkier apps

and strictly speaking i’d not consider stm32 ‘cheap’ but rather that it is a good and well supported / well understood (in the open source community) platform. e.g.
http://www.stm32duino.com/

the other context is in your application scenario u’d prefer to have an ‘OS’ take care of many of the ‘mundane’ IO tasks such as multitasking, scheduling, memory management etc. programming things ‘microcontroller’ style often means your app is both the ‘OS’ and the ‘app’ itself, it is literally ‘bare metal’ programming interacting directly with hardware / IO / memory in a all-in-one app

my personal feel is that ‘microcontroller’ style development is possibly much harder for rather elaborate apps with all the ‘bare metal’ development. As an example in beagle bone black it is possible to run python scripts to blink leds, of course this is pretty much using a ‘bulky app’ to do a simple thing, but this luxury is simply impossible on those ‘microcontroller’ small memory boards. ‘bare metal’ is possibly the choice left. and if one resorts to doing ‘bare metal’ i.e. C, C++ programming on beagle bone black for instance, the app can go much further than that of ‘microcontroller’ scenarios such as to offer a full blown QT based Gui and user interface.

in terms of IDE style development tools for STM32 controller boards i’d think
GNU ARM Eclipse
http://gnuarmeclipse.github.io/
and GNU ARM Embedded Toolchain
https://launchpad.net/gcc-arm-embedded

is quite ‘well known’ if I’m right about it GNU ARM Embedded Toolchain can be used to do similar ‘bare bone’ development on platforms like beagleboards / beagle bone black etc
hence, one of the considerations which would be related to costs is how much hardware resources can a ‘project’ afford, e.g. a beagle bone black with 512m ram and 4g flash would literally be considered ‘plenty’ and possibly ‘expensive’ for a ‘microcontroller’ project. but i’d guess everyone’s mileage varys

but say if one is trying to program a ‘scope’ with rather elaborate computations and displays along with a Gui user interface and plenty of functions FFT / digital filters etc doing it ‘microcontroller’ style may be quite a ‘monumental’ task :wink: