comp.lang.ada
 help / color / mirror / Atom feed
* Getting started with embedded programming
@ 2017-11-25 21:39 Andrew Shvets
  2017-11-25 22:02 ` Dmitry A. Kazakov
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Andrew Shvets @ 2017-11-25 21:39 UTC (permalink / raw)


Hi,

I'd like to get started with embedded programming next year.  What would you recommend for hardware as well as OS?  I'm looking to spend no more than $50 for the hardware and this will be used for hobby projects only.

Is Raspberry PI my only option or is there something else that you have tried in the past?

Thanks in advance,
--Andrew

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Getting started with embedded programming
  2017-11-25 21:39 Getting started with embedded programming Andrew Shvets
@ 2017-11-25 22:02 ` Dmitry A. Kazakov
  2017-11-25 22:10   ` Andrew Shvets
  2017-11-26 10:59 ` Simon Wright
  2017-11-26 11:00 ` Simon Wright
  2 siblings, 1 reply; 9+ messages in thread
From: Dmitry A. Kazakov @ 2017-11-25 22:02 UTC (permalink / raw)


On 2017-11-25 22:39, Andrew Shvets wrote:

> I'd like to get started with embedded programming next year. What 
> would you recommend for hardware as well as OS? I'm looking to spend
> no more than $50 for the hardware and this will be used for hobby
> projects only.

- What are the inputs (sensors) and outputs (actuators). Peripheral I/O 
components are usually far more expensive than the board itself

- What are the controlling cycles you need 100ms, 10ms, 1ms

- How much computations you plan to have

- How much memory you need 1GB or more

- Passive only cooling and power consumption limitations

- How big and reliable the external storage must be. SD cards are 
useless for anything except initial booting. You may need eMMC or SSD etc.

As for the OS, there is little choice. VxWorks is commercial, which 
leaves you with some Linux. The choice of distribution depends on the 
support. Some distributions are well supported, others are not. Booting 
ARM is a great headache. So I would recommend to take the distribution 
and kernel for which there is a ready-to-use image.

> Is Raspberry PI my only option or is there something else that you
> have tried in the past?

There are better boards than Raspberry Pi, but it depends on what are 
going to do. E.g. ODROID xu4 is many times faster than Raspberry Pi 3.

I would recommend to do all developing on a normal PC. The I/O devices 
can be same, mocked or emulated. Ada is 100% portable. Once everything 
works you can port to the board.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Getting started with embedded programming
  2017-11-25 22:02 ` Dmitry A. Kazakov
@ 2017-11-25 22:10   ` Andrew Shvets
  2017-11-25 22:15     ` MM
                       ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Andrew Shvets @ 2017-11-25 22:10 UTC (permalink / raw)


On Saturday, November 25, 2017 at 5:02:22 PM UTC-5, Dmitry A. Kazakov wrote:
> On 2017-11-25 22:39, Andrew Shvets wrote:
> 
> > I'd like to get started with embedded programming next year. What 
> > would you recommend for hardware as well as OS? I'm looking to spend
> > no more than $50 for the hardware and this will be used for hobby
> > projects only.
> 
> - What are the inputs (sensors) and outputs (actuators). Peripheral I/O 
> components are usually far more expensive than the board itself
> 
> - What are the controlling cycles you need 100ms, 10ms, 1ms
> 
> - How much computations you plan to have
> 
> - How much memory you need 1GB or more
> 
> - Passive only cooling and power consumption limitations
> 
> - How big and reliable the external storage must be. SD cards are 
> useless for anything except initial booting. You may need eMMC or SSD etc.
> 
> As for the OS, there is little choice. VxWorks is commercial, which 
> leaves you with some Linux. The choice of distribution depends on the 
> support. Some distributions are well supported, others are not. Booting 
> ARM is a great headache. So I would recommend to take the distribution 
> and kernel for which there is a ready-to-use image.
> 
> > Is Raspberry PI my only option or is there something else that you
> > have tried in the past?
> 
> There are better boards than Raspberry Pi, but it depends on what are 
> going to do. E.g. ODROID xu4 is many times faster than Raspberry Pi 3.
> 
> I would recommend to do all developing on a normal PC. The I/O devices 
> can be same, mocked or emulated. Ada is 100% portable. Once everything 
> works you can port to the board.
> 
> -- 
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de

Thank you for your reply.  Honestly, I don't really have an answer to any of those questions.  At the moment, my biggest project is a simple "Hello World!" application.

Eventually, I would like to make something that can work with input from 3 small digital cameras.  However, that is a way off.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Getting started with embedded programming
  2017-11-25 22:10   ` Andrew Shvets
@ 2017-11-25 22:15     ` MM
  2017-11-25 22:22       ` Andrew Shvets
  2017-11-25 22:37     ` Dmitry A. Kazakov
  2017-11-26  0:42     ` Dennis Lee Bieber
  2 siblings, 1 reply; 9+ messages in thread
From: MM @ 2017-11-25 22:15 UTC (permalink / raw)


On Saturday, 25 November 2017 22:10:59 UTC, Andrew Shvets  wrote:
> Eventually, I would like to make something that can work with input from
> 3 small digital cameras.  However, that is a way off.

Go with something cheap and with a big user base.

I suggest an Arduino (check for Ada support) as a first iteration. As you
gain experience, upgrade.

M


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Getting started with embedded programming
  2017-11-25 22:15     ` MM
