其它硬件开发

关于钩臂功能的一个难题,通过修改ELF文件

我想通过挂钩修改ELF文件的二进制的.text功能,我的意思是更换一个指令,如“BL XXXX”与“BL YYYY”中,“YYYY”被点到的ELF文件中的填充区域。跳转后,我保存寄存器和调用的dlopen&安培;对dlsym获得新功能的地址另一个LIB的,调用它,然后恢复寄存器和跳回“XXXX”。 这是不是很辛苦,我也只是一个问题几乎是成功的:我不能在我的钩子函数使用64位的变种。 int类型是 ..
发布时间:2016-05-29 14:38:04 其它硬件开发

在ARM汇编双条件

我很新的ARM和做一类的分配。 我感到困惑的是双条件一样,如果(X> 0安培;&安培; X< 100)。做点什么 我想获得做的是检查在地址内存,如果,如​​果信息是一个大写或小写字符。 我发现这里的链接,但它不是ARM似乎并没有像它可以帮助我。 我想是这样的: BGT R2,#0x60的 BLT R2,#0x7B 但乱扔期待一个地址前pression所以我假设你不能值挺直比较i ..
发布时间:2016-05-29 14:38:00 其它硬件开发

自动插入文件名和放大器;在C程序的日志记录语句行号

我在写C程序为嵌入式ARM处理器。我希望看到在日志记录语句源文件名和行号。 由于编译code没有行号和源文件的知识,我寻找各种方法来有这个自动在编译过程中前插入/ 有没有我可以使用这个标准的任何工具或编译器功能? 我使用的GCC。 例如: 这是什么我会在源文件中写: 日志(“<##文件名和GT;<#行号#>:Hello World”的); 这是什么会真正得到编译: ..
发布时间:2016-05-29 14:37:54 其它硬件开发

未知错误GCC,在编制ARM NEON(严重)

我有一个基于ARM NEON Cortex-A8处理器的目标。我被利用NEON的优化我的code。但是,当我编译我的code我得到这个奇怪的错误。不知道如何解决这个问题。 我试图编译我的主机使用code的Sourcery(PART2)以下的code(第1部分)。 而我得到这个奇怪的错误(PART3)。难道我做错了什么吗?任何人都可以编译这个,看看他们是否也得到同样的编译错误? 奇怪的部分是, ..
发布时间:2016-05-29 14:37:42 其它硬件开发

LDR - 文字池 - ARM

我知道如何使用LDR指令在ARM加载一个直接的价值。 例如: LDR R0,= 0x0804c088 该指令将值( 0x0804c088 )的寄存器 R0 。当我尝试访问该地址被存储在使用 X / X $ R0 使用 GDB 。我得到的消息:无法访问地址的内存 0x0804c088 。但是,这并不是地址,它是存储在寄存器中的值,该地址是存储在文字池 PC 相对地址。 什么是错误,我在那里做 ..
发布时间:2016-05-29 14:37:24 其它硬件开发

转换上浮到只使用位操作一个int(float2int)

我想知道,如果有人可以让我与我的工作有问题的正确方向。我想下面的C函数不使用的是什么只有ARM汇编以及位操作要做到: INT float2int(浮X){ 回报(INT)X; } 我已经codeD这个(int2float),而不许多问题相反。我只是不能确定在哪里这个新的问题开始。 例如: 3(INT)= 0x40400000(浮点) 0011 = 0千万10000000000000000 ..
发布时间:2016-05-29 14:37:21 其它硬件开发

什么是用于Thumb-2指令后缀W的含义是什么?

有对下面的Thumb-2指令的后缀W,它是如何改变指令的语义没有它?搜索结果是非常嘈杂,我没有得到答案。 ADDW R0,R1,#0 解决方案 我看到ADDW中的的Cortex-M3 TRM 表2-5 大型即时数据业务 ADDW和SUBW有12位立即。这意味着他们可以取代从内存literal加载很多。 这也是在快速参考 添加宽T2 ADD路,RN,#< imm12可> ..
发布时间:2016-05-29 14:37:15 其它硬件开发

ARM Cortex-M的编译器的差异

我即将开发上使用C为我的项目STM32处理器的Cortex-M内核的一些固件和搜索在网络上,我发现了很多不同的编译器: KEIL,IAR,Linaro的,Yagarto和 GNU工具ARM嵌入式处理器的。 我想知道,有什么功能上的差别在那里这些编译器可能会影响我的选择的?例如作为一个爱好者,我不需要从厂商的支持或帮助,并在code尺寸的限制是暂时确定。另外,易用性不是主要问题,因为我喜欢学习( ..
发布时间:2016-05-29 14:37:12 其它硬件开发

code探查的​​ARM

我要分析我的code上的臂9,有没有可以给我的函数调用计时和各功能拍摄总周期内的任何探查?我想preFER任何自由探查。我喜欢在Linux中KCacheGrind调试工作。 解决方案 我不知道任何免费的ARM剖析。 您可以尝试 ARM RVDS 4.0专业版。它具有良好的探查。您还可以使用模拟器,而不是真正的硬件它。它简化了一些东西,但是你不会收到关于缓存缺失/内存延迟的信息,和业绩可能 ..
发布时间:2016-05-29 14:37:09 其它硬件开发

与重定位code静态局部变量的问题

我建立这对裸机重定位code的项目。它是一个皮质M3的嵌入式应用。我没有一个动态链接程序,并已在我的启动code实现全部搬迁。 主要是它是工作,但我的本地静态变量似乎被错误地定位。我编译我的code作为如果在内存位置0加载,但我实际上是在位于0x8000的内存中加载它就是 - 他们的地址是由我的可执行文件在内存中的偏移量抵消。静态局部变量有自己的存储地址为0x8000这是不好的偏移量。 我的全 ..
发布时间:2016-05-29 14:37:05 其它硬件开发

在ARM STREX LDREX和原子操作 - 他们可以在I / O寄存器的工作吗?

假设我在修改的几个比特的内存映射I / O寄存器,这可能是另一个进程或和ISR可以在同一个寄存器修改其他位。 能否LDREX和STREX可用于防止这种?我的意思是,他们可以在原则上,因为你可以LDREX,然后更改位(s)和STREX回来,如果STREX失败则意味着另一个操作可能已经改变了reg,你必须重新开始。但是,这些STREX / LDREX机制在非缓存区中使用? 我已经试过这对树莓PI, ..
发布时间:2016-05-29 14:36:52 其它硬件开发

为什么CPSR不是存入银行注册?

在ARM的SPSR是分组寄存器即在模式每次更改后,CPSR被复制到SPSR,模式返回后,将SPSR复制回CPSR。为什么CPSR不是直接存入银行?好像有每模式改变两个额外的指令(复制到SPSR,复制到CPSR) 解决方案 手动模式的变化并不在 ARM 的效率目标。通常情况下,的手动模式的更改仅完成设置栈等在启动或初始化时间。 的 CPSR 是有效的副本。为什么我们有库存的 LR 注册,但 ..
发布时间:2016-05-29 14:36:49 其它硬件开发

交叉编译的Qt的PANDABOARD

我花费数周试图交叉编译的Qt为我的熊猫板,没办法,我无法通过的./configure。如果有人可以给我帮忙,我会AP preciate。 我的主机系统为Ubuntu的13.04×86_64bit(UN运行VirtualBox的) 我的目标系统是PANDABOARD ES Ubuntu的12.04。 在主机箱的所有步骤: 命令和apt-get安装臂Linux的gnueabihf须藤的mkdi ..
发布时间:2016-05-29 14:36:46 其它硬件开发

为什么"过程调用标准ARM体系结构" (AAPCS)要求SP为8字节对齐?

由于这是一个经常性的话题,我把一个问题了。 根据 AAPCS : 5.2.1.1通用协议栈的限制 SP模4 = 0堆栈必须在任何时候都对齐到字边界 在一个公共接口5.2.1.2堆栈限制 SP国防部8 = 0的纸张都必须是双字对齐。 什么是落后8字节对齐合理? 解决方案 有许多可能的原因; 工具从需要它。 LDRD / STRD 要求其在某些特定平台。 ..
发布时间:2016-05-29 14:36:31 其它硬件开发

从FIQ中断处理程序访问内核驱动的数据失败

在ARM FIQ中断,我们只为FIQ使用而保留一些寄存器,而这些都是一个方便的方式来“拯救国家”之间。例如FIQ调用的数据传输。 目前我正在引发从​​FIQ一些 GPIO 引脚,它工作正常。当设置FIQ处理程序,我通过指针数据寄存器,在被映射用的ioremap。工作code是这样的: //驱动程序初始化: 静态字符* dout0; 静态字符* DIN0; ... 静态INT driver_p ..

什么是从背后取下gcc4.7.x的的crt0.o理?

我想升级到 yagarto4.7.2 (然而,另一个GNU工具链ARM,对于那些想知道),这是GCC和Binutils ,移植适用于Windows。但是,试图编译一个简单的Hello World收益率: C:/ yagarto-20121222 / bin中/../ lib中/ GCC / ARM-NONE-EABI / 4.7.2 /../../../../臂无 - EABI /bin/l ..
发布时间:2016-05-29 14:36:22 其它硬件开发