Tag: arm

使用__asm__ __volatile__(“”:::“memory”)

基本上__asm__ __volatile__ ()是做什么的,ARM架构的"memory"意义是什么?

Windows Phone 7和本地C ++ / CLI

微软最近发布了新的Phone 7平台的工具和文档,让那些拥有C ++代码库的人(像我一样)不再支持本地开发。 虽然我发现这个决定被推翻了,但我对此表示怀疑。 所以我在想,如何让这个代码库可以通过C ++ / CLI编译来实现Phone 7的可行性。 当然,用户界面部分无法移植,但我不清楚其余部分。 任何人都有类似的经历? 我不是在讨论那些低层次的代码 – 但是模板和智能指针的使用相当频繁。

重复符号架构armv7

尝试在我现有的应用程序中使用Layar SDK时出现以下错误。 我该如何解决这个问题? Ld /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos/hub.app/hub normal armv7 cd /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub setenv IPHONEOS_DEPLOYMENT_TARGET 5.0 setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -L/Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/ZBarSDK -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/Infosound/Lib -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/CrittercismSDK -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/UserVoiceSDK-2.0.4 -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/Libraries -F/Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos -F/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub -filelist /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Intermediates/hub.build/Debug-iphoneos/hub.build/Objects-normal/armv7/hub.LinkFileList -dead_strip -ObjC -all_load -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=5.0 -lMPOAuthMobile -lsbjson-ios -framework LayarSDK -framework Social -framework AddressBook -framework AddressBookUI -framework UIKit -framework QuartzCore -framework Twitter -framework SystemConfiguration […]

测量TLB对Cortex-A9的影响

阅读以下文章后,我想尝试一个作者的testing,即测量效果TLB在最后的执行时间。 我正在研究embeddedCortex-A9的三星Galaxy S3。 根据文件: 我们在L1中有两个用于指令和数据caching的微型TLB( http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388e/Chddiifa.html ) 主TLB位于L2( http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388e/Chddiifa.html ) 数据微型TLB有32个入口(指令微型TLB有32或64个入口) L1'大小= 32千字节 L1caching行== 32字节 L2'大小== 1MB 我写了一个小程序,用N个条目分配一个结构数组。 每个条目的大小是== 32字节,所以它适合在caching线。 我执行几个读取访问,并测量执行时间。 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 […]

什么是ARM的启动过程?

我们知道,对于X86架构:按下电源button后,机器开始执行代码0xFFFFFFF0,然后开始在BIOS中执行代码,以便进行硬件初始化。 BIOS执行后,使用bootloader将操作系统映像加载到内存中。 最后,OS代码开始运行。 对于ARM架构,使用后按下电源button是什么启动过程? 谢谢!

arm gcc toolchain作为arm-elf还是arm-none-eabi,有什么区别?

当你build立一个海湾合作委员会的工具链,有可能把它build立为武装精灵或无武器,但有什么区别? 我今天使用了eabi,但那是因为其他人似乎都这么做了,但是由于这是一个非常糟糕的论点,所以理解这个差别真的很好。 注意:这个工具链可以交叉编译基于Cortex-M3的mcu:s,就像stm32一样。 谢谢 一些链接 : EABI: http://en.wikipedia.org/wiki/Application_binary_interface http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html ELF: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

linux内核如何pipe理小于1GB的物理内存?

我正在学习linux内核的内部知识,在阅读“理解Linux内核”的同时,还碰到了很多与内存有关的问题。 其中之一是,如果我的系统上安装了只有512MB的物理内存,Linux内核如何处理内存映射。 就像我读的那样,内核映射0(或16)MB-896MB物理内存到0xC0000000的线性地址并且可以直接对它进行寻址。 所以,在上面描述的情况下,我只有512 MB: 内核如何从仅512 MB映射896 MB? 在所描述的scheme中,内核进行设置,以便每个进程的页表将从0xC0000000到0xFFFFFFFF(1GB)的虚拟地址直接映射到从0x00000000到0x3FFFFFFF(1GB)的物理地址。 但是,当我只有512 MB物理RAM时,如何映射虚拟地址从0xC0000000-0xFFFFFFFF到物理0x00000000-0x3FFFFFFF? 点是我有一个物理范围只有0x00000000-0x20000000。 在这种情况下用户模式进程呢? 每篇文章只解释了情况,当你安装了4GB内存,内核将1GB映射到内核空间,用户进程使用剩余的RAM。 我会感谢任何帮助提高我的理解。 谢谢..!

