久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

【工程師6】+理論類+RTT進(jìn)階應(yīng)用之道。。。

你能走多遠(yuǎn)?取決你的才智?取決于你的努力?我想大部分人都不是。。。

躺贏是一種大眾化鄙視的進(jìn)階之路,但同樣也是大部分人走向成功(達(dá)成自己的目標(biāo))的必經(jīng)之路。。。

你能走多遠(yuǎn),取決于:選擇。。。。選擇。。。。選擇。。。(雖然努力固然很重要,但并不是我想說的取決于。。。)

作為一名單片機(jī)軟件工程師。。。你的出路在哪里,假如你堅定了選擇了這個職業(yè),那么你的進(jìn)階之路在哪里?

RTOS是唯一。。。RTT并不是必要的選擇。。。

這條職業(yè)道路最核心的課題是:技術(shù)應(yīng)用而非研發(fā)。。。應(yīng)用他人成熟的技術(shù),借助更加開放的平臺,才會促使你更快的成長。

研發(fā)型的工程師并不是沒有,而是假如你離開了這個行業(yè),離開了這款產(chǎn)品,你的競爭力還會在哪里?

選擇RTT是因為行業(yè)的需要,應(yīng)用的特點,因為它更像Linux,但并不代表它是最適合你的。

RTT的核心還是一款RTOS,外面加了一層類似Linux的驅(qū)動方案,應(yīng)用開放化平臺的理念,讓工程師可以開發(fā)各種各種的軟件包,提供平臺共享

這才是最棒的地方,這也就是告訴你:你并不是一個人在戰(zhàn)斗,你需要飛機(jī)、大炮、坦克的時候,自己造并不是唯一選擇, 你的身后有成千上萬的隊友在無私的給你提供著你需要的資源。

為什么要選擇RTOS?萬年課題這里不想討論他有多么好,接下來給你出幾個思考題,假如你想明白了,你就自行選擇吧 。

1111

全部回復(fù)(34)
正序查看
倒序查看
2019-09-02 10:33

課題1:先來個干貨,也就是你認(rèn)為嵌入式軟件設(shè)計的時候,最復(fù)雜的部分處在哪里?

先來講講構(gòu)架的問題,大部分裸奔的工程只有一種選擇,那就是前后臺的設(shè)計方式:

對于程序的設(shè)計有時候很難會做驅(qū)動與應(yīng)用程序的區(qū)分,大家都混在一起所以當(dāng)有需求需要更改的時候

改會變成一件很痛苦的事情,大部分的更改來自于邏輯部分,也就是應(yīng)用部分,假如把一個單片機(jī)干的活

不計成本的用十個單片機(jī)來實現(xiàn),可能還有倆單片機(jī)在玩,啥也不干,這樣的分解后程序設(shè)計會是怎樣呢?

其實RTOS的核心目的就是為了讓一個單片機(jī)用出十個甚至上百個單片機(jī)存在的效果而存在的。

他的目的并不是復(fù)雜化我們的設(shè)計,相反是為了減輕我們設(shè)計的復(fù)雜度。

0
回復(fù)
2019-09-02 11:03
@程序小白
課題1:先來個干貨,也就是你認(rèn)為嵌入式軟件設(shè)計的時候,最復(fù)雜的部分處在哪里?先來講講構(gòu)架的問題,大部分裸奔的工程只有一種選擇,那就是前后臺的設(shè)計方式:[圖片]對于程序的設(shè)計有時候很難會做驅(qū)動與應(yīng)用程序的區(qū)分,大家都混在一起所以當(dāng)有需求需要更改的時候改會變成一件很痛苦的事情,大部分的更改來自于邏輯部分,也就是應(yīng)用部分,假如把一個單片機(jī)干的活不計成本的用十個單片機(jī)來實現(xiàn),可能還有倆單片機(jī)在玩,啥也不干,這樣的分解后程序設(shè)計會是怎樣呢?其實RTOS的核心目的就是為了讓一個單片機(jī)用出十個甚至上百個單片機(jī)存在的效果而存在的。他的目的并不是復(fù)雜化我們的設(shè)計,相反是為了減輕我們設(shè)計的復(fù)雜度。[圖片]

課題2:驅(qū)動程序的設(shè)計及驗證是單片機(jī)設(shè)計的第二大課題。

