Articles of arm

如何计算在ARM程序中执行的指令数量?

我想通过计算指令来执行我想对应用程序进行的更改的性能度量。 但是,我不熟悉ARM的debugging接口知道如何做到这一点。 有甚至有这样的事情的接口? 如果有必要,我完全有能力潜入内核,但我的直觉告诉我这种事情应该在用户空间中实现。

chroot进入其他拱门的环境

从Scratch书籍的Linux之后,我设法为ARM上的ARM构build了一个工具链。 直到本书的第6章,在ARM板本身,我可以继续下去,没有任何问题。 我的问题是,如果我可以使用准备好的环境在我的x86_64 Fedora 16笔记本电脑上继续构build第6章的软件? 我想,虽然我已经把所有的二进制文件都拷贝到了笔记本电脑上,但是使用内部的chroot并且感觉自己和ARM板一样,但是使用这本书的命令却没有任何结果: `# chroot "$LFS" /tools/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /tools/bin/bash –login +h chroot: failed to run command `/tools/bin/env': No such file or directory` 二进制文件在那里,但它不属于这个系统: `# ldd /tools/bin/env not a dynamic executable` 二进制文件按照本书编译: # readelf -l /tools/bin/env | grep interpreter [Requesting program interpreter: /tools/lib/ld-linux.so.3] # readelf -l /tools/bin/env | grep […]

在根用户的Android上运行Oracle Java Embedded Suite 7.0(ARM Linux版本)

我的目标是在手机上运行Tomcat Web服务器,但运行任何Java应用程序都可以。 看起来,Oracle Java Embedded Suite 7.0是一个常规的Java SE,可以在ARM设备上运行(免责声明,我以前从未使用Java Embedded)。 我已经通过ADB将其复制到我的手机,但是当我尝试运行java可执行文件时,它说它无法find该文件。

使用ELDK 5.3 APR.H ssize_t错误在Centos 6.3上交叉编译用于ARM的freeswitch

我想在CentOS 6.3上使用ELDK 5.3交叉编译ARM的freeswitch。 在make上发现这个错误: ./include/apr.h:347:2: error: #error Can not determine the proper size for ssize_t 我已经做了以下声明 declare -x CROSS_COMPILE="/opt/eldk-5.3/armv5te/sysroots/i686-eldk-linux/usr/bin/armv5te-linux-gnueabi/arm-linux-gnueabi-" declare -x CC="$CROSS_COMPILE"gcc declare -x CXX="$CROSS_COMPILE"g++ declare -x CPP="$CROSS_COMPILE"cpp declare -x STRIP="$CROSS_COMPILE"strip declare -x RANLIB="$CROSS_COMPILE"ranlib declare -x AR="$CROSS_COMPILE"ar declare -x AS="$CROSS_COMPILE"as declare -x NM="$CROSS_COMPILE"nm declare -x LD="$CROSS_COMPILE"ld export PATH=$PATH:/opt/eldk-5.3/armv5te/sysroots/i686-eldk-linux/usr/bin/armv5te-linux-gnueabi 使用以下标志进行configuration ./configure –target=arm –host=arm-linux –build=i686-linux –prefix=/opt/eldk-5.3/armv5te/rootfs-base/armcodasVL ac_cv_file__dev_ptmx=yes […]

交叉编译期望用于ARM

我已经下载expect5.4 。 我试图交叉编译ARM(PandaBoard)运行精简版的Linux。 在configuration的初始设置,我尝试 Shell$ ./configure –host=ARM configure: WARNING: If you wanted to set the –build type, don't use –host. If a cross compiler is detected then cross compile mode will be used. checking for correct TEA configuration… ok (TEA 3.9) configure: configuring expect 5.45 checking for Tcl configuration… found /home/user1/scripts/tcl8.6.0/unix/tclConfig.sh checking for existence of […]

交叉编译gsoap 2.8。 为胳膊

