ArmEabiPort

-mfloat-abi=softfp的问题,指定fpu为neon 测试使用的C语言程序源码如下,程序源码文件是arm-c-disassemble.c: int sum(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } 1、编译但是不汇编,查看产生的汇编源码程序源码: arm-Linux-androideabi-gcc -S - 阅读详情

The ARM EABI port is the default port in Debian for the ARM architecture, named armel. The old (OABI) port (named "arm") was last released with 5.0.x (Lenny). An even newer port targeted at newer hardware with another ABI ("armhf") is currently under development and is expected to ship with 7.0 (Wheezy) - see ArmHardFloatPort. See ArmPorts for more links and an overview.

In a nutshell

EABI is the new "Embedded" ABI by ARM ltd. EABI is actually a family of ABIs and one of the "subABIs" is GNU EABI, for Linux. The effective changes for users are:

  • Floating point performance, with or without an FPU is very much faster, and mixing soft and hardfloat code is possible

  • Structure packing is not as painful as it used to be
  • More compatibility with various tools (in future - currently linux-elf is well supported)
  • A more efficient syscall convention

  • At present (with gcc-4.1.1) it works with ARMv4t, ARMv5t processors and above, but supporting ARMv4 (e.g., StrongARM) requires toolchain modifications. See "Thumb interworking" below.

Terminology

Strictly speaking, both the old and new ARM ABIs are subsets of the ARM EABI specification, but in everyday usage the term "EABI" is used to mean the new one described here and "OABI" or "old-ABI" to mean the old one. However, there are one or two programs that sometimes describe an old ABI binary as "EABI".

To add to the confusion, powerpc has also had an ABI called "EABI" for some, which has nothing to do with this one.

GCC view

New ABI is not only a new ABI field, it is also a new GCC target.

Legacy ABI

  • ABI flags passed to binutils: -mabi=apcs-gnu -mfpu=fpa
  • gcc -dumpmachine: arm-unknown-linux
  • objdump -x for compiled binary:

private flags = 2: [APCS-32] [FPA float format] [has entry point]
  • "file" on compiled Debian binary:

ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), for GNU/Linux 2.2.0, stripped
  • "readelf -h | grep Flags""

Flags: 0x0

Arm EABI:

  • ABI flags passed by gcc to binutils: -mabi=aapcs-linux -mfloat-abi=soft -meabi=4
  • gcc -dumpmachine: arm-unknown-linux-gnueabi
  • objdump -x for compiled binary:

private flags = 4000002: [Version4 EABI] [has entry point]
  • "file" on compiled binary (under Debian):

ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.4.17, dynamically linked (uses shared libs), for GNU/Linux 2.4.17, stripped
  • "readelf -h | grep Flags""

Flags: 0x4000002, has entry point, Version4 EABI

Furthermore, as well as the usual __arm__ and maybe also __thumb__ symbols, the C preprocessor symbol __ARM_EABI__ is also defined when compiling into EABI, while __ARMEL__ is predefined under both the new and old ABIs.

ARM floating points

The Debian arm/OABI port creates hardfloat FPA instructions. FPA comes from "Floating Point Accelerator". Since the FPA floating point unit was implemented only in very few ARM cores, typically FPA instructions are emulated in kernel via Illegal instruction faults. This is of course very inefficient: about 10 times slower that -msoft-float for a FIR test program. The FPA unit also has the peculiarity of having mixed-endian doubles, which is usually the biggest grief for ARM porters, along with structure packing issues.

ARM has now introduced a new floating point unit, VFP (Vector Floating Points), which uses a different instruction set than FPA and stores floats in natural-endian IEEE-754 format. VFP isimplemented in new some ARM9/10/11 and Cortex A* cores, like in the new TI OMAP2 family. It seems likely that ARM cores without VFP will remain popular, as in many places ARM is used floats are unnecessary.