單片機(jī)軟件是需要直接和底層的很多硬件直接打交道,例如時鐘芯片,存儲芯片,通信芯片,傳感器芯片等等,設(shè)計驅(qū)動程序在很大一部分程度上還是相當(dāng)復(fù)雜的尤其是踏入一個新的領(lǐng)域的應(yīng)用時,傳統(tǒng)的一些驅(qū)動芯片的程序,都是在其他驅(qū)動程序的基礎(chǔ)上, 進(jìn)行修修改改就OK了,可以用了,一旦涉及到驅(qū)動程序的編寫,也將是一部分很大的工作,其中有的涉及的MCU的內(nèi)部外設(shè),有的涉及到外部的通信接口的協(xié)議定制,有沒有想過有人把很多標(biāo)準(zhǔn)的驅(qū)動固化到了RTOS的一部分,這樣子來縮短開發(fā)周期呢,

0
回復(fù)
2019-09-02 11:21
@程序小白
課題2:驅(qū)動程序的設(shè)計及驗證是單片機(jī)設(shè)計的第二大課題。單片機(jī)軟件是需要直接和底層的很多硬件直接打交道,例如時鐘芯片,存儲芯片,通信芯片,傳感器芯片等等,設(shè)計驅(qū)動程序在很大一部分程度上還是相當(dāng)復(fù)雜的尤其是踏入一個新的領(lǐng)域的應(yīng)用時,傳統(tǒng)的一些驅(qū)動芯片的程序,都是在其他驅(qū)動程序的基礎(chǔ)上,進(jìn)行修修改改就OK了,可以用了,一旦涉及到驅(qū)動程序的編寫,也將是一部分很大的工作,其中有的涉及的MCU的內(nèi)部外設(shè),有的涉及到外部的通信接口的協(xié)議定制,有沒有想過有人把很多標(biāo)準(zhǔn)的驅(qū)動固化到了RTOS的一部分,這樣子來縮短開發(fā)周期呢,[圖片][圖片]

課題3:正視C語言:面向?qū)ο?or 面向過程 ?

面向?qū)ο蠛兔嫦蜻^程是針對軟件工程來講的,與C語言無關(guān),大部分時間我們應(yīng)用C語言都是應(yīng)用面向過程進(jìn)行程序設(shè)計,雖然軟件復(fù)雜度的上升,面向?qū)ο笫且粋€更好的選擇,像RTOS就是選擇面向?qū)ο笞鳛樵O(shè)計的核心,除了少量匯編代碼的工作,大部分全部采用C語言進(jìn)行設(shè)計的,也就是你也可以采用面向?qū)ο蟮脑O(shè)計思想應(yīng)用C語言來設(shè)計程序。面向?qū)ο蟮闹С諧++更加全面一些。

0
回復(fù)
2019-09-03 15:16
@程序小白
課題3:正視C語言:面向?qū)ο髈r面向過程?面向?qū)ο蠛兔嫦蜻^程是針對軟件工程來講的,與C語言無關(guān),大部分時間我們應(yīng)用C語言都是應(yīng)用面向過程進(jìn)行程序設(shè)計,雖然軟件復(fù)雜度的上升,面向?qū)ο笫且粋€更好的選擇,像RTOS就是選擇面向?qū)ο笞鳛樵O(shè)計的核心,除了少量匯編代碼的工作,大部分全部采用C語言進(jìn)行設(shè)計的,也就是你也可以采用面向?qū)ο蟮脑O(shè)計思想應(yīng)用C語言來設(shè)計程序。面向?qū)ο蟮闹С諧++更加全面一些。[圖片]

課題4:RTT是如何采用面向?qū)ο蟮姆绞綄崿F(xiàn)I/O設(shè)備模型框架的(這是一個實戰(zhàn)的案例)

用面向?qū)ο蟮姆绞綄崿F(xiàn)I/O設(shè)備模型框架的實現(xiàn)方式和之前我們做軟件設(shè)計驅(qū)動的方式有很大的普通,具體要說優(yōu)勢在哪里,說實話還是講不太出來,但是實現(xiàn)方式還是能夠理解的,先來看看他的設(shè)計框架模型:

傳統(tǒng)設(shè)計驅(qū)動程序,很少涉及到注冊的概念,我們會涉及到層的概念,通過函數(shù)調(diào)用的方式,從最上層找到最底層的應(yīng)用。

