隨著多執行緒技術的發展,原來委以重任的main()函式也逐漸的退化和冷落,現在變成了名不副實的「主函式」。在dsp/bios中也同樣存在這樣的問題,然而main()函式的作用依然不可忽略,其與dsp/bios的api函式的呼叫上存在一定的先後關係。
在dsp/bios應用程式中,main()函式用於實現使用者的初始化操作,片內/片外外設的配置,以及勢能單獨的硬體中斷等,然而,main()函式並不屬於dsp/bios的任何執行緒型別,它僅僅是乙個匆匆過客,在作完使用者期望的初始化之後,也就壽終正寢了,甚至連一片雲彩都不曾帶走。
值得注意的一點是,應用程式在執行main函式時,並不是所有的dsp/bios api函式都可以呼叫,其間有著相應的先後關係,這是因為,main函式啟動的時候,dsp/bios並沒有完成最終的初始化,因此,main函式對於dsp/bios 有些api函式的呼叫是受限的。
這裡不得不提起dsp/bios的啟動過程(對於bootload暫且不談):
1、 初始化dsp:復位中斷向量指向c_int00位址,dsp/bios程式從入口點c_int00開始執行。對c6000,初試化堆疊指標(b15)和全域性頁指標(b14)分別指向堆疊底部與.bss段的開始,控制暫存器amr、ier和csr也被初始化;
2、 用.cinit段中的記錄來初始化.bss段;
3、 呼叫bios_init初始化dsp/bios模組:bios_init執行基本的模組初始化,然後呼叫mod_init巨集分別初始化每個用到的模組;
4、 處理.pinit表:.pinit表包含了初始化函式的指標;
5、 呼叫應用程式main函式:在所有dsp/bios模組初始化之後,呼叫main函式。在main函式中新增了必要的初始化**。main函式初始化之後cpu的控制權交給dsp/bios。
6、 呼叫bios_start啟動dsp/bios:bios_start函式是由配置工具產生的,包含在***cfg.snn檔案中(***與使用者對工程的起名相關,nn與使用的dsp型號相關),它負責使能dsp/bios模組並為每個用到的模組呼叫mod_startup巨集使其開始工作。
在這些工作完成之後,dsp/bios呼叫idl_loop引導程式進入dsp/bios空閒迴圈,此時硬體和軟體中斷可以搶先空閒迴圈的執行,主機也可以和目標系統之間開始資料傳輸。
從dsp啟動的過程來看,dsp/bios的初始化是分為兩大階段的,乙個是位於main函式前面的bios_init中,乙個是在main函式後面的bios_start中。這點讓人很是疑惑main函式出現的作用,究竟什麼樣的api函式可以在main函式中執行呢?
這點必須弄清楚main函式前後兩初始化階段的具體作用,具體的細節可以查閱相關的技術文件,但是總體來說,bios_init所主要完成的是mem模組的初始化工作,而bios_start負責的是使能全域性中斷、配置和啟動定時器、開啟執行緒排程、啟動dsp/bios執行緒等。因此,在main函式中,可以呼叫實現動態儲存器分配的函式:mem_alloc、mem_free;以及動態建立物件的api 函式:***_create、***_delete等。對於「假設硬體中斷和定時器都已經使能的api」、或者可能引起阻塞的api函式都不可以在main函式中呼叫,例如clk_gethtim、clk_getltime、hwi_enable、hwi_disable、swi_enable、swi_diaable、tsk_disable、tsk_enable、sem_pend、mbx_pend等。特別需注意的是,main函式中一定不能存在無限迴圈,否則整個dsp/bios程式將癱瘓;
但是對於使dsp/bios執行緒就緒的排程函式卻允許在main函式中呼叫,例如sem_post、swi_post等,其實質還是在等bios_start進行完所有的初始化後再執行如上的排程操作。
因此可以明白一點的是,main函式穿插在bios的初始化過程中,為人工干預dsp/bios的啟動提供了機會,使得bios的運作更具「個性化」。其間cup的控制權從dsp/bios提交給使用者,然後在返回給dsp/bios。
DSP BIOS與main 函式關係
dsp bios與main 函式關係 隨著多執行緒技術的發展,原來委以重任的main 函式也逐漸的退化和冷落,現在變成了名不副實的 主函式 在dsp bios中也同樣存在這樣的問題,然而main 函式的作用依然不可忽略,其與dsp bios的api函式的呼叫上存在一定的先後關係。在dsp bios應...
DSP BIOS與main 函式關係
dsp bios與main 函式關係 隨著多執行緒技術的發展,原來委以重任的main 函式也逐漸的退化和冷落,現在變成了名不副實的 主函式 在dsp bios中也同樣存在這樣的問題,然而main 函式的作用依然不可忽略,其與dsp bios的api函式的呼叫上存在一定的先後關係。在dsp bios應...
DSP BIOS與main 函式關係
dsp bios與main 函式關係 隨著多執行緒技術的發展,原來委以重任的main 函式也逐漸的退化和冷落,現在變成了名不副實的 主函式 在dsp bios中也同樣存在這樣的問題,然而main 函式的作用依然不可忽略,其與dsp bios的api函式的呼叫上存在一定的先後關係。在dsp bios應...