To complicate thing further, ARM processors are being integrated with many other FPUs and DSPs, each of which adds its own set of instructions to the ARM set:

  • Cirrus Logic's EP93XX series integrate an ARM920T core with a MaverickCrunch FPU. This also uses IEEE-754, though uses a different instruction set to VFP. Current ARM-Debian users cannot use their Maverick FPUs at all except by programming in assembler or using an alternative compiler. GCC has flags to generate Maverick FP instructions (-mfpu=maverick), but the .o files cannot be linked with the standard Debian GCC startup files or libraries.

  • Intel's iWMMXt unit is used in their PXA270 processor with an XScale main core. This adds integer SIMD and some other instructions but there is currently no iWMMXt processor with hardware floating point capabilities. iWMMXt processors are incompatible with FPA due to opcode overlap, while they could have an VFP coprocessor in principal. That said, iWMMXt instructions should make soft-float fairly quick anyway. Again, GCC support exists (-march=iwmmxt) for this but is also currently unusable within standard Debian.
  • Texas Instruments' OMAP, OMAP2, DaVinci DM644x series and numerous other products integrate a ARM9/ARM11 core with their own DSP core for multimedia acceleration and/or telecommunication signal processing, though it does fixed-point math and its DSP code is completely separate from the ARM code. In Linux DSP Gateway or proprietary solutions are used to load code for execution on the c55x/c6xx and provide a way to for ARM and DSP code to communicate.

For a generic-purpose distribution like Debian, targeting binary compatibility, EABI lets us have the cake and eat it. We can make a soft-float distribution using IEEE-754 with FPU-specific versions of packages (linux-kernel-2.6.x-vfp, libc6-iwmmxt, mediaplayer-maverick, etc) where needed. This also enables individual packages to do runtime FPU detection and call code compiled for different FP scenarios (in liboil for example).

The major FP variants worth support as alternative versions of FP-critical packages seem to be

  • the current arm arch supporting armv3 with or without FPA and armv4 processors.
  • EABI for generic ARM (>= armv4t) using IEEE soft-float

  • EABI for lowest common denominator VFP (there are now more than one VFP "extended" variant)
  • EABI for MaverickCrunch FPU

  • EABI for iWMMXt using iWMMXt-specific soft-float

GCC preprocessor macros for floating point

When porting code to ARM EABI, the following preprocessor macros are interesting:

  • __VFP_FP__ means that the floating point format in use is that of the ARM VFP unit, which is native-endian IEEE-754.

  • __MAVERICK__ means that the floating point format is that of the Cirrus Logic MaverickCrunch, which is also IEEE-754 and is always little-endian.

  • __SOFTFP__ means that instead of floating point instructions, library calls are being generated for floating point math operations so that the code will run on a processor without an FPU.

__VFP_FP__ and __MAVERICK__ are mutually exclusive. If neither is set, that means the floating point format in use is the old mixed-endian 45670123 format of the FPA unit.

Note that __VFP_FP__ does not mean that VFP code generation has been selected. It only speaks of the floating point data format in use and is normally set when soft-float has been selected. The correct test for VFP code generation, for example around asm fragments containing VFP instructions, is

#if (defined(__VFP_FP__) && !defined(__SOFTFP__))

Paradoxically, the -mfloat-abi=softfp does not set the __SOFTFP___ macro, since it selects real floating point instructions using the soft-float ABI at function-call interfaces.

By default in Debian armel, __VFP_FP__ && __SOFTFP__ are selected.

Struct packing and alignment

With the new ABI, default structure packing changes, as do some default data sizes and alignment (which also have a knock-on effect on structure packing). In particular the minimum size and alignment of a structure was 4 bytes. Under the EABI there is no minimum and the alignment is determined by the types of the components it contains. This will break programs that know too much about the way structures are packed and can break code that writes binary files by dumping and reading structures.

Stack alignment

The ARM EABI requires 8-byte stack alignment at public function entry points, compared to the previous 4-byte alignment.

