TI-RSLK 模塊 4 - 講座視頻 - 設計

+薦課 提問/討論 評論 收藏 分享
大家好, 我是 John Valvano。 在本模塊中,我們將討論軟件設計。 我們首先介紹一下模塊化設計這個概念。 模塊是什么,它是系統的一個子集, 它同時包含軟件和硬件,而且具有完整的任務。 所以我們會將它視為一個完整的任務。 當我們把這些模塊放在一起時, 我們可以從不同的角度來看待它們。 其中一個角度叫做調用圖。 這意味著,如果SwitchMain 中的軟件 可以調用針對不同模塊的 switch 中的函數, 我們將會繪制這樣一個調用圖箭頭。 這個箭頭表示,這將是高級別, 這將是低級別。 類似地,如果SwitchMain 中的軟件 可以調用 LaunchPad 中的軟件,我們將會 繪制一個調用圖箭頭,來表示 高級別函數與低級別函數之間的 因果關系--層次結構關系。 而且,我們會將與一個事件相關的 所有任務-- 例如,與開關相關的所有函數, 以及與 LaunchPad相關的所有函數-- 封裝在獨立的模塊中。 我們將要解決的問題 并不復雜,我們將在一個輸入上 配備一個開關。 如果按下開關, 則會將發光二極管切換到另外一種 狀態。 另一種在互連情況下看待這些模塊的方法 稱為數據流圖。 數據流圖顯示了連接情況。 這是一個硬件模塊。 這里的所有其他模塊都是軟件模塊。 關于開關是否關閉的布爾信息 被編碼在數據流圖的箭頭中。 所以,數據是向這個方向流動的。 即使是 SwitchMain調用 switch, 數據實際上也是在向另一個方向流動。 而在這里,數據則是從 main 向 LaunchPad 流動, 因為我想要開關 LED。 然后,在物理層面上,我在數據流圖中包含了 可以發光的 LED。 而且,通過這個數據流圖, 我們可以定義模塊化意味著什么。 系統的模塊化,如果您愿意, 這也是系統的精華所在-- 是多個模塊的函數。 因此,我們希望最大限度地增加模塊數量, 同時盡量減少它們之間的互連。 特別是,我們可以查看帶寬之類的 東西,它是每秒跨屏障傳輸的 字節數。 因此,我們希望最大限度地增加模塊數量, 同時盡量減少它們之間的互連。 針對互聯的一個簡單的定量測量方式是, 測量每秒從一個模塊流到另一個模塊的 字節數。 這便是我們將會在這里采用的理念。 那么,讓我們開始吧。 當我們討論如何制造一些復雜的東西-- 換句話說,模塊化系統的 整體思路就是能夠提高復雜性。 可讓我們做到這一點的一種方法是使用多個線程。 線程是由正在執行的軟件引起的操作。 所以,引發線程的是軟件的行為。 我們將會得到一個多線程環境, 其中有一個主程序。 而且,我們將會有多個中斷。 例如,我可能會有硬件觸發的中斷。 當我觸摸開關時,將會觸發一個中斷。 我們將會在多個模塊中介紹這種中斷的 實際工作方式。 但是在這里,我們只需要了解一點就足夠了, 那就是,當您觸摸開關時,系統會 運行與這個觸摸操作相關的軟件。 然后,如果我們想要周期性地執行 某個操作,我們將需要另外一種中斷。 我們將會使用一個頻率為,比如說 100 赫茲的計時器中斷。 而且,我們將從這個層面上執行軟件。 我在這里繪制一個主程序。 然后繪制初始化。 然后,我們在這里繪制一些東西。 然后就有了一個循環。 我們之所以將其稱為線程, 是因為我們可以將正在執行的軟件想象成 一條單一的軌跡。 即使這是一個函數-- 即使這個初始化是一個函數, 我們仍然可以繪制一條-- 我們可以 一筆畫出一條代表其執行順序的直線。 這便是我們將其稱為線程的原因。 一系列指令,由這些指令 引起的操作,這便是線程。 但是中斷是特殊的。 中斷是硬件觸發的軟件 操作。 在這里,我們將打斷這個線程, 從這里開始,因為我們觸摸了開關, 執行該軟件,然后再次打斷該線程, 然后重新返回這里。 所以線程是由正在執行的軟件引起的 操作。 在本課程中,我們將使用一個 單一的前臺線程、一個主程序,以及多個 在特定事件時執行的中斷線程。 這是增加系統復雜性的一種方法。 您要做的最困難的事情之一是, 確定從哪里開始。 我要告訴您一個很不幸的消息。 您可能也在其他地方聽到過這個 說法-- 需要花費 1 萬小時的時間, 才能熟練掌握一個技能。 我并不是要打擊您。 如果您坐在電腦前, 編寫盡可能優秀的代碼,在大約一個小時的時間里, 您可能能夠寫出 100 行代碼。 如果您將這兩個數字相乘, 達到一百萬行代碼的分界線后, 您將會成為一名優秀的軟件設計師。 說這些也不是為了打擊您。 我的意思是,行動起來。 說這些是為了鼓勵您馬上加入進來并編寫許多 許多的代碼。 這張幻燈片討論的是,在開始寫代碼之前, 如何完成軟件構想。 這涉及到了狀態這個概念。 我將狀態定義為:您知道什么? 如果您有一個系統,您可能知道什么? 或者有時候是,您認為自己知道什么, 或者您認為什么是真實的,這便是狀態。 例如,我可能在這條路上有一個機器人。 我的機器人在這里。 我覺得它在沿著這條路移動的過程中離右側 墻壁太近了。 離右側墻壁太近-- 這便是我認為真實的事情。 您現在要做的是 考慮這個問題, 并寫下您的系統可能處于的 所有狀態。 我在一個小圈子里。 我處于停滯狀態。 我撞到墻上了。 我走錯方向了。 我贏了比賽。 我到達了終點。 所以,我將會考慮所有的狀態。 有些狀態是相互排斥的, 有些則不是。 例如,您可能會有一個綠色 LED 閃爍的狀態。 這個狀態可能會與機器人離墻太近的狀態并存。 所以,狀態之間不一定是相互排斥的。 但是,您需要將它們都寫下來, 考慮哪些事情是您的系統需要知道或 認為是真實的。 這樣做后,您可以問自己以下幾個問題。 我們從哪里開始? 初始狀態是什么? 或者是下面的這個也比較簡單的問題-- 我需要知道什么? 我要得到什么信息,才能認為 我離墻壁太近? 在這種情況下,我可以寫下所有的傳感器-- 輸入傳感器。 然后它不單單是一個數據收集器, 更是一個嵌入式系統。 所以它有輸出。 我該怎么做? 我會采取哪些操作? 我想移動。 我想轉彎。 我想停下來-- 諸如此類。 我將會使用哪些操作,為了執行 這些操作,我需要生成什么輸出? 我們將會看到,我們有兩個電機。 我們將必須單獨驅動每個電機。 然后更難的是,如何從一個狀態轉變到另一個 狀態? 換句話說,如果我離右側墻壁太近, 我想要移到中間位置,我怎樣才能從一個不佳的位置 移動到理想位置? 然后,很明顯,我們想知道, 我們如何在完成后獲知已經完成? 所以,這種狀態本質上是一種 在實際坐下來開始寫代碼前, 構想您的軟件和硬件系統的方法。 另一種思考問題的方法是 將其分解成模塊。 下面我們將介紹這種方法。 用于討論將系統分解成 模塊化部分的術語共有三個。 它們具有大致相同的含義。 逐次求精、逐步求精 和系統分解--在這個背景下, 它們都指的是相同的事情。 那就是,我們將會從任務開始。 讓我們進行賽跑。 我想要在跑道上盡可能快地奔跑。 但這太復雜了,我不知道究竟該怎么辦。 因此,求精的整體思路就是將其分解成 多個片段。 比如,我可能想要移動。 我可能想要進行感測。 我可能想要進行思考。 然后對于上面的每個任務,我想要 將其分解為更小的部分,因為這會涉及到 我如何在完成后獲知已經完成。 所以,如果我把一個任務分解成一個子任務, 然后子任務非常簡單, 我知道該如何完成--然后我將會完成該子任務。 我將會實施該子任務,并進行測試和記錄。 然后,我可以將其重新組裝回去。 但如果它仍然太復雜, 我將再次進行分解。 所以我們可以討論諸如停止、直行和轉彎之類的任務。 我可以分解模塊。 我可以將其分解成子模塊。 如果它們太復雜, 我將再次進行分解。 例如,對于線路傳感器-- 這是我可能會用到的傳感器之一。 如果我不知道如何實施線路傳感器, 我將會將其分解成多個部分,比如,實施輸出, 等待一毫秒, 實施輸入,然后進行思考。 現在我將這個線路傳感器 分解成了多個子模塊,簡化到了我能夠完成的程度。 然后,我將會實施這四個步驟, 然后將其重組回去。 需要注意的是,有時您遇到一個問題-- 這是一個問題-- 我將其分成兩部分-- A1 和 A2。 然后我向前走,噠噠,我走對了。 但是還有一種可能,在您將 A 分成兩部分后, 這部分,A1,可能實際上比原來的部分更難了。 因此,將一個對象分成兩半,并不代表 它就會變簡單。 這整整 1 萬小時,或者說一百萬行的代碼 真的能讓您擅長回答,如何才能 更有效且更高效的完成這項工作? 但是現在,我想讓您考慮這個問題, 如果在將問題分解后,它變得比開始時 更復雜了,我將會將其重組回去, 并使用另外一些方式對其進行分解, 我將會持續嘗試不同的分解方法, 直到子部分比初始任務更簡單為止。 然后,我們會將這些子部分全部都重組回去。 我們知道,不管是對于數據流圖, 還是調用圖--這是一個數據流圖, 我們知道,我們的工作是將其分解為 不同的部分,從而得到盡可能多的模塊。 但是,我們會有較小的帶寬。 也就是說,模塊之間的 信息傳輸速率應盡可能低。 最終,與這個性質類似的是, 接口將會變得至關重要。 對于數據流圖,是由這個接口 來傳遞數據。 對于調用圖,模塊 A調用模塊 B。 同樣,這個接口將會非常重要。 所以,當我將某個東西分解成子模塊時, 這些模塊如何重新連接對于確保系統的 有效性和高效性至關重要。 因此,讓我們找出一種定義接口的方法。 如果該接口 非常重要,我們將會 收集有關該接口的所有信息, 并將其存儲在一處。 這便是我們的頭文件。 同樣,系統的模塊化性質-- 該模塊的開關--將具有兩個文件-- 一個是 switch.c,包含實施信息, 另一個是 switch.h,包含公有函數的 原型。 也就是說,該文件包含接口。 它包含一個可以在該模塊中 調用的函數的列表。 這樣,我們就可以將該模塊的功能分離出來。 比如,這是一個簡單的模塊,您可以 從開關進行輸入。 您可以將其打開,然后您可以輸入。 您將把這一點與它實際的工作方式分離。 它連接到什么端口,電壓是什么, 它是正邏輯還是負邏輯-- 所有這些低層次細節都將被分離出來。 這種分離將會對降低系統的 復雜性大有幫助。 這便是我們在這里提到的 復雜性抽象。 換句話說,我們將分離并隱藏 所有的低層次細節,并暴露給其他模塊 一個可用于使用該模塊的簡單接口。 同樣,包含在頭文件中的是 公有函數的原型以及關于頭文件-- 也就是該模塊的功能和使用方式的注釋。 未包含在該模塊中的是該模塊的工作方式。 模塊內容的細節不包含在這里。 我們不會將任何變量放在頭文件中。 這種私有概念全部屬于內部運作。 注意這個頭文件--實際上, 本課程中的所有頭文件-- 都使用了這種奇異的語法,其中這是參數, 這是返回參數, 這是有關其功能的簡短解釋。 這種語法實際上叫做 doxygen。 doxygen 最厲害的地方就在于,它會自動 為整個機器人系統生成用戶手冊-- 一種軟件文檔。 您將會看到,大多數這種文檔 都代表了您需要在本課程中編寫的函數。 我們將會為您提供幾個函數, 來支持您開始編寫自己的函數。 所以這個 doxygen 流程可幫助我們 創建一個美觀的 HTML 頁面,用來介紹 軟件的所有功能-- 也就是說,介紹它的功能, 而不介紹它的實際工作方式。 一個模塊具有一個 .c 文件和一個 .h 文件。 我們說過,.h 文件中包含的是 公有函數的原型。 代碼文件中包含的是實際的實施。 我們將會在下面的模塊中討論端口的 實際工作方式。 但是在這里,我們只需要知道 c 文件中包含的是 實際的工作方式,實際的實施是在 這里。 我們需要變量。 它在 c 文件中。 如果我們有任何特殊私有函數, 它也會在 c 文件中。 c 文件中的注釋會介紹該函數的工作方式, 它是如何進行測試的,或者您可以如何更改該函數。 一定要非常謹慎地對待其他模塊的 私有性質。 不要嘗試訪問其他模塊的 私有信息或私有函數。 如果您在 Code ComposerStudio 中查看該項目, 您將會看到與該項目關聯的所有文件。 但是如果您查看文件中的內容-- 例如,這里的這個文件,它是一個高級文件。 這段代碼便是在該文件中。 最終,這里的這些 include 文件 實際上等效于或者將為您繪制 調用圖。 如果這個函數包含那個函數的頭文件, 那么我們便可以調用它的公有函數。 由于這里的這個 main c文件包含 LaunchPad.h, 所以它可以調用后者的公有函數。 所以這個 include文件是這個箭頭。 這里的這個 include 文件-- 這是這個箭頭。 所以這種將某個事物分解成模塊的做法 對于簡化非常復雜的系統大有幫助。 所以,當我們組建成我們的機器人時, 您會發現它包含數十個模塊,所有模塊均融入到 這個層次結構中。 最后總結一下,我們定義了模塊化, 這是一個增加 模塊總數的過程。 但是我們希望最大限度地減小帶寬,互聯, 每秒在不同模塊之間 傳輸的字節數。 我們討論了頭文件。 頭文件中包含的是接口-- 數據的流動方式,或者調用函數的 方式。 通過這種方式,我們可以分離其功能-- 高級交互-- 分離其功能和工作方式。 這樣,我們將能夠打造一個非常復雜的系統。 所以隨著向后面的部分推進,我們需要考慮該模型。 在本課程開始時,可能會很簡單, 這時您實際上還不需要使用模塊。 但是,當后面變得越來越復雜, 您將會看到使用模塊化設計的好處。 好的。 在下一個模塊中-- 下一個講座中,我們將討論一些 C 語法, 然后,我們將討論一些調試方法。 好的。 稍后回來。
課程介紹 共計5課時,1小時11分51秒

