arm相关内容

通过GSL导致的STM32硬件故障

我使用ARM Cortex M4成功地为我的STM32F303交叉编译了GNU Science Library,如下所述: How to crosscompile GSL for Arm Cortex M4? 但是,这可以很好地工作,但现在我从GSL获得了每个内存分配的HardFault值。例如,下面这行: gsl_vector_float *x = gsl_vector_float ..
发布时间:2022-08-11 20:35:00 其他开发

快速硬件整数除法

用于整数除法的硬件指令在历史上一直非常慢。例如,对于64位输入,Skylake上的DIVQ延迟为42-95个周期[1](倒数吞吐量为24-90)。 不过,也有性能更好的较新处理器:Goldmont有14-43个延迟,而Ryzen有14-47个延迟[1],M1的吞吐量显然是每个分频2个时钟周期[2],甚至Raspberry Pico也有每个内核的8周期带符号/无符号分频/模数电路(尽管这似乎是 ..
发布时间:2022-06-25 13:20:48 其他开发

为什么ARM LSL和LSR的允许移位值范围不同?

为什么LSL[0,31]允许移位值,而LSR允许移位值是[1,32]? LSL中的0位移位对任何应用程序都有什么用处?为什么在LSR中不允许0班次?为什么LSL不允许32位移位? 推荐答案 此限制适用于按立即数进行的班次。按寄存器移位不受此类限制。 LSL允许为0表示“不换档”。这是一个特例,因为不修改标志设置指令的C标志。 LSR和ASR乘以0的行为与LSL乘以0的行为 ..
发布时间:2022-05-31 23:33:30 其他开发

在Nucleo STM32板上设置SWV打印

我正在使用Atolic Truestudio IDE(基本上是Eclipse)在各种STM32L4 Nucleo主板上开发固件。在此之前,我一直通过UART使用printf,这要归功于虚拟COM端口。 我想使用STM32 ITM迁移到printf。 更准确地说,我研究的是Nucleo-L4A6ZG。调试是通过GDB服务器进行的。 在Atolic上,我修改了我的Debug配置,以启 ..
发布时间:2022-04-10 17:29:40 其他开发

对LDR和STR的理解?

我使用的是ARMSim,我猜它是一个ARM模拟器,我有这个演示程序。它基本上读取一个文本文件并打印文本文件中的整数(只打印第一行)。 Start: @Open file for input. LDR R0, =InputFileName MOV R1, #0 SWI SWI_Open BCS FileError @Save file handle to memory. LDR R1, =I ..
发布时间:2022-02-24 13:40:18 其他开发

arm裸机系统上的CPU使用率测量

我正在开发一个 ARM cortex M4 评估板,它是一个 bare metal 应用程序,上面没有运行任何操作系统. 现在我想测量给定进程/算法的 CPU 使用情况,最好的方法是什么? 我应该实现一个操作系统来测量具有这种需求功能的 CPU 使用率吗? 解决方案 这个问题几乎自己回答了.当您的裸机应用程序不在该进程/算法中时,它在做什么?测量一个或另一个或两者.如果你有一个 ..
发布时间:2022-01-25 13:09:18 C/C++开发

如何在 ARM 处理器上检测冷启动与热启动?

我正在寻找一种方法来确定 ARM 处理器是从冷启动(即初始开机)还是热启动(即在没有实际断电的情况下重置断言)启动.具体来说,我使用的是 ARM968 内核,将使用 C 或程序集进行确定,并且我将使用该确定,因此某些操作仅在初始开机时运行,而不是在随后的重置时运行.在以前的项目中,我利用外部电路(例如 FPGA)来检测不同的启动场景,但在这种情况下,我仅限于 ARM 内核. 解决方案 您可 ..
发布时间:2022-01-25 13:08:59 其他开发

用于寻址外围设备的#define 与枚举

我必须在基于 ARM9 的微控制器中对外围寄存器进行编程. 例如,对于 USART,我将相关的内存地址存储在 enum 中: 枚举 USART{US_BASE = (int) 0xFFFC4000,US_BRGR = US_BASE + 0x16,//...}; 然后,我在函数中使用指针来初始化寄存器: void init_usart (void){vuint* pBRGR = (vu ..
发布时间:2022-01-25 13:03:30 其他开发

在暂存盒中构建单声道时出错

我尝试在 Ubuntu 11.10 上的 Scratchbox 中为 arm 编译单声道.但是当我进行安装时,我收到一条错误消息. [sbox-ARMEL:~] ./configure --enable-minimal=profiler,debug,logging,soft_debug --with-tls=--with-tls=__thread --with-monotouch=no --wi ..
发布时间:2022-01-23 15:12:25 其他开发

malloc 什么时候在裸机环境中返回 NULL?

有一个c内存模型如下: +--------+ RAM 最后地址|堆栈 |||||v |+--------+内存 ||||+--------+|^ |||||堆 |+--------+|紫 |+--------+|RW |+========+ RAM 的首地址 堆栈和堆空间以相反的方向增加.它们将在中间相互重叠.所以我的问题是: 在裸机环境中,malloc 什么时候返回 NULL? 在 ..
发布时间:2022-01-22 12:58:37 其他开发

ARM GCC 生成函数序言

我提到 ARM 工具链可以生成不同的函数序言.实际上,我看到两个 obj 文件(vmlinux)具有完全不同的功能序言: 第一种情况如下: push {some registers maybe, fp, lr} (lr ommited in leaf function) 第二种情况如下: push {some registers may, fp, sp, lr, pc}(我可能会混淆顺 ..
发布时间:2022-01-22 12:54:27 其他开发

如何修复程序集中的“错误:行尾的垃圾,第一个无法识别的字符 0xe2"

我正在尝试在我的树莓派 3 上编写一个基本的 arm 程序集文件,该文件可以通过 gcc 编译器访问 printf 和 scanf,但是在编译我的代码时出现一个奇怪的错误. 这是我用汇编编写的第三个使用 gcc 编译器的应用程序,所以我想做增量测试,所以我设置了提示和字符串,然后尝试干净地退出;但是,这是我抛出错误的代码: .data.balign 4promptNum1: .asciz ..
发布时间:2022-01-17 14:27:08 其他开发