cortex-a相关内容

将 8bit uint8_t 加载为 uint32_t?

我的图像处理项目使用灰度图像.我有 ARM Cortex-A8 处理器平台.我想使用NEON. 我有一个灰度图像(考虑下面的示例),在我的算法中,我只需要添加列. 如何并行加载 四个 8 位像素值,它们是 uint8_t,作为 四个 uint32_t 到 128- 之一位 NEON 寄存器?我必须使用什么内在函数来做到这一点? 我的意思是: 我必须将它们加载为 32 位,因 ..
发布时间:2022-01-17 14:03:19 其他开发

ARM:启动/唤醒/启动其他 CPU 内核/AP 并传递执行起始地址?

在过去的 3-4 天里,我一直在为此苦苦挣扎,但找不到合适的解释性文档(来自 ARM 或非官方)来帮助我.我有一个 ODROID-XU 板(big.LITTLE 2 x Cortex-A15 + 2 x Cortex-A7) 板,我正在尝试更多地了解 ARM 架构.在我的“实验"代码中,我现在已经到了我想要从 WFI(等待中断)状态唤醒其他内核的阶段. 我仍在努力寻找的缺失信息是: 1 ..
发布时间:2022-01-12 12:33:33 其他开发

ARM 上的面向返回编程(64 位)

我正在 ARM(64 位)上学习 Rop.因此,我正在我的 ARMv8 Cortex A-72 上测试 Rop 漏洞,以了解它在 Arm64 上的工作原理.我写了一个非常简单的c漏洞代码: #include #include 无效胜利(无符号魔法){如果(魔术== 0xdeadbeef)printf(“我不应该被召唤!\n");}无效漏洞(){字符缓冲区[80];printf("Buffer a ..
发布时间:2021-11-17 22:46:25 其他开发

霓虹灯中的成对加法

我想在 neon 中添加 int64x2_t 向量的 00 和 01 索引值.我找不到任何可以执行此功能的成对添加指令. int64x2_t sum_64_2;//我期待的结果应该是..//int64_t 结果 = sum_64_2[0] + sum_64_2[1]; neon 中是否有针对此逻辑的说明. 解决方案 你可以用两种方式来写.这个明确使用了 NEON VADD.I64 指令 ..
发布时间:2021-11-17 22:41:32 其他开发

堆栈指针在几个进程中是如何工作的?

正如我之前所理解的,每个进程都有自己的地址空间,称为虚拟地址空间或程序存储器,每个进程都有一个称为堆栈的位置,用于存储函数的局部变量和参数. 此外,当发生异常时,处理器(比如 ARM cortex-A)会切换到特权模式,然后分支到异常处理程序. 据我了解,大多数应用程序运行在非特权用户模式下,这种模式有一个特殊的寄存器叫做栈指针,用来保存栈顶地址;但这是一个单一的寄存器,实际上不能同时 ..
发布时间:2021-11-17 22:39:30 其他开发

Cortex-A9 SMP GICC_RPR 始终为 0,中断未触发

上下文 在i.MX6Quad板上,系统运行时发现Core3无法处理任何中断. 通过Trace32查看GIC接口寄存器,GICC_RPR始终为0,表示最高优先级的事件正在运行,所以解释了上面的问题:不能处理较低优先级的事件. 问题 我插入了一条指令:向 GICC_EOI 写入 0,它可以将 GICC_RPR 更改为空闲优先级(0xFF),但它不起作用,保持 0. 目标 ..
发布时间:2021-11-17 22:39:21 其他开发

用霓虹灯内在函数替换 memcpy

我试图通过为相同的 .以下是我的逻辑: uint8_t* m_input;//大小为400 x300uint8_t* m_output;//大小为400 x300//没有提到内存创建的完整代码库memcpy(m_output, m_input, sizeof(m_output[0]) * 300* 400); 霓虹灯: int32_t ht_index,wd_index;uint8x16_t ..
发布时间:2021-11-17 22:25:22 其他开发

为什么我的 SWI 指令挂起?(BeagleBone Black, ARM Cortex-A8 cpu)

我开始为使用 ARM 的 BeagleBone Black 编写玩具操作系统基于 Cortex-A8 的 TI Sitara AM3359 SoC 和 U-Boot 引导加载程序.我有一个简单的独立 hello world 应用程序写入 UART0,到目前为止我可以通过 U-Boot 加载,现在我正在尝试继续中断处理程序,但我无法让 SWI 做任何事情,只能挂起设备. 根据 AM335x T ..
发布时间:2021-11-17 22:23:54 其他开发

ARM 单拷贝原子性

我目前正在浏览 ARMv7 内核的 ARM 架构手册.在关于内存访问原子性的章节 A3.5.3 中,它指出: 如果单拷贝原子加载与单拷贝原子存储重叠并且对于任何重叠字节,负载返回写入的数据写入插入到该字节的 Coherence 顺序中单拷贝原子存储然后加载必须从一个点返回数据在 Coherence 顺序中不早于插入到所有数据的单副本原子存储的一致性顺序重叠字节. 作为非英语母语者,我承 ..
发布时间:2021-11-17 22:20:01 其他开发

带有 GIC 的 SMP ARM 系统上的中断处理

