一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)Linux應(yīng)用程序?qū)崿F(xiàn)精確延時介紹

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-17 09:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux應(yīng)用程序中,常用的延時函數(shù)包括sleep()、usleep()、select()等,這幾個延時函數(shù)函數(shù)的執(zhí)行機制,都是將當(dāng)前線程掛起,由操作系統(tǒng)做延時,然后再恢復(fù)當(dāng)前線程。這意味著其延時的最小間隔是兩次線程切換時間。經(jīng)測試,在單一線程情況下,兩次線程的切換時間在150us左右。大多數(shù)情況下,應(yīng)用程序會有多個線程在運行,這時線程恢復(fù)有可能在下一個時間片,而Linux系統(tǒng)缺省的線程輪片時間為10ms,這意味著只有當(dāng)延時在大于10ms情況時,常規(guī)的延時函數(shù)才有意義。在工控領(lǐng)域,我們常常碰到需要微秒級的延時需求,例如實現(xiàn)某種讀寫時序等,這時Linux系統(tǒng)的常規(guī)延時函數(shù)難于滿足其需求。針對這樣的應(yīng)用需求,我們設(shè)計了采用內(nèi)存映射的方法操作主板的硬件定時器和GPIO,從而產(chǎn)生出具有微秒精度的脈沖波形來。下面就詳細介紹如何在用戶進程實現(xiàn)這樣的精確延時的操作。

以EM335x工控主板為例,用其內(nèi)部的定時器來實現(xiàn)精確延時的功能,EM335x內(nèi)部定時器的輸入時鐘為24MHz,單位時間為41.6ns,通過將Linux系統(tǒng)的mem設(shè)備文件和mmap()函數(shù)結(jié)合起來使用,可直接對EM335x內(nèi)部定時器的寄存器進行操作,再通過同樣的方式控制GPIO,實現(xiàn):(1)設(shè)置GPIO,(2)啟動定時器,當(dāng)檢測到定時器計數(shù)完畢,(3)再設(shè)置GPIO,共三個步驟,就可產(chǎn)生精確時間間隔的脈沖。

Linux系統(tǒng)中的/dev/mem設(shè)備文件,是專門用來讀寫物理地址用的,里面的內(nèi)容是所有物理內(nèi)存的地址以及內(nèi)容信息。只要我們使用mmap()函數(shù)將/dev/mem設(shè)備文件映射到進程地址空間,實現(xiàn)對內(nèi)存物理地址的讀寫,就能夠通過這種方式快速的對GPIO和定時器進行操作,而mmap操作提供了一種機制,讓用戶程序直接訪問設(shè)備內(nèi)存,這樣就相當(dāng)于直接對硬件進行操作,從而避開了驅(qū)動程序,如果調(diào)用驅(qū)動就需要在用戶空間和內(nèi)核空間互相拷貝數(shù)據(jù),還會涉及到系統(tǒng)調(diào)度等機制,效率將會變低。

將/dev/mem/設(shè)備文件中定時器的地址映射到用戶進程空間的代碼:
void *timer_em335x_pin_config(unsigned int BASE)
{
int mem_fd;
void *base;
mem_fd = open('/dev/mem', O_RDWR|O_SYNC);
printf('mem_fd is %d\n', mem_fd);
/* mmap Timer */
base = mmap(
NULL, //起始地址
DMTIMER_DEV_SIZE, //映射的文件內(nèi)容的大小
PROT_READ|PROT_WRITE,//映射區(qū)域可讀可寫
MAP_SHARED, //映射區(qū)域的寫入數(shù)據(jù)會寫回到原來的文件
mem_fd,
BASE//被映射的硬件地址
);
close(mem_fd);
return base;
}

將/dev/mem/設(shè)備文件中GPIO的地址映射到用戶進程空間的代碼:
void *GPIO_MMAP::gpio_em335x_pin_config(unsigned int BASE)
{
int mem_fd;
void *base;
mem_fd = open('/dev/mem', O_RDWR|O_SYNC);
printf('mem_fd is %d\n', mem_fd);
/* mmap GPIO */
base = mmap(
NULL,//起始地址
GPIO_DEV_SIZE, //映射的文件內(nèi)容的大小
PROT_READ|PROT_WRITE,//映射區(qū)域可讀可寫
MAP_SHARED,//映射區(qū)域的寫入數(shù)據(jù)會寫回到原來的文件
mem_fd,
BASE //被映射的硬件地址
);
close(mem_fd);
return base;
}