而面向?qū)ο蟮脑O(shè)計是將每一層的設(shè)計全部都固化的本身,不會顯式的調(diào)用底層的東西,這樣做了很好的隔離,無論底層如何變動,都與上層無關(guān)。

而如果找到最底層的正確的驅(qū)動呢,是通過注冊的行為,將每一層之間用對象連接起來,實際上每一層操作的是同一個對象。

0
回復(fù)
2019-09-03 16:42
@程序小白
課題4:RTT是如何采用面向?qū)ο蟮姆绞綄崿F(xiàn)I/O設(shè)備模型框架的(這是一個實戰(zhàn)的案例)用面向?qū)ο蟮姆绞綄崿F(xiàn)I/O設(shè)備模型框架的實現(xiàn)方式和之前我們做軟件設(shè)計驅(qū)動的方式有很大的普通,具體要說優(yōu)勢在哪里,說實話還是講不太出來,但是實現(xiàn)方式還是能夠理解的,先來看看他的設(shè)計框架模型:[圖片]傳統(tǒng)設(shè)計驅(qū)動程序,很少涉及到注冊的概念,我們會涉及到層的概念,通過函數(shù)調(diào)用的方式,從最上層找到最底層的應(yīng)用。而面向?qū)ο蟮脑O(shè)計是將每一層的設(shè)計全部都固化的本身,不會顯式的調(diào)用底層的東西,這樣做了很好的隔離,無論底層如何變動,都與上層無關(guān)。而如果找到最底層的正確的驅(qū)動呢,是通過注冊的行為,將每一層之間用對象連接起來,實際上每一層操作的是同一個對象。

面向?qū)ο螅詈诵牡牟糠志褪抢^承,繼承可以單繼承或者多層繼承,在應(yīng)用面向?qū)ο髮舆M(jìn)行連接時,最主要的手段就是通過繼承,你可以使用在繼承線路上的任何一個對象,以此為切入點而找到其父親,爺爺,上上一背,就像是大家都姓王,你說爺爺(類型),大家知道是指王大錘,父親,大家知道是指王二錘,兒子,大家知道是王小錘。同一對象以王小錘作為入口,對于三層構(gòu)架,底層設(shè)備,驅(qū)動層,I/O管理層,通過注冊函數(shù),讓每一層都找到自己對應(yīng)的類型,從而做自己該處理的事情。這就是核心。

下面看一看,三錘構(gòu)架,大錘:rt_object,二錘:rt_device,小錘:rt_serial_device

二錘的內(nèi)部構(gòu)造(類型定義):

0
回復(fù)
Kaidi3826
LV.1
7
2019-09-03 17:07
感覺技術(shù)很牛的,學(xué)習(xí)學(xué)習(xí)!
0
回復(fù)
2019-09-04 08:15
@Kaidi3826
感覺技術(shù)很牛的,學(xué)習(xí)學(xué)習(xí)!
共同學(xué)習(xí)
0
回復(fù)
2019-09-04 08:31
這個與STM32編程有啥直接關(guān)聯(lián)?
0
回復(fù)
2019-09-04 08:53
@程序小白
面向?qū)ο螅詈诵牡牟糠志褪抢^承,繼承可以單繼承或者多層繼承,在應(yīng)用面向?qū)ο髮舆M(jìn)行連接時,最主要的手段就是通過繼承,你可以使用在繼承線路上的任何一個對象,以此為切入點而找到其父親,爺爺,上上一背,就像是大家都姓王,你說爺爺(類型),大家知道是指王大錘,父親,大家知道是指王二錘,兒子,大家知道是王小錘。同一對象以王小錘作為入口,對于三層構(gòu)架,底層設(shè)備,驅(qū)動層,I/O管理層,通過注冊函數(shù),讓每一層都找到自己對應(yīng)的類型,從而做自己該處理的事情。這就是核心。下面看一看,三錘構(gòu)架,大錘:rt_object,二錘:rt_device,小錘:rt_serial_device[圖片]二錘的內(nèi)部構(gòu)造(類型定義):[圖片]
接下來我們講解下層的構(gòu)造,其實層本身是一個抽象的概念,無法實例化的理論是最難的理解的,這里將層映射到實際的文件,每一層在我看來就是一個.C文件,這樣講解不一定準(zhǔn)確,但是卻很好理解:

