該書(shū)籍詳細(xì)說(shuō)明FREERTOS操作系統(tǒng)在stm32F407上面的移植過(guò)程,和使用方法
上傳時(shí)間: 2022-06-18
上傳用戶:kent
該書(shū)籍適合學(xué)習(xí)lwip協(xié)議棧的軟件開(kāi)發(fā)工程師,解析清楚明了,
標(biāo)簽: LwIP協(xié)議 嵌入式
上傳時(shí)間: 2022-06-18
上傳用戶:
Lwip協(xié)議棧的實(shí)現(xiàn)目的,無(wú)非是要上層用來(lái)實(shí)現(xiàn)app的socket編程。好,我們就從socket開(kāi)始。為了兼容性,lwip的socket應(yīng)該也是提供標(biāo)準(zhǔn)的socket接口函數(shù),恩,沒(méi)錯(cuò),在src\inc lude\lwip\socket.h文件中可以看到下面的宏定義:#if LWIP COMPAT SOCKETS#define accept(a,b,c)Iwip accept(a,b,c)#define bind(a,b,c)Iwip bind(a,b,c)#define shutdown(a,b)Iwip shutdown(a,b)#define closesocket(s)Iwip close(s)好,這個(gè)結(jié)構(gòu)先不管它,接著看下get socket函數(shù)的實(shí)現(xiàn)【也是在src\api\socket.c文件中】,在這里我們看到這樣一條語(yǔ)句sock =&sockets[s];很明顯,返回值也是這個(gè)sock它是根據(jù)傳進(jìn)來(lái)的序列號(hào)在sockets數(shù)組中找到對(duì)應(yīng)的元素并返回該元素的地址。好了,那么這個(gè)sockets數(shù)組是在哪里被賦值了這些元素的呢?進(jìn)行到這里似乎應(yīng)該從標(biāo)準(zhǔn)的socket編程的開(kāi)始,也就是socket函數(shù)講起,那我們就順便看一下。它對(duì)應(yīng)的實(shí)際實(shí)現(xiàn)是下面這個(gè)函數(shù)Int Iwip socket(int domain,int type,int protocol)【src\api\socket.c】這個(gè)函數(shù)根據(jù)不同的協(xié)議類型,也就是函數(shù)中的type參數(shù),創(chuàng)建了一個(gè)netconn結(jié)構(gòu)體的指針,接著就是用這個(gè)指針作為參數(shù)調(diào)用了alloc socket函數(shù),下面具體看下這個(gè)函數(shù)的實(shí)現(xiàn)
標(biāo)簽: lwip 底層結(jié)構(gòu)
上傳時(shí)間: 2022-06-19
上傳用戶:aben
前言:由于之前聽(tīng)過(guò)太多人抱怨移植FreeRTOS到STM32有各種各樣的問(wèn)題,小燈經(jīng)過(guò)一年多對(duì)FreeRTOS的研究并在公司產(chǎn)品中應(yīng)用, 多少有些心得, 接下來(lái)就由小燈以最新版的FreeRTOS為例一步一步移植到STM32F103 上,并提醒大家某些需要注意的事項(xiàng)。本文檔為非正式技術(shù)文檔,故排版會(huì)有些凌亂,希望大家能提供寶貴意見(jiàn)以供小燈參考改進(jìn)。下面先以IAR 移植為例, 說(shuō)明移植過(guò)程中的諸多注意事項(xiàng), 最后再以MDK移植時(shí)不再重復(fù)說(shuō)明,所以還是建議大家先花些時(shí)間看IAR 的移植過(guò)程,哪怕你不使用IAR,最好也注意下那一大堆注意事項(xiàng)!一、從官網(wǎng)下載最新版的FreeRTOS源碼下面的網(wǎng)址是官方最新源碼的下載地址:https://sourceforge.net/projects/freertos/files/latest/download?source=files目前官方提供的最新版本是v9.0.0 , FreeRTOS 源碼在解壓目錄下的路徑為FreeRTOS_V9.0.0rc2\FreeRTOS\SourceFreeRTOS組織為了搶用戶也是拼了命的, 不信你打開(kāi)Demo文件夾看看, 里面提供了FreeRTOS在各種單片機(jī)上已經(jīng)移植好的工程,如果建工程時(shí)遇到什么問(wèn)題,可以參考下這些Demo。不過(guò)小燈現(xiàn)在著重于自己動(dòng)手移植FreeRTOS,考慮到原子哥@正點(diǎn)原子的用戶比較多,絕大多數(shù)習(xí)慣了使用MDK來(lái)開(kāi)發(fā)STM32,因此小燈分別以IAR 和MDK兩種使用比較廣泛的開(kāi)發(fā)環(huán)境來(lái)移植FreeRTOS。說(shuō)到IAR 和MDK,不得不提的是小燈自從用了IAR 之后就果斷放棄了MDK,相信很多人有這個(gè)經(jīng)歷,哈哈!在開(kāi)始移植FreeRTOS之前,先介紹下FreeRTOS的源碼:
上傳時(shí)間: 2022-06-20
上傳用戶:
隨著嵌入式技術(shù)的不斷發(fā)展,嵌入式芯片的不斷革新,嵌入式操作系統(tǒng)也逐漸成為嵌人式系統(tǒng)中不可或缺的部分。嵌入式操作系統(tǒng)的運(yùn)用不僅能夠更有效、更合理的利用現(xiàn)有的CPU的資源,而且能夠簡(jiǎn)化應(yīng)用軟件的設(shè)計(jì),縮短應(yīng)用的開(kāi)發(fā)周期,保證系統(tǒng)的可靠性和實(shí)時(shí)性。本文主要研究基于STM32芯片的硬件平臺(tái),由于RAM資源的限制,只能使用占用資源少的小型操作系統(tǒng),常見(jiàn)的主要有uC/os-Il eCos,F(xiàn)reeRTOS等,與uC/Os-1 eCcos等商業(yè)收費(fèi)的操作系統(tǒng)不同,F(xiàn)reeRTOS操作系統(tǒng)是一個(gè)源碼公開(kāi)的免費(fèi)實(shí)時(shí)操作系統(tǒng),能夠很好地移植于各種體系結(jié)構(gòu)的微型處理器。1 FreeRTOS操作系統(tǒng)的體系結(jié)構(gòu)作為一款輕量級(jí)操作系統(tǒng),F(xiàn)reeRTOS提供了任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄等功能,并且具有源碼公開(kāi)、可裁減、可移植、調(diào)度策略靈活的特點(diǎn)[1-2,。本文主要從任務(wù)調(diào)度機(jī)制、系統(tǒng)時(shí)間管理機(jī)制、內(nèi)存分配機(jī)制、任務(wù)通信與同步機(jī)制介紹操作系統(tǒng)的體系結(jié)構(gòu),并針對(duì)時(shí)下流行的C/OS-1系統(tǒng)進(jìn)行類
標(biāo)簽: 嵌入式操作系統(tǒng) freertos
上傳時(shí)間: 2022-06-20
上傳用戶:
Tickless Idle Mode(FreeRTOS下的實(shí)現(xiàn))一前言目前,越來(lái)越多的嵌入式產(chǎn)品在開(kāi)發(fā)中使用RTOS作為軟件平臺(tái),同時(shí),開(kāi)發(fā)中對(duì)低功耗的要求也越來(lái)越高,這篇文檔會(huì)討論一下如何在RTOS中處理微控制器的低功耗特性。應(yīng)用中使用的RTOS一般采用基于時(shí)間片輪轉(zhuǎn)的搶占式任務(wù)調(diào)度機(jī)制,一般的低功耗設(shè)計(jì)思路如下:1,當(dāng)ldle任務(wù)運(yùn)行時(shí),進(jìn)入低功耗模式:2,在適當(dāng)?shù)臈l件下,通過(guò)中斷或者外部事件喚醒MCU.但是,從第二點(diǎn)可以看出,每次當(dāng)OS系統(tǒng)定時(shí)器產(chǎn)生中斷時(shí),也會(huì)將MCU從低功耗模式中喚醒,而頻繁的進(jìn)入低功耗模式/從低功耗模式中喚醒會(huì)使得MCU無(wú)法進(jìn)入深度睡眠,對(duì)低功耗設(shè)計(jì)而言也是不合理的。在FreeRTOS中給出了一種低功耗設(shè)計(jì)模式-Tickless Idle Mode,這個(gè)方法可以讓MCU更長(zhǎng)時(shí)間的處于低功耗模式。
上傳時(shí)間: 2022-06-22
上傳用戶:qingfengchizhu
網(wǎng)絡(luò)時(shí)間協(xié)議NTP(Network Time Protocol)是由RFC 1305定義的時(shí)間同步協(xié)議,用來(lái)在分布式時(shí)間服務(wù)器和客戶端之間進(jìn)行時(shí)間同步.NTP采用UDP進(jìn)行數(shù)據(jù)傳輸,端口號(hào)為123,可提供了1~50 ms的精確度,精確度取決于同步源和網(wǎng)絡(luò)路徑等特性(簡(jiǎn)單網(wǎng)絡(luò)時(shí)間協(xié)議SNTP(Simple Network Time Pro-tocol)是一個(gè)簡(jiǎn)化了的NTP服務(wù)器和NTP客戶端策略,SNTP在協(xié)議實(shí)現(xiàn)上沒(méi)有什么更改,在最近也不會(huì)有什么變動(dòng)。訪問(wèn)范例與UDP/TIME協(xié)議是一致的,實(shí)際上,SNTP應(yīng)該更容易適用于使用個(gè)人計(jì)算機(jī)的UDP/TIME客戶,而且SNTP也被設(shè)計(jì)在一個(gè)專門的服務(wù)器(包括一臺(tái)集成的無(wú)線電時(shí)鐘)上操作.SNTP主要通過(guò)同步算法來(lái)交換時(shí)間服務(wù)器和客戶端的時(shí)間截,從而估算出數(shù)據(jù)包在網(wǎng)絡(luò)上的往返延遲,進(jìn)而獨(dú)立地估算系統(tǒng)的時(shí)鐘偏差.SNTP報(bào)文格式如圖1所示。
上傳時(shí)間: 2022-06-23
上傳用戶:20125101110
直流系統(tǒng)是給變電站各類信號(hào)設(shè)備、保護(hù)、自動(dòng)裝置、事故照明、應(yīng)急電源及斷路器分合閘操作提供直流電源的電源設(shè)備。直流系統(tǒng)的可靠與否,對(duì)變電站的安全運(yùn)行起著至關(guān)重要的作用。直流系統(tǒng)主監(jiān)控是整個(gè)直流系統(tǒng)的控制、管理核心。主監(jiān)控單元的主要任務(wù)是:對(duì)直流系統(tǒng)中各功能單元和蓄電池進(jìn)行長(zhǎng)期自動(dòng)監(jiān)測(cè)、獲取直流系統(tǒng)中的各種運(yùn)行參數(shù)和狀態(tài)、根據(jù)測(cè)量數(shù)據(jù)及運(yùn)行狀態(tài)實(shí)時(shí)進(jìn)行處理,并以此為依據(jù)對(duì)直流系統(tǒng)進(jìn)行控制,實(shí)現(xiàn)系統(tǒng)的全自動(dòng)精確管理,從而優(yōu)化直流系統(tǒng)的運(yùn)行狀況,保證其工作的連續(xù)性、安全性和可靠性。嵌入式軟硬件技術(shù)已廣泛用于變電站自動(dòng)化、配電網(wǎng)自動(dòng)化、新能源發(fā)電控制等智能電網(wǎng)的各個(gè)應(yīng)用領(lǐng)域。主監(jiān)控單元運(yùn)行時(shí)處理任務(wù)十分繁雜,包括MMI人機(jī)交互、電池充放電管理算法、開(kāi)入開(kāi)出控制、系統(tǒng)內(nèi)部通信、后合通訊等任務(wù),并且對(duì)任務(wù)的實(shí)時(shí)性要求較高。因此,主監(jiān)控單元的軟件設(shè)計(jì)是多任務(wù)、實(shí)時(shí)性和復(fù)雜程序較高的工作。嵌人式實(shí)時(shí)操作系統(tǒng)(RToS)的出現(xiàn)為開(kāi)發(fā)復(fù)雜多任務(wù)提供了很好的解決方案。FreeRTOS操作系統(tǒng)是一個(gè)源碼公開(kāi)的嵌入式實(shí)時(shí)操作系統(tǒng),具有可移植、可裁減、調(diào)度策略靈活的特點(diǎn),可以方便地移植到各種體系結(jié)構(gòu)的微處理器上運(yùn)行。
標(biāo)簽: freertos 直流系統(tǒng)
上傳時(shí)間: 2022-06-24
上傳用戶:slq1234567890
1 準(zhǔn)備1.1 硬件和編譯環(huán)境1.1.1 開(kāi)發(fā)板硬件選用PIC18F25K22,在淘寶上可以買到開(kāi)發(fā)板, LIXUE 工作室出品的。價(jià)格在140 左右。1.1.2 IDE編譯環(huán)境為MPLAB IDE V8.87C 編譯器為MCC18,版本號(hào)為3.38(以上編譯環(huán)境均由開(kāi)發(fā)板中的光盤(pán)提供)1.1.3 仿真器PICkit3,同一家店買的1.2 FreeRTOS 相關(guān)移植文件準(zhǔn)備1.2.1 下載移植文件在Microchip 官網(wǎng)下載通用移植文件http://embeddedcodesource.com/rtos我是選了下面這個(gè),點(diǎn)擊download 即可下載,解壓后里面存在如下文件,1.2.2 查找有用的文件下載到的FreeRTOS為6.0.4 版本1)找到三個(gè).c 文件如上圖所示,解壓后,主要的文件在FreeRTOS\Source文件夾中,如下所示:其中l(wèi)ist.c , queue.c ,tasks.c 無(wú)需修改,作為主要的FreeRTOS的文件,2)找到與.c 文件對(duì)應(yīng)的.h 文件如下圖所示,與之對(duì)應(yīng)的在FreeRTOS\Source\include文件夾中:找到list.h , queue.h ,tasks.h,也無(wú)需修改。3)另外還有用的文件包括FreeRTOS.h , portable.h ,projdef.h4)找到heap_1.c找到FreeRTOS\Source\portable\MemMang文件夾里面5)移植修改文件主要包括port.c portmacro.h,在找到FreeRTOS\Source\portable\MPLAB\PIC18F文件夾里面6)其他文件在FreeRTOS_C18\FreeRTOS PrimerEjemplo文件夾中包含了主體的Demo 工程文件,關(guān)注FreeRTOSConfig.h,還有兩個(gè).lkr 鏈接文件。2 示例Demo 說(shuō)明點(diǎn)開(kāi)FreeRTOS_C18\FreeRTOS PrimerEjemplo 文件夾中的.mcw 工程文件,發(fā)現(xiàn)提示丟失文件,如下所示,其實(shí)是定位出現(xiàn)文件,依次對(duì)應(yīng)步驟1.2.2 中的各個(gè)文件夾位置查找,重新定位即可,定位好之后,編譯即可通過(guò),
標(biāo)簽: freertos
上傳時(shí)間: 2022-06-24
上傳用戶:
摘要:FreeR'TOS作為一種開(kāi)源的輕量級(jí)多任務(wù)實(shí)時(shí)操作系統(tǒng),被廣泛應(yīng)用在各種嵌入式儀器和設(shè)備中,但該操作系統(tǒng)不支持軟件模塊的動(dòng)態(tài)加載,這限制了它的靈活性和擴(kuò)展性。本文在詳細(xì)分析ELF文件符號(hào)重定位原理的基礎(chǔ)上,通過(guò)修改FreeRTOS任務(wù)的內(nèi)存布局,并在其內(nèi)核中添加ELF文件加載器,實(shí)現(xiàn)軟件模塊的動(dòng)態(tài)加載和卸載功能。程序在STM32平臺(tái)上的測(cè)試結(jié)果表明,軟件模塊能夠在系統(tǒng)運(yùn)行時(shí)被動(dòng)態(tài)加載入內(nèi)存,并成功被FreeRTOS內(nèi)核調(diào)度執(zhí)行。關(guān)鍵詞:FreeRTOS;ELF文件;動(dòng)態(tài)軟件模塊;符號(hào)重定位0引言動(dòng)態(tài)軟件模塊是一種能夠在操作系統(tǒng)運(yùn)行時(shí)加載和卸載的程序代碼或數(shù)據(jù),對(duì)于不支持該特性的嵌人式操作系統(tǒng),其任務(wù)代碼必須與操作系統(tǒng)內(nèi)核一起編譯,鏈接成一個(gè)完整的可執(zhí)行鏡像,并下載或燒寫(xiě)到目標(biāo)板中運(yùn)行,一旦任務(wù)代碼需要修改更新,則必須重新編譯所有代碼。這一不支持動(dòng)態(tài)軟件模塊的缺點(diǎn)限制了嵌入式操作系統(tǒng)的靈活性和可擴(kuò)展性,給應(yīng)用軟件的更新升級(jí)也帶來(lái)了不便。
標(biāo)簽: freertos 動(dòng)態(tài)軟件
上傳時(shí)間: 2022-06-24
上傳用戶:
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1