64-bit data type alignment

"One of the key differences between the traditional GNU/Linux ABI and the EABI is that 64-bit types (like long long) are aligned differently. In the traditional ABI, these types had 4-byte alignment; in the EABI they have 8-byte alignment. As a result, if you use the same structure definitions (in a header file) and include it in code used in both the kernel and in application code, you may find that the structure size and alignment differ."

Enum sizes

The EABI defines an optional system for controlling the size of C enumerated types. For arm-linux it was decided to keep the existing behaviour (enums are at least the same size as an int) for consistency with other Linux systems.

This is also reflected in the -mabi=aapcs or -mabi=aapcs-linux switches to GCC: aapcs defines enums to be a variable sized type, while with aapcs-linux they are always ints (4 bytes).

System call interface

Two things change in the system call interface: alignment of 64-bit parameters passed in registers and the way the system call number itself is passed.

With EABI, 64-bit function parameters passed in registers are aligned to an even-numbered register instead of using the next available pair.

Here's an explanation from Russell King, 12 Jan 2006:

We have r0 to r6 to pass 32-bit or 64-bit arguments. With EABI,
64-bit arguments will be aligned to an _even_ numbered register.
Hence:
long sys_foo(int a, long long b, int c, long long d);
will result in the following register layouts:
        EABI                            Current
r0      a                               a
r1      unused                          \_ b
r2      \_ b                            /
r3      /                               c
r4      c                               \_ d
r5                                      /
r6      ... out of space for 'd'        ... room for one other int.
r7      syscall number

Since this already causes an incompatible change in the system call interface, the opportunity has been taken to slip in a more efficient, totally incompatible way of doing system calls: instead of using the swi __NR_SYSCALL_BASE(==0x900000)+N instruction, where N is the number of the system call, swi 0 is always used with the system call number stashed in register r7. This is more efficient because the kernel no longer has to go and fish N out of the instruction stream(*), which used to have a negative impact on the efficiency of processors with separate text and data caches (i.e. most ARMs).

Fortunately, the two schemes can coexist and EABI kernels have an option to support the old syscall interface (including old structure layout rules) for running old-EABI binaries. However some features (e.g., ALSA, MD (RAID) and system calls from Thumb mode) do not work correctly from old-ABI binaries.

Some third party EABI toolchains (e.g., CodeSourcery 2005q3) use the old kernel interface via userspace shims in glibc. This is now obsolete and no longer supported by glibc.

(*) This is only true if the old-ABI compatibility option is disabled.

See this article for more details.

Choice of minimum CPU

Thumb interworking suggests armv4t

The EABI includes thumb interworking, which means that 16-bit Thumb and normal 32-bit ARM instructions can be mixed at function-level granularity.

Thumb interworking is mandatory according to the ARM EABI spec and requires every return and indirect function call to execute a BX instruction to set the core to the correct state, which is only present in armv4t cores and above. Gcc, too, only supports thumb interworking for armv4t and above.

So Debian armel runs on a minimum CPU of ARMv4t and by default the Debian armel GCC generates code for armv4t (rather than the usual default ARM target of armv5t).

Other scenarios

However a lower entry-level CPU is possible to do using different function return sequences which are of various speeds, and that work and/or allow Thumb interworking on different selections of the ARM architectures.

0.  mov pc,lr 

Is what GCC currently emits for -march=armv4. It works on ARMv4 and above but is only Thumb interworking-safe from ARMv7.

1.  bx lr 

Is what GCC emits for -march=armv4t. It works on ARMv4t and above and Thumb interworking is possible on ARMv4t and above. Excludes armv4, the StrongARM which are very common and some armv5users, but armv5 with no t seems a rare processor. CC needs modifying to implement any of the following choices.

2.  tst lr, #1; moveq pc, lr; bx lr 

was suggested by Paul Brook as an alternative to BX. It works on ARMv4 and above and Thumb interworking is possible on ARMv4t and above, with the extra cost of two instructions per indirect call/function return, though in line with the run-on-minimum-hardware Debian way.

