編譯過程中替換函數名的兩種方法 (第二種很好使)
方法一
函數名為__wrap_symbol,且稱其為包裝函數,“symbol”是一個函數名,大致執行過程是這樣的:當調用“symbol”函數時,如果“symbol”函數未定義的話就會調用__wrap_symbol函數;__wrap_symbol稱做包裝函數。
示例:
DEVICE = ' -march=rv32imac -Wl,--wrap,timer_irq_handler -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc '
void __wrap_timer_irq_handler(uint32_t mcause)
{
#warning requires critical section if interrupt nesting is used.
rt_interrupt_enter();
rt_tick_increase();
rt_interrupt_leave();
}
若定義了timer_irq_handler函數就會使用timer_irq_handler,未定義timer_irq_handler就使用__wrap_timer_irq_handler
方法二
示例
下文是張向量表,向量表使用了corev_handler
vector_table:
j corev_handler // irq0
j corev_handler
j corev_handler
j corev_handler // irq3
j corev_handler
j corev_handler
...
在編譯命令中添加如下代碼
DEVICE = ' -march=rv32imac -D"corev_handler=SW_handler" -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc '
這種方式會將掃描到存在corev_handler的地方均重定義為SW_handler
-
RT-Thread
+關注
關注
32文章
1409瀏覽量
41968
發布評論請先 登錄
六相永磁同步電機串聯系統控制的兩種方法分析研究
請問在NXP板的BSP QA過程中采用了哪些具體的測試方法?
解鎖TSMaster fifo函數:報文讀取的高效方法

6種方法去除焊接應力

SMT生產過程中的常見缺陷
芯片制造過程中的兩種刻蝕方法

評論