APP層:uart_sample.c

I/O設(shè)備管理層:device.c位于kernel域中,屬于os核心組成部分。

串口設(shè)備驅(qū)動框架層:serial.c (屬于os組件部分)

串口驅(qū)動程序:drv_usart.c

0
回復(fù)
2019-09-04 09:04
@lihui710884923
這個與STM32編程有啥直接關(guān)聯(lián)?

stm32只是眾多硬件平臺中的一個,RTT是平臺解決方案的存在,支持基本市面上你能看到的幾乎所有的硬件平臺,簡單來講就是后面你可以不再過多考慮硬件底層的編程,專注于應(yīng)用層,底層她幫你解決,不需要自己去設(shè)計各種外設(shè)的驅(qū)動,只需要適配和調(diào)試。

0
回復(fù)
2019-09-04 09:39
@程序小白
接下來我們講解下層的構(gòu)造,其實層本身是一個抽象的概念,無法實例化的理論是最難的理解的,這里將層映射到實際的文件,每一層在我看來就是一個.C文件,這樣講解不一定準(zhǔn)確,但是卻很好理解:APP層:uart_sample.c[圖片]I/O設(shè)備管理層:device.c位于kernel域中,屬于os核心組成部分。[圖片]串口設(shè)備驅(qū)動框架層:serial.c(屬于os組件部分)[圖片]串口驅(qū)動程序:drv_usart.c[圖片]

既然是進(jìn)階之道,還是對核心代碼做一些分析:

drv_usart.c中主要對stm32的串口外設(shè)進(jìn)行驅(qū)動設(shè)計,其代碼中,關(guān)于中斷部分就不做深入解析了,看一下,串口要想正常工作底層必備的幾個函數(shù):

串口的基本操作都在這里,配置,更改模式,發(fā)送,接收,在配合中斷就可以實現(xiàn)串口最底層基本功能;

0
回復(fù)
2019-09-04 09:50
@程序小白
既然是進(jìn)階之道,還是對核心代碼做一些分析:drv_usart.c中主要對stm32的串口外設(shè)進(jìn)行驅(qū)動設(shè)計,其代碼中,關(guān)于中斷部分就不做深入解析了,看一下,串口要想正常工作底層必備的幾個函數(shù):[圖片]串口的基本操作都在這里,配置,更改模式,發(fā)送,接收,在配合中斷就可以實現(xiàn)串口最底層基本功能;[圖片][圖片][圖片]

不論何種外設(shè),在使用之前初始化是必不可少的,底層驅(qū)動除了完成初始化功能以外,同時將設(shè)備驅(qū)動程序注冊了整個系統(tǒng)的構(gòu)架中,類似于Windows某些軟件想要使用的時候,需要注冊一樣,將層與層之間連接起來,register來自于設(shè)備管理層,而非驅(qū)動層。

0
回復(fù)
2019-09-04 10:13
@程序小白
不論何種外設(shè),在使用之前初始化是必不可少的,底層驅(qū)動除了完成初始化功能以外,同時將設(shè)備驅(qū)動程序注冊了整個系統(tǒng)的構(gòu)架中,類似于Windows某些軟件想要使用的時候,需要注冊一樣,將層與層之間連接起來,register來自于設(shè)備管理層,而非驅(qū)動層。[圖片]

到這里還沒有提過很難理解的用法,其實是有的,而且實現(xiàn)非常美,這一步部分不理解并不影響你的應(yīng)用,rt_hw_usart_init并非顯式的調(diào)用,而是被事先安排到了會按順序執(zhí)行的內(nèi)存中,等待算法列表的調(diào)用,全局搜索時發(fā)現(xiàn),

INIT_BOARD_EXPORT這是一個宏,具體實現(xiàn)如下:

這是涉及C 編譯器  內(nèi)存的一種綜合用法,如果感興趣的同學(xué)可以從網(wǎng)上找資料學(xué)習(xí)一下。這種變成方式,像是已經(jīng)為函數(shù)留好了入口,而實現(xiàn)者不需要關(guān)心在哪里調(diào)用的問題,僅需要通過宏將函數(shù)連接入入口對應(yīng)的內(nèi)存就好。