Here is a patch by Richard K. Pixley which illustrates what is needed, but is not (April 2007) tested: http://lists.debian.org/debian-arm/2007/05/msg00015.html

This is problematic because hand written assembly has to be manually fixed.

3.  ldm/ldr 

Works on ARMv4 and above but Thumb interworking is only possible on ARMv5t and above, excluding ARMv4t users from using Thumb code with Debian. Gcc currently emits this for non-leaf functions on ARMv4 and ARMv5 (but not ARMv4t, where it uses BX, the only way to do interworking on v4t). Although a single instruction, this method may be slower than the three-instruction sequence because of the memory accesses it requires.

4. Drop Thumb interworking

A final option would be simply to compile the standard Debian repo --with-arch=armv4 --with-no-thumb-interwork. This would work on all processors without the dangers inherent in modifying GCC and, according to the GCC manual page, saves a slight size and speed overhead caused by being thumb-interworkable.

There is significant discussion of the technical merits of these various schemes in the debian-arm mailing list thread Re: ARM EABI port: minimum CPU choice of which the above is a partial summary.

5. tat says that simply compile for armv3 would work, though the code would be relatively slower on the most common, later CPUs. armv3 is fairly rare: Psion 5

6. Kernel emulation traps

It may be possible to catch illegal instruction in the kernel generated by the missing "BX" instruction, in the same way as missing hard floating point instructions can be emulated. It wouldn't be that fast on armv4 hardware (causing a context switch per function call/return) but such a kernel hack would allow the current repository to be used unmodified on armv4 hardware.

7. Linker fixups

The EABI provides mechanisms (R_ARM_V4BX relocations) for the linker to fixup bx instructions. Currently the linker only knows how to convert these to mov pc instructions, so you have to choose between armv4 or interworking at static link time. However the linker could be taught how to convert these into branches to a tst;moveq;bx stub. This has the advantage of also working for hand written assembly. It may be desirable to get the compiler to also generate this triplet inline for performance reasons.

This is implemented in recent binutils. Code should be compiled with -march=armv4, and arrange for --fix-v4bx-interworking to be passed to the linker and --fix-v4bx to be passed to the assembler. A gcc patch may also need backporting to avoid and earlier sanity check.

If you pass --fix-v4bx to the linker it will generate plain v4 binaries, which are not interworking safe, so should not be used on later cores (which may have Thumb libraries). --fix-v4bx-interworking generates code that works on armv4, and is also interworking safe on later hardware.

The limitation of this option is that any bx instruction will clobber the condition codes. The ABI specifies that condition codes are normally call clobbered, so normally this is not a problem. AFAIK there is only one exception. The libgcc cfcmp* routines (gcc/config/arm/ieee-{sf,df}.S) need to preserve the C and Z flags.

The linker fixup does introduce some additional overhead, so it may be desirable to also implement (2). Care should be taken to avoid double fixups.

Why a new port

In Debian, we want to assure complete binary compatibility. Since the old ABI is not compatible with the new one, we can't allow packages built with old ABI to link against new-abi libs, or the other direction.

Status

Armel (EABI) was released with Lenny as it was in good shape by then. That release thus contained both arm and armel. Arm was dropped in Squeeze.

Build daemons

See ArmEabiBuildd

Supported hardware

Debian/armel can be run on ARMv4t and any newer systems where a Linux kernel exists and enough memory (32MB+) and storage space (1GB+). The official Debian kernel only supports a tiny subset of the systems.

ixp4xx

ixp4xx is a low-end xscale based ARM network processor from Intel. It includes ethernet and usb on the same chip, allowing manufacturers to create cheap, if somewhat slow, network attached Linux systems.

  1. Linksys NSLU-2, nickname "slug", the most popular Debian/Arm device. install instructions

  2. Freecom FSG-3

