中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式實(shí)時(shí)操作系統(tǒng)的現(xiàn)場(chǎng)總線網(wǎng)關(guān)的設(shè)計(jì)

        基于嵌入式實(shí)時(shí)操作系統(tǒng)的現(xiàn)場(chǎng)總線網(wǎng)關(guān)的設(shè)計(jì)

        作者: 時(shí)間:2012-08-21 來(lái)源:網(wǎng)絡(luò) 收藏

        opt=opt;
        stk= (unsigned int * ) Ptos;
        *--stk= (unsigned int) task;
        *- -stk=0;
        *--stk=0,
        *--stk=0,
        *--stk=0,
        *--stk=0;
        *--stk=0;
        *--stk=0;
        *--stk=0;
        *--stk=0;
        *--stk=0;
        *--stk=0;
        *--stk=0;
        *--stk=0 (unsigned int) Pdata;
        *--stk= (SVCMODE | OxO);
        *--stk= (SVCMODE | OxO);
        return( (void*) stk);
        在 OSTaskCreate( )或 OSTaskCreateEXt( )中調(diào)用該函數(shù)來(lái)初始化任務(wù)的堆棧,返回堆棧指針STK。
        (三)OS_CPU_A.S
        μC/OS-Ⅱ的移植工作的重點(diǎn)和難點(diǎn)主要體現(xiàn)在O_CPU_A.S文件的實(shí)現(xiàn)上,主要編寫(xiě)下面四個(gè)匯編語(yǔ)言函數(shù):
        OSStanHighRdy( )
        OSCtxSw( )
        OSIntCtxSw( )
        OSTickISR( )
        其中最困難的工作又集申在OSIntCtxSw( )和OSTickISR( )兩個(gè)函數(shù),因?yàn)檫@兩個(gè)函數(shù)不僅和相關(guān)硬件定時(shí)器、中斷積存器的設(shè)置有關(guān),而且集中體現(xiàn)了移植的思路。下面分別介紹(具體代碼限于篇幅不詳細(xì)列出)。
        1.OSStartHighRdy( )
        此函數(shù)只在多任務(wù)啟動(dòng)時(shí)由OSStart( )函數(shù)調(diào)用一次,功能是從最高優(yōu)先級(jí)任務(wù)的TCB中得到該任務(wù)的堆棧指針sp,并用該指針恢復(fù)CPU現(xiàn)場(chǎng),使得最高優(yōu)先級(jí)任務(wù)處于就緒狀態(tài)。
        2.OSCtxSw( )
        該函數(shù)實(shí)現(xiàn)了任務(wù)級(jí)的任務(wù)切換,流程如圖4所示。任務(wù)級(jí)的任務(wù)切換是通過(guò)發(fā)軟中斷指令來(lái)完成的,軟中斷矢量指向該函數(shù)。在μC/OS-Ⅱ系統(tǒng)中,如果一個(gè)任務(wù)調(diào)用了某個(gè)函數(shù)而使得更高優(yōu)先級(jí)任務(wù)進(jìn)入了就緒狀態(tài),系統(tǒng)就會(huì)通過(guò)發(fā)SWI來(lái)找到OSCtxSw( );在該任務(wù)的最后,系統(tǒng)會(huì)調(diào)用OSShed( )將最高優(yōu)先級(jí)任務(wù)的地址加載到OSTCBHighRdy中,再調(diào)用OS_TASK_SW( )來(lái)執(zhí)行軟中斷調(diào)用OSCtxSw( )進(jìn)行任務(wù)切換。
        3.0SIntCtxSw( )
        該函數(shù)實(shí)現(xiàn)了中斷級(jí)任務(wù)切換,流程如圖4(b)所示。在ISR中,可能會(huì)引起任務(wù)的切換,如果需要進(jìn)行任務(wù)切換,則在ISR的最后通過(guò)0S_IntEXit( )調(diào)用OSIntCtxSw( )實(shí)現(xiàn)中斷級(jí)任務(wù)切換。此函數(shù)和OSCtxSw( )函數(shù)類似,不同的是該函數(shù)進(jìn)行的是中斷級(jí)任務(wù)切換,在系統(tǒng)進(jìn)入中斷時(shí),CPU現(xiàn)場(chǎng)己被保存過(guò)了,因此在該函數(shù)中不再進(jìn)行CPU現(xiàn)場(chǎng)保護(hù),只需對(duì)堆棧指針做相應(yīng)的調(diào)整即可。
        4.OSTickISR( )
        該函數(shù)用來(lái)實(shí)現(xiàn)定時(shí)器時(shí)鐘中斷處理,但在本系統(tǒng)的設(shè)計(jì)過(guò)程中,把定時(shí)器中斷設(shè)為IRQ中斷模式,并且IRQ中斷包括好多中斷源。因引,把該函數(shù)作為IRQ中斷的ISR,再根據(jù)中斷號(hào)來(lái)調(diào)用具體的各個(gè)中斷服務(wù)程序(如定時(shí)器中斷、MAC中斷等)。
        另外,在系統(tǒng)的啟動(dòng)文件中,需要建立每種異常的異常向量表,并強(qiáng)制ARM處理器狀態(tài)位svc管理模式。
        五、總 結(jié)
        本設(shè)計(jì)在s3c451Ob的硬件平臺(tái)上成功移植了μC/OS-Ⅱ,并且移植了TCP/IP協(xié)議棧LwIP,實(shí)現(xiàn)了WorldFIP現(xiàn)場(chǎng)總線和Internet之間的相互通信,使得WorldFIP現(xiàn)場(chǎng)總線成為真正開(kāi)放的工業(yè)現(xiàn)場(chǎng)總線。在網(wǎng)關(guān)的整體設(shè)計(jì)中,由于系統(tǒng)比較大,任務(wù)數(shù)較多,用實(shí)時(shí)內(nèi)核來(lái)管理調(diào)度這些任務(wù),要消耗較多的CPU使用率和系統(tǒng)的內(nèi)存,具有一定的局限性,但在CPU足夠快,內(nèi)存足夠大的情況下,使用網(wǎng)關(guān)設(shè)計(jì),在保證了工業(yè)現(xiàn)場(chǎng)總線的實(shí)時(shí)性和可靠性的基礎(chǔ)上,更有利于系統(tǒng)的集成度和再次開(kāi)發(fā)。

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        上一頁(yè) 1 2 3 4 下一頁(yè)

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