ARM Fixed Virtual Platforms (FVP) and ARMv8.4-a support - arm

ARM offers emulators for development at Fixed Virtual Platforms (FVPs). ARM also announced ARMv8.4-a, which provides hardware acceleration for cryptographic algorithms, including SHA2-512, SHA3, SM3 and SM4. I have some C++ code I want t port to the new instructions.
I need access to a FVP or machine with ARMv8.4-a. I don't believe there is any silicon in the field with ARMv8.4-a at the moment. I think that means FVPs are my only choice at the moment.
My question is, do the FVP's support ARMv8.4?

My question is, do the FVP's support ARMv8.4?
According to Barry Spotts of ARM FVP team:
Our ARM AEMv8 FVP is free and can be downloaded from
https://developer.arm.com/products/system-design/fixed-virtual-platforms
It does support ARM 8.4 extensions. Linaro build does support our AEMv8 FVP.
It looks like QEMU added ARMv8.4-a support in February 2018 so the instructions can be emulated.

Related

What low level language does apple silicon support?

Apple's ARM-based processor seems promising and more battery efficient than intel. What I like to know is that what low level language does it support? As for intel x86, it is primarily written in C/C++. Even though apple silicon has rosetta2 to compile third party libraries, will it still natively support low-level languages like x86_64(c/c++).
we are under NDA for deeperr details, but from Apple docs, You will be allowed to make projects in Xcode using:
C
C++
Swift
ObjC
in ANY combinations
there are some limitations in using ASM, as per Apple docs.

CMSIS for Cortex-M1

Sadly I'm forced to use and obscure microcontroller based on ARM Cortex-M1 core. I just found out that the latest CMSIS (5.2) does not support it and official CMSIS docs say this:
CMSIS supports the complete range of Cortex-M processors (with
exception of Cortex-M1) and the ARMv8-M architecture including
security extensions.
I guess Cortex-M1 is not very popular. But what should I do without CMSIS? My vendor ships support package which strangely enough includes CMSIS files for this core, namely, core_cm1.h; it's full of ARM copyrights and does not appear to be written directly by said vendor. File comment lists CMSIS version V3.20 from 25 February 2013. But I can't find it anywhere else, neither in higher versions of CMSIS nor in lower.
In "Definitive Guide to the ARM Cortex-M0" by Joseph Yiu I found this quote:
There is also a small chance that the software needs minor adjustment
because of execution timing differences. At the time of writing, no
CMSIS software package is available for the Cortex-M1. However, you
can use the same CMSIS files for the Cortex-M0 on Cortex-M1
programming, because they are based on the same version of the ARMv6-M
architecture.
I diffed core_cm0.h from CMSIS 4.0 and core_cm1.h from my vendor and found only very minor differences (like, 1 << smthn became 1u << smthn in a couple of places).
Than I diffed core_cm0.h from CMSIS 5.0.2 and core_cm1.h from my vendor and found a lot of differences, structs are different, inline functions for NVIC are different and so on.
So my question is: is it really safe to use core_cm0 for Cortex-M1 even for latest CMSIS? Or should I play it safe and stick to my vendor's files (even though I have no idea where did it get them)?
You can use the Cortex-M0 CMSIS-CORE header on Cortex-M1. There are couple of things you need to be aware:
- WFI, WFE and SEV instructions are not available in Cortex-M1.
- Cortex-M1 has an auxiliary control register for I-TCM enable control. You need to declare that manually if you need to switch I-TCM enable.
- CPU ID register has different value
- Instruction execution timings are different
- Interrupt latency is not constant.
There is a lot of code changes from CMSIS-CORE 4 to CMSIS-CORE 5. But those changes are focus on supporting of additional tools, general coding styles and for future extension of CMSIS.
Hope this helps.
Cortex-M1 is very similar to Cortex-M0 from a software point of view. At the CMSIS level, using core_cm0.h (latest CMSIS) will work fine.
You might also find compiler switches don't support Cortex-M1 - in this case treat it as if it were M0.

Software simulation from ARM Cortex-M0

Is there a software simulator for ARM Cortex-M0 ?
I have a thumb only (not thumb2) instruction set simulator, goto github and search for thumbulator. Depends on what you are trying to do, could compile for thumb for a while then switch to thumb2 later.
For arm I found a behavioral verilog model out on a university site.
For thumb2 you might check and see if qemu supports it, I know there is support for the stellaris cortex-m3 so that may put you close enough.
There is no FOSS simulator. ARM documentation license prohibit documentation use for making simulator. You have to pay money to ARM to use documentation for simulation purposes and so all ARM simulators for latest architectures are non free.
You can download & use the free version of Keil uVision (limited to 32k)
IAR Embedded Workbench (www.iar.se) includes a simulator for Cortex cores. It is free (kickstarter version) up to 32kb of code size.

OpenCV on ARM11 architecture with Ubuntu Support

I am developing a project based on OpenCV. Currently I am working on Ubuntu 10.04 system with AMD turion processor. But project need to work as an embedded system. So I am using a readymade board based on ARM11 processor with SAMSUNG S3C6410 processor. It supprot Linux 2.6.28. It also support ubuntu. So how could I port my code from the host system to my embedded system.
Thanks
This is link for the board.
http://www.minidevs.com/
I think the best way to start, is to take a look at Angstrom/OpenEmbedded.
It's a framework for building OS images for various embedded platforms. You could take the precompiled-images, but I've realized that after a while it's not worth the hassle.
Just build the target image yourself (with OpenCV for the target platform, it definitely builds for S3C2440 (tested it myself a year ago or so) and for all OMAP3 platforms (BeagleBoard, EVM and the like).
Then, use OpenEmbedded to build the cross-compiler (there is a package name for that), install it on your host machine, and you should be ready to go.
If there is no support for S3C6410, just use any other ARM11 platform out there, and install the packages. It is likely your vendor-supplied OS was built using OpenEmbedded, it quickly becomes de-facto standard.
http://www.angstrom-distribution.org/
http://www.openembedded.org
Check Linaro if the processor you are looking for is ARM. It looks promising. http://www.linaro.org/

Which ARM processor should be used for transfering data via ethernet?

The question below was related to the 8051 family as it has only the serial ports. Now when i found out that the ARM processors have inbuilt ethernet facility i decided to mov on to the ARM's. So which would be the Most easiest one to start of and as iam aware of keil environment i would like to work on anARM which supports keil .
Thnxx,
Cheers.
The TI (formerly Luminary Micro) parts are easy to use. The eval kits are cheap and there is a lot of documentation on the Luminary Micro web site, including sample code. I've been using the LM3S6965 EVK for an ethernet project. The eval kits can be ordered with Keil, IAR, Codesourcery or Code Red compilers.
Check out the AT91SAM7X.
AT91 SAM series from Atmel is really popular between hobbyists and amateurs, you will find a lot of open source examples and excessive topics regarding this CPU's. And yes, they are widely supported in Linux community.
Check this out: http://www.at91.com

Resources