乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Utility之APP自啟動(dòng)

       立志德美 2019-06-06

      我們知道,要想在VxWorks里啟動(dòng)應(yīng)用程序(APP/Application/Task+RTP),常見(jiàn)的方法是使用taskSpawn()/rtpSpawn()來(lái)創(chuàng)建并激活相應(yīng)的Task/RTP。那我們的第一條taskSpawn()/rtpSpawn()應(yīng)該放在哪呢?也就是如何讓VxWorks系統(tǒng)自動(dòng)啟動(dòng)APP呢?

      只要找到VxWorks系統(tǒng)啟動(dòng)時(shí)執(zhí)行的最后一個(gè)函數(shù),讓這個(gè)函數(shù)來(lái)調(diào)用我們自己的APP就可以了。

      打開(kāi)工程目錄里的prjConfig.c文件,可以看到VxWorks的第一個(gè)Task tRootTask的入口函數(shù)usrRoot()。而usrRoot()調(diào)用的最后一個(gè)函數(shù)是usrAppInit()


      然后在工程里可以找到文件usrAppInit.c


      從注釋里可以看出來(lái)了,我們的APP可以從這里開(kāi)始。

      寫個(gè)小程序試試,例如printf()


      啟動(dòng)VxWorks,看看效果


      可以看到APP的printf()執(zhí)行了,不過(guò)它是運(yùn)行在tRootTask的上下文里的。這樣不好,一來(lái)它的優(yōu)先級(jí)太高;二來(lái)出了問(wèn)題后,影響太大。所以我們的APP應(yīng)該由usrAppInit()中的taskSpawn()來(lái)啟動(dòng),例如


      這樣就可以了


      usrRoot()之所以會(huì)調(diào)用usrAppInit(),是因?yàn)榘私M件INCLUDE_USER_APPL

      可以看到還有幾個(gè)組件與startup相關(guān),有興趣的話,我們?cè)囋嚻渌M件

      INCLUDE_RTP_APPL_USER

      可以看到,包含了這個(gè)組件后,工程里多出來(lái)一個(gè)與usrAppInit()類似的usrRtpAppInit()。從注釋來(lái)看,它是用來(lái)啟動(dòng)RTP的。不過(guò)它倆默認(rèn)都是空函數(shù),沒(méi)什么本質(zhì)區(qū)別的。也就是說(shuō),在usrRtpAppInit()里來(lái)啟動(dòng)Kernel Task也是沒(méi)問(wèn)題的。

      INCLUDE_STARTUP_SCRIPT

      這個(gè)組件在另一個(gè)目錄里,包含之后,usrRoot()會(huì)在調(diào)用usrShell()之前解析并執(zhí)行bootrom的startup script參數(shù)

      我們寫一個(gè)script文件來(lái)試試這個(gè)功能:

      新建一個(gè)文件,為了方便編輯,可以把文件后綴寫作txt,在文件中添加幾行可以在VxWorks的Kernel Shell里執(zhí)行的語(yǔ)句。我們之前定義了一個(gè)函數(shù)test(),這次也調(diào)用它

      把這個(gè)文件存放到VxWorks文件的目錄里

      修改bootrom的startup script參數(shù)

      啟動(dòng)VxWorks

      可以看到,在Kernel Shell的提示符“->”出現(xiàn)之前,VxWorks解析并執(zhí)行了test.txt中的語(yǔ)句。而且這些語(yǔ)句是在Kernel Shell的上下文里執(zhí)行的。因此,最好也使用taskSpawn()來(lái)創(chuàng)建自己的Task環(huán)境。

      INCLUDE_RTP_APPL_INIT_BOOTLINE

      包含這個(gè)組件后,usrRoot()會(huì)在usrAppInit()之后再調(diào)用一個(gè)函數(shù)usrRtpAppInitBootline()。

      這個(gè)函數(shù)的作用也是解析startup script,不過(guò)它解析的不是script里的文件,而是直接用使用startup script指定的RTP文件。格式是: #RTP文件1^參數(shù)1^參數(shù)2…#RTP文件2…

      即符號(hào)#之后是RTP的文件名,符號(hào)^之后是RTP的入?yún)?。有幾個(gè)RTP就用幾個(gè)#,有幾個(gè)參數(shù)就用幾個(gè)^

      我們來(lái)試一下,首先創(chuàng)建一個(gè)RTP工程,簡(jiǎn)單寫幾句代碼

      新建一個(gè)ROMFS工程,用于存放RTP工程編譯后的rtp_test.vxe,然后把ROMFS工程放到VxWorks的Image工程里

      修改bootrom的startup script參數(shù),可以保留之前的script文件,不過(guò)要放到第一個(gè)#之前。并給RTP傳遞兩個(gè)參數(shù):x和y

      這次script文件test.txt的內(nèi)容如下

      啟動(dòng)VxWorks,看看得到了什么

      VxWorks在打印Kernel Shell提示符“->”之前執(zhí)行了test.txt里的語(yǔ)句;在打印“->”之后,又啟動(dòng)了startup script里指定的RTP。

      這就是INCLUDE_RTP_APPL_INIT_BOOTLINE的作用:執(zhí)行bootrom參數(shù)startup script中符號(hào)#之后的RTP

      INCLUDE_RTP_APPL_INIT_CMD_SHELL_SCRIPT

      這個(gè)組件也是在VxWorks啟動(dòng)Kernel Shell之后來(lái)啟動(dòng)RTP的。不過(guò)它的輸入是由參數(shù)RTP_APPL_CMD_SCRIPT_FILE來(lái)指定的文件,而且它解析文件時(shí),用的是VxWorks6特有的Command Interpreter。

      例如我們?cè)赩xWorks鏡像文件的目錄里新建一個(gè)rtp.txt文件,并把這個(gè)文件名賦值給參數(shù)RTP_APPL_CMD_SCRIPT_FILE

      文件里放一條Command Interpreter能識(shí)別的語(yǔ)句

      為了看的更清晰,我們先把bootrom的參數(shù)startup script清空

      然后啟動(dòng)VxWorks

      可以看到,組件INCLUDE_RTP_APPL_INIT_CMD_SHELL_SCRIPT的作用就是使用Command Interpreter來(lái)解析RTP_APPL_CMD_SCRIPT_FILE指定的文件

      INCLUDE_RTP_APPL_INIT_STRING

      這個(gè)組件的作用類似于前文中的INCLUDE_RTP_APPL_INIT_BOOTLINE,解析的格式也是一樣的。不過(guò)它的輸入不是bootrom的startup script參數(shù),而是自己的參數(shù)RTP_APPL_INIT_STRING。

      我們修改一下這個(gè)參數(shù)試試,同樣為了看的清晰,我們把上個(gè)例子中的RTP_APPL_CMD_SCRIPT_FILE置為空,并把RTP的參數(shù)改為a和b

      啟動(dòng)VxWorks

      總結(jié)一下

      1、3用于啟動(dòng)Task,2、4-6用于啟動(dòng)RTP。

      1、2在代碼中;3、4在引導(dǎo)參數(shù)中;5、6在組件參數(shù)中。

      1、2使用C語(yǔ)法;3使用Shell命令,類似于C語(yǔ)法;4、6使用符號(hào)#和^;5使用專用于RTP的Command命令

      這正是:

      應(yīng)用程序自啟動(dòng),多個(gè)位置靈活可用。

      編碼或組件參數(shù),引導(dǎo)階段也可指定。

      我是泰山,專注VX14年!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多