0
回復(fù)
2019-09-04 10:22
@程序小白
到這里還沒有提過很難理解的用法,其實是有的,而且實現(xiàn)非常美,這一步部分不理解并不影響你的應(yīng)用,rt_hw_usart_init并非顯式的調(diào)用,而是被事先安排到了會按順序執(zhí)行的內(nèi)存中,等待算法列表的調(diào)用,全局搜索時發(fā)現(xiàn),[圖片]INIT_BOARD_EXPORT這是一個宏,具體實現(xiàn)如下:[圖片]這是涉及C編譯器 內(nèi)存的一種綜合用法,如果感興趣的同學(xué)可以從網(wǎng)上找資料學(xué)習(xí)一下。這種變成方式,像是已經(jīng)為函數(shù)留好了入口,而實現(xiàn)者不需要關(guān)心在哪里調(diào)用的問題,僅需要通過宏將函數(shù)連接入入口對應(yīng)的內(nèi)存就好。

設(shè)備驅(qū)動層實現(xiàn)對于串口的通用用法的實現(xiàn)及封裝,在講串口應(yīng)用的問題,其實最復(fù)雜的部分來自于接收,發(fā)送的邏輯實現(xiàn)其實并不復(fù)雜,這一層不想展開太細(xì)的講:這里是根據(jù)目前通用的串口接收及發(fā)送的應(yīng)用,進(jìn)行軟件設(shè)計。

其實對于設(shè)備來講,無論是串口 還是IIC 或者其他設(shè)備,統(tǒng)一入口在device層,真正應(yīng)用的時候你不需要之道底層,中間層到底是如何實現(xiàn)的,只要關(guān)注device層的規(guī)則進(jìn)行軟件就可以實現(xiàn)相關(guān)的功能:

0
回復(fù)
2019-09-05 08:05
@程序小白
stm32只是眾多硬件平臺中的一個,RTT是平臺解決方案的存在,支持基本市面上你能看到的幾乎所有的硬件平臺,簡單來講就是后面你可以不再過多考慮硬件底層的編程,專注于應(yīng)用層,底層她幫你解決,不需要自己去設(shè)計各種外設(shè)的驅(qū)動,只需要適配和調(diào)試。[圖片][圖片]
RTT應(yīng)該是面向物聯(lián)網(wǎng)方向的吧?
0
回復(fù)
2019-09-05 08:07
@chaochao1545
RTT應(yīng)該是面向物聯(lián)網(wǎng)方向的吧?
嗯,主要是面向物聯(lián)網(wǎng)的操作系統(tǒng)
0
回復(fù)
2019-09-05 09:09
@程序小白
設(shè)備驅(qū)動層實現(xiàn)對于串口的通用用法的實現(xiàn)及封裝,在講串口應(yīng)用的問題,其實最復(fù)雜的部分來自于接收,發(fā)送的邏輯實現(xiàn)其實并不復(fù)雜,這一層不想展開太細(xì)的講:這里是根據(jù)目前通用的串口接收及發(fā)送的應(yīng)用,進(jìn)行軟件設(shè)計。其實對于設(shè)備來講,無論是串口還是IIC或者其他設(shè)備,統(tǒng)一入口在device層,真正應(yīng)用的時候你不需要之道底層,中間層到底是如何實現(xiàn)的,只要關(guān)注device層的規(guī)則進(jìn)行軟件就可以實現(xiàn)相關(guān)的功能:[圖片]

課題5:你以為的真的是你以為的嗎?這一課題或許是本篇進(jìn)階之道最重要的課題,也是廢話最多實戰(zhàn)最少的課題,但我卻認(rèn)為是最重要的課題。

          你以為的真的是你以為的嗎?你能在這條路上走多遠(yuǎn),取決于你以為的盡頭在哪里。工作多年,前進(jìn)的時間能有多少,大部分時間都在原地打轉(zhuǎn),一度懷疑是否是自己的能力和智商有極限,只能走到這里了。

           我們真正缺的并不是能力和智力,假如你能看到這里,我們?nèi)钡氖且环N叫做逆向思維的東西。

           什么是逆向思維,我覺得很難用文字解釋,當(dāng)你每一次突破人生或自我的瓶頸,你就在運用逆向思維的利器。

           

        