There is a bunch of others ixp4xx platforms supported in Debian kernel, but their status and install instructions are unknown at the moment.

iop3xx

IOP 3xx series is a 400-600Mhz xscale based ARM core from intel. The IOP series of chips is a particularly interesting platform to run Debian since it has a focus on storage and therefore usually offers SATA and plenty of memory unlike most embedded systems.

  1. Thecus N2100 Install guide

  2. IO-Data glan tank Install guide

  3. Intel boards: EM7210 (SS4000E NAS), IQ31244, IQ80321, EP80219. support included in kernel, status unkown.

Other NAS devices based on intel IOP3xx chips exist, Such as Thecus N4100, but their kernel haven't been included in mainline (Linus's kernel) yet.

Marvell orion

Orion is a system on a chip (SoC) from Marvell that integrates an ARM CPU, Ethernet, SATA, USB, and other functionality in one chip. There are many Network Attached Storage (NAS) devices on the market that are based on an Orion chip. They make nice home servers that are fairly powerful, pretty quiet and don't consume too much electricity. Orion based devices are a great platform to run Debian and together with Debian they can be a very powerful environment.

  1. Qnap TS-109, TS-209, TS-409. Install instructions

  2. HP mv2120 Install instructions

  3. Buffalo Kurobox Linkstation pro/live
  4. D-link DNS323 (kernel only)

A bunch of other orion platforms are being included to mainline Linux soon

Others

These platforms are not supported officially (at least yet). However instructions and user communities exist.

  1. Sharp zaurus (pxa2xx)install instructions

  2. Openmoko Freerunner (samsung arm core)install instructions

  3. Nokia N800/N810 tablets (TI omap2) install instructions

  4. Nokia N900 tablet / mobile phone: Work in Progress, see the Nokia N900 Packaging Team

  5. Texas Instruments Beagleboard (TI omap3) install instructions

  6. Toshiba AC100 Netbook: Work in Progress, see this thread on the Debian ARM mailing list and especially this mail with installation instructions

Porting to new platforms

Unlike x86, each and every arm platform boots in a slightly different way. Thus, most of work of getting Debian running will involve dealing with bootloader and Kernel. Which is not really debian-specific work. After that, people can start working porting debian-installer for the system in question.

References

从理论到代码:手把手教你用Matlab复现MMC的HSS阻抗模型(附避坑指南) 本文详细介绍了如何使用Matlab复现MMC的HSS阻抗模型,涵盖谐波状态空间(HSS)理论、代码实现步骤及常见问题解决方案。通过谐波线性化和序阻抗建模技术,帮助工程师准确分析MMC的阻抗特性,并提供避坑指南以解决矩阵维度错误、收敛性问题和频域转换陷阱等难点。 阅读详情

相关推荐

在线机器学习(OML-AD)应对时序数据概念漂移的异常检测实战

时序数据异常检测是监控系统健康、识别业务风险的核心技术。其基本原理是通过预测模型学习数据的正常模式,并将预测误差作为异常判定的依据。然而,当数据背后的统计规律随时间发生变化,即发生概念漂移时,传统的静态模型会失效,导致误报和漏报激增。在线机器学习技术通过增量学习,使模型能够随每个新数据点实时微调,为预测式异常检测提供了动态适应能力,从而在数据流持续演化的场景下保持检测的鲁棒性。这种将预测与检测无缝衔接的OML-AD框架,尤其适用于工业监控、金融风控等对实时性与资源效率要求高的领域,有效解决了概念漂移这一核心

weixin_29889665的博客 529

【arm-gcc开发STM32】开启stm32f4的FPU

编译环境 gcc:arm-none-eabi-gcc version9.3.1 stm32f4标准库:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 配置步骤 使用arm-none-eabi-gcc编译stm32f4的程序,要开启浮点运算单元FPU,只需要添加下面两个编译选项 -mfloat-abi=hard -mfpu=vfpv4-d16 -mfloat-abi=hard指示gcc编译器生成浮点指令 -mfpu=vfpv4-d16用于指定FPU 原理 要使用stm32f4的FP

