cortex-m

    0热度

    1回答

    我正在为ARM Cortex-M4内核编写一个小型操作系统,并且有一些疑问。我决定通过Supervisor Call(SVC)来放置os功能,在这里我保留并维护所有内核对象和内核函数。 但是,这是一个好主意,因为所有内核代码都执行并占用用户任务堆栈吗? 唯一让我想到的是,在执行内核代码时,通过主管调用跳转到内核堆栈并锁定调度器。这种方法很好吗?

    0热度

    1回答

    我目前正试图理解Cortex-M内核的ARM汇编。 我知道这是在Thumb模式(这是核心支持的唯一模式)功能通过自己的地址,称为与LSB地址的高,表明目标是Thumb代码。 在组件我写以下在函数“Reset_Handler”的前面告诉汇编,在标签中的数据是可执行的/功能: .type Reset_Handler, %function Reset_Handler: MOV R0,

    0热度

    1回答

    我正在使用Ti的EK-TM4C1294XL,它基本上是Arm Cortex M4评估板。我正在经历相同的I2C总线,并且有关I2C总线的以下问题。 我明白I2C支持多主多从器件配置。所以当我们想从一个特定的主机发送数据到一个特定的从机时,我们首先在主机的总线上写入从机地址,并在接收到Ack之后将数据发送到该从机。 因此,在同样的情况下,我想从特定的从设备接收数据给特定的主设备,但是从设备能否启动通

    3热度

    1回答

    我正在为Cortex M4F编写线程代码。一切正常,我正在研究通过延迟堆栈使FPU上下文切换更高效。 我读过ARM的AN298,我实现了基于禁用FPU和处理UsageFault的替代方法,但较低的(S0-S15)寄存器没有被硬件正确保存/恢复。我认为问题在于图11: 根据这一点,当PendSV的运行FPCAR应该指向任务A的堆栈保留的空间。但就我所见,由于CONTROL.FPCA在任务C中很高,因

    2热度

    1回答

    我正试图在我的代码中检索IRQ处理程序的返回地址。 我的目标是使用WDT_IRQHandler(),在看门狗定时器到期之前以及用于调试目的的复位之前保存PC的值。我也正在用其他IRQ测试这种方法,以检查我是否掌握了这个想法。 但似乎我没有。 我已阅读documentation可用。 我明白,当发生异常时,8个寄存器被推送到堆栈: R0,R1,R2,R3,R12,LR,PC和XPSR。 我也读过堆栈

    0热度

    1回答

    最近我试图将mbed-OS移植到Tiva-C启动板TM4C123,我遇到了由mbed提供的文件cmsis_nvic.c和cmsis_nvic的问题。 h 该模块应该动态分配OS定时器的中断处理程序到可寻址的功能(或者据我所知)。 什么发生的是,该软件执行以下行 vectors[i] = old_vectors[i]; 下面是我用 #include "cmsis_nvic.h" #defin

    -1热度

    4回答

    我想在代码中找到发生特定中断的位置。在这种情况下,它位于stm32f4微控制器上,中断是SysTick_Handler。 我想要的基本上是从哪里发现systick中断。我使用的臂无 - EABI-gdb来试图找到回溯,但我从那里得到的唯一信息是: (gdb) bt #0 SysTick_Handler() at modules/profiling.c:66 #1 <signal handler

    0热度

    1回答

    大家好,我在同一个地方多次在皮层m1上发生HardFault异常。我有HardFault实施和我可以读堆叠寄存器: stacked_r0 unsigned int类型为0x4(十六进制) stacked_r1 unsigned int类型0x60905f98(十六进制) stacked_r2 unsigned int类型为0x0(十六进制) stacked_r3 unsigned int类型0x6

    4热度

    1回答

    我正在使用FreeRTOS开发Cortex M0的代码,并使用AC6插件进行蚀刻。在我的任务结束时,我使用断言来确定我的任务的水印是否大于指定的任务大小。我用我的断言宏是这样的: #define HMI_DBG_ASSERT(x) if ((x) == 0) {taskDISABLE_INTERRUPTS(); \ HAL_GPIO_WritePin(ASSERT_LED_GPI