為了讓英創(chuàng)更多的Linux主板能夠滿足工業(yè)應(yīng)用在實(shí)時(shí)性上的要求,我們?cè)贓SM6800H/E和ESM7000系列主板的內(nèi)核(4.9.11)基礎(chǔ)上,使用了針對(duì)該版本的RT PATCH(實(shí)時(shí)補(bǔ)?。瑢⑾到y(tǒng)升級(jí)為實(shí)時(shí)Linux系統(tǒng),讓主板能夠滿足一定的實(shí)時(shí)性需求。ESM6800H/E板載Crotex A7架構(gòu)CPU(iMX6ULL),主頻為792MHz,是一款性價(jià)比極高的工控主板。而ESM7000系列主板板載雙核Crotex A7架構(gòu)CPU(iMX7D),主頻為1GHz,是性能非常強(qiáng)勁的工控主板系列,客戶可以根據(jù)性價(jià)比以和性能來(lái)選擇符合需求的工控主板進(jìn)行開(kāi)發(fā),同時(shí)這兩個(gè)系列的主板硬件和軟件都是兼容的,方便客戶根據(jù)不同應(yīng)用需求無(wú)縫替換主板。
實(shí)時(shí)Linux系統(tǒng)主要是提升了實(shí)時(shí)線程的響應(yīng)時(shí)間,所以對(duì)于應(yīng)用程序來(lái)說(shuō),只需要對(duì)有實(shí)時(shí)要求的線程設(shè)置實(shí)時(shí)優(yōu)先級(jí)屬性,以及設(shè)置響應(yīng)的實(shí)時(shí)線程調(diào)度策略就可以了,并沒(méi)有特殊的API函數(shù)。英創(chuàng)公司網(wǎng)站上面有專門關(guān)于設(shè)置實(shí)時(shí)線程的相關(guān)編程介紹,可以參考《移植Real Time Linux到英創(chuàng)工控主板》。本文主要介紹ESM6800和ESM7000升級(jí)實(shí)時(shí)Linux系統(tǒng)后對(duì)于實(shí)時(shí)性提升的測(cè)試實(shí)驗(yàn)。
為了驗(yàn)證系統(tǒng)的實(shí)時(shí)性,我們采用了兩種方法來(lái)測(cè)試,第一種方法是采用實(shí)時(shí)Linux網(wǎng)站推薦的測(cè)試工具cyclictest,這個(gè)工具會(huì)先創(chuàng)建一個(gè)普通進(jìn)程,然后再根據(jù)參數(shù)創(chuàng)建實(shí)時(shí)線程,并定時(shí)喚醒和休眠實(shí)時(shí)線程,通過(guò)對(duì)比實(shí)時(shí)線程預(yù)期喚醒時(shí)間和實(shí)際喚醒時(shí)間來(lái)計(jì)算出系統(tǒng)的響應(yīng)時(shí)間。第二種方法是由GPIO中斷作為硬件事件,使用外部的方波信號(hào)作為中斷源,驅(qū)動(dòng)檢測(cè)到GPIO中斷后會(huì)喚醒用戶層的中斷處理線程(該線程已設(shè)置為實(shí)時(shí)線程),實(shí)時(shí)中斷處理線程作為對(duì)中斷事件的響應(yīng),將另一位GPIO的輸出電平反相(Toggle處理)。用示波器測(cè)量輸入的中斷信號(hào)和作為響應(yīng)的GPIO信號(hào)之間的時(shí)間延遲。
因?yàn)橄到y(tǒng)實(shí)時(shí)性還和負(fù)載也有一定的關(guān)系,所以我們采用了空載和滿載兩種情況測(cè)試,滿載的測(cè)試條件是考慮模擬出對(duì)系統(tǒng)實(shí)時(shí)性最差的情況,即將CPU的使用率以及IO的使用率全部提升到滿載。滿載和空載是兩種相對(duì)極端的情況,最終的實(shí)時(shí)性還是應(yīng)該以實(shí)際使用的負(fù)載和運(yùn)行的程序而定,關(guān)于系統(tǒng)負(fù)載和實(shí)時(shí)性測(cè)試的相關(guān)介紹可以通過(guò)網(wǎng)站https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/test-design來(lái)了解。
首先是第一種方法采用cyclictest工具來(lái)進(jìn)行測(cè)試,通過(guò)軟件來(lái)記錄全部數(shù)據(jù),并且可以采集大量數(shù)據(jù)來(lái)參考,結(jié)果如下:
主板型號(hào) | ESM6800 | ESM7000 | ||
CPU信息 | 單核Cortex-A7 主頻792MHz | 雙核Cortex-A7 主頻1GHz | ||
操作系統(tǒng) | Linux-4.9.11 | RT Linux-4.9.11 | Linux-4.9.11 | RT Linux-4.9.11 |
空載喚醒延時(shí)最小值(us) | 17us | 15us | 8us | 8us |
空載喚醒延時(shí)最大值(us) | 1662us | 119us | 66us | 54us |
空載喚醒延時(shí)平均值(us) | 28us | 27us | 13us | 12us |
滿載喚醒延時(shí)最小值(us) | 29us | 28us | 10us | 10us |
滿載喚醒延時(shí)最大值(us) | 2167us | 161us | 1946us | 62us |
滿載喚醒延時(shí)平均值(us) | 82us | 70us | 33us | 22us |
第二種方法,選用100Hz方波作為信號(hào)源,通過(guò)示波器隨機(jī)采樣的方式來(lái)選取測(cè)試數(shù)據(jù),測(cè)試結(jié)果如下:
主板型號(hào) | ESM6800 | ESM7000 | ||
CPU信息 | 單核Cortex-A7 主頻792MHz | 雙核Cortex-A7 主頻1GHz | ||
操作系統(tǒng) | Linux-4.9.11 | RT Linux-4.9.11 | Linux-4.9.11 | RT Linux-4.9.11 |
空載中斷延時(shí)最小值(us) | 25us | 65us | 20us | 25us |
空載中斷延時(shí)最大值(us) | 400us | 180us | 85us | 115us |
空載中斷延時(shí)平均值(us) | 38us | 80us | 70us | 80us |
滿載中斷延時(shí)最小值(us) | 80us | 120us | 25us | 30us |
滿載中斷延時(shí)最大值(us) | 1800us | 500us | 2000us | 90us |
滿載中斷延時(shí)平均值(us) | 145us | 165us | 60us | 60us |
最主要關(guān)注的參數(shù)應(yīng)該是響應(yīng)時(shí)間的最大值,這個(gè)參數(shù)可以反映系統(tǒng)響應(yīng)時(shí)間的穩(wěn)定性以及能夠達(dá)到的實(shí)時(shí)性指標(biāo),因?yàn)閮蓚€(gè)表格測(cè)試的方法不同,所以兩個(gè)表格之間沒(méi)有比較的意義,應(yīng)該在表格內(nèi)部比較不同的主板和不同的系統(tǒng)之間的差異。
第一個(gè)表格主要是測(cè)試實(shí)時(shí)線程的響應(yīng)時(shí)間,從表格中可以看到實(shí)時(shí)和非實(shí)時(shí)Linux系統(tǒng)在最小響應(yīng)時(shí)間和平均響應(yīng)時(shí)間上沒(méi)有太大的差距,而在最大響應(yīng)時(shí)間上實(shí)時(shí)Linux系統(tǒng)有明顯的提升,這也驗(yàn)證了實(shí)時(shí)補(bǔ)丁主要提升的是響應(yīng)時(shí)間的穩(wěn)定性。
第二個(gè)表格主要是測(cè)試對(duì)于外部中斷的響應(yīng),結(jié)論和表格一是相同的,即實(shí)時(shí)補(bǔ)丁主要提升的是響應(yīng)時(shí)間的穩(wěn)定性。關(guān)于ESM7000主板的測(cè)試結(jié)果需要說(shuō)明一下,在空載的時(shí)候,非實(shí)時(shí)Linux系統(tǒng)的平均時(shí)間表現(xiàn)要比實(shí)時(shí)系統(tǒng)好一些,這是因?yàn)樵诙嗪说那闆r下,系統(tǒng)缺省把對(duì)中斷的處理均放在CPU0所致。盡管可通過(guò)手動(dòng)重新配置各個(gè)CPU核的初始任務(wù),來(lái)消除這個(gè)現(xiàn)象,但實(shí)際應(yīng)用肯定會(huì)有一定負(fù)載率的,系統(tǒng)將會(huì)根據(jù)負(fù)載,自動(dòng)均衡各CPU的任務(wù),達(dá)到表二的指標(biāo)。對(duì)這個(gè)問(wèn)題感興趣的客戶,可關(guān)注我們后續(xù)關(guān)于實(shí)時(shí)性分析的文章。
根據(jù)上面的總結(jié),可以看到升級(jí)為實(shí)時(shí)Linux系統(tǒng)后,對(duì)于系統(tǒng)響應(yīng)時(shí)間的穩(wěn)定性有較大的提升,對(duì)系統(tǒng)實(shí)時(shí)性有一定要求的客戶,可以根據(jù)上面的測(cè)試數(shù)據(jù)來(lái)選擇主板。而對(duì)比ESM6800和ESM7000,擁有雙核CPU的ESM7000響應(yīng)時(shí)間更快,而且在實(shí)驗(yàn)中模擬的滿載情況下對(duì)響應(yīng)時(shí)間的影響較小,能夠滿足較高的實(shí)時(shí)性要求。
成都英創(chuàng)信息技術(shù)有限公司 028-8618 0660