Articles of arm

如何获得Android本机代码中的高分辨率定时器?

我正在寻找一种方法来获得Android上的高分辨率定时器(时钟源)。 这必须在本地代码,并可能是相当不便携的。 我想微秒的分辨率,或更好。 对于我的特殊应用,分辨率比精度更重要,而单调的计时器是最好的。 我已经使用Android 4.0.3在特定的ARMv7芯片组上进行了testing。 我到目前为止所尝试的是: clock_gettime(CLOCK_MONOTONIC) :在目标硬件上以1ms为单位递增( EDIT最初由于我的代码中的错误而被认为是10ms,1ms是正确的,但还不是很好) gettimeofday() :类似于clock_gettime 我还没有尝试过: System.nanoTime() :这不是本地的。 我相信这是基于clock_gettime(),但是我更愿意找出底层的东西,直接使用它。 /dev/rtc 某种ARM指令/工具,可能是SysTick ( http://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARMv7-M_ARM.pdf )或通用计时器(GPT)。 另见(相关问题,但不回答): Android JNI中的高精度定时器 在Android上获得高精度定时

gradle + ndkbuild + android studio 2.2如何设置支持的ABI?

我想使用Android Studio与ndkbuild集成。 我的“本地”项目的一部分只为armeabi-v7a-hard和x86构build,并且如果我只是在jni目录中运行ndk-build ,那么所有的工作都很好。 我在Application.mk有适当的行: APP_ABI := armeabi-v7a-hard x86 要将项目整合到android studio中,我将这些行添加到build.gradle : externalNativeBuild { ndkBuild { path 'src/lib/jni/Android.mk' } } 但由于某些原因, gradle build尝试使用APP_ABI=armeabi构build本机代码并失败,因为我的代码只能用armeabi-v7a-hard构build。 那么如何才能告诉gradle只为armeabi-v7a-hard和x86构build我的代码,或者只是不忽略来自Application.mk APP_ABI行? 我尝试这样的变体: defaultConfig { ndk { abiFilters 'x86', 'armeabi-v7a-hard' } } 但是gradle没有这样的信息: ABIs [armeabi-v7a-hard]不适用于平台,将被排除在build筑和包装之外。 可用的ABI是[armeabi,armeabi-v7a,arm64-v8a,x86,x86_64,mips,mips64]。 请注意,我使用ndk 10,而不是最后一个(ndk 13),其中有armeabi-v7a-hard和ndk.dir在local.properties到正确的值。

Android CPU ARM架构

我们有一个Android的CPU相关的代码,我想看看有多less客户使用的设备是ARMv6 / ARMv7,如果还有ARM v5,有多lessARMv6有VFP,什么是Tegra或Neon百分比。 任何提示可以find这样的统计信息? BR STeN

Android NDK代码中的SIGILL

我有一个市场上的NDK应用程序,并得到了关于SIGILL信号的本地崩溃报告。 (我使用谷歌的breakpad生成本机崩溃报告。)这里是详细信息: 我的应用程序是为armeabi-v7a编译的,支持NEON。 它在采用ARM-7(Cortex-A9)的NVIDIA Tegra 2处理器上坠毁。 每次都发生。 (联系用户) 崩溃地址是0x399cc ,信号是SIGILL ,它在我的代码中。 注册和拆卸: r4 = 0x001d50f0 r5 = 0x001d50f0 r6 = 0x598e2a3c r7 = 0x00000000 r8 = 0x00000001 r9 = 0x001c22b0 r10 = 0x00000000 fp = 0x81216264 sp = 0x598e2a18 lr = 0x816399cb pc = 0x816399cc 0x000399c6 <_ZN8Analyzer15setExpAvgFactorEi+22>: blx 0x30508 0x000399ca <_ZN8Analyzer15setExpAvgFactorEi+26>: fconstd d16, #7 0x000399ce […]

为什么gcc emmiting代码与ARM指令集的2字节边界alignment?

我正在使用GCC(包含在Android NDK中的版本)检查我正在为ARM Android平台编译的C程序的汇编语言输出。 我指定了长度为4个字节的ARM指令集,而不是THUMB,但令人惊讶的是,emmited汇编语言代码将函数alignment到2个字节的边界! 下面是生成的代码显示错误.align指令的示例: .Ltext0: .global __aeabi_dmul .global __aeabi_d2iz .section .text.InitializeFIRFilter,"ax",%progbits .align 2 .global InitializeFIRFilter .type InitializeFIRFilter, %function InitializeFIRFilter: .fnstart 根据这个文件 ,正确的alignment应该是4这是有道理的。 我试图通过使用-falign-functions = 4强制alignment,但它被忽略。 这里是我在Android.mk文件中指定的构build标志 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_ARM_MODE := arm LOCAL_MODULE := nativeJadeMobile LOCAL_SRC_FILES := nativeJadeMobile.c fftasm.s LOCAL_LDLIBS := -llog LOCAL_CFLAGS += -marm -ffast-math -O2 -march=armv6 -falign-functions=4 -save-temps -S […]

gcc ON arm / android

我刚刚拿到一个EEE垫变压器。 就像我自己的任何硬件,我想有一个C编译器。 我知道我可以交叉编译,但是我想在设备本身上进行开发。 我search谷歌和所有我似乎可以find如何build立一个x86 / 64 Linux的ARM工具链的页面。 思考?

有没有可能在一个非rooted的android手机上运行本地的arm二进制文件?

那么,我一直在低级别的Android编程(使用CodeSourcery工具链的本地C / C ++)的低水位潜水。 我试着在模拟器上的可执行文件,它的工作。 我想尝试一下真实的设备。 所以我插入我的联系,并将文件推到文件系统。 然后我试图执行这个二进制文件,我得到了一个权限错误。 我挂载它,或者发送它的地方并不重要,我不是root,也不是让我执行它。 有什么办法可以在无根的手机上运行这样的程序吗?

Android模拟器系统映像和AMD处理器

我使用AMD FX X6 6300型处理器。 (它支持虚拟化,我的BIOS设置为ON) 我安装了“Intel x86 Emulator Accelerator”。 当我试图运行英特尔加速器安装程序时,我得到该安装程序无法安装。 (错误是虚拟化) SDK Manager具有以下系统映像选项: Android 4.2.2 Intel x86 Atom系统映像 ARM EABI v7a系统映像 MIPS系统映像 那么下载英特尔x86系统映像有意义吗? 还是没有安装HAXM没用? 我应该下载ARM还是MIPS映像? 你会推荐AMD处理器的模拟器系统映像吗? 或唯一的select是使用快照?

是否有可能将LLVM库编译为android / ARM

我迷上了纯代数/function语言 。 Pure解释器使用LLVM JIT编译器作为其后端。 我想编译 Pure,以便在Android(ARM)上运行。 Pure对LLVM JIT有依赖性。 所以我需要编译Pure的LLVM源码才能运行。 是否有可能为Android(ARM)设备编译LLVM 源代码 ? 网上似乎没有关于这方面的信息。 也许我的search条件是错误的。 searchAndroid LLVM也不会带来很多好的命中。

Android架构的使用?

我有几个本地库,是相当大的,并扩大应用程序的二进制大小。 我看着APK分裂,但维护和QAing多个APK不是我想要做的事情。 所以我想使用ndk.abiFilters Gradle属性排除我的发布版本中未使用的体系结构。 (debugging版本我想单独留下,以便我可以在x86上运行HAXM加速模拟器)。 我正考虑在我的发行版本中使用armeabi-v7a和arm64-v8a,但是我不确定是否值得担心其他架构的市场份额。 经过很多环顾四周,我找不到对ARMv6(armeabi),MIPS,x86或x86_64的市场份额的任何参考。 我的直觉告诉我,后三者几乎不存在,但我不确定ARMv6。 我在一个论坛上find了这个链接 ,其中列出了使用各种体系结构的手机。 有什么地方更可靠吗? 也许有类似于Android版本仪表板的用户的百分比? 如果我只是为armeabi-v7a和arm64-v8a(或armeabi,armeabi-v7a和arm64-v8a)构build我的本地库,还有什么可能会丢失?