if语句在模数之前和赋值操作之前是多余的吗?

考虑下一个代码: unsigned idx; //.. some work with idx if( idx >= idx_max ) idx %= idx_max; 可以简化为只有第二行: idx %= idx_max; 并会取得相同的结果。 有几次我遇到了下一个代码: unsigned x; //… some work with x if( x!=0 ) x=0; 可以简化为 x=0; 问题: 有没有任何意义, if和为什么? 尤其是使用ARM Thumb指令集。 难道这些if被忽略? 编译器做了哪些优化?

GCC中树莓派的交叉编译。 从哪儿开始?

TL / DR :我在哪里可以find关于为ARM(gnueabi)平台(旨在运行在Raspberry Pi设备上)构buildGCC 4.7.0交叉编译工具链的更多信息? 我刚刚有了一个全新的树莓派,我非常渴望为它开始编程。 我已经设法安装GCC工具链(我正在使用Arch Linux系统映像)并编译了一些基本程序,所有工作都正常。 我也试过编译Boost库,因为我经常在项目中使用它们,除了编译速度很慢之外,所有内容似乎都能正常工作( ./bootstrap.sh + ./b2 )。 我离开了几个小时,但几乎没有通过前几个源文件。 在我离开之后,我发现由于RAM短缺而中止了构build过程。 所以,我的猜测是,Rasp Pi在编译像Boost这样的大小的东西时是不够的。 所以,交叉编译出现在我的脑海里。 但是,尽pipe在线提供了大量有关ARM交叉编译的信息,但我发现它很混乱。 哪里开始? 我在Raspberry Pi上有一个最新的GCC版本(4.7.0),所以我希望能够用相同的版本进行交叉编译。 我在哪里可以获得ARM的GCC 4.7.0工具链? (我将在x86 CentOS 6.2上编译) 编辑: 我释放了不需要的GPU内存,并在USB驱动器上设置了4GB的交换分区,而构build文件位于NFS共享上。 Boost现在编译速度要快得多,所以可以pipe理。 我仍然想知道如何在x86 PC上build立一个GCC 4.7工具链进行交叉编译,因为我打算做大量的编译工作,我希望它尽可能快。 编辑2: 由于GCC 4.7.0是相对较新的,似乎没有预先build立的交叉编译器(i386-> ARM)。 我可能要自己build一个,这似乎是一个不平凡的任务(我已经尝试失败了)。 有谁知道一个教程要build立一个GCC交叉编译器,希望为最近的版本之一? 我已经尝试了这个很棒的shell脚本 (这对于构build一个相同的脚本编译器非常有效),并且我已经成功构build了binutils和GCC的先决条件,但是GCC构build仍然失败,出现了许多隐藏的错误。 我真的迷失在这里,所以我非常感谢你的帮助。 GCC在Raspberry Pi上configuration了 –prefix=/usr –libdir=/usr/lib –libexecdir=/usr/lib –mandir=/usr/share/man –infodir=/usr/share/info –with-bugurl=https://bugs.archlinux.org/ –enable-languages=c,c++,fortran,lto,objc,obj-c++ –enable-shared –enable-threads=posix –with-system-zlib […]

在移动设备上testingNEON优化的cv :: threshold()

对于ARM设备(手机),我一直在为OpenCV的阈值function写一些优化。 它应该在Android和iPhone上工作。 但是,我没有一个设备来testing它,所以我正在寻找志愿者给我一点帮助。 如果这激励你更多,我打算将它发送到OpenCV,以便将其集成到主存储库中。 我会对代码的正确性感兴趣,如果它恰好按照预期工作,那么对原始/优化性能进行一些统计。 不要忘记看所有的情况。 所以,这里是代码。 要运行它,请粘贴到位于第228行(截至2.4.2)的opencv/modules/imgproc/src/thresh.cpp – 正好在SSE块的下面,然后重新编译OpenCV。 另外,在文件的顶部添加这一行 #include <arm_neon.h> 主代码体: #define CV_USE_NEON 1 #if CV_USE_NEON //if( checkHardwareSupport(CV_CPU_ARM_NEON) ) if( true ) { uint8x16_t thresh_u = vdupq_n_u8(thresh); uint8x16_t maxval_ = vdupq_n_u8(maxval); j_scalar = roi.width & -8; for( i = 0; i < roi.height; i++ ) { const uchar* src = (const uchar*)(_src.data […]