hi all,
I'm used to use microchip controllers (Professional software engineer), but because I need higher calculation speed, I have to move to arm processors.
For that reason I'd like to start with a starter kit.
I'd like to experiment with Ethernet, LCD, USB, RAM, Uart , i2c and spi.
Because of realtime tasks, I'd like to program the controller completely myself, without os. Is this possible?
Does someone have an opinion about the RiOT board? Or would the IOTboard of IBM/Arm be a better start (However its 250dmips is too slow for the project)?
'Mustc I use Linux or could I use own C code as main platform?
Can, for example, a raspberry pi or something else also be realtime programmed, or am I depended of Linux ?
Are there libraries like Microchip delivers example codes?
I have compared some books, but what book should be a good guide for me as noob in the world of ARM?
Hopefully you can help me give a good start with ARM this way. Thanks a lot.
John
Hi John,
I suggest that you should first gather basic information about the characteristics of and differences among ARM Cortex processor profiles (Application, Real-time, and Microcontroller). You can go here noting that starters should select either Cortex-A or Cortex M
ARM PROCESSORS.
For that reason I'd like to start with a starter kit.I'd like to experiment with Ethernet, LCD, USB, RAM, Uart , i2c and spi.
Here are the starter kits from some device suppliers:
NXP Semiconductors
∙ Freedom Development Boards
∙ LPCXpresso Boards
Silicon Laboratories
∙ 32-bit Microcontroller Development Tools
STMicroelectronics
∙ STM32 MCU Discovery Kits
∙ STM32 MCU Nucleo
Yes, I suggest you choose Cortex-M. For Cortex-A you have a lot of resources to manage, average users would like to program under OS like Linux, Android, etc.
Does someone have an opinion about the RiOT board?
The RIoTboard is a nice platform for Linux application but the Raspberry Pi is more popular. Also, the RIoTboard is priced at $79.00 while the BeagleBone Black is from $48.00 to $55.00 and Raspberry Pi is at $35.00 (or lower depending on the variant).
It depends on the processor profile that you will choose and your proficiency. Average user can develop application without OS on Cortex-M and under Linux on Cortex-A.
The Raspberry Pi can be real-time programmed but it's CPU is an application processor, Cortex-R and Cortex-M have faster response and more deterministic. With Linux, the Raspberry Pi can be used in soft real-time system.
Yes, there are libraries and examples.
For Cortex-M, these books are highly recommended
The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors, Third Edition
by Joseph Yiu
ISBN-13: 978-0124080829
ISBN-10: 0124080820
The Definitive Guide to ARM® Cortex®-M0 and Cortex-M0+ Processors, Second Edition
ISBN-13: 978-0128032770
ISBN-10: 0128032774
Here is the list of ARM Related Books.
Regards,
Goodwin
Well, this is a good answer!
As I understand, there is a difference between application processors and realtime.
Does this mean application processors always needs a OS? It isn't just a boot loader ready processor?
Is there a difference between both types processors, or if I have got experience with the M series, could I 'simple' move to the application processors?
Thanks again, I'll gonna follow up your advices.
Great answer from Goodwin.
From a hardware viewpoint a quick tip which may help.
You specifically mentioned Ethernet and LCD functionality.
This already starts to restrict your choices and you said you don't want to go down the Linux route if you don't need to.
Most likely this will dictate that you will need an M4 (or if you need even higher performance an M7).
STM32L4 family is new and a very nice choice. There is a nice "ST MCU finder" app available for smartphones.
Plenty of options available also from NXP and Atmel (now part of Microchip).
All of the suppliers will offer a software library including things like TCP/IP etc.
Lastly you may also want to take a look at FreeRTOS.
Hope this helps.
Hi, Ive bought STs m7691I discoveryboard. 70 euros from Farnell.
ST has cubeM as IDE, but we also have Keil and others.
From my experience I know sometimes free software like compilers isn't always a good choice, however sometimes payed version are even worse.
What IDE works 'flowly' and flexible?
Are there IDEs with realtime compiling / precompiling?
Which compiler is reliable, but also well tested, so I can use it professionally later on?
What is the quality of debugging with the M7? Does live debugging and break points work well, or is it buggy?
And are there good code profiles available, maybe good free ones to start with?
For now I just want to 'play' to gain experience, but the main purpose is to see if this one beats not only PIC32MZ' performance, but also to see if we can build code as easy as we're used to.
And another important question: what about bugs in IDEs and compilers. Like we're used with Microchip to immediately open a support ticket and most of the time get support from their site within 24u, is such possible in the new ARM situation too?
I'm surprised to get such good help so fast. Thanks a lot for that! As you see I'm just finding out what I need to make a good start with the ARM controllers.
Thanks again, John
Sorry for the late reply, see my latest status update.
Several members of this forum are doing bare metal programming using application (A) processors. There are more resources to manage compared with microcontroller (M), with an OS you focus on your application. As you gain familiarity with the architecture you can start programming an application processor without an OS. In my case I have not yet tried creating a project using a Cortex-A without an OS.
The three ARM profiles have different performance and power consumpion attributes. The ARM architecture has ARM and Thumb instruction sets (just as MIPS has MIPS16e and microMIPS), Cortex-M uses Thumb. Other major differences are in interrupt response, MMU vs. MPU, cache or/and tightly coupled memory (TCM), NEON Advanced SIMD is available in most Cortex-A implementations. Cortex-A processors run at higher clock rates, Cortex-M are used in systems with smaller memory typically using Flash and SRAM but some high-performance versions also use SDRAM.
Since you are familiar with PIC32MZ
the A, R, and M are ARM's way of creating profiles of their architectures.
MIPS Aptiv has microAptiv (microAptiv UP, microAptiv UC), interAptiv, and proAptiv;
MIPS Warrior has M-class, I-class, and P-class.
I believe that you will be able to "simply" move between the processor profiles. In my case I'm not really engaged in intensive programming chores so I cannot do it easily all the time.
I don't have the expertise or stature needed to answer your questions accurately. I'll just give some toolsets which might be able to meet your criteria. I suggest that you gather more information about these products.
∙ ARM Development Tools
∙ IAR Embedded Workbench Tools for ARM
∙ Atollic TrueSTUDIO
∙ Rowley Associates CrossWorks
∙ Mentor Graphics Sourcery CodeBench (no Cortex-M7 in Supported Processors)
For ARM's own software development tools you can post questions in Software Development Tools.
Your experience about free and paid software is generally applicable to all software development tools regardless of the target architecture.