TI-RSLK 模塊 4 - 使用 MSP432 進行軟件設計

TI 機器人 MSP432 軟件設計 RSLK

此模塊除了講解使用 MSP432 和 TI Code Composer Studio? 進行編譯和調試的概念外,還介紹了 C 語言(一種通用編程語言)。在開發與機器人相關的復雜系統時,調試技能很重要。

推薦帖子

TM4C123 DMA串口接收求教
用串口接收SBUS信號 只用中斷的情況下已經試過接收SBUS了 但是100000的波特率用串口中斷接收太占用CPU了 導致了一些任務不能執行 下面是DMA代碼...
627933142 微控制器 MCU
MSP430單片機定時器有沒有編碼器接口模式
RT,看到STM32單片機定時器有這么一個功能,想問的是MSP430單片機定時器有沒有編碼器接口模式,謝謝 ...
rowen800 微控制器 MCU
儀器儀表故障診斷幾個方法
儀器儀表的維修在電子市場中是不可缺少的一部分,儀器儀表公司只有憑借良好的檢測技術才能讓那些不合格的產品最終合格的走進市場,對儀器儀表的技術員工要有著良好的電子專業知識基礎,也需要豐富的現場經驗。     1、敲擊手壓法     經常會遇到儀器運行時好時壞的現象,這種現象絕大多數是由于接觸不良或虛焊造成的。對于這種情況可以采用敲擊與手壓法。 &nbsp...
Aguilera 模擬與混合信號
cpld下載問題
本帖最后由 dontium 于 2015-1-23 13:39 編輯 byteblasterMV下載線,5V的EPM7032可以正常下載,現在又需要下載3.3V的EMP7032AE卻不能成功下載,出現提示\"unrecognized device or socket is empty\".是不是JTAG設計不對?我直接把5V的EPM7032的JTAG設計圖拷貝過來,然后修改電...
syssys 模擬與混合信號

