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