@ 2017-11-25 22:22       ` Andrew Shvets
  0 siblings, 0 replies; 9+ messages in thread
From: Andrew Shvets @ 2017-11-25 22:22 UTC (permalink / raw)


On Saturday, November 25, 2017 at 5:15:02 PM UTC-5, MM wrote:
> On Saturday, 25 November 2017 22:10:59 UTC, Andrew Shvets  wrote:
> > Eventually, I would like to make something that can work with input from
> > 3 small digital cameras.  However, that is a way off.
> 
> Go with something cheap and with a big user base.
> 
> I suggest an Arduino (check for Ada support) as a first iteration. As you
> gain experience, upgrade.
> 
> M

Someone used an STM32F446 in Make With Ada.
http://makewithada.org/

I looked on Ebay, they're pretty cheap.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Getting started with embedded programming
  2017-11-25 22:10   ` Andrew Shvets
  2017-11-25 22:15     ` MM
@ 2017-11-25 22:37     ` Dmitry A. Kazakov
  2017-11-26  0:42     ` Dennis Lee Bieber
  2 siblings, 0 replies; 9+ messages in thread
From: Dmitry A. Kazakov @ 2017-11-25 22:37 UTC (permalink / raw)


On 2017-11-25 23:10, Andrew Shvets wrote:

> Thank you for your reply. Honestly, I don't really have an answer to
> any of those questions. At the moment, my biggest project is a simple
> "Hello World!" application.

Well, Raspberry Pi 2/3 is definitely sufficient for that. You can 
accomplish it in no time. Installing and booting Debian (Raspbian) or 
Fedora from 8GB SD card goes out of the box. GNAT is available for 
armhf. That is.

> Eventually, I would like to make something that can work with input
> from 3 small digital cameras. However, that is a way off.

Image processing can be infinitely resource consuming. You might wish a 
board with USB3 to attach the cameras, I assume they will be USB not CSI 
attached. There exist camera module multiplexers but they are relatively 
expensive and I am not sure if the performance is worth the money. 
Raspberry Pi 2/3 has 4xUSB2. Which leaves one port free.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Getting started with embedded programming
  2017-11-25 22:10   ` Andrew Shvets
  2017-11-25 22:15     ` MM
  2017-11-25 22:37     ` Dmitry A. Kazakov
@ 2017-11-26  0:42     ` Dennis Lee Bieber
  2 siblings, 0 replies; 9+ messages in thread
From: Dennis Lee Bieber @ 2017-11-26  0:42 UTC (permalink / raw)


On Sat, 25 Nov 2017 14:10:57 -0800 (PST), Andrew Shvets
<andrew.shvets@gmail.com> declaimed the following:

>
>Thank you for your reply.  Honestly, I don't really have an answer to any of those questions.  At the moment, my biggest project is a simple "Hello World!" application.
>

	Definitely not "embedded" unless you intend to wire up some sort of
serial 2x16 LCD display (by the time you get to a color graphics touch
screen I consider you back into "full computer" territory <G>)

>Eventually, I would like to make something that can work with input from 3 small digital cameras.  However, that is a way off.

	How do the cameras interface... and transfer files... There may not be
much beyond a USB cable and generic web-cam software.


	And as has been mentioned -- what type of peripherals do you need. The
R-Pi is strictly digital inputs, but in R-Pi 3 format does have a quad-core
64-bit processor (albeit the normal NOOBS/Raspbian OS is only 32-bit, so
doesn't take full advantage). And multiple USB ports.

	The BeagleBone Black only has a single core 32-bit processor, but has
on-board eMMC (leaving the SD slot free for data-logging; or for booting OS
trials before flashing to the eMMC). OTOH, the BBB does have built-in A/D
conversion/capture.

	Since both of those run versions of Debian, they do have a version of
GNAT available for them. Access to GPIO/peripherals will either be via the
sys filesystem (open/read|write/close) [which can be done with normal I/O
operations] or use tricky operations to memory map the GPIO block for
low-level (faster) I/O.

	The BBB also has a pair of "PRU" units (Programmable real-time units)
but I don't think anyone has ported an Ada compiler to them. They have
access to the GPIO bypassing the Linux OS.


	Below those are boards using ARM M-series processors -- and no OS. GNAT
has been ported to some of the STM-series boards (along with Arduino Due
and Zero -- though I think the Arduino ports do not support tasking). {Pity
the book didn't include the TIVA TM4C123G (and 1294/129E) since I have
2each of them).

-- 
	Wulfraed                 Dennis Lee Bieber         AF6VN
    wlfraed@ix.netcom.com    HTTP://wlfraed.home.netcom.com/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Getting started with embedded programming
  2017-11-25 21:39 Getting started with embedded programming Andrew Shvets
  2017-11-25 22:02 ` Dmitry A. Kazakov