推薦文章

貿澤與Texas Instruments和Phoenix Contact聯手推出單對以太網技術頁 2021年09月30日
貿澤與Texas Instruments和Phoenix Contact聯手推出單對以太網技術頁面2021年9月30日 – 專注于引入新品并提供海量庫存的電子元器件分銷商貿澤電子(Mouser Electronics)與Texas Instruments (TI) 和Phoenix Contact一起推出了一個專門針對單對以太網(SPE) 技術的新解決方案頁面。隨著工業4.0...
TI集成式變壓器模塊技術有助于進一步增加混動和電動汽車行駛時間 2021年09月28日
通過全新的易用型偏置電源模塊,工程師可以將電源解決方案的尺寸減小一半,滿足系統小型化和輕量化需求德州儀器 (TI)(NASDAQ代碼:TXN)今日推出尺寸更小、精度更高的1.5W隔離式直流/直流偏置電源模塊UCC14240-Q1。UCC14240-Q1使用專有集成變壓器技術,可幫助設計人員將電源解決方案的尺寸減小一半,以便用于電動汽車、混合動力汽車、電機驅動系統和并網逆變器...
TI集成式變壓器模塊技術有助增加混動和電動汽車行駛時間 2021年09月28日
TI的集成式變壓器模塊技術有助于進一步增加混動和電動汽車的行駛時間通過全新的易用型偏置電源模塊,工程師可以將電源解決方案的尺寸減小一半,滿足系統小型化和輕量化需求北京(2021年9月28日)– 德州儀器 (TI) 今日推出尺寸更小、精度更高的1.5W隔離式直流/直流偏置電源模塊UCC14240-Q1。UCC14240-Q1使用專有集成變壓器技術,可幫助設計人員將電源解決方案...
大數據中心的痛點,竟能如此解決?TI芯科技賦能中國新基建 2021年09月28日
大數據中心的痛點,竟能如此解決?——TI芯科技賦能中國新基建之大數據中心似乎是在印證國家新基建政策的正確性。2020年新冠疫情爆發以來,遠程辦公、在線教育、生鮮電商、無人配送等大量新商業模式得到了飛速發展,而這些業務模式背后顯然帶來了更大量的數據產生和流動——大數據中心作為新基建七大領域之一的重要性進一步提升。 然而,目前全球40%的數據中心集中在美國,這幾乎是中國...