weixin_42415539的博客 5776

超级详细!!!新手使用AutoDL跑深度学习(MixVPR项目)的学习记录

新手第一次在AutoDL上跑深度学习的实验,遇到一些问题,简单记录一下。如果大家发现问题,欢迎和我讨论。

weixin_45152283的博客 5万+

ABI EABI

http://bbs.chinaunix.net/thread-1950213-1-1.html 这个是友善之臂的linux内核移植里头提到的那篇文章,我以前也转载过,不过好像没找到这么全的出处。 ABI和API是不一样的,ABI是强调的是B,也就是二进制级别的兼容。P是编程。I是接口。 应该是关于I的设计问题,我不太理解,应该很深刻。想不到编译器竟然这么有学问。

zhenglib18的专栏 3155

海康视觉相机驱动软件MVS参数配置全攻略(附接线图+避坑指南)

本文提供了海康视觉相机驱动软件MVS从硬件连接到软件参数配置的完整指南。详细解析了供电与通讯线缆的区分、PNP/NPN信号逻辑的接线避坑方法,并重点阐述了MVS软件中触发模式、网络IP配置、图像采集及光源控制等核心参数的设置技巧,旨在帮助用户快速完成相机调试,实现稳定高效的图像采集。

weixin_29204205的博客 397

SiamFC++笔记

SiamFC++: Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines 文章根据这些思路:引入分类和目标状态估计分支(G1),无歧义的分类得分(G2),无先验知识的跟踪(G3)和评估质量得分(G4)来设计SiamFC ++。 SiamRPN ++和SiamFC ++的比较(红色部分代表得分高的区域): guide: G1 : 分类和状态估计任务的分离:分类任务将目标从干扰物和背景中分类出来,目标状态

木木JL的博客 9432

arm-linux-gcc硬浮点,ARMCC和GCC编译ARM代码的软浮点和硬浮点问题

本文介绍了ARM代码编译时的软浮点(soft-float)和硬浮点(hard-float)的编译以及链接实现时的不同。从VFP浮点单元的引入到软浮点(soft-float)和硬浮点(hard-float)的概念,然后是在GCC和ARMCC RVCT工具链下的具体编译参数。VFP (vector floating-point)从ARMv5开始,就有可选的Vector Floating Point ...

weixin_32480007的博客 806

信号完整性基础04:串扰(1)

我们理解了“单个”传输线(传输线是信号路径+回流路径,切记~),但大多数情况下单独“传输线”的情况并不多见(理想情况下的同轴线缆可以算一个),大多数我们PCB板上有成百上千条走线,它们组成了一个“大社会”,就如当年的TVB神剧《创世纪》一样,到处充满着恩怨情仇;稍处理不慎,单板这个“社会”就会崩溃。那么我们要从哪里入手去理解它呢?最基本的就是从两条PCB走线(传输线)之间的串扰开始。好,年前倒数第二章:《为什么会有串扰》。 ps:我们了解了x射线是啥,那么今天开始讲“放射线”,这两种东西是否就是同一种呢~

WKEZHENG的博客 6031

RT-Thread源码-2-上下文切换函数剖析

PendSV_Handler /* r0 --> switch from thread stack * r1 --> switch to thread stack * psr, pc, lr, r12, r3, r2, r1, r0 are pushed into [from] stack */ .global PendSV_Handler .type PendSV_Handler, %function PendSV_Handler: /* 失能中断进行上下文切换 */ .

qq_36535265的博客 955

全桥LLC谐振变换器变频控制工作原理与仿真