@ 2017-11-26 10:59 ` Simon Wright
  2017-11-26 11:00 ` Simon Wright
  2 siblings, 0 replies; 9+ messages in thread
From: Simon Wright @ 2017-11-26 10:59 UTC (permalink / raw)


Andrew Shvets <andrew.shvets@gmail.com> writes:

> I'd like to get started with embedded programming next year.  What
> would you recommend for hardware as well as OS?  I'm looking to spend
> no more than $50 for the hardware and this will be used for hobby
> projects only.
>
> Is Raspberry PI my only option or is there something else that you
> have tried in the past?

Assuming you want to use Ada --

For hardware, I know (some of) the STMicroelectronics range and Arduino
Due, all based on 32-bit ARM Cortex-M. I doubt any of these are going to
run Linux, though there are some RTOSs (FreeRTOS, Nuttx(?)).

For Ada you can write for the bare metal (e.g. Maciej's articles[1]) -
which are an excellent start, anyway - or for something higher-level try
a Ravenscar-based implementation (that's with a subset of Ada tasking
designed for small boards/higher integrity).

AdaCore's GNAT GPL 2017 for arm-elf supports these boards:

   crazyflie
   lm3s
   rpi2
   stm32f4 (this is the stm32f407disco board)
   stm32f429disco
   stm32f469disco
   stm32f746disco
   stm32f769disco
   tms570
   zynq7000

and there's the Ada Drivers Library[2].

I've been working on Cortex GNAT RTS[3], which is based on FreeRTOS - so
far it only supports arduino-due and stm32f4, stm32f429disco from the
above list. Its USP is that it's released as GPL with the GCC Runtime
Library Exception[4], so that you can release proprietary binaries using
it. Not that I expect this will be much of an inducement for you!

[1] http://www.inspirel.com/articles/Ada_On_Cortex.html
[2] https://github.com/AdaCore/Ada_Drivers_Library
[3] https://github.com/simonjwright/cortex-gnat-rts
[4] https://www.gnu.org/licenses/gcc-exception-3.1.en.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Getting started with embedded programming
  2017-11-25 21:39 Getting started with embedded programming Andrew Shvets
  2017-11-25 22:02 ` Dmitry A. Kazakov
  2017-11-26 10:59 ` Simon Wright
@ 2017-11-26 11:00 ` Simon Wright
  2 siblings, 0 replies; 9+ messages in thread
From: Simon Wright @ 2017-11-26 11:00 UTC (permalink / raw)


Andrew Shvets <andrew.shvets@gmail.com> writes:

> I'd like to get started with embedded programming next year.  What
> would you recommend for hardware as well as OS?  I'm looking to spend
> no more than $50 for the hardware and this will be used for hobby
> projects only.
>
> Is Raspberry PI my only option or is there something else that you
> have tried in the past?

Assuming you want to use Ada --

For hardware, I know (some of) the STMicroelectronics range and Arduino
Due, all based on 32-bit ARM Cortex-M. I doubt any of these are going to
run Linux, though there are some RTOSs (FreeRTOS, Nuttx(?)).

For Ada you can write for the bare metal (e.g. Maciej's articles[1]) -
which are an excellent start, anyway - or for something higher-level try
a Ravenscar-based implementation (that's with a subset of Ada tasking
designed for small boards/higher integrity).

AdaCore's GNAT GPL 2017 for arm-elf supports these boards:

   crazyflie
   lm3s
   rpi2
   stm32f4 (this is the stm32f407disco board)
   stm32f429disco
   stm32f469disco
   stm32f746disco
   stm32f769disco
   tms570
   zynq7000

and there's the Ada Drivers Library[2].

I've been working on Cortex GNAT RTS[3], which is based on FreeRTOS - so
far it only supports arduino-due and stm32f4, stm32f429disco from the
above list. Its USP is that it's released as GPL with the GCC Runtime
Library Exception[4], so that you can release proprietary binaries using
it. Not that I expect this will be much of an inducement for you!

[1] http://www.inspirel.com/articles/Ada_On_Cortex.html
[2] https://github.com/AdaCore/Ada_Drivers_Library
[3] https://github.com/simonjwright/cortex-gnat-rts
[4] https://www.gnu.org/licenses/gcc-exception-3.1.en.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-11-26 11:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-25 21:39 Getting started with embedded programming Andrew Shvets
2017-11-25 22:02 ` Dmitry A. Kazakov
2017-11-25 22:10   ` Andrew Shvets
2017-11-25 22:15     ` MM
2017-11-25 22:22       ` Andrew Shvets
2017-11-25 22:37     ` Dmitry A. Kazakov
2017-11-26  0:42     ` Dennis Lee Bieber
2017-11-26 10:59 ` Simon Wright
2017-11-26 11:00 ` Simon Wright

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox