ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
一些程序通過 argc 和 argv 將參數(shù)傳遞給 main()。這對(duì)不是從命令行運(yùn)行的嵌入式程序帶來了特殊的挑戰(zhàn)。通常,argc 和 argv 通過 .args 段提供給程序。有多種方法可以填充此段以供程序使用。
要使鏈接器分配大小適當(dāng)?shù)?.args 段,請(qǐng)使用 --arg_size=size 鏈接器選項(xiàng)。此選項(xiàng)通知鏈接器分配一個(gè)名為 .args 的未初始化段,這樣,加載器可以使用該段從加載器的命令行向程序傳遞參數(shù)。size 是要分配的字節(jié)數(shù)。當(dāng)使用 --arg_size 選項(xiàng)時(shí),鏈接器定義 __c_args__ 符號(hào)以包含 .args 段的地址。
加載器負(fù)責(zé)填充 .args 段。加載器和目標(biāo)啟動(dòng)代碼可以使用 .args 段和 __c_args__ 符號(hào)來確定是否以及如何將參數(shù)從主機(jī)傳遞到目標(biāo)程序。參數(shù)的格式是指向目標(biāo)上 char 類型的指針數(shù)組。由于加載器的變化,因此沒有規(guī)定加載器如何確定將哪些參數(shù)傳遞給目標(biāo)。
如果使用 Code Composer Studio 運(yùn)行應(yīng)用程序,則可以使用 Scripting Console 工具來填充 .args 段。要打開此工具,請(qǐng)從 CCS 菜單中選擇 View > Scripting Console??梢允褂?loadProg 命令將目標(biāo)文件及其關(guān)聯(lián)的符號(hào)表加載到存儲(chǔ)器中,并將參數(shù)數(shù)組傳遞給 main()。這些參數(shù)會(huì)自動(dòng)寫入到分配的 .args 段。
loadProg 語法如下,其中 file 是可執(zhí)行文件,args 是參數(shù)對(duì)象數(shù)組。使用此命令之前,請(qǐng)使用 JavaScript 聲明參數(shù)數(shù)組。
loadProg(file, args)
對(duì)于不基本SYS/BIOS的可執(zhí)行文件,.args 段加載下述數(shù)據(jù),其中,argv[] 數(shù)組中的每個(gè)元素都包含與該參數(shù)對(duì)應(yīng)的字符串:
Int argc;
Char * argv[0];
Char * argv[1];
...
Char * argv[n];對(duì)于基于 SYS/BIOS 的可執(zhí)行文件,.args 段中的元素如下:
Int argc;
Char ** argv; /* points to argv[0] */
Char * envp; /* ignored by loadProg command */
Char * argv[0];
Char * argv[1];
...
Char * argv[n];有關(guān)更多詳細(xì)信息,請(qǐng)參閱“Scripting Console”頁面。