成功執(zhí)行時,mmap()函數(shù)返回被映射區(qū)的指針。普通文件被映射到進程地址空間后,進程可以像訪問普通內(nèi)存一樣對文件進行訪問,不必再調(diào)用read(),write()等操作。只需要使用返回的地址指針在對應(yīng)的寄存器的偏移地址賦值,就可以完成操作。在例程中已經(jīng)將函數(shù)接口引出(詳細的代碼請參考例程):
ptr=Timer_Init();//初始化,將定時器地址映射到用戶進程
Timer_Start(ptr, GPIO0, 0xfffffffa); //啟動定時器,并設(shè)置時間和哪一位GPIO

定時器是從0計數(shù)到0xffffffff,需要實現(xiàn)定時功能,我們就要改變定時器的初值,上面的程序中0xfffffffa為定時器的初值,前面提到過由于EM335x定時器時鐘為24MHZ,所以定時器單位時間為1/24000000=41.6ns,假設(shè)程序訪問寄存器還需要花費時間T0,在計算初值的時候,就需要加上這一部分時間才能保證準(zhǔn)確性,因此定時器取值的計算公式為:
T=0xffffffff-(目標(biāo)延時/41.6ns)+T0

經(jīng)過測試,執(zhí)行一次程序訪問寄存器所需花費的時間大約為T0=800ns。舉個例子,比如目標(biāo)延時為2μs,那么定時器初值為:0xffffffff-(2000/41.6)+800,也就是0xffffffe2,測試的時候帶入這個值,再進行微調(diào),即可得到想要的結(jié)果。

使用英創(chuàng)工控主板運行例程測試,分別測試延時1μs,1.5μs,2μs,5μs,10μs時的精度,結(jié)果如下:

目標(biāo)延時 定時器取值 實際延時
Min Max
1us 0xfffffffa 1.14us 1.20us


1us的測試波形

目標(biāo)延時 定時器取值 實際延時
Min Max
1.5us 0xffffffee 1.46us 1.52us


1.5μs的測試波形

目標(biāo)延時 定時器取值 實際延時
Min Max
2us 0xffffffe2 1.90us 2.08us

2μs的測試波形

目標(biāo)延時 定時器取值 實際延時
Min Max
5us 0xffffff9a 4.92us 5.04us

5μs的測試波形

目標(biāo)延時 定時器取值 實際延時
Min Max
10us 0xffffff22 9.90us 10.10us


10μs的測試波形

可以看到,在1μs時,誤差范圍在±200ns左右,超過1μs,其余的取值,誤差都在±100ns以內(nèi),隨著延時的增加,精確度將越來越高,在10μs的時候,誤差已經(jīng)非常小了。

通過以上方案實現(xiàn)了在用戶進程對精確延時的操作,詳細的操作代碼請參考例程。

關(guān)于這一方法在EM9x60系列工控主板上的實現(xiàn)可閱讀下文:英創(chuàng)嵌入式主板支持精確延時操作之二