0
回復(fù)
2019-09-05 09:11
@程序小白
課題5:你以為的真的是你以為的嗎?這一課題或許是本篇進(jìn)階之道最重要的課題,也是廢話最多實戰(zhàn)最少的課題,但我卻認(rèn)為是最重要的課題。         你以為的真的是你以為的嗎?你能在這條路上走多遠(yuǎn),取決于你以為的盡頭在哪里。工作多年,前進(jìn)的時間能有多少,大部分時間都在原地打轉(zhuǎn),一度懷疑是否是自己的能力和智商有極限,只能走到這里了。          我們真正缺的并不是能力和智力,假如你能看到這里,我們?nèi)钡氖且环N叫做逆向思維的東西。          什么是逆向思維,我覺得很難用文字解釋,當(dāng)你每一次突破人生或自我的瓶頸,你就在運用逆向思維的利器。                   

   以軟件為例,我覺得這條路真的是越來越難走,因為要學(xué)要會要通的東西實在是太多,精力有限,這么走下去,真的是越來越慢,其實問題并不是這條路越來越難走,問題是你是否覺得軟件是一個人的工作,還是一項原本就是需要很多人協(xié)作的工作,假如是后者,那么你是否應(yīng)該選擇信任相互協(xié)作的人,就像是造一輛車子,有人做好了發(fā)動機(jī),你是直接拿過來用,還是拿過來拆開先看看內(nèi)部設(shè)計是否合理,是否有問題,這是否真的有必要?哪怕你特別想知道它內(nèi)部是如何工作的?現(xiàn)在的問題是造一臺車子出來重要,還是先把所有零部件解剖一遍重要?        

  以前我以為,只要是工程中引用的軟件就必須搞懂搞通這樣才能確保軟件質(zhì)量及穩(wěn)定運行,在需求快速增長的現(xiàn)在,無論是軟件的哪一部分讀起來都并不那么容易,這些軟件的生產(chǎn)者也沒有你想象的那樣粗制濫造,雖然bug不可避免。

            現(xiàn)在我以為,哪怕這臺車子真的有問題,那也要讓他先跑起來,在慢慢調(diào)教看看問題出在設(shè)計上,還是我的裝配上。假如沒有問題,那么我會去研究其他的車型,而不是把這臺車子打散重新研究一遍。            你以為的也許并不是正確的,真的能夠在遇到瓶頸時候?qū)W會反思,你才能突破現(xiàn)在的自己,重新上路。

0
回復(fù)
2019-09-05 10:30
@程序小白
  以軟件為例,我覺得這條路真的是越來越難走,因為要學(xué)要會要通的東西實在是太多,精力有限,這么走下去,真的是越來越慢,其實問題并不是這條路越來越難走,問題是你是否覺得軟件是一個人的工作,還是一項原本就是需要很多人協(xié)作的工作,假如是后者,那么你是否應(yīng)該選擇信任相互協(xié)作的人,就像是造一輛車子,有人做好了發(fā)動機(jī),你是直接拿過來用,還是拿過來拆開先看看內(nèi)部設(shè)計是否合理,是否有問題,這是否真的有必要?哪怕你特別想知道它內(nèi)部是如何工作的?現(xiàn)在的問題是造一臺車子出來重要,還是先把所有零部件解剖一遍重要?          以前我以為,只要是工程中引用的軟件就必須搞懂搞通這樣才能確保軟件質(zhì)量及穩(wěn)定運行,在需求快速增長的現(xiàn)在,無論是軟件的哪一部分讀起來都并不那么容易,這些軟件的生產(chǎn)者也沒有你想象的那樣粗制濫造,雖然bug不可避免。           現(xiàn)在我以為,哪怕這臺車子真的有問題,那也要讓他先跑起來,在慢慢調(diào)教看看問題出在設(shè)計上,還是我的裝配上。假如沒有問題,那么我會去研究其他的車型,而不是把這臺車子打散重新研究一遍。           你以為的也許并不是正確的,真的能夠在遇到瓶頸時候?qū)W會反思,你才能突破現(xiàn)在的自己,重新上路。

課題6:下一層AT組件應(yīng)用:(AT組件主要應(yīng)用在各種各樣的通信模組上,本例基于esp8266WiFi模組應(yīng)用)

            通信模組采用ESP8266-01S開發(fā)模組,底板采用正點原子戰(zhàn)艦mini開發(fā)板。

            

