其它硬件开发

上证所_mm_movemask_epi8等效方法为ARM NEON

我决定继续在高速弯道的优化和stucked _mm_movemask_epi8 SSE指令。我怎么能与 uint8x16_t 输入改写它ARM霓虹灯? 解决方案 一些测试,它看起来像下面后,code工作正确的: int32_t _mm_movemask_epi8_neon(uint8x16_t输入) { 常量中int8_t __attribute__((对齐(16)))XR ..
发布时间:2016-05-29 14:31:50 其它硬件开发

编译基本的C档为ARM处理器

我使用的GCC工具链的Yagarto重新编译。我想编译这个简单的程序来获得为.elf 可执行文件: INT主要(无效) { 返回(0); } 当键入命令臂无 - EABI - 海合会的main.c 我得到错误信息 C:/ yagarto / bin中/../ lib中/ GCC / ARM-NONE-EABI / 4.6.2 /../../../../臂无 - EA ..
发布时间:2016-05-29 14:31:46 其它硬件开发

不要在ARM指令LDREX / STREX必须在高速缓存对齐的数据进行操作?

在英特尔,参数CMPXCHG必须对齐缓存行(因为英特尔使用MESI实现CAS)。 在ARM,LDREX和STREX独家预订granuales操作。 需要明确的是,这是否意味着随后在ARM上的数据被操作并不一定是高速缓存线对齐? 解决方案 它说,在ARM体系结构参考手册A.3.2.1“未对齐的数据访问”,所以正确的。 LDREX 和 STREX 要求字对齐。这是有道理的,因为不对齐的数据 ..
发布时间:2016-05-29 14:31:42 其它硬件开发

与NEON内在的数据类型兼容性

我对ARM的优化工作使用NEON内部函数,从C + + code。我了解和掌握大部分打字的问题,但我被困在这一个: 指令 vzip_u8 返回 uint8x8x2_t 值(其实两个数组 uint8x8_t )。我想返回的值赋给一个普通的 uint16x8_t 。我没有看到相应的 vreinter preTQ 内在实现这一目标,和简单的强制类型转换将被拒绝。 解决方案 一些定义来回答清楚. ..
发布时间:2016-05-29 14:31:39 其它硬件开发

如何设置在ARM处理器上软件断点?

我怎么做一个x86软件中断等价的: ASM(“INT $ 3”) 在ARM处理器上(特别是一个Cortex A8的)生成,将打破在gdb下执行一个事件? 解决方案 ARM并没有定义一个特定的断点指令。它可以在不同的操作系统不同。 ARM Linux上它通常是一个UND运code(如 FE DE FF E7 )的ARM模式和BKPT( BE BE )。 使用GCC编译器,通常可以使用 ..
发布时间:2016-05-29 14:31:29 其它硬件开发

ARM NEON矢量化失败

我想在我的ARM Cortex-A9使NEON矢量化,但我得到在编译的输出: “不是矢量:不支持相关的语句:D.14140_82 = D.14143_77 * D.14141_81” 下面是我的循环: 无效my_mul(float32_t * __restrict数据1,float32_t * __restrict数据2,float32_t * __restrict出来){ 的for ..
发布时间:2016-05-29 14:31:14 其它硬件开发

为什么在ARM使用两个向量表地址?

在ARM架构有一个低向量地址为0x0 和高向量地址 0xFFFF0000地址。 我想知道为什么可能需要两个向量地址? 在英特尔微处理器和微控制器有一个向量地址。 有没有什么特别的原因有2个向量地址? 解决方案 有些微控制器系列有多个到多个不同的起始地址和/或他们使用相同的地址和交换机进出地址译码的基础上带销这样就可以从创建的启动引导程序由供应商说,还是用户引导程序或用户的应用程序。 ..
发布时间:2016-05-29 14:31:08 其它硬件开发

加载8bit的uint8_t有作为uint32_t的?

我的图像处理项目与灰度图像。我有ARM Cortex-A8处理器的平台。我想利用NEON的。 我有一个灰度图像(考虑下面的例子),并在我的算法FFT,我只添加列。 我如何可以加载 4个8位像素值并行,这是的 uint8_t有,因为四uint32_t的到128之一位NEON寄存器?什么内在的我必须使用要做到这一点? 我的意思是: 我必须加载它们作为32位,因为如果你仔细看,那一刻我做25 ..
发布时间:2016-05-29 14:30:53 其它硬件开发

为什么无符号的类型是ARM CPU比较有效?

我在读手臂手册和来此建议,但没有被提及的原因。 为什么无符号类型更快? 解决方案 ARMv4之前,ARM曾装载半字和有符号字节没有原生支持 。要加载你必须 LDRB 一个符号字节再签收延长值( LSL 它那么 ASR 它背下来)。这是痛苦所以字符是无符号默认 在ARM版本的指令被添加到处理半字和符号值。这些新指令必须挤进可用指令空间。可在空间限制意味着它们不能被制成柔性的原始指令,加载值 ..
发布时间:2016-05-29 14:30:50 其它硬件开发

世界您好,裸机的BeagleBoard

我试图让我的BeagleBoard-XM REV运行的'Hello World“类型的程序。 C,通过调用C 看跌功能从组装。 到目前为止,我一直在使用这个作为参考: http://wiki.osdev.org/ARM_Beagleboard 下面是我到目前为止,但没有输出。 的hello.c 挥发性unsigned int类型* const的UART3DR =(unsigned int类 ..
发布时间:2016-05-29 14:30:38 其它硬件开发

试图加载位置无关code上的Cortex-M3

我有一个嵌入式应用里面会有一个引导程序,这将决定直接从内部闪存的两个应用程序的运行1。我试图让这些应用与位置无关的,这样它们都可以为相同的基地址进行编译。没有操作系统,所以没有动态连接器是可用的。到目前为止,我已经尝试用不太多的成功-fPIE选项(使用gcc)建设。函数调用似乎是正确的,但全局数据不具有正确的地址。本地定义的全局数据似乎有它的地址通过应用从原来的基地址的偏移量抵消。这是在其他文件中 ..
发布时间:2016-05-29 14:30:29 其它硬件开发

与巨大的objcopy把二进制文件

林有问题,当我定义一个基本的C程序全局变量一个ARM9处理器。我使用EABI GNU编译器,并从12KB的小精灵生成的二进制为4GB!我认为这个问题是我的分散文件,但有麻烦我的头周围进出口。 我的ROM 256KB(基地址0xFFFF0000地址)和RAM 32KBs(基本为0x01000000) 段{ 。 = 0xFFFF0000地址; 的.text:{ *(矢量); ..
发布时间:2016-05-29 14:30:24 其它硬件开发

在Linux内核的SMP如何安排工作? (ARM架构)

在Linux中,调度将在特定的时间量已经过去了触发。我的理解,定时器触发中断从而触发调用进度。 在一个SMP系统中,我在书上看到“深入理解Linux内核”,即“每个处理器运行在其自己的调度程序()函数”。 这是否意味着每一个定时器中断触发每个处理器在同一时间做了重新安排? 解决方案 在 ARM SMP系统支持两种类型的中断。 SPI(共享外设中断)和PPI(外围私人中断)。生产者价格指 ..
发布时间:2016-05-29 14:30:22 其它硬件开发

在ARM原子操作

我已经工作了ARM的嵌入式操作系统,但甚至有指ARMARM和Linux源代码后,有几件事情我不明白有关的架构。 原子操作。 ARM公司表示,加载和保存指令是原子和它的执行是保证中断处理程序执行之前完成。通过查看验证 弓/ ARM /有/ ASM / atomic.h中: 的#define atomic_read(ⅴ)(*(挥发性为int *)及(ⅴ) - >计数器) 的 ..
发布时间:2016-05-29 14:30:19 其它硬件开发

ARM的TrustZone发展

我想知道如果任何人有在那里你可以利用ARM的TrustZone上开发板的信息吗?我有一个采用TI公司的OMAP3530与Cortex-A8处理器的BeagleBoard的XM支持信任区域,但是TI证实,他们已经禁用主板上的功能,因为它是一个通用的设备。 进一步研究拉去它采用OMAP4430熊猫板,但没有来自TI的反应和在互联网上的信息非常少。你如何学习如何使用信任区? 祝商祺 Gigu先生 ..
发布时间:2016-05-29 14:30:15 其它硬件开发

itte在臂总成

什么是以下行臂组件做的: 000031e6​​ 2916 CMP R1,#22 000031e8 bf1a itte NE 我得到的第一行(R1相比至22日)但对于第二行(之前我从来没有见过的itte命令和谷歌搜索返回任何内容) 解决方案 这是ARM的IF-THEN-ELSE指令,这是在Thumb-2指令集介绍。 (根据您上述具体的例子,那将是有益的,如果你已经表明,未来3说明随后的 ..
发布时间:2016-05-29 14:30:09 其它硬件开发

如何添加自定义ATAG变量的U-Boot和Linux内核?

我想添加自定义的 ATAG 变量的U-Boot和Linux内核。结果 我怎样才能做到这一点?结果 是否有任何程序在的U-Boot 和的Linux ATAG 变量C $ C>? 解决方案 请按照此过程中, 要达到这个目的,有很2份需要进行修改。一个是U形引导,另一种是Linux内核。 1.需要U-Boot的变化: A.确保CONFIG_CMDLINE_TAG / CO ..
发布时间:2016-05-29 14:30:04 其它硬件开发

在prefetch指令

它出现prefetch使用一般的逻辑是可以补充的是prefetch,提供的code是忙于处理,直到prefetch指令完成其操作。但是,看来如果太多的prefetch指令被使用,那么它会影响系统的性能。我发现,我们需要先有工作code,而不prefetch指令。后来,我们需要在code区的不同地点prefetch指令的各种组合,并做分析,以确定是因为prefetch可能确实提高了code的位置。有 ..
发布时间:2016-05-29 14:30:03 其它硬件开发