色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-17 09:51 ? 次閱讀

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

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

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

將/dev/mem/設(shè)備文件中定時(shí)器的地址映射到用戶進(jìn)程空間的代碼:
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ù)會(huì)寫回到原來的文件
mem_fd,
BASE//被映射的硬件地址
);
close(mem_fd);
return base;
}

將/dev/mem/設(shè)備文件中GPIO的地址映射到用戶進(jìn)程空間的代碼:
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ù)會(huì)寫回到原來的文件
mem_fd,
BASE //被映射的硬件地址
);
close(mem_fd);
return base;
}

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

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

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

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

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


1us的測(cè)試波形

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


1.5μs的測(cè)試波形

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

2μs的測(cè)試波形

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

5μs的測(cè)試波形

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


10μs的測(cè)試波形

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

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

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

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

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

    關(guān)注

    87

    文章

    11322

    瀏覽量

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

    關(guān)注

    7

    文章

    6085

    瀏覽量

    35443
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Linux網(wǎng)絡(luò)協(xié)議棧的實(shí)現(xiàn)

    網(wǎng)絡(luò)協(xié)議棧是操作系統(tǒng)核心的一個(gè)重要組成部分,負(fù)責(zé)管理網(wǎng)絡(luò)通信中的數(shù)據(jù)包處理。在 Linux 操作系統(tǒng)中,網(wǎng)絡(luò)協(xié)議棧(Network Stack)負(fù)責(zé)實(shí)現(xiàn) TCP/IP 協(xié)議簇,處理應(yīng)用程序發(fā)起的網(wǎng)絡(luò)
    的頭像 發(fā)表于 09-10 09:51 ?331次閱讀
    <b class='flag-5'>Linux</b>網(wǎng)絡(luò)協(xié)議棧的<b class='flag-5'>實(shí)現(xiàn)</b>

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

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

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

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

    Linux是做什么用的?

    ,進(jìn)行軟件開發(fā)、系統(tǒng)管理和網(wǎng)絡(luò)管理等工作。 5、學(xué)習(xí)和教育:Linux是一個(gè)開源的操作系統(tǒng),提供了大量的學(xué)習(xí)資源和教育機(jī)會(huì)。許多學(xué)校和教育機(jī)構(gòu)使用Linux來教授計(jì)算機(jī)科學(xué)和信息技術(shù)相關(guān)的課程。 總之,
    發(fā)表于 04-28 15:40

    龍芯中科三項(xiàng)信創(chuàng)方案入圍工信部2023年信息技術(shù)應(yīng)用創(chuàng)新應(yīng)用示范案例名單

    近日,工業(yè)和信息化部通報(bào)了2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案征集遴選結(jié)果,本次共評(píng)選出典型解決方案173個(gè)、應(yīng)用示范案例83個(gè)、單項(xiàng)創(chuàng)新案例64個(gè)。
    的頭像 發(fā)表于 03-07 16:45 ?964次閱讀
    龍芯中科三項(xiàng)信<b class='flag-5'>創(chuàng)</b>方案入圍工信部2023年<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新應(yīng)用示范案例名單

    RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù)

    電子發(fā)燒友網(wǎng)站提供《RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 02-21 14:22 ?1次下載
    RX78M組  EtherCAT ETG.5003示例<b class='flag-5'>程序</b>固件<b class='flag-5'>信息技術(shù)</b>

    如何使用linux下gdb來調(diào)試python程序

    中,我們將介紹如何在Linux中使用GDB來調(diào)試Python程序。 一、安裝GDB和Python調(diào)試符號(hào) 在使用GDB調(diào)試Python程序之前,需要安裝GDB和Python調(diào)試符號(hào)。首
    的頭像 發(fā)表于 01-31 10:41 ?2667次閱讀

    通過實(shí)時(shí)加速器技術(shù)實(shí)現(xiàn)實(shí)時(shí)應(yīng)用程序的 Windows

    時(shí)功能應(yīng)用程序。這是通過專門為實(shí)時(shí)應(yīng)用程序保留一個(gè)或多個(gè)CPU來實(shí)現(xiàn)的,設(shè)置 Windows 適當(dāng)?shù)膮?shù)化并利用 acontis 內(nèi)核驅(qū)動(dòng)程序進(jìn)行
    的頭像 發(fā)表于 01-29 16:03 ?929次閱讀
    通過實(shí)時(shí)加速器<b class='flag-5'>技術(shù)</b><b class='flag-5'>實(shí)現(xiàn)</b>實(shí)時(shí)<b class='flag-5'>應(yīng)用程序</b>的 Windows
    主站蜘蛛池模板: 一本道高清无码v| 城中村快餐嫖老妇对白| 在线观看成人免费视频| 99er热精品视频国产免费| 草莓国产视频免费观看| 国产午夜AV无码无片久久96 | 最近更新2019中文字幕免费| 成人免费视频无遮挡在线看| 黄得让人湿的片段| 欧美九十老太另类| 亚洲av欧美在我| 99re8热视频这在线视频| 国产精品久久人妻无码网站一区L 国产精品久久人妻无码蜜 | 亚洲高清无码在线 视频| 97精品少妇偷拍AV| 国产久久亚洲美女久久| 美女露出逼| 校草让我脱了内裤给全班看| 97国内精品久久久久久久影视| 国产精品无码麻豆放荡AV| 毛片免费在线播放| 性啪啪chinese东北女人| av视频在线免播放观看| 狠狠婷婷综合久久久久久| 日本不卡不码高清免费| 一二三四在线播放免费观看中文版视频| 成人在线视频免费| 久久永久影院免费| 亚州视频一区| 草莓湿漉漉是好事还是恶性| 久久精品观看| 小玲被公扒开腿| jk制服喷水| 久久久久久九九| 午夜射精日本三级| z00兽200俄罗斯| 恋夜影院安卓免费列表uc| 亚洲国产精品天堂在线播放 | 在线日韩欧美一区二区三区| 国产精品人妻午夜福利| 欧洲人交xxx69|