arm

Strange content when debugging some Armv5 assembly code

一笑奈何 提交于 2020-02-02 16:00:29
问题 I am trying to learn ARM by debugging a simple piece of ARM assembly. .global start, stack_top start: ldr sp, =stack_top bl main b . The linker script looks like below: ENTRY(start) SECTIONS { . = 0x10000; .text : {*(.text)} .data : {*(.data)} .bss : {*(.bss)} . = ALIGN(8); . = . +0x1000; stack_top = .; } I run this on qemu arm emulator. The binary is loaded at 0x10000 . So I put a breakpoint there. As soon as the bp is hit. I checked the pc register. It's value is 0x10000 . Then I

Registering multiple Fast interrupt sources on ARM Linux

笑着哭i 提交于 2020-02-01 09:21:32
问题 I have been working with the Linux interrupt on ARM: request_irq() can be used to register an interrupt. On a single interrupt line you can register multiple interrupts with SHA_SHIRQ , i.e normal IRQ. On a particular interrupt line does Linux allow to register multiple SA_INTERRUPT ? That is can we register multiple interrupt handlers for an ARM fast interrupts or FIQ s? 回答1: Like the IRQ , the FIQ has a single point of entry from the vector table. You must inspect the interrupt controller

Registering multiple Fast interrupt sources on ARM Linux

爷,独闯天下 提交于 2020-02-01 09:21:06
问题 I have been working with the Linux interrupt on ARM: request_irq() can be used to register an interrupt. On a single interrupt line you can register multiple interrupts with SHA_SHIRQ , i.e normal IRQ. On a particular interrupt line does Linux allow to register multiple SA_INTERRUPT ? That is can we register multiple interrupt handlers for an ARM fast interrupts or FIQ s? 回答1: Like the IRQ , the FIQ has a single point of entry from the vector table. You must inspect the interrupt controller

avoiding text relocations when mixing c/c++ and assembly in a .so

人走茶凉 提交于 2020-02-01 09:11:39
问题 I am trying to remove all text relocations from an .so that mixes c, c++ and assembly. For c/c++ -fpic takes care of PIC. On Android ARM target, we are able to call exported asm functions from c/c++ without causing text relocations. But in our implementation we have arrays of data that must be accessible from both C++ and assembly. On C++ it's a plain old array i.e. extern "C" { __declspec(align(32)) int16_t myarray[256]; } and on asm side we use .global myarray . The second we use such a

avoiding text relocations when mixing c/c++ and assembly in a .so

十年热恋 提交于 2020-02-01 09:11:30
问题 I am trying to remove all text relocations from an .so that mixes c, c++ and assembly. For c/c++ -fpic takes care of PIC. On Android ARM target, we are able to call exported asm functions from c/c++ without causing text relocations. But in our implementation we have arrays of data that must be accessible from both C++ and assembly. On C++ it's a plain old array i.e. extern "C" { __declspec(align(32)) int16_t myarray[256]; } and on asm side we use .global myarray . The second we use such a

arm-eabi-4.4.3 引起的错误

你。 提交于 2020-02-01 09:07:34
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc -mthumb-interwork -Ibionic/libc/private -o out/target/product/generic/obj/lib/crtbegin_dynamic.o -c bionic/libc/arch-arm/bionic/crtbegin_dynamic.S prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found (required by prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc) make: *** [out/target/product/generic/obj/lib/crtbegin_dynamic.o] 错误 1 这是在32位Ubuntu上编译引起的arm-eabi-4.4.3版本问题,所以需要修改arm-eabi-4.4.0: $ mv arm-eabi-4.4.3 to arm-eabi-4.4.3.old $ ln -s arm-eabi-4.4.0

arm-eabi-gcc: : No such file or directory编译错误

六眼飞鱼酱① 提交于 2020-02-01 09:05:37
出处: http://blog.csdn.net/codejoker/article/details/5843143 最近在向Android移植一个开源程序,编译的时候总是出现以下错误: arm-eabi-gcc: : No such file or directory 搜索arm-eabi-gcc prebuilt$ find . -name arm-eabi-gcc ./linux-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-gcc ./linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc ./linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc ./darwin-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-gcc ./darwin-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc ./darwin-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc 能搜到啊,那为啥报这个编译错误啊??? 百思不得其解,只好去问公司的一位大拿,两句话就搞定了。原话如下: “哦,这个错误啊? 一般是你的Makefile文件写错了

prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/libc.so.6: version `GLIBC_2.11' not found:解决办法

自闭症网瘾萝莉.ら 提交于 2020-02-01 09:04:10
最近反复搭建android2.3编译环境,采用CyanogenMod for Samsung Captivate。在我 Manual Initial Build一阶段时,出错:prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/libc.so.6: version `GLIBC_2.11' not found   google了很久,大海中找到了答案: cd prebuilt/linux-x86/toolchain/mv arm-eabi-4.4.3 arm-eabi-4.4.3.flcln -s arm-eabi-4.4.0 arm-eabi-4.4.3 注:这个目录是在项目的根目录。   详细请参考:http://crancho.com/wiki/CyanogenMod_for_Samsung_Captivate#Errors_.2F_Solutions   但是,等我编译时候,出错,有人告诉我 prebuilt/linux-x86/toolchain/ 里面的东西是不能随便乱改的,那段错误是没有glibc的原因,好吧,我天真了。那什么是glibc呢?百科之:glibc是gnu发布的libc库,也即c运行库。glibc是linux 系统中最底层的api(应用程序开发接口)

curl交叉编译出错

此生再无相见时 提交于 2020-02-01 05:45:23
背景:交叉编译(arm-linux-gcc)curl 库 环境:Ubuntu18.04、arm-linux-gcc 4.4.1、交叉编译 openssl 成功 这里给出一种解决思路,不一定能解决遇到的问题,可以对应着做一些尝试,具体问题再具体分析 在 交叉编译 curl 的过程中,进行到 Makefile 的配置 复制指令,改成自己的路径,放到终端中: 错误信息: 根据提示查看“ config.log ” 在 main 的上方 ,大概就是错误的具体信息 /usr/local/openssl/arm_openssl/include: file not recognized: Is a directory collect2: ld returned 1 exit status /usr/local/openssl/arm_openssl/include: 没有认出文件,是一个目录(路径) 仔细分析一下,写一个路径前面要加 -I(大写 i )或者 -L,可参考: gcc -I -i -L -l 参数区别 问题就在这里了 修改后重新配置,成功,各个参数都有了值 到这里就结束了,可能遇到的问题不太一样,可以按照这个思路尝试一下 来源: CSDN 作者: GeYi1998 链接: https://blog.csdn.net/weixin_44023406/article/details

Using ARM NEON intrinsics to add alpha and permute

醉酒当歌 提交于 2020-02-01 04:34:25
问题 I'm developing an iOS app that needs to convert images from RGB -> BGRA fairly quickly. I would like to use NEON intrinsics if possible. Is there a faster way than simply assigning the components? void neonPermuteRGBtoBGRA(unsigned char* src, unsigned char* dst, int numPix) { numPix /= 8; //process 8 pixels at a time uint8x8_t alpha = vdup_n_u8 (0xff); for (int i=0; i<numPix; i++) { uint8x8x3_t rgb = vld3_u8 (src); uint8x8x4_t bgra; bgra.val[0] = rgb.val[2]; //these lines are slow bgra.val[1]