dingxilindy

學習TI-RSLK 模塊 4 - 使用 MSP432 進行軟件設計

2019年09月26日 15:21:30

hawkier

學習了

2019年08月03日 13:19:16

zwei9

學習-TI-RSLK 模塊 4 - 使用 MSP432 進行軟件設計

2019年07月06日 03:04:25

大明58

好好學習天天向上。。。

2019年07月03日 20:53:48

hellokt43

好好學習天天向上。。。

2019年05月19日 13:42:45

鳳凰息梧桐

學習一下

2018年12月30日 20:17:16

百萬千萬

學習

2018年10月18日 17:26:38

warMan

學習看看。

2018年10月15日 23:11:24

dl265361

學習

2018年10月15日 21:51:36

273734588

學習

2018年10月11日 07:50:19

草草了事

看看

2018年09月30日 08:32:01

采樣電阻

可以不錯

2018年09月19日 09:43:55

分享到X
微博
QQ
QQ空間
微信

About Us 關于我們 客戶服務 聯系方式 器件索引 網站地圖 最新文章 手機版

站點相關: EEWORLD首頁 EE大學堂 論壇 下載中心 Datasheet 活動專區 博客

北京市海淀區知春路23號集成電路設計園量子銀座1305 電話:(010)82350740 郵編:100191

電子工程世界版權所有 京B2-20211791 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
花蝶直播app下载安装_花蝶直播破解版_花蝶直播入口_花蝶直播视频