全桥LLC谐振变换器以其效率高、全范围软开关、器件电应力小等优点,越来越多地应用于大功率场合。电力电子技术的发展日益追求高频化,所带来的问题是半导体开关器件高频运行时的开关损耗急剧增加。各种软开关电路随之出现。可以有效减小开关损耗,使进一步提高开关频率成为可能。谐振式开关因其可在电流自然过零点开通半导体器件,实现零电压开关,特别适合采用MOSFET作开关的装置。最简单的谐振电路有串联谐振(SRC)和并联谐振(PRC)。SRC只能工作于降压状态,应用受限;

晞子的技术札记 3065

把浮点数这件小事讲清楚:ABAP 7.51 里 Open SQL 与 ABAP CDS 的 FLTP 新玩法与避坑指南

ABAP浮点数计算的风险与应对 摘要:ABAP项目中的浮点数(FLTP)在跨平台计算时存在误差风险,同一逻辑在不同数据库平台可能产生细微差异。ABAP 7.51新增了两项关键能力:1)Open SQL和ABAP CDS中可为AVG函数指定结果类型,避免默认返回FLTP;2)ABAP CDS提供FLTP_TO_DEC转换函数。但需注意这些转换仍可能存在平台相关差异,且FLTP_TO_DEC会截断而非四舍五入小数位。开发者在涉及金额、数量等关键业务计算时,应明确数值语义并设计容错机制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 213

[Binary Hacking] ABI and EABI

Following are some general papers about ABI and EABI. Entrance https://en.wikipedia.org/wiki/Application_binary_interface PowerPc Embedded Application Binary Interface (EABI) ...

weixin_34331102的博客 88

黑猫带你学eMMC协议第14篇:eMMC FFU详解(Field Firmware Update)

1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 1、ffu相关寄存器有哪些? 2、如何设置ffu? 3、什么是ffu?是否能够更新旧版本的固件到emmc? 4、ffu配置流程图。 2 什么是FFU 主机下载新的固件到eMMC,下载成功后eMMC将固件安装到设备。 3 相关寄存器/命令 SUPPORTED_MODES [493] FFU_FEATURES [492] 该

黑猫奥利奥的博客 4657

linux arm 64 hard float abi,浮点 _ 运算处理方式(软硬-mfloat-abi=) _ 浮点协处理器类型 -mfpu=...

本文介绍了ARM代码编译时的软浮点(soft-float)和硬浮点(hard-float)的编译以及链接实现时的不同。从VFP浮点单元的引入到软浮点(soft-float)和硬浮点(hard-float)的概念,然后是在GCC和ARMCC RVCT工具链下的具体编译参数。VFP (vector floating-point)从ARMv5开始,就有可选的Vector Floating Point ...

weixin_34894242的博客 2837

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IAR Error[Pe147]: declaration is incompatible with '__interwork __softfp unsigned long __get_PSP(vo

