标签: arm

寻找ARM Thumb2的有效整数平方根算法

我正在寻找一个快速,仅整数算法来找到无符号整数的平方根(整数部分).代码必须在ARM Thumb 2处理器上具有出色的性能.它可以是汇编语言或C代码.

任何提示欢迎.

embedded arm square-root

42
推荐指数
6
解决办法
5万
查看次数

Android架构用法?

我有一些相当大的应用程序二进制大小的本机库.我调查了APK拆分,但维护和QAing多个APK不是我想做的事情.

因此,我想使用ndk.abiFilters Gradle属性在我的发布版本风格中排除未使用的体系结构.(调试版本我想单独留下,以便我可以在x86上运行HAXM加速仿真器).

我想在我的发布版本中只有armeabi-v7a和arm64-v8a,但我不确定是否值得担心我正在放弃的其他架构的市场份额.经过大量的回顾,我找不到任何ARMv6(armeabi),MIPS,x86或x86_64的市场份额参考.我的直觉告诉我,后三者几乎不存在,但我不确定ARMv6.

在一个论坛上找到了这个链接,该论坛上有一系列使用各种架构的手机.某处有更可靠的东西吗?也许有%的用户类似于Android版本的仪表板?

如果我只是为armeabi-v7a和arm64-v8a(或者armeabi,armeabi-v7a和arm64-v8a)构建我的原生库,那么我还有什么别的想念?

android arm android-ndk

41
推荐指数
3
解决办法
1万
查看次数

测量TLB对Cortex-A9的影响

在阅读了以下论文后,https://people.freebsd.org/~lstewart/articles/cpumemory.pdf("每个程序员应该了解内存的内容")我想尝试一下作者的测试,即测量效果TLB的最终执行时间.

我正在研究嵌入Cortex-A9的三星Galaxy S3.

根据文件:

我写了一个小程序,用N个条目分配一个结构数组.每个条目的大小为== 32个字节,因此它适合缓存行.我执行几次读取访问,并测量执行时间.

typedef struct {
     int elmt; // sizeof(int) == 4 bytes
     char padding[28]; // 4 + 28 = 32B == cache line size
}entry;


volatile entry ** entries = NULL;

//Allocate memory and init to 0
entries = calloc(NB_ENTRIES, sizeof(entry *));
if(entries == NULL) perror("calloc failed"); exit(1);

for(i = 0; i < NB_ENTRIES; i++)
{
      entries[i] = mmap(NULL, …
Run Code Online (Sandbox Code Playgroud)

c benchmarking arm embedded-linux cortex-a

39
推荐指数
1
解决办法
1448
查看次数

什么是ARM Thumb指令集?

在"ARM11TechnicalRefManual"的第1-34节"拇指指令集"下,它说:

"Thumb指令集是最常用的32位ARM指令的子集.Tumb指令长16位,并且具有相应的32位ARM指令,对处理器型号具有相同的影响."

谁可以解释更多关于这个特别是第二句话,并说处理器如何执行它?

arm instruction-set thumb

38
推荐指数
1
解决办法
3万
查看次数

Windows Phone 7和本机C++/CLI

微软最近发布了新的Phone 7平台的工具和文档,让那些拥有大型C++代码库的人(比如我)感到沮丧,不再支持本机开发了.虽然我发现有关这一决定被推翻的猜测,但我对此表示怀疑.所以我想通过调整它在C++/CLI下进行编译来使Phone 7可用的代码库是多么可行.当然用户界面部件无法移植,但我不确定其余部分.有人有类似的经历吗?我不是在谈论那些做重度低级的东西的代码 - 但是经常使用模板和智能指针.

jit arm native c++-cli windows-phone-7

37
推荐指数
3
解决办法
2万
查看次数

使用arm-linux-gnueabi-gcc交叉编译Android的静态C hello世界

我想使用arm-linux-gnueabi-gcc从C构建静态hello世界,而不是使用NDK独立工具链或代码源.

在Ubuntu ......

我做了以下事情:

sudo apt-get install gcc-arm-linux-gnueabi
Run Code Online (Sandbox Code Playgroud)

我创建了一个像这样的hi.c:

#include <stdio.h>

int main(int argc, char** argv) {
   printf("hello world\n");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我编译它像这样:

arm-linux-gnueabi-gcc -static hi.c -o hi 
Run Code Online (Sandbox Code Playgroud)

我在这样的模拟器上运行它:

adb push hi /data/hi
adb shell /data/hi
Run Code Online (Sandbox Code Playgroud)

但是,我得到了这个:

[1]   Illegal instruction     /data/hi
Run Code Online (Sandbox Code Playgroud)

我忘记了什么步骤?根据过去的经验,这"应该"有效,但我显然搞砸了.

c android arm cross-compiling android-ndk

36
推荐指数
3
解决办法
6万
查看次数

arm-eabi arm-gnueabi和gnueabi-hf编译器之间的区别

arm-eabi,gnueabi和gnueabi-hf交叉编译器有什么区别.我发现很难选择编译器.是否有针对arm的本机编译器?

linux gcc arm linux-device-driver linux-kernel

36
推荐指数
1
解决办法
3万
查看次数

如何在Raspberry Pi上运行没有操作系统的C程序?

我想尝试将Raspberry Pi用于一些不同的低级嵌入式应用程序.唯一的问题是,与可用的AVR和PIC微控制器板不同,Raspberry Pi通常运行一个操作系统(如Raspbian),它在所有正在运行的程序中分配CPU时间,并使其对某些实时应用程序不切实际.

我最近了解到,假设你有一个像GRUB一样的bootloader,在x86上运行一个C程序(以内核的形式)只需要很少的实际设置,只需要一个汇编程序来调用main函数和实际的C代码.

有没有办法用Raspberry Pi实现这一目标?这是学习低级ARM编程的好方法,它已经有一些复杂的外围设备(USB,以太网等).

c embedded arm low-level raspberry-pi

36
推荐指数
2
解决办法
3万
查看次数

ARM ABI和EABI的目的是什么?

我越看这篇PDF,我就越不明白这意味着什么.另外,我想对其他人12发表一些评论.

arm abi eabi

33
推荐指数
2
解决办法
4万
查看次数

为什么ARM PC寄存器指向下一个要执行的指令后?

根据ARM IC.

在ARM状态下,PC的值是当前指令的地址加上8个字节.

在Thumb状态:

  • 对于B,BL,CBNZ和CBZ指令,PC的值是当前指令的地址加上4个字节.
  • 对于使用标签的所有其他指令,PC的值是当前指令的地址加上4个字节,结果的位[1]清零以使其字对齐.

简单地说,PC寄存器的值指向下一条指令后的指令.这是我没有得到的.通常(特别是在x86上)程序计数器寄存器用于指向要执行的下一条指令的地址.

那么,底层的前提是什么?有条件执行,也许?

assembly arm

33
推荐指数
1
解决办法
2万
查看次数