• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-250  評論-20  文章-55  trackbacks-0

            配置參量(位于FreeRTOSConfig.h)
            configUSE_PREEMPTION
            設置為1,使用搶先式內核;設置為0,為合作輪轉內核。

            configUSE_IDLE_HOOK
            設置為1, 使用空閑鉤子;設置為0,不使用空閑鉤子,。

            configUSE_TICK_HOOK
            如果希望使用時間片鉤子, 就設置為1,設置為0,不使用

            configCPU_CLOCK_HZ
            內部處理器執行的頻率。這個值需要正確配置外圍定時器。

            configTICK_RATE_HZ
            The frequency of the RTOS tick interrupt.

            RTOS時間片中斷的頻率。

            時間片中斷用來測量時間。因此更高時間片頻率意味著時間測量可以有更高分辨率,同時意味著內核占用更多的CPU(效率很低)。演示程序都使用了1000Hz的時間片頻率。這是為了測試內核,通常需要更高的頻率。

            多個任務共有同一優先級。通過切換任務,在每一個RTOS時間片內,內核將在同一優先級的任務間分配處理器時間。高時間片頻率意味著將減少給予每個任務的時間份額。

            configMAX_PRIORITIES
            應用程序任務中可用優先級 的數目. 

            任何數量的任務,都可以分配同一優先級。 任務單獨分配優先級。參考configMAX_CO_ROUTINE_PRIORITIES。 內核分配的每個可用的優先級都消耗RAM,因此這個值不應該設置為高于實際應用程序中需要的。

            configMINIMAL_STACK_SIZE
            空閑任務使用的堆棧大小。通常這個值不用少于 FreeRTOSConfig.h file中演示程序提供的。

            configTOTAL_HEAP_SIZE
            內核總共可用的RAM數量。如果程序中利用例子中內存分配方案(FreeRTOS 源代碼提供的),這個值僅僅適用這些。參考內存管理 部分獲得更過細節.

            configMAX_TASK_NAME_LEN
            當創建一個任務,能夠給予描述任務名稱的最大容許長度。這個長度指定符號數目,包括NULL終止字節。

            configUSE_TRACE_FACILITY
            設置為1,使用可視化追蹤功能。設置為0,就不使用。如果使用可視化追蹤,必須提供追蹤緩沖區。

            configUSE_16_BIT_TICKS
            時間片(內核開始執行后,時間片中斷的次數)來測量時間。時間片計數器定義為可用的portTickType.類型。

            定義configUSE_16_BIT_TICKS為1,將使portTickType定義為16位無符號類型。定義為0,將是32位無符號類型。 使用16位類型,將使在16位或8位單片機大幅度提高性能。但是,這樣限制了最大指定可用時間周期(65535時間片)。然而,假定時間片頻率為250Hz,一個任務在16位上,最大延時或中斷時間位262秒,而32位為17179869秒。

            configIDLE_SHOULD_YIELD
            這個參數控制任務與空閑任務優先級相同時的行為。僅僅有以下影響:

            1.使用優先級調度
            2.用戶程序創建的任務,運行在空閑任務一樣的優先級
            任務在時間片輪轉中,使用同一優先級。假定沒有更高優先級的任務,這樣每一個任務,在空閑優先級下,將被分配相同數量的處理時間。如果,他們的優先級高于空閑任務的優先級,那么這種情況更是如此。 當任務處于空閑優先級下的行為,會有稍許不同。當configIDLE_SHOULD_YIELD設置為1時,當其他在空閑優先級的任務準備運行時,空閑任務將立刻讓出CPU。當程序的任務調度可用時,要確保空閑任務能夠執行的最少時間以上。這個行為,產生了不好的影響(根據應用程序的需要),如下描述:


            上述圖表表明,四個在空閑優先級的任務執行模型。任務A, B,和C,是應用程序任務。任務 I是空閑任務。上下文切換在T0, T1....T6規律的周期間發生。當空閑任務執行時,任務A準備執行,但是空閑任務已經占去了當前時間片的部分時間。結果是,任務I 和任務A共同分享一個時間片。任務B 和任務C比任務A獲得更多的執行時間。

            這些可以通過如下避免:

            1.如果合適,可以使用空閑鉤子代替在空閑優先級的分開任務。創建程序任務的優先級高于空閑優先級。
            2.設置configIDLE_SHOULD_YIELD為1
            設置configIDLE_SHOULD_YIELD為1,將阻止空閑任務讓出執行時間直到它的時間片用完。這就確保了所有在空閑優先級的任務分配了相同數量的執行時間。這是以分配給空閑任務更高比例的執行時間為代價。

            configUSE_MUTEXES
            設置為1,將使用互斥功能;設置為0,將不使用。讀者應該明白FreeRTOS.org 功能中互斥型和二進制型信號量之間的不同。

            configUSE_RECURSIVE_MUTEXES
            設置為1,將使用遞歸互斥功能;設置為0,將不使用。

            configUSE_COUNTING_SEMAPHORES
            設置為1,將使用計數器型信號量功能;設置為0,將不使用。

            configUSE_ALTERNATIVE_API
            設置為1,將包含替代隊列函數;設置為0,將不包含。替代API在queue.h頭文件中有詳細的描述。

            configCHECK_FOR_STACK_OVERFLOW
            The 堆棧溢出檢測 這頁中有詳細的細節描述。

            configQUEUE_REGISTRY_SIZE
            隊列記錄有兩個功能,都這涉及到內核相關的調試:

            1.允許一個隊列相關的名稱,可以在GUI調試中容易定義。
            2.包含了調試器所需的信息,來定位每個記錄的隊列和信號量。
            隊列記錄除了進行內核相關的調試外,沒有什么目的。 configQUEUE_REGISTRY_SIZE定義了可以記錄的隊列和信號量的最大數目。這些僅能夠在使用內核相關調試時需要記錄的。查看API中vQueueAddToRegistry() 和 vQueueUnregisterQueue()參考文檔,獲得更多信息。

            configUSE_CO_ROUTINES
            設置為1,將使用(協同例程)合作輪轉式程序;設置為0,將不使用。當使用時,必須把Croutine.c包含進去項目中。

            configMAX_CO_ROUTINE_PRIORITIES
            合作式應用程序中可用的優先級數目。 任何合作式程序可使用同一優先級。任務分別設置優先級——參考configMAX_CO_ROUTINE_PRIORITIES.

             

             

            Cortex M3 使用著請注意部分結尾特別說明的地方。


            configKERNEL_INTERRUPT_PRIORITY應該設置為最低優先級。

            注意如下討論中,以"FromISR" 結尾的API函數僅能夠在中斷服務函數中調用。

            那些僅僅設置configKERNEL_INTERRUPT_PRIORITY的接口

            內核本身為 configKERNEL_INTERRUPT_PRIORITY設置優先級。調用API函數的中斷,也必須以這個優先級執行。沒有調用API函數的中斷,可以有更高的優先級,因此內核調動,他們執行從不延時(在他們硬件限制的范圍內)。 那些在這兩種情況下:

            configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY執行的接口。

            內核本身為configKERNEL_INTERRUPT_PRIORITY設置優先級。可以設置configMAX_SYSCALL_INTERRUPT_PRIORITY為從調用FreeRTOS.org API 函數的中斷設置更高的優先級。

            可以設置configMAX_SYSCALL_INTERRUPT_PRIORITY高于 (一個很高優先級的水平)configKERNEL_INTERRUPT_PRIORITY來獲得 中斷全嵌套模式。沒有調用API函數的中斷可以在高于configMAX_SYSCALL_INTERRUPT_PRIORITY 優先級下執行,因此是不會被內核執行延時。例如,假定一個微控制器,為8級中斷優先級水平——0是最低優先級,7為最高(參考Cortex M3用戶在這部分的結尾特別注意的地方)。如下圖片,描述了在每一個優先級下什么可以和什么不可以,兩個常量被設置為4和0。


            中斷優先級配置例子
            這些參數配置允許很靈活的中斷處理:

            •中斷處理的任務,像系統里其他任務一樣,書寫和分配優先級。這些任務都是被一個中斷激活。ISR本身編寫的應該盡可能的短小——僅僅為了喚醒更高優先級的任務而占用RAM。ISR返回,直接進入要喚醒的任務——因此中斷處理是及時的好像所有是中斷本身做的一樣。這樣的好處是:執行處理的任務時,所有的中斷都允許。
            執行 configMAX_SYSCALL_INTERRUPT_PRIORITY的接口提供更多——在內核中斷和configMAX_SYSCALL_INTERRUPT_PRIORITY 之間允許全嵌套模式嵌套和程序調用API函數。中斷優先級在configMAX_SYSCALL_INTERRUPT_PRIORITY執行從不延時。

            •運行在高于系統調用最大優先級的ISR,從不會被內核本身屏蔽,所以他們的響應性不被內核功能所影響。對于那些需要瞬間高精度的中斷來說是個好方法——例如:執行發動機換向的中斷。然而,這樣的ISR不能夠使用FreeRTOS.org API函數
            為了利用這個方案,應用程序必須遵守如下原則:任何使用FreeRTOS.org API的中斷必須設置為同一優先級,像內核(configKERNEL_INTERRUPT_PRIORITY配置的一樣),或者處于或低于configMAX_SYSCALL_INTERRUPT_PRIORITY(為了接口包含了這個功能)。

            Cortex M3 用和特別要注意的地方: 記住,Cortex M3 核心數值上使用低優先級來代替高優先級的中斷(這樣看起來反常規和容易忘記)。如果希望分配夠中斷一個低優先級,不要分配為0優先級(或其他低數值),因為這樣實際上在系統中這個中斷為最高優先級——如果設置優先級在configMAX_SYSCALL_INTERRUPT_PRIORITY可能使系統崩潰。 在Cortex M3核心 最低優先級實際上是255——然而不同于 Cortex M3 賣主說明的不同數目的優先級位和支持庫函數(期待優先級使用不同方法指定)。例如在STM32 ,在ST驅動庫中能夠指定的最低優先級是15——最高優先級可以指定為0。configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY

            configKERNEL_INTERRUPT_PRIORITY一般適用于Cortex-M3, PIC24, dsPIC and PIC32 接口。 configMAX_SYSCALL_INTERRUPT_PRIORITY一般PIC32和Cortex M3 接口中可用。其他接口將很快更新。

            posted on 2010-05-18 21:10 jay 閱讀(784) 評論(0)  編輯 收藏 引用 所屬分類: FreeRTOS
            色综合久久综精品| 久久久噜噜噜久久中文字幕色伊伊 | 久久久久无码精品国产app| 国产AV影片久久久久久 | 久久AV无码精品人妻糸列| 丁香色欲久久久久久综合网| 狼狼综合久久久久综合网| 嫩草影院久久99| 伊人久久大香线蕉综合5g| 久久er99热精品一区二区| 精品国产91久久久久久久a| 国内精品久久久久久久久电影网| 久久电影网一区| 一本色道久久综合狠狠躁| 国产综合免费精品久久久| 亚洲AV乱码久久精品蜜桃| 精品乱码久久久久久夜夜嗨| 色婷婷综合久久久久中文| 人人狠狠综合久久亚洲高清| 97久久精品无码一区二区天美 | 久久精品亚洲日本波多野结衣| 久久久WWW成人| 久久99国产精一区二区三区| 无遮挡粉嫩小泬久久久久久久 | 亚洲国产美女精品久久久久∴| 一本大道加勒比久久综合| 亚洲AV无码久久精品成人| 欧美伊人久久大香线蕉综合69| 99久久国产综合精品麻豆| 国产A三级久久精品| 久久午夜夜伦鲁鲁片免费无码影视| 91麻精品国产91久久久久| 99久久国产热无码精品免费| 一本久久a久久精品vr综合| 中文成人久久久久影院免费观看| 91麻精品国产91久久久久| 久久99国内精品自在现线| WWW婷婷AV久久久影片| 精品久久久久中文字幕日本| 日韩av无码久久精品免费| 国产精品免费福利久久|