我想为arm-linux交叉编译gsoap,这是我的configuration命令 ./configure CC="arm-linux-gcc" CROSS_COMPILER="arm-linux-" ARCH="arm" –host=arm-linux LR="arm-linux-lr" LD="arm-linux-ld" LDFLAGS="-static" –enable-static –enable-samples –disable-openssl –prefix=/usr/local/gsoap-2.8 CXX="arm-linux-g++" 运行make后我得到这个错误 arm-linux-gcc -DHAVE_CONFIG_H -I. -I../.. -DWITH_YACC -DWITH_LEX -DSOAPCPP_IMPORT_PATH="\"/usr/local/gsoap-2.8/share/gsoap/import\"" -DLINUX -g -O2 -MT soapcpp2-soapcpp2_yacc.o -MD -MP -MF .deps/soapcpp2-soapcpp2_yacc.Tpo -c -o soapcpp2-soapcpp2_yacc.o test -f 'soapcpp2_yacc.c' || echo './' soapcpp2_yacc.c mv -f .deps/soapcpp2-soapcpp2_yacc.Tpo .deps/soapcpp2-soapcpp2_yacc.Po /bin/bash ../../ylwrap soapcpp2_lex.l .c soapcpp2_lex.c — /bin/bash /home/glassess/local/arm/gsoap-2.8/missing –run flex […]

在linux中,如何通过GNU ARM组件来完成系统调用

到目前为止,我只知道如何通过gnu arm assembly退出一个程序。 #exit(0) mov r0, #0 # return code mov r7, #1 # supervisor service number svc # call supervisor service 但是还有很多其他的系统调用,例如read,write,fork ……我想他们每个人都需要不同的服务号码,不同数量的寄存器作为参数,以及如何使用寄存器的不同规则。 我的问题是我可以从哪里获得关于为每个人编写程序集的信息。 我search谷歌,但信息是在这个话题较less。

如何将dynamic可执行文件转换为静态可执行文件?

如何将预先构build的dynamic可执行文件转换为静态的可执行文件而无需从源代码重新编译? 我在Linux上使用ARMv7 cpu,我已经访问了dynamic可执行文件所需的库。 (我不能使用貂王或者Statifier!)

PCI枚举hack以数据中止exception结束

我正在一个arm-linux板上有几个PCI插槽。 我想检查UBoot中PCI模块的供应商ID /设备ID。 所以我将PCI驱动程序的初始化部分从linux移植到UBoot。 Hack:由于我的主板上的PCI拓扑结构是固定的,所以我在UBoot中自由地对总线编号(pirmary,secondary,subordinate)进行了硬编码,所以我不需要将枚举代码移植到UBoot中。 为了获得总线数字,我编写了一个小型可装载内核模块,一旦内核完成枚举PCI总线上的设备 ,就可以获取设备总线编号。 问题:现在,如果模块存在于PCI插槽中,我可以成功读取它们的ID。 但是,如果一个模块不存在,我尝试读取它的ID,我被ARM的数据中止处理程序击中。 这是否是解决这个数据中止exception的方法,或者在尝试读取ID之前预先知道插槽是否被填充。 更新1:我根据auselen的input修改了UBoot源码,如下所示: start.S中 / /添加以下macros .macro irq_restore_user_regs_mod ldmia sp, {r0 – lr}^ @ Calling r0 – lr mov r0, r0 ldr lr, [sp, #S_PC] @ Get PC add sp, sp, #S_FRAME_SIZE mov pc, lr @ return & move spsr_svc into cpsr .endm 更改data_abort代码如下 data_abort: get_bad_stack irq_save_user_regs […]

如何从.tar.gz制作一个.ubi文件

如何从.tar.gz或文件夹如何可以做一个.ubi文件? 我看着这个(不帮我): 创buildUBI图像 要从你创build的rootfs创build镜像,首先需要创build描述你的ubi镜像的ubi.ini文件。 创build一个常规的文本文件,ubi.ini,示例内容,更多信息运行ubinize -h: [ubi_rfs] mode=ubi image=ubifs.img vol_id=0 vol_size=87349248 vol_type=dynamic vol_name=ubi_rfs vol_alignment=1 vol_flags=autoresize 接下来,您将运行实际构build它的命令。 这里ubi.ini是你刚才创build的文件,ubifs.img是一个临时文件,你可以删除一次,而your_erootfs.ubi是将被创build的rootfs映像的名称。 sudo /usr/sbin/mkfs.ubifs -m 2048 -e 129024 \ -c 677 -r /path/to/rootfs ubifs.img sudo /usr/sbin/ubinize -o your_erootfs.ubi \ -p 131072 -m 2048 -s 512 -O 512 ubi.ini