RT-thread 啓動main()

一、MDK的$Super$$ and $Sub$$

  在mdk的官網上http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0377g/pge1362065967698.html有這麼一段介紹,大致意思:
  在無法修改現有符號的情況下,可以使用一些特殊的標識來修補。例如現在的符號已經燒錄在外部ROM中了或是別人封裝好的庫,已經無法修改。就可以用這個符號對現有函數進行修補。
例如:要對foo()函數進行修補
$Super$$foo ----------------標識原始函數,如果要調用原始函數,則使用這個符號
$Sub$$foo ------------------標識修補函數,函數名相同。
  爲什麼要這樣用,使用另一個函數fun1來對foo()修補不行嗎。因爲上層調用 foo()函數,和下層的foo()函數都已經固定,沒法修改,所以也沒法在上層調用foo()之前插入fun1函數。現在這樣做之後,函數就會先調用$Sub$$foo 然後,在$Sub$$foo 中,再用$Super$$foo 調用原始的foo()

extern void ExtraFunc(void); extern void $Super$$foo(void);  //引入外部函數聲名
/* this function is called instead of the original foo() 這個函數會被調用,而不再調用原始的foo()*/
void $Sub$$foo(void)
{
  ExtraFunc();    /* does some extra setup work  做一些修補被功能*/
  $Super$$foo();  /* calls the original foo() function 調用原始的foo()函數*/
}

二、一般的MDK工程啓動

在這裏插入圖片描述

三、rt_thread啓動

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章