0
回復(fù)
2019-09-05 10:38
@程序小白
課題6:下一層AT組件應(yīng)用:(AT組件主要應(yīng)用在各種各樣的通信模組上,本例基于esp8266WiFi模組應(yīng)用)            通信模組采用ESP8266-01S開發(fā)模組,底板采用正點原子戰(zhàn)艦mini開發(fā)板。            [圖片][圖片]

AT組件建立在device層的基礎(chǔ)上, 也就是I/O管理的框架基礎(chǔ)之上。

0
回復(fù)
2019-09-05 15:07
@程序小白
AT組件建立在device層的基礎(chǔ)上,也就是I/O管理的框架基礎(chǔ)之上。[圖片]

0
回復(fù)
2019-09-05 21:44
@程序小白
課題1:先來個干貨,也就是你認(rèn)為嵌入式軟件設(shè)計的時候,最復(fù)雜的部分處在哪里?先來講講構(gòu)架的問題,大部分裸奔的工程只有一種選擇,那就是前后臺的設(shè)計方式:[圖片]對于程序的設(shè)計有時候很難會做驅(qū)動與應(yīng)用程序的區(qū)分,大家都混在一起所以當(dāng)有需求需要更改的時候改會變成一件很痛苦的事情,大部分的更改來自于邏輯部分,也就是應(yīng)用部分,假如把一個單片機(jī)干的活不計成本的用十個單片機(jī)來實現(xiàn),可能還有倆單片機(jī)在玩,啥也不干,這樣的分解后程序設(shè)計會是怎樣呢?其實RTOS的核心目的就是為了讓一個單片機(jī)用出十個甚至上百個單片機(jī)存在的效果而存在的。他的目的并不是復(fù)雜化我們的設(shè)計,相反是為了減輕我們設(shè)計的復(fù)雜度。[圖片]
RT工作就是任務(wù)調(diào)度,需要注意優(yōu)先級及嵌套層次。
0
回復(fù)
2019-09-05 21:45
@程序小白
  以軟件為例,我覺得這條路真的是越來越難走,因為要學(xué)要會要通的東西實在是太多,精力有限,這么走下去,真的是越來越慢,其實問題并不是這條路越來越難走,問題是你是否覺得軟件是一個人的工作,還是一項原本就是需要很多人協(xié)作的工作,假如是后者,那么你是否應(yīng)該選擇信任相互協(xié)作的人,就像是造一輛車子,有人做好了發(fā)動機(jī),你是直接拿過來用,還是拿過來拆開先看看內(nèi)部設(shè)計是否合理,是否有問題,這是否真的有必要?哪怕你特別想知道它內(nèi)部是如何工作的?現(xiàn)在的問題是造一臺車子出來重要,還是先把所有零部件解剖一遍重要?          以前我以為,只要是工程中引用的軟件就必須搞懂搞通這樣才能確保軟件質(zhì)量及穩(wěn)定運行,在需求快速增長的現(xiàn)在,無論是軟件的哪一部分讀起來都并不那么容易,這些軟件的生產(chǎn)者也沒有你想象的那樣粗制濫造,雖然bug不可避免。           現(xiàn)在我以為,哪怕這臺車子真的有問題,那也要讓他先跑起來,在慢慢調(diào)教看看問題出在設(shè)計上,還是我的裝配上。假如沒有問題,那么我會去研究其他的車型,而不是把這臺車子打散重新研究一遍。           你以為的也許并不是正確的,真的能夠在遇到瓶頸時候?qū)W會反思,你才能突破現(xiàn)在的自己,重新上路。
軟件的設(shè)計就需要架構(gòu)合理,后續(xù)維護(hù)及升級都容易。盡可能的模塊化設(shè)計。
0
回復(fù)
2019-09-05 21:46
@程序小白
stm32只是眾多硬件平臺中的一個,RTT是平臺解決方案的存在,支持基本市面上你能看到的幾乎所有的硬件平臺,簡單來講就是后面你可以不再過多考慮硬件底層的編程,專注于應(yīng)用層,底層她幫你解決,不需要自己去設(shè)計各種外設(shè)的驅(qū)動,只需要適配和調(diào)試。[圖片][圖片]
樓主是做什么物聯(lián)網(wǎng)的設(shè)計工作了?面向應(yīng)用是哪個領(lǐng)域?
0
回復(fù)
2019-09-06 09:00
@奮斗的青春
樓主是做什么物聯(lián)網(wǎng)的設(shè)計工作了?面向應(yīng)用是哪個領(lǐng)域?
主要是智能家居和共享領(lǐng)域
0
回復(fù)
2019-09-06 15:26
@奮斗的青春
軟件的設(shè)計就需要架構(gòu)合理,后續(xù)維護(hù)及升級都容易。盡可能的模塊化設(shè)計。
的確是。
0
回復(fù)
2019-09-06 15:43
@程序小白
[圖片][圖片][圖片]