打开一个以前编译正常的项目(用IAR5.5建立的),编译时提示如下错误(现在用的IAR6.3): Error[Pe147]: declaration is incompatible with "__interwork  __softfp unsigned long __get_PSP(void)" (declared at line 52 of "C:\Program Files\IAR

Neil_Wong的博客 2823

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

arm-linux-gcc 硬浮点,ARMCC和GCC编译ARM代码的软浮点和硬浮点问题

原标题:ARMCC和GCC编译ARM代码的软浮点和硬浮点问题本文介绍了 编译时的 (soft-float)和 (hard-float)的编译以及链接实现时的不同。从VFP浮点单元的引入到软浮点(soft-float)和硬浮点(hard-float)的概念,然后是在GCC和 RVCT工具链下的具体编译参数。 VFP (vector floating-point)从ARMv5开始,就有可选的 Vect...

weixin_42548752的博客 719

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned int __iar_b

使用新版本的IAR编译工程报错: Error[Pe147]: declaration is incompatible with “__nounwind __interwork __softfp unsigned int __iar_builtin_REV16(unsigned int)” (declared at line 199 of "D:\ G:\STM32F1\project\Librar...

jxndsfss的专栏 8451

ARM 编译选项的默认关系 001

在编译系统移植的时候,不同的编译器的配置经常因为配置的系统不同而需要跳转。 例如从cmake系统到gyp系统,有时候一些宏定义的编译器内部默认的,通过编译选项才能修改,尤其带“__xx”开头的编译宏定义。 本文尝试记录工作中遇到的一些,隐晦的编译错误和找不到的编译宏所对应的编译选项 1 __ARM_PCS_VFP 这个编译宏的意思是, __VFP_FP_

山云的专栏 6615

ARMCC和GCC编译ARM代码的软浮点和硬浮点问题

本文介绍了ARM代码编译时的软浮点(soft-float)和硬浮点(hard-float)的编译以及链接实现时的不同。从VFP浮点单元的引入到软浮点(soft-float)和硬浮点(hard-float)的概念,然后是在GCC和ARMCC RVCT工具链下的具体编译参数。 VFP (vector floating-point) 从ARMv5开始,就有可选的 Vector Floating

hunanchenxingyu的专栏 3万+

解决Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __ge

在proteus7.10仿真samples中VSM for Cortex M3的evalboard工程时,把include中的库文件链接上去后会出现下面的错误: Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __get_PSP(void)"  F:\pso

caoyongsheng的博客 2万+

ARM编译程序参考

from: http://mcuos.com/thread-2843-1-1.html ———————————————————————————————————————————————————————————— ARM编译程序参考 介绍ARM编译程序的ARM特有方面,包括: Pragmas

zhouchibaooo的专栏 487

ARMCC和GCC编译ARM代码的软浮点和硬浮点问题 (转)

本文介绍了ARM代码编译时的软浮点(soft-float)和硬浮点(hard-float)的编译以及链接实现时的不同。从VFP浮点单元的引 入到软浮点(soft-float)和硬浮点(hard-float)的概念,然后是在GCC和ARMCC RVCT工具链下的具体编译参数。 VFP (vector floating-point) 从ARMv5开始,就有可选的 Vector Floating

vigour1000的专栏 2217

arm芯片中的浮点运算(二)

ABI即“application binary interface”,即编译器将c代码编译成汇编代码时使用的一种规则 使用规范如下: 在编译带有浮点参数的函数时,有三种可能的编译选项:  -mfloat-abi=soft  -mfloat-abi=softfp  -mfloat-abi=hard "soft"选项:表明不使用FPU硬件,而是使用GCC的整数算术运算来模拟浮点运算。 "

yuanlu837的专栏 1万+

嵌入式实时操作系统之上下文切换

好久没有更新博客了,今天想学习一下嵌入式实时操作系统的上下文切换,浅谈一下自己的学习成果,如果有理解不正确的,欢迎各位大神批评指正。下面就以arm-contexM4为例,来介绍一下嵌入式实时操作系统是如何进行上下文切换的。那么pendSV中断是如何触发的呢?第二种就是从一个当前线程切换到另外一个线程。

weixin_45560089的博客 681

SAM4E单片机之旅——23、在AS6(GCC)中使用FPU

浮点单元(Floating Point Unit,FPU),是用于处理浮点数运算的单元。 为使用FPU,除了需要启用FPU外,还需要对编译器进行设置,以使其针对浮点运算生成特殊的指令。虽然在Atmel Studio 6中,开发板使用的工程模板中默认就完成了这两部分工作,但这次仍然对设置的方法进行介绍,同时简单测试一下FPU的效率。 一、 编译器设置 AS6.1 SP2中,使用的编译器为...

weixin_30642869的博客 393

Rtthread线程源码分析

Rtthread线程源码分析 /** * This function will create a thread object and allocate thread object memory * and stack. * * @param name the name of thread, which shall be unique * @param entry the entry function of thread * @param parameter the parameter of th

weixin_43522787的博客 1389
上一篇: EABI和OABI
下一篇: android在armv4t中跑
flymachine
博客等级 码龄23年 253粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值