我想知道从任何设备被中断的那一刻起中断处理是如何工作的.我知道点点滴滴的中断处理,并且想要清楚地了解中断处理的端到端图片.让我把我所知道的一点点介绍一下关于中断处理. 假设 FPGA 设备通过电线中断并获取一些数据.该 FPGA 设备的设备驱动程序已经使用 request_irq 函数注册了代码(中断处理程序). 所以现在 FPGA 设备有一个 IRQ 线,它在调用 request_i ..
发布时间:2021-11-17 22:16:15 其他开发

在 arm 虚拟化的情况下,TTBR0/1 与多个来宾的状态

TTBR0/1 是 CP15 寄存器,由 PL1 OS 编程.现在,如果 PL1 OS1 编程 TTBR0,然后在同一内核上调度 PL1 OS2,PL1 OS2 会看到 TTBR0/1 的值设置 OS1 我确信有某种方式可以保持理智,以下是否正确? 在来宾之间切换时,管理程序将所有 cp15 regs 保存在来宾上下文中,稍后在切换来宾之前恢复 如果是,那么管理程序不会很耗时,因 ..
发布时间:2021-11-17 22:15:49 其他开发

为什么 Cortex-A 的重置处理程序位于 0x0 而不是 Cortex-M3

Cortex-M3 的初始堆栈指针值位于 0x0,重置处理程序位于 0x4 的原因是什么?这样做的设计理由是什么? 为什么 ARM 人员不能像他们为 Cortex-A 所做的那样将 0x0 留给重置处理程序,然后在重置处理程序中初始化 SP? 解决方案 我认为这个方案属于“这不是一个错误,它是一个功能"的旗帜. ARM 架构 M(微控制器)配置文件与 A 和 R 配置文件具有完 ..
发布时间:2021-11-17 22:15:08 其他开发

arm架构中的域意味着什么

当我在 Cortex-A9 MPCore 中调试 MMU 时,我总是看到域访问控制寄存器,但是,域是什么意思?最多 16 个域?谁能给我一个链接来解释这个? 解决方案 TL;DR DACR 不仅减少了上下文切换代码路径,还可以在上下文切换发生后加快执行速度. 有几个链接解释了域访问控制寄存器或DACR的细节.例如ARM的内存访问权限和域.但是,此页面和许多其他页面没有解释为什么您可能 ..
发布时间:2021-11-17 21:58:45 其他开发

ARM:启动/唤醒/唤醒其他 CPU 内核/AP 并传递执行起始地址?

在过去的 3-4 天里,我一直在思考这个问题,但找不到合适的解释性文档(来自 ARM 或非官方)来帮助我.我有一个 ODROID-XU 板(big.LITTLE 2 x Cortex-A15 + 2 x Cortex-A7) 板,我正在尝试更多地了解 ARM 架构.在我的“实验"代码中,我现在已经到了要从它们的 WFI(等待中断)状态唤醒其他内核的阶段. 我仍在努力寻找的缺失信息是: ..
发布时间:2021-11-17 21:42:35 其他开发

堆栈指针在几个进程中是如何工作的?

正如我之前所理解的,每个进程都有自己的地址空间,称为虚拟地址空间或程序存储器,每个进程都有一个称为堆栈的位置,用于存储函数的局部变量和参数. 此外,当发生异常时,处理器(比如 ARM cortex-A)会切换到特权模式,然后分支到异常处理程序. 据我了解,大多数应用程序运行在非特权用户模式下,这种模式有一个特殊的寄存器叫做栈指针,用来保存栈顶地址;但这是一个单独的寄存器,实际上不能同时 ..
发布时间:2021-08-28 18:39:40 其他开发

ARM 上的面向返回编程(64 位)

我正在 ARM(64 位)上学习 Rop.所以我正在我的 ARMv8 Cortex A-72 上测试 Rop 漏洞,以了解它是如何在 Arm64 上工作的.我写了一个非常简单的c漏洞代码: #include #include 无效胜利(无符号魔法){如果(魔术== 0xdeadbeef)printf("我不应该被召唤!\n");}无效漏洞(){字符缓冲区[80];printf("Buffer a ..
发布时间:2021-07-17 20:37:24 其他开发

用霓虹灯内在函数代替memcpy

我试图通过编写相同的霓虹灯内在函数来击败"memcpy"功能.以下是我的逻辑: uint8_t * m_input;//大小为400 x300uint8_t * m_output;//大小为400 x300//没有提及用于创建内存的完整代码库memcpy(m_output,m_input,sizeof(m_output [0])* 300 * 400); 霓虹灯: int32_t ht ..
发布时间:2021-04-09 19:26:16 其他开发

内部函数或汇编代码哪个更好?

我很困惑,哪个更好. 我知道两者都可以编写代码,但对于任何处理器而言,总的来说我都不会更好.请告诉我同样的原因. 解决方案 正如保罗在评论中所说,您的需求和期望将表明: 通常从内部函数开始,然后仅在需要时才转到asm 进一步优化.对于x86,PowerPC等,这很少 必要,但是ARM/Neon的编译器不是很好,您可能 如果您的代码足够充分,则必须诉诸汇编 性能关键 内部编译器是 ..
发布时间:2020-09-13 01:27:13 其他开发