注意事項:我們推薦客戶直接使用例程中引出的接口進行操作,不推薦客戶對硬件訪問這一部分代碼進行修改,以免在操作的時候出現(xiàn)無法預(yù)估的錯誤。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213795
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6101

    瀏覽量

    36303
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認證機構(gòu)

    近日,DEKRA德凱成功獲得沙特標(biāo)準(zhǔn)、計量和質(zhì)量組織(SASO)認可,正式成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?197次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國家推動IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國家網(wǎng)絡(luò)安全、推動產(chǎn)業(yè)升級和
    的頭像 發(fā)表于 06-13 10:06 ?1987次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略

    創(chuàng)浪潮下,國產(chǎn)主板有什么新的發(fā)展機遇?

    信息技術(shù)應(yīng)用創(chuàng)新浪潮的推動下,國產(chǎn)主板迎來了諸多新的發(fā)展機遇。信創(chuàng)產(chǎn)業(yè)旨在實現(xiàn)信息技術(shù)領(lǐng)域的自主可控,這一戰(zhàn)略目標(biāo)為國產(chǎn)主板的發(fā)展提供了廣闊的空間。信
    的頭像 發(fā)表于 05-09 09:24 ?217次閱讀
    信<b class='flag-5'>創(chuàng)</b>浪潮下,國產(chǎn)主板有什么新的發(fā)展機遇?

    Linux的作用

    學(xué)校和教育機構(gòu)使用Linux來教授計算機科學(xué)和信息技術(shù)相關(guān)的課程。 總之,Linux是一個功能強大、靈活且廣泛應(yīng)用的操作系統(tǒng),適用于各種不同的用途和場景。
    發(fā)表于 04-04 01:57

    龍芯中科榮獲2024年度信息技術(shù)應(yīng)用創(chuàng)新工作委員會卓越貢獻成員單位

    近日,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會(以下簡稱“信創(chuàng)工委會”)在北京召開2024年度工作總結(jié)座談會暨信創(chuàng)“大比武”總結(jié)大會。中國工程院院士、信
    的頭像 發(fā)表于 01-23 10:50 ?703次閱讀

    芯盛智能榮獲2024年信息技術(shù)應(yīng)用創(chuàng)新工作委員會卓越貢獻成員單位

    日前,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會(以下簡稱 “信創(chuàng)工委會”)2024 年度總結(jié)座談會于北京隆重舉行。此次會議對在信創(chuàng)工作中作出突出貢獻的成員單位予以表彰。江蘇
    的頭像 發(fā)表于 01-20 09:56 ?639次閱讀

    飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕

    近日,由中國教育技術(shù)協(xié)會主辦,教育部教育管理信息中心教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信創(chuàng)工委會支持,北京航空航天
    的頭像 發(fā)表于 12-24 09:57 ?516次閱讀

    有方科技參編的信息技術(shù)團體標(biāo)準(zhǔn)發(fā)布

    近日,有方科技參編的《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第1部分:企業(yè)背景評價》《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第2部分:技術(shù)掌控評價》《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第
    的頭像 發(fā)表于 12-23 10:44 ?604次閱讀

    龍芯中科助力2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦

    近日,2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽在北京航空航天大學(xué)成功舉辦。本次大賽由中國教育技術(shù)協(xié)會主辦,教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信
    的頭像 發(fā)表于 12-19 17:02 ?571次閱讀

    AWTK-WEB 快速入門(2) - JS 應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺的應(yīng)用程序。有時我們需要使用Web界面與設(shè)備進行交互,本文介紹一下如何使用JS語言開發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新
    的頭像 發(fā)表于 12-05 01:04 ?502次閱讀
    AWTK-WEB 快速入門(2) - JS <b class='flag-5'>應(yīng)用程序</b>

    AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺的應(yīng)用程序。有時我們需要使用Web界面與設(shè)備進行交互,本文介紹一下如何使用C語言開發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新建
    的頭像 發(fā)表于 11-27 11:46 ?716次閱讀
    AWTK-WEB 快速入門(1) - C 語言<b class='flag-5'>應(yīng)用程序</b>

    中科創(chuàng)達榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達憑借非凡的技術(shù)實力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競爭力百強企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?970次閱讀

    創(chuàng)國產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀

    創(chuàng),是信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)的簡稱,于2016年“信創(chuàng)工委會”(信息技術(shù)應(yīng)用創(chuàng)新工作委員會)提出,目的就是要推動我們國內(nèi)軟硬件關(guān)鍵技術(shù)的研發(fā)
    的頭像 發(fā)表于 09-21 16:15 ?880次閱讀

    梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

    日前,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)在天津舉辦2024信息技術(shù)應(yīng)用創(chuàng)新發(fā)展大會暨解決方案應(yīng)用推廣大會。會上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?762次閱讀

    實測14us,Linux-RT實時性能及開發(fā)案例分享—基于全志T507-H國產(chǎn)平臺

    運行,為避免CPU資源被程序完全占用,導(dǎo)致系統(tǒng)被掛起,因此在程序中增加100us的延時。程序原理大致如下:(1)在Linux-RT內(nèi)核上創(chuàng)建
    發(fā)表于 07-25 15:58