基于AT組件,RTT擴(kuò)展出軟件包,供大家選擇和使用,這里的組件層和內(nèi)核(本篇帖子沒講)說實話這篇帖子想接著講的內(nèi)容還有很多,但考慮到核心進(jìn)階的內(nèi)容已經(jīng)講到,帖子太長,就不展開繼續(xù)了,到這里看一下如何添加AT_DEVICE軟件包以及注意事項:

這里用的是樂鑫的ESP8266WiFi模組,注意固件的版本,推薦使用V2.1.0,這里夠用了,當(dāng)然不同的應(yīng)用場景可以自行選擇需要的版本:

0
回復(fù)
2019-09-06 15:48
@程序小白
基于AT組件,RTT擴(kuò)展出軟件包,供大家選擇和使用,這里的組件層和內(nèi)核(本篇帖子沒講)說實話這篇帖子想接著講的內(nèi)容還有很多,但考慮到核心進(jìn)階的內(nèi)容已經(jīng)講到,帖子太長,就不展開繼續(xù)了,到這里看一下如何添加AT_DEVICE軟件包以及注意事項:[圖片][圖片]這里用的是樂鑫的ESP8266WiFi模組,注意固件的版本,推薦使用V2.1.0,這里夠用了,當(dāng)然不同的應(yīng)用場景可以自行選擇需要的版本:[圖片]

 利用env變異生成工程后,燒錄到目標(biāo)板中,利用finsh組件可以交互使用相應(yīng)的功能了

測試一下經(jīng)常用到的網(wǎng)絡(luò)測試命令,確認(rèn)at設(shè)備正常工作:

0
回復(fù)
2019-09-06 15:59
@程序小白
 利用env變異生成工程后,燒錄到目標(biāo)板中,利用finsh組件可以交互使用相應(yīng)的功能了測試一下經(jīng)常用到的網(wǎng)絡(luò)測試命令,確認(rèn)at設(shè)備正常工作:[圖片]

在AT_device的基礎(chǔ)之上可以添加通信協(xié)議與服務(wù)器建立連接,這里以通信貓為例,添加測試MQTT協(xié)議:

編譯整個工程后,燒錄到目標(biāo)板中,通過finsh組件測試MQTT協(xié)議是否正常工作:

這是官方提供的一個demo,中間調(diào)試略有曲折,費點事一天搞定,如果感興趣的同學(xué),在調(diào)試中遇到什么問題,可以交流溝通,吃過一次螃蟹,我就知道怎么教你怎么吃了,只要你請客。這篇帖子就到這結(jié)束吧,最后講一個很關(guān)鍵的東西:

RTT本質(zhì)是生態(tài)的存在,也就是開發(fā)者和目前RTT開發(fā)團(tuán)隊并行開發(fā)的結(jié)構(gòu),目的是為了構(gòu)建生態(tài),豐富應(yīng)用層,這中間會有匹配的問題存在,也就是你使用的軟件包雖然是RTT提供的,但并不是RTT團(tuán)隊制作并維護(hù)的,他的提供者和你我一樣,都是云云開發(fā)者,所以有時候會出現(xiàn)軟件包與RTT構(gòu)架不匹配的問題,這時候可以多試幾個軟件包的版本,不一定是最新最好。

本篇進(jìn)階之道到此結(jié)束吧,最后來一張硬件的特寫,線做的稍微有點亂,sayonara~!

0
回復(fù)
其樂518
LV.2
31
2019-09-07 13:47
@奮斗的青春
樓主是做什么物聯(lián)網(wǎng)的設(shè)計工作了?面向應(yīng)用是哪個領(lǐng)域?
搬凳來學(xué)習(xí)
0
回復(fù)
發(fā)