What is the difference between FIQ and IRQ interrupt system?

ARM calls FIQ the fast interrupt, with the implication that IRQ is normal priority. In any real system, there will be many more sources of interrupts than just two devices and there will therefore be some external hardware interrupt controller which allows masking, prioritization etc. of these multiple sources and which drives the interrupt request … Read more

What are SP (stack) and LR in ARM?

LR is link register used to hold the return address for a function call. SP is stack pointer. The stack is generally used to hold “automatic” variables and context/parameters across function calls. Conceptually you can think of the “stack” as a place where you “pile” your data. You keep “stacking” one piece of data over … Read more

What’s the difference between hard and soft floating point numbers?

Hard floats use an on-chip floating point unit. Soft floats emulate one in software. The difference is speed. It’s strange to see both used on the same target architecture, since the chip either has an FPU or doesn’t. You can enable soft floating point in GCC with -msoft-float. You may want to recompile your libc … Read more

How to install the Raspberry Pi cross compiler on my Linux host machine?

I’m gonna try to write this as a tutorial for you so it becomes easy to follow. NOTE: This tutorial only works for older raspbian images. For the newer Raspbian based on Debian Buster see the following how-to in this thread: https://stackoverflow.com/a/58559140/869402 Pre-requirements Before you start you need to make sure the following is installed: … Read more

Why use armeabi-v7a code over armeabi code?

Depends on what your native code does, but v7a has support for hardware floating point operations, which makes a huge difference. armeabi will work fine on all devices, but will be a lot slower, and won’t take advantage of newer devices’ CPU capabilities. Do take some benchmarks for your particular application, but removing the armeabi-v7a … Read more

Why do ARM chips have an instruction with Javascript in the name (FJCVTZS)?

It is because JS uses double precision for the numbers, but if you want to perform operations with bits, the task is nontrivial, so a specific instruction to convert JS double into integer makes the thing easier. This ARM link explains it very well: https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions In order to add more information regarding fuz’s comment, the … Read more

Error: Cannot install in Homebrew on ARM processor in Intel default prefix (/usr/local)

For what it’s worth, before installing Homebrew you will need to install Rosetta2 emulator for the new ARM silicon (M1 chip). I just installed Rosetta2 via terminal using: /usr/sbin/softwareupdate –install-rosetta –agree-to-license This will install rosetta2 with no extra button clicks. After installing Rosetta2 above you can then use the Homebrew cmd and install Homebrew for … Read more

Differences between arm64 and aarch64

AArch64 is the 64-bit state introduced in the Armv8-A architecture (https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A). The 32-bit state which is backwards compatible with Armv7-A and previous 32-bit Arm architectures is referred to as AArch32. Therefore the GNU triplet for the 64-bit ISA is aarch64. The Linux kernel community chose to call their port of the kernel to this architecture … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)