I need a little digital io for my project since cortex-m is not economical for me I need to know can i use Cortex-a to do some embedded jobs?
Yes you can do. Why not? But you need to connect external RAM and Flash-Memory. The evaluation-process needs much longer and is not trivial.
You just have to find a Version that has the Periphials needed by your Project.
Btw.: The Periphials are "Vendor"-made. For example the AMlogic S905 has no SPI, While Broadcom BCM2837 has(both are Cortex-A53). But thats the same for the Cortex-M-series.
Why is a cortex-M not economical? Consider the costs for RAM and Flash-Memory. And design & layout a DDR-RAM-Interface is not that easy .
Because with equal price you could have more processing power than a Cortex-M.The only benefits of cortex-m is having industrial interfaces like can and etc.
I had worked on external Rams with Arm9 and LPC2478 it was not that hard.
Because i didn't work with Cortex-A yet,I dont know if i can programming Cortex-A like Cortex-M with C language?Could i rewrite my X86 assembly programs for Arm?
Because with equal price you could have more processing power than a Cortex-M.
The only benefits of cortex-m is having industrial interfaces like can and etc.
No, I think the main benefits for using a Cortex-M is that is easier to evaluate and you get a shorter time-to-market. But that's really depends on your specific Application. If you need the processing-power you are fine with a Cortex-A MPU.
It's a major difference between design a SDRAM-Interface for a "slow" LPC2478 and design a DDR3-Interface for a modern Cortex-Axx. But I don't say you can't do it, only a thing to consider.
Because i didn't work with Cortex-A yet,I dont know if i can programming Cortex-A like Cortex-M with C language?
Could i rewrite my X86 assembly programs for Arm?
That depends on your toolchain. And what you mean with "like a Cortex-M". Running a OS or not?
I think rewriting of X86 assemby-code will require major changes.
This is a great question, and I like your answersn30dg.
Does anyone else have insight or experience to share?
I hope you don't have too much x86 to convert! I assume you mean straightforward x86, no SIMD, but in any case it is worth looking at converting to C instead and even for SIMD there are intrinsics one can use in C on ARM to do that.
If you are determined to do an assembler conversion there are a number of differences but mostly they are of the known unknowns kind. One particular gotcha on the line of things you may know but it ain't so is how the carry flag works. See Carry flag - Wikipedia, the free encyclopedia for a description of the difference.
See Carry flag - Wikipedia, the free encyclopedia for a description of the difference.
sjdaliyan, the pertinent operation is subtraction.
If you will not go into high-volume production and your application/project does not have crucial requirement for power consumption or board size, it's fine to use the Cortex-A especially if you already have a Cortex-A board.
Several Cortex-A devices have "industrial interfaces like can and etc.". See Freescale (now part of NXP) i.MX, Texas Instruments Sitara, XILINX Zynq 7000, among others.
The advantage of using Cortex-M for your project is you can have it done with minimal processing capability, memory, and peripherals. This translates to lower power consumption and ease of board design and programming. For simple embedded projects you get excess features with Cortex-A devices. For example you may not need the MMU, DDR controller, external Flash controller, on-chip graphics processor, PCIe interface, SATA, etc. In embedded applications, Cortex-As are best considered in cases where GUI and OS like Linux and Android are needed.
Yes, you can (or have to) rewrite your x86 assembly programs if you need them in ARM.
The degree of burden in converting x86 assembly language programs to ARM depends on the complexity of your project. Most of the hurdles relate to the roots of these two processors. With x86 from an older era and having evolved from CISC and ARM being newer and RISC. Some of your concerns are:
64-bit: RAX, RBX, RCX, RDX
32-bit: EAX, EBX, ECX, EDX
16-bit: AX, BX, CX, DX
8-bit: AH/AL, BH/BL, CH/CL, DH/DL
Other minor differences exist; for example, ARM can support four types of stack based on the combination of empty/full and ascending/descending properties.
If you will use your assembly language program along with C, note that the integer data type in x86 is 16-bit while in ARM it is 32-bit.
I need realtime os,20-30 timers and fast external clock generating ,could i use Cortex-A?Main reason i want to do that is you can buy a fully assembled Cortex-A board for 5-10 bucks with more power than cortex-m.
20-30 timers are already quite numerous. Luckily, the number of timers that can be supported by a real-time OS might be limited only by the available resources in the processor. The processing speed imposed depends on the task associated with each timer. Cortex-As have the speed to satisfy your requirement, and, as you stated, you can get more processing power per cost on Cortex-As. Your next step is to evaluate the RTOS for your project.
There is no reason why a Cortex-A core should not be used in an embedded application.
Cortex-A devices can offer considerably more processing power than Cortex-M devices and this may be your criteria for choosing one.
Perhaps a more important criteria is that Cortex-A devices incorporate a Memory Management Unit which allows implementation of a full virtual memory system. This means you can use platform operating systems such as Linux. Mainstream Linux cannot be run on a Cortex-M platform because these devices do not support virtual memory.
With the launch of the latest cores in the Cortex-A family, Cortex-A35 and Cortex-A32, there are now Cortex-A options which have very low power consumption and are very efficient. These are a natural choice for a rich embedded application.
Please can you describe in more detail what you are trying to accomplish?
What sort of processing power do you need? if it
What additional functionality do you need?
You mention Digital I/O (how many, what functionality etc).
The more information you can provide the better quality the answers you will receive.
Hope this helps
I want to use it for DSP applications and signal generating for motor control.
Have you considered a 300MHz Cortex M7 from Atmel?
ATSAME70 and ATSAMV7x devices also have CAN interfaces etc.
Combines MCU and DSP functionality offering similar performance to entry level 32bit DSP's.
Also one of the applications it is targeting is Motor control.
Cortex-As have more powerful DSP instructions becuase of SIMD and NEONStill Performance/price of Cortex-As are higher than Cortex-Ms.
Cortex-A is a good choice for many embedded applications, such as Cortex-A8 featured TI 335x, Cortex-A7 low power consumption featured NXP i.MX6Ultra Lite and Cortex-A9 featured i.MX6Quad/Dual Lite. All of them are main stream products in embedded industry.
View all questions in Embedded forum