在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

物聯(lián)網(wǎng)的要點(diǎn)深入淺出

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-25 18:45 ? 次閱讀

物聯(lián)網(wǎng)是與云計(jì)算相伴而生的,事實(shí)上,正是物聯(lián)網(wǎng)的概念幫我弄清了對(duì)云計(jì)算的工作定義。物聯(lián)網(wǎng)是一個(gè)由三個(gè)不同的子系統(tǒng)組成的系統(tǒng):

·云

·聚合

·智能傳感器

上述每一個(gè)子系統(tǒng)對(duì)于整個(gè)物聯(lián)網(wǎng)系統(tǒng)的功能優(yōu)化都是必需的。云是終極的計(jì)算單元和通用通信網(wǎng)絡(luò)。智能傳感器是通向現(xiàn)實(shí)世界的界面。最后,這些聚合者是中間人。對(duì)云來(lái)說(shuō),聚合器看起來(lái)像智能傳感器,而對(duì)智能傳感器而言,它看起來(lái)像云。

系統(tǒng)的特點(diǎn)

系統(tǒng)的概念一直很有趣,這個(gè)術(shù)語(yǔ)引出了一些問(wèn)題。例如,"一個(gè)系統(tǒng)存在的最小一組功能是什么?"或者,"一個(gè)系統(tǒng)可以由許多其他系統(tǒng)組成嗎?"物聯(lián)網(wǎng)是一個(gè)系統(tǒng)的系統(tǒng)。它的三個(gè)組件(云、聚合器和智能傳感器)都有自己的系統(tǒng)。此外,任何兩個(gè)組件也可以形成一個(gè)完整的IoT系統(tǒng)。例如,與聚合器進(jìn)行通信的一系列智能傳感器可以成為許多應(yīng)用的一個(gè)最佳系統(tǒng)。同時(shí),智能傳感器直接對(duì)云進(jìn)行通信也可以是一個(gè)最佳的系統(tǒng)。

然后,三者的區(qū)別是它們的具體性能,成本,功耗和規(guī)模的考量。特別是:

·云系統(tǒng)專注于性能。因此,成本、功耗和規(guī)模是次要的問(wèn)題。

·聚合系統(tǒng)較少關(guān)注性能和功耗,更多地關(guān)注靈活性。

·智能傳感器系統(tǒng)集中在電池壽命、大小和成本上,性能處于第三優(yōu)先級(jí)。

也許一個(gè)示例應(yīng)用可以幫助把這些系統(tǒng)放到一個(gè)維度上:

“智能咖啡杯”可以用來(lái)展示智能傳感器如何直接與云進(jìn)行通信。在最喜歡的咖啡館,要上一杯"無(wú)限續(xù)杯"的咖啡。我會(huì)在咖啡店工作幾個(gè)小時(shí),不想每30分鐘起來(lái)去續(xù)杯咖啡。有了無(wú)限的杯子,我可以坐在自己的桌子上工作,而我的咖啡杯正在和咖啡店的"云"通信,那就是 WiFi。當(dāng)云感覺(jué)到我的杯子溫度越來(lái)越低,或者變冷了,咖啡師會(huì)給我另外一個(gè)杯子,如果需要的話自動(dòng)完成付費(fèi)。這最終成為咖啡館現(xiàn)有云計(jì)算的一個(gè)新用途。它可以很容易地?cái)U(kuò)展到餐廳和飲品店。

當(dāng)認(rèn)為物聯(lián)網(wǎng)是一個(gè)系統(tǒng)系統(tǒng)時(shí),有很多的方式。正如星球大戰(zhàn)三部曲是從中間開(kāi)始的,然后進(jìn)入過(guò)去和未來(lái),討論IoT的三個(gè)系統(tǒng)也可以從中間開(kāi)始,然后再到另外兩個(gè)。乍一看,聚合器看起來(lái)既像是智能傳感器上的云,又看起來(lái)像一個(gè)云上的智能傳感器,似乎是物聯(lián)網(wǎng)中不必要的組成部分。

IoT中的聚合子系統(tǒng)

看待物聯(lián)網(wǎng)的簡(jiǎn)單方法是假設(shè)云直接連接到智能電子設(shè)備上。從這個(gè)意義上說(shuō),也許智能傳感器和聚合器的概念是同一裝置的變體。但是這個(gè)概念在每個(gè)IoT機(jī)會(huì)中都不起作用。

聚合器是一個(gè)處理元素,它:

·使用標(biāo)準(zhǔn)通信方法與云進(jìn)行通信

·與具有專有通信功能的智能傳感器進(jìn)行通信,在這些傳感器中,對(duì)長(zhǎng)壽命和成本的需求超過(guò)了對(duì)標(biāo)準(zhǔn)的需求

·有足夠的處理性能來(lái)服務(wù)多個(gè)智能傳感器。在這樣做的過(guò)程中,它管理了來(lái)自大量智能傳感器的原始數(shù)據(jù),消化它們的數(shù)據(jù),準(zhǔn)備一組需要傳送到云端的信息,然后將數(shù)據(jù)傳送到云端。

·在某些情況下,聚合器有足夠的自主權(quán),可以作為該系統(tǒng)的云。

聚合器與其他兩個(gè)元素之間的差異如下:

聚合器是大量智能傳感器和云之間的通信鏈接,最好的例子就是智能手機(jī)。它具有合理的電池壽命、成本和性能。可以看到許多設(shè)備可以與智能手機(jī)進(jìn)行物理連接,也可以通過(guò)無(wú)線網(wǎng)絡(luò)連接到智能手機(jī)上。它通常執(zhí)行所有必要的功能,使其有用。但它總是無(wú)縫地涉及到云的性能,依賴于電池的壽命。為了充分發(fā)揮其潛力,需要有電源,或者將其可用性限制在相對(duì)較短的活動(dòng)期間。這導(dǎo)致了聚合器的一個(gè)更廣泛方面。它需要成為許多智能傳感器之間的可連續(xù)供電接口,那些傳感器不是外部供電的,而云是具有無(wú)限性能的。

可以在工業(yè)控制和醫(yī)療嵌入式設(shè)備中找到其他聚合器的例子。在這些例子中,都有一些共同的特點(diǎn): 微型計(jì)算機(jī)或微處理器,許多標(biāo)準(zhǔn)的接口實(shí)現(xiàn)和各種通信選項(xiàng)。它們的性能足以滿足系統(tǒng)的需求,而且它們的電力需求很低,足以使電池使用壽命合理,或者使用USB連接的電源供電。

對(duì)聚合器最簡(jiǎn)單的描述就是它是一個(gè)獨(dú)立的計(jì)算機(jī)系統(tǒng),它有

·計(jì)算系統(tǒng)

·電力管理系統(tǒng)

·存儲(chǔ)系統(tǒng)

·通訊系統(tǒng)

聚合器是一個(gè)獨(dú)立的系統(tǒng),但它也可以是一個(gè)較大系統(tǒng)中的一個(gè)子系統(tǒng)。

聚合器可以使用帶有離散組件的印刷電路板(PCB)來(lái)設(shè)計(jì)聚合器,或者在模塊(SOM)上的系統(tǒng),或者一個(gè)包中的系統(tǒng)(SiP) ,或芯片上的系統(tǒng)(SoC)。一般而言,采取的這些形式中哪一種形式更多地取決于規(guī)模和靈活性的限制,而不是成本和性能限制。

技術(shù)已經(jīng)允許減少聚合器的尺寸,它也將減少其組件的大小。令人驚訝的是,它并不依賴于提高原始性能或驅(qū)動(dòng)集成。創(chuàng)造小型設(shè)備如智能塵埃的意圖要求計(jì)算機(jī)的功耗低到足以更好的散熱。聚合器將需要一個(gè)超低功耗的通信鏈接與許多智能傳感器(也許是數(shù)千個(gè))來(lái)通信并聚合它收到的數(shù)據(jù)信息。它將把這些信息發(fā)送到云端進(jìn)行最后的處理。與云計(jì)算的通信將采用行業(yè)標(biāo)準(zhǔn)方法進(jìn)行。與智能傳感器的通信很可能是專有的,而不是標(biāo)準(zhǔn)的,以在其所需的通信速率中保證最小的功率耗散。

IoT中的云

云的作用是兩個(gè)基本的功能: 與用戶交流,并給出額外的表現(xiàn),甚至用戶可能不知道那些需求。云計(jì)算的概念可能是用一個(gè)愚蠢的方式來(lái)描述了互聯(lián)網(wǎng)的復(fù)雜性和它所做的一切。

物聯(lián)網(wǎng)的概念不僅僅是描述云,還包括云是其中一部分的更廣泛的生態(tài)系統(tǒng)。這個(gè)概念使得云計(jì)算成為一個(gè)更大系統(tǒng)的組成部分。微控制器和微處理器的多樣性能夠融入這個(gè)生態(tài)系統(tǒng)。

當(dāng)云從概念演變?yōu)楝F(xiàn)實(shí)的時(shí)候,它似乎提供了無(wú)限的通信帶寬、無(wú)限的性能和完全的安全性——但是,所有這些假設(shè)都可能是謊言。圖1描述了物聯(lián)網(wǎng)的各個(gè)組成部分的性能、帶寬和安全性。

審核編輯:符乾江

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

    關(guān)注

    39

    文章

    7852

    瀏覽量

    137663
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2912

    文章

    44868

    瀏覽量

    375567
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    聯(lián)網(wǎng)就業(yè)有哪些高薪崗位?

    進(jìn)行分析和挖掘,提供有價(jià)值的信息和見(jiàn)解,以支持決策和業(yè)務(wù)發(fā)展。對(duì)于數(shù)據(jù)科學(xué)和人工智能有深入了解的數(shù)據(jù)分析專家,將迎來(lái)更多的高薪崗位機(jī)會(huì)。 聯(lián)網(wǎng)產(chǎn)品經(jīng)理: 負(fù)責(zé)對(duì)
    發(fā)表于 01-10 16:47

    深居AutoCAD二次開(kāi)發(fā)

    深居AutoCAD二次開(kāi)發(fā),net版
    發(fā)表于 01-06 14:12 ?0次下載

    深入淺出RISC-V調(diào)試

    一、JTAG簡(jiǎn)介 目前RISC-V官方支持的調(diào)試方式是JTAG(Joint Test Action Group),而ARM支持的調(diào)試方式有JTAG和SWD(Serial Wire Debug)這兩種。 JTAG是一種國(guó)際標(biāo)準(zhǔn)的調(diào)試方式(IEEE1149.1),而SWD是ARM開(kāi)發(fā)的。標(biāo)準(zhǔn)JTAG采用四線方式,分別是TCK、TMS、TDI和TDO,有一個(gè)可選的TRST引腳。 ● TCK:測(cè)試時(shí)鐘輸入。 ● TMS:測(cè)試模式選擇。 ● TDI:測(cè)試數(shù)據(jù)輸入。 ● TDO:測(cè)試數(shù)據(jù)輸出。 在調(diào)試時(shí)需要用到一個(gè)工具,比如JLink或者CMSIS-DAP,對(duì)于這個(gè)工具,在這里稱為JTAG主機(jī)(JTAG host),而嵌入在芯片內(nèi)部的JTAG稱為JTAG從機(jī)(JTAG slave),需要注意的是上面這些信號(hào)的輸入輸出方向是對(duì)于JTAG從機(jī)來(lái)說(shuō)的。下文中如無(wú)特別說(shuō)明,JTAG都是指JTAG從機(jī)。 一個(gè)JTAG主機(jī)可以同時(shí)對(duì)多個(gè)JTAG從機(jī)進(jìn)行調(diào)試,這通過(guò)JTAG掃描鏈(JTAG Scan Chain)完成,如圖1所示。 圖1 一個(gè)JTAG主機(jī)連接多個(gè)JTAG從機(jī) JTAG內(nèi)部有一個(gè)TAP(Test Access Port)控制器(或者說(shuō)狀態(tài)機(jī)),通過(guò)TCK和TMS信號(hào)來(lái)改變狀態(tài)機(jī)的狀態(tài)。這個(gè)狀態(tài)機(jī)的核心是兩路SCAN,分別是IR SCAN和DR SCAN,TAP狀態(tài)機(jī)如圖2所示。 圖2 TAP狀態(tài)機(jī) 箭頭上的0或1表示的是TMS信號(hào)的電平。JTAG在每一個(gè)TCK信號(hào)的上升沿采樣TMS信號(hào)和TDI信號(hào),決定狀態(tài)機(jī)的狀態(tài)是否發(fā)生變化,在每一個(gè)TCK信號(hào)的下降沿輸出TDO信號(hào)。可以看到,無(wú)論TAP目前處于哪一個(gè)狀態(tài),只要TMS保持高電平并持續(xù)5個(gè)TCK時(shí)鐘,則TAP一定會(huì)回到Test-Logic-Reset狀態(tài)。 JTAG內(nèi)部有一個(gè)IR(instruction register)寄存器和多個(gè)DR(data register)寄存器,IR寄存器決定要訪問(wèn)的是哪一個(gè)DR寄存器。DR寄存器有IDCODE、BYPASS等。在Test-Logic-Reset狀態(tài)下IR寄存器默認(rèn)選擇的是IDCODE這個(gè)DR寄存器。 JTAG主機(jī)通過(guò)IR SCAN設(shè)置IR寄存器的值,然后通過(guò)DR SCAN來(lái)讀、寫相應(yīng)的DR寄存器。 二、RISC-V調(diào)試Spec 調(diào)試模塊在CPU芯片設(shè)計(jì)里是最為不起眼的,但又是最為復(fù)雜的模塊之一,大部分開(kāi)源的處理器IP都沒(méi)有調(diào)試模塊。 下面的內(nèi)容基于RISC-V debug spec 0.13版本。 目前RISC-V的官方調(diào)試上位機(jī)是openocd,調(diào)試工具可以是JLink或者CMSIS-DAP,RISC-V調(diào)試系統(tǒng)框架如圖3所示。 圖3 RISC-V調(diào)試系統(tǒng)框架 可以看到主要分為3個(gè)部分,分別是Debug Host,可以理解為PC;Debug Hardware,可以理解為JLink或者CMSIS-DAP這樣的調(diào)試工具;第三部分就是嵌入在芯片內(nèi)部的調(diào)試模塊。在調(diào)試模塊內(nèi)部,與調(diào)試工具直接交互的是DTM模塊,DTM模塊通過(guò)DMI接口與DM模塊交互。 1>DTM模塊 在DTM模塊里實(shí)現(xiàn)了一個(gè)TAP控制器(狀態(tài)機(jī)),其中IR寄存器的長(zhǎng)度最少為5位,當(dāng)TAP控制器復(fù)位時(shí),IR的值默認(rèn)為5\'b00001,即選擇的是IDCODE寄存器。DTM模塊的寄存器(DR寄存器)定義如圖4所示。 圖4 DTM寄存器 其中紅色框起來(lái)的寄存器是必須要實(shí)現(xiàn)的。下面簡(jiǎn)單介紹一下這幾個(gè)寄存器。 ① IDCODE寄存器(0x01) 當(dāng)TAP狀態(tài)機(jī)復(fù)位時(shí),IR寄存器的值默認(rèn)為0x01,即選擇的是IDCODE寄存器。IDCODE寄存器的每一位含義如圖5所示。IDCODE是只讀寄存器。 圖5 IDCODE寄存器 ● Version:只讀,版本號(hào),可為任意值。 ● PartNumber:只讀,可為任意值。 ● Manufld:只讀,廠商號(hào),遵循JEP106標(biāo)準(zhǔn)分配,實(shí)際中可為任意值,只要不與已分配的廠商號(hào)沖突即可。 ② DTM控制和狀態(tài)寄存器(dtmcs,0x10) dtmcs寄存器的每一位含義如圖6所示。 圖6 dtmcs寄存器 ● dmihardreset:DTM模塊硬復(fù)位,寫1有效。 ● dmireset:清除出錯(cuò),寫1有效。 ● idle:只讀,JTAG 主機(jī)在Run-Test-Idle狀態(tài)停留的時(shí)鐘周期數(shù),0表示不需要進(jìn)入Run-Test-Idle狀態(tài),1表示進(jìn)入Run-Test-Idle狀態(tài)后可以馬上進(jìn)入下一個(gè)狀態(tài),以此類推。 ● dmistat:只讀,上一次操作的狀態(tài)。0表示無(wú)出錯(cuò),1或者2表示操作出錯(cuò),3表示操作還未完成。 ● abits:只讀,dmi寄存器中address域的大小(位數(shù))。 ● version:只讀,實(shí)現(xiàn)所對(duì)應(yīng)的spec版本,0表示0.11版本,1表示0.13版本。 ③ DM模塊接口訪問(wèn)寄存器(dmi,0x11) dmi寄存器的每一位含義如圖7所示。 圖7 dmi寄存器 ● address:可讀可寫,DM寄存器的長(zhǎng)度(位數(shù))。 ● data:可讀可寫,往DM寄存器讀、寫的數(shù)據(jù),固定為32位。 ● op:可讀可寫,讀或者寫這個(gè)域時(shí)有不同的含義。當(dāng)寫這個(gè)域時(shí),寫0表示忽略address和data的值,相當(dāng)于nop操作;寫1表示從address指定的寄存器讀數(shù)據(jù);寫2表示把data的數(shù)據(jù)寫到address指定的寄存器。寫3為保留值。當(dāng)讀這個(gè)域時(shí),0表示上一個(gè)操作正確完成;1為保留值;2表示上一個(gè)操作失敗,這個(gè)狀態(tài)是會(huì)被記住的,因此需要往dtmcs寄存器的dmireset域?qū)?才能清除這個(gè)狀態(tài)。3表示上一個(gè)操作還未完成。 在Update-DR狀態(tài)時(shí),DTM開(kāi)始執(zhí)行op指定的操作。在Capture-DR狀態(tài)時(shí),DTM更新data域。 ④ BYPASS寄存器(0x1f) 只讀,長(zhǎng)度為1,值固定為0。 2>DM模塊 從圖3可知,DM模塊訪問(wèn)RISC-V Core有兩種方式,一種是通過(guò)abstract command,另一種是通過(guò)system bus。abstract command方式是必須要實(shí)現(xiàn)的,system bus的方式是可選的。 DM模塊的寄存器都為32位,定義如圖8所示。 圖8 DM寄存器 下面介紹一下紅色框起來(lái)這幾個(gè)重要的寄存器。 ① data寄存器(data0-data11,0x04-0x0f) 這12個(gè)寄存器是用于abstract command的數(shù)據(jù)寄存器,長(zhǎng)度為32位,可讀可寫。 ② DM控制寄存器(dmcontrol,0x10) dmcontrol寄存器的每一位含義如圖9所示。 圖9 dmcontrol寄存器 ● haltreq:只寫,寫1表示halt(暫停)當(dāng)前hart(hart表示CPU核,存在多核的情況)。 ● resumereq:只能寫1,寫1表示resume(恢復(fù))當(dāng)前hart,即go。 ● hartreset:可讀可寫,寫1表示復(fù)位DM模塊,寫0表示撤銷復(fù)位,這是一個(gè)可選的位。 ● ackhavereset:只能寫1,寫1表示清除當(dāng)前hart的havereset狀態(tài)。 ● hasel:可讀可寫,0表示當(dāng)前只有一個(gè)已經(jīng)被選擇了的hart,1表示當(dāng)前可能有多個(gè)已經(jīng)被選擇了的hart。 ● hartsello:可讀可寫,當(dāng)前選擇的hart的低10位。1位表示一個(gè)hart。 ● hartselhi:可讀可寫,當(dāng)前選擇的hart的高10位。1位表示一個(gè)hart。如果只有一個(gè)hart,那么hasel的值為0,hartsello的值為1,hartselhi的值為0。 ● setresethaltreq:只能寫1,寫1表示當(dāng)前選擇的hart復(fù)位后處于harted狀態(tài)。 ● clrresethaltreq:只能寫1,寫1表示清除setresethaltreq的值。 ● ndmreset:可讀可寫,寫1表示復(fù)位整個(gè)系統(tǒng),寫0表示撤銷復(fù)位。 ● dmactive:可讀可寫,寫0表示復(fù)位DM模塊,寫1表示讓DM模塊正常工作。正常調(diào)試時(shí),此位必須為1。 ③ DM狀態(tài)寄存器(dmstatus,0x11) dmstatus寄存器是一個(gè)只讀寄存器,每一位含義如圖10所示。 圖10 dmstatus寄存器 ● impebreak:1表示執(zhí)行完progbuf的指令后自動(dòng)插入一條ebreak指令,這樣就可以節(jié)省一個(gè)progbuf。當(dāng)progbufsize的值為1時(shí),此值必須為1。 ● allhavereset:1表示當(dāng)前選擇的hart已經(jīng)復(fù)位。 ● anyhavereset:1表示當(dāng)前選擇的hart至少有一個(gè)已經(jīng)復(fù)位。 ● allresumeack:1表示當(dāng)前選擇的所有hart已經(jīng)應(yīng)答上一次的resume請(qǐng)求。 ● anyresumeack:1表示當(dāng)前選擇的hart至少有一個(gè)已經(jīng)應(yīng)答上一次的resume請(qǐng)求。 ● allnonexistent:1表示當(dāng)前選擇的hart不存在于當(dāng)前平臺(tái)。 ● anynonexistent:1表示至少有一個(gè)選擇了的hart不存在于當(dāng)前平臺(tái)。 ● allunavail:1表示當(dāng)前選擇的hart都不可用。 ● anyunavail:1表示至少有一個(gè)選擇了的hart不可用。 ● allrunning:1表示當(dāng)前選擇的hart都處于running狀態(tài)。 ● anyrunning:1表示至少有一個(gè)選擇了的hart處于running狀態(tài)。 ● allhalted:1表示當(dāng)前選擇的hart都處于halted狀態(tài)。 ● anyhalted:1表示至少有一個(gè)選擇了的hart處于halted狀態(tài)。 ● authenticated:0表示使用DM模塊之前需要進(jìn)行認(rèn)證,1表示已經(jīng)通過(guò)認(rèn)證。 ● authbusy:0表示可以進(jìn)行正常的認(rèn)證,1表示認(rèn)證處于忙狀態(tài)。 ● hasresethaltreq:1表示DM模塊支持復(fù)位后處于halted狀態(tài),0表示不支持。 ● confstrptrvalid:1表示confstrptr0~3寄存器保存了配置字符串的地址。 ● version:0表示DM模塊不存在,1表示DM模塊的版本為0.11,2表示DM模塊的版本為0.13。 ④ abstract控制和狀態(tài)寄存器(abstractcs,0x16) abstractcs寄存器定義如圖11所示。 圖11 abstractcs寄存器 ● progbufsize:只讀,program buffer的個(gè)數(shù),取值范圍為0~16,每一個(gè)的大小為32位。 ● busy:只讀,1表示abstract命令正在執(zhí)行,當(dāng)寫command寄存器后該位應(yīng)該馬上被置位直到命令執(zhí)行完成。 ● cmderr:可讀、只能寫1,cmderr的值僅當(dāng)busy位為0時(shí)有效。0表示無(wú)錯(cuò)誤,1表示正在操作command、abstractcs、data或者progbuf寄存器,2表示不支持當(dāng)前命令,3表示執(zhí)行命令時(shí)出現(xiàn)異常,4表示由于當(dāng)前hart不可用,或者不是處于halted/running狀態(tài)而不能被執(zhí)行,5表示由于總線出錯(cuò)(對(duì)齊、訪問(wèn)大小、超時(shí))導(dǎo)致的錯(cuò)誤,7表示其他錯(cuò)誤。寫1清零cmderr。 ● datacount:只讀,所實(shí)現(xiàn)的data寄存器的個(gè)數(shù)。 ⑤ abstract命令寄存器(command,0x17) 當(dāng)寫這個(gè)寄存器時(shí),相應(yīng)的操作就會(huì)被執(zhí)行。command寄存器只能寫,定義如圖12所示。 圖12 command寄存器 ● cmdtype:只寫,命令類型,0為表示訪問(wèn)寄存器,1表示快速訪問(wèn),2表示訪問(wèn)內(nèi)存。 ● control:只寫,不同的命令類型有不同的含義,說(shuō)明如下。 當(dāng)cmdtype為0時(shí),control定義如圖13所示。 圖13 訪問(wèn)寄存器 ● cmdtype:值為0。 ● aarsize:2表示訪問(wèn)寄存器的最低32位,3表示訪問(wèn)寄存器的最低64位,4表示訪問(wèn)寄存器的最低128位。如果大于實(shí)際寄存器的大小則此次訪問(wèn)是失敗的。 ● aarpostincrement:1表示成功訪問(wèn)寄存器后自動(dòng)增加regno的值。 ● postexec:1表示執(zhí)行progbuf里的內(nèi)容(指令)。 ● transfer:0表示不執(zhí)行write指定的操作,1表示執(zhí)行write指定的操作。 ● write:0表示從指定的寄存器拷貝數(shù)據(jù)到arg0指定的data寄存器。1表示從arg0指定的data寄存器拷貝數(shù)據(jù)到指定的寄存器。 ● regno:要訪問(wèn)的寄存器。 綜上,可知: Ⅰ. 當(dāng)write=0,transfer=1時(shí),從regno指定的寄存器拷貝數(shù)據(jù)到arg0對(duì)應(yīng)的data寄存器。 Ⅱ. 當(dāng)write=1,transfer=1時(shí),從arg0對(duì)應(yīng)的data寄存器拷貝數(shù)據(jù)到regno指定的寄存器。 Ⅲ. 當(dāng)aarpostincrement=1時(shí),將regno的值加1。 Ⅳ. 當(dāng)postexec=1時(shí),執(zhí)行progbuf寄存器里的指令。 arg對(duì)應(yīng)的data寄存器如圖14所示。 圖14 arg對(duì)應(yīng)的data寄存器 即當(dāng)訪問(wèn)的寄存器位數(shù)為32位時(shí),arg0對(duì)應(yīng)data0寄存器,arg1對(duì)應(yīng)data1寄存器,arg2對(duì)應(yīng)data2寄存器。 當(dāng)cmdtype為1時(shí),control定義如圖15所示。 圖15 快速訪問(wèn) ● cmdtyte:值為1。 此命令會(huì)執(zhí)行以下操作: 1)halt住當(dāng)前hart。 2)執(zhí)行progbuf寄存器里的指令。 3)resume當(dāng)前hart。 當(dāng)cmdtype為2時(shí),control定義如圖16所示。 圖16 訪問(wèn)內(nèi)存 ● cmdtype:值為2。 ● aamvirtual:0表示訪問(wèn)的是物理地址,1表示訪問(wèn)的是虛擬地址。 ● aamsize:0表示訪問(wèn)內(nèi)存的低8位,1表示訪問(wèn)內(nèi)存的低16位,2表示訪問(wèn)內(nèi)存的低32位,3表示訪問(wèn)內(nèi)存的低64位,4表示訪問(wèn)內(nèi)存的低128位。 ● aampostincrement:1表示訪問(wèn)成功后,將arg1對(duì)應(yīng)的data寄存器的值加上aamsize對(duì)應(yīng)的字節(jié)數(shù)。 ● write:0表示從arg1指定的地址拷貝數(shù)據(jù)到arg0指定的data寄存器,1表示從arg0指定的data寄存器拷貝數(shù)據(jù)到arg1指定的地址。 ● target-specific:保留。 綜上,可知: Ⅰ. 當(dāng)write=0時(shí),從arg1指定的地址拷貝數(shù)據(jù)到arg0指定的data寄存器。 Ⅱ. 當(dāng)write=1時(shí),從arg0指定的data寄存器拷貝數(shù)據(jù)到arg1指定的地址。 Ⅲ. 當(dāng)aampostincrement=1時(shí),增加arg1對(duì)應(yīng)的data寄存器的值。 ⑥ 系統(tǒng)總線訪問(wèn)控制和狀態(tài)寄存器(sbcs,0x38) sbcs寄存器定義如圖17所示。 圖17 sbcs寄存器 ● sbversion:只讀,0表示system bus是2018.1.1之前的版本,1表示當(dāng)前debug spec的版本,即0.13版本。 ● sbbusyerror:只讀,寫1清零,當(dāng)debugger要進(jìn)行system bus訪問(wèn)操作時(shí),如果上一次的system bus訪問(wèn)還在進(jìn)行中,此時(shí)會(huì)置位該位。 ● sbbusy:只讀,1表示system bus正在忙。在進(jìn)行system bus訪問(wèn)前必須確保該位為0。 ● sbreadonaddr:可讀可寫,1表示每次往sbaddress0寄存器寫數(shù)據(jù)時(shí),將會(huì)自動(dòng)觸發(fā)system bus從新的地址讀取數(shù)據(jù)。 ● sbaccess:可讀可寫,訪問(wèn)的數(shù)據(jù)寬度,0表示8位,1表示16位,2表示32位,3表示64位,4表示128位。 ● sbautoincrement:可讀可寫,1表示每次system bus訪問(wèn)后自動(dòng)將sbaddress的值加上sbaccess的大小(字節(jié))。 ● sbreadondata:可讀可寫,1表示每次從sbdata0寄存器讀數(shù)據(jù)后將自動(dòng)觸發(fā)system bus從新的地址讀取數(shù)據(jù)。 ● sberror:可讀,寫1清零,0表示無(wú)錯(cuò)誤,1表示超時(shí),2表示訪問(wèn)地址錯(cuò)誤,3表示地址對(duì)齊錯(cuò)誤,4表示訪問(wèn)大小錯(cuò)誤,7表示其他錯(cuò)誤。 ● sbasize:只讀,system bus地址寬度(位數(shù)),0表示不支持system bus訪問(wèn)。 ● sbaccess128:只讀,1表示system bus支持128位訪問(wèn)。 ● sbaccess64:只讀,1表示system bus支持64位訪問(wèn)。 ● sbaccess32:只讀,1表示system bus支持32位訪問(wèn)。 ● sbaccess16:只讀,1表示system bus支持16位訪問(wèn)。 ● sbaccess8:只讀,1表示system bus支持8位訪問(wèn)。 ⑦ 系統(tǒng)總線地址0寄存器(sbaddress0,0x39) 可讀可寫,如果sbcs寄存器中的sbasize的值為0,那么此寄存器可以不用實(shí)現(xiàn)。 當(dāng)寫該寄存器時(shí),會(huì)執(zhí)行以下流程: Ⅰ. 設(shè)置sbcs.sbbusy的值為1。 Ⅱ. 從新的sbaddress地址讀取數(shù)據(jù)。 Ⅲ. 如果讀取成功并且sbcs.sbautoincrement的值為1,則增加sbaddress的值。 Ⅳ. 設(shè)置sbcs.sbbusy的值為0。 ⑧ 系統(tǒng)總線數(shù)據(jù)0寄存器(sbdata0,0x3c) 可讀可寫,如果sbcs寄存器中的所有sbaccessxx的值都為0,那么此寄存器可以不用實(shí)現(xiàn)。 當(dāng)寫該寄存器時(shí),會(huì)執(zhí)行以下流程: Ⅰ. 設(shè)置sbcs.sbbusy的值為1。 Ⅱ. 將sbdata的值寫到sbaddress指定的地址。 Ⅲ. 如果寫成功并且sbcs.sbautoincrement的值為1,則增加sbaddress的值。 Ⅳ. 設(shè)置sbcs.sbbusy的值為0。 當(dāng)讀該寄存器時(shí),會(huì)執(zhí)行以下流程: Ⅰ. 準(zhǔn)備返回讀取的數(shù)據(jù)。 Ⅱ. 設(shè)置sbcs.sbbusy的值為1。 Ⅲ. 如果sbcs.sbautoincrement的值為1,則增加sbaddress的值。 Ⅳ. 如果sbcs.sbreadondata的值為1,則開(kāi)始下一次讀操作。 Ⅴ. 設(shè)置sbcs.sbbusy的值為0。 三、RISC-V調(diào)試上位機(jī)分析 RISC-V官方支持的調(diào)試器上位機(jī)是openocd。openocd是地表最強(qiáng)大(沒(méi)有之一)的開(kāi)源調(diào)試上位機(jī),支持各種target(ARM(M、A系列)、FPGA、RISC-V等),支持各種調(diào)試器(Jlink、CMSIS-DAP、FTDI等),支持JTAG和SWD接口。 這里不打算詳細(xì)分析整個(gè)openocd的實(shí)現(xiàn),只是重點(diǎn)關(guān)注針對(duì)RISC-V平臺(tái)的初始化、讀寫寄存器和讀寫內(nèi)存這幾個(gè)流程。 1>openocd啟動(dòng)過(guò)程 openocd啟動(dòng)時(shí)需要通過(guò)-f參數(shù)制定一個(gè)cfg文件,比如: openocd.exe -f riscv.cfg riscv.cfg文件的內(nèi)容如下: adapter_khz1000 reset_config srst_only adapter_nsrst_assert_width 100 interface cmsis-dap transport select jtag set _CHIPNAME riscv jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1e200a6d set _TARGETNAME $_CHIPNAME.cpu target create $_TARGETNAME riscv -chain-position $_TARGETNAME ■ 第一行設(shè)置TCK的時(shí)鐘為1000KHz。 ■ 第二行表示不支持通過(guò)TRST引腳復(fù)位,只支持TMS為高電平并持續(xù)5個(gè)TCK時(shí)鐘這種方式的復(fù)位。 ■ 第三行是復(fù)位持續(xù)的延時(shí)。 ■ 第四行指定調(diào)試器為CMSIS-DAP。 ■ 第五行指定調(diào)試接口為JTAG。 ■ 第六行指定調(diào)試的target類型為riscv。 ■ 第七行指定生成一個(gè)IR寄存器長(zhǎng)度為5位、IDCODE為0x1e200a6d的JTAG TAP。 ■ 第八、九行指定生成一個(gè)riscv target。 openocd啟動(dòng)時(shí)的主要流程如圖18所示。 圖18 openocd啟動(dòng)流程 下面重點(diǎn)關(guān)注一下examine target這個(gè)流程。 這里的target是指riscv,對(duì)于riscv,首先會(huì)讀取dtmcontrol這個(gè)寄存器,因?yàn)閛penocd支持0.11和0.13版本的DTM,通過(guò)這個(gè)寄存器可以知道當(dāng)前調(diào)試的DTM是哪一個(gè)版本。這里選擇0.13版本來(lái)分析。通過(guò)讀取dtmcontrol,還可以知道idle、abits這些參數(shù)。接下來(lái)會(huì)將dmcontrol這個(gè)寄存器的dmactive域?qū)?后再寫1來(lái)復(fù)位DM模塊。接下來(lái)再讀取dmstatus,判斷version域是否為2。接下來(lái)還會(huì)讀取sbcs和abstractcs寄存器,最后就是初始化每一個(gè)hart的寄存器。 2>read register過(guò)程 讀寄存器時(shí),先構(gòu)建command寄存器的內(nèi)容,首先將cmdtype的值設(shè)為0,aarsize的值設(shè)為2(寄存器的寬度為32位),transfer的值設(shè)為1,regno的值設(shè)為要讀的寄存器的number,其他值設(shè)為0,然后寫到command寄存器里。然后一直讀取abstractcs寄存器,直到abstractcs寄存器的busy位為0或者超時(shí)。然后再判斷abstractcs寄存器的cmderr的值是否為0,如果不為0則表示此次讀取寄存器失敗,如果為0則繼續(xù)讀取data0寄存器,這樣就可以得到想要讀的寄存器的值。 3>write register過(guò)程 寫寄存器時(shí),先將需要寫的值寫到data0寄存器,然后構(gòu)建command寄存器的內(nèi)容,首先將cmdtype的值設(shè)為0,aarsize的值設(shè)為2(寄存器的寬度為32位),transfer的值設(shè)為1,write的值設(shè)為1,regno的值設(shè)為要寫的寄存器的number,其他值設(shè)為0,然后寫到command寄存器里。然后一直讀取abstractcs寄存器,直到abstractcs寄存器的busy位為0或者超時(shí)。然后再判斷abstractcs寄存器的cmderr的值是否為0,如果不為0則表示此次寫寄存器失敗,如果為0則表示寫寄存器成功。 4>read memory過(guò)程 如果progbufsize的值大于等于2,則會(huì)優(yōu)先使用通過(guò)執(zhí)行指令的方式來(lái)讀取內(nèi)存。這里不分析這種方式,而是分析使用system bus的方式。通過(guò)前面的分析可知,system bus有兩個(gè)版本V0和V1,這里以V1版本來(lái)說(shuō)明。 先將sbcs寄存器的sbreadonaddr的值設(shè)為1,sbaccess的值設(shè)為2(32位),然后將要讀內(nèi)存的地址寫入sbaddress0寄存器。接著讀sbdata0寄存器,最后讀sbcs寄存器,如果其中的sbbusy、sberror和sbbusyerror都為0,則從sbdata0讀取到的內(nèi)容就是要讀的內(nèi)存的值。 5>write memory過(guò)程 和read memory類似,同樣以V1版本來(lái)說(shuō)明。 先將要寫的內(nèi)存地址寫到sbaddress0寄存器,然后將要寫的數(shù)據(jù)寫到data0寄存器,最后讀sbcs寄存器,如果其中的sbbusy、sberror和sbbusyerror都為0,則此次寫內(nèi)存成功。 四、RISC-V JTAG的實(shí)現(xiàn) 通過(guò)在STM32F103C8T6上實(shí)現(xiàn)(模擬)RISC-V調(diào)試標(biāo)準(zhǔn),進(jìn)一步加深對(duì)RISC-V JTAG調(diào)試的理解。 使用STM32的四個(gè)GPIO作為JTAG信號(hào)的四根線,其中TCK所在的引腳設(shè)為外部中斷,即上升沿和下降沿觸發(fā)方式,實(shí)現(xiàn)了可以通過(guò)openocd以RISC-V的調(diào)試標(biāo)準(zhǔn)來(lái)訪問(wèn)STM32的寄存器和內(nèi)存。程序流程如圖19所示。 圖19 JTAG實(shí)現(xiàn)的程序流程 五、參考資料 1、在STM32上模擬RISC-V JTAG的實(shí)現(xiàn):stm32_riscv_jtag_slave 2、一個(gè)從零開(kāi)始寫的易懂的RISC-V處理器核:tinyriscv
    發(fā)表于 11-28 22:00

    基于深控技術(shù) “不需要點(diǎn)表的邊緣計(jì)算網(wǎng)關(guān)” 的聯(lián)網(wǎng)解決方案

    深控技術(shù)研發(fā)的 “不需要點(diǎn)表的邊緣計(jì)算網(wǎng)關(guān)” 聯(lián)網(wǎng)解決方案憑借其無(wú)需點(diǎn)表配置、強(qiáng)大的邊緣計(jì)算能力、高度安全可靠以及廣泛的設(shè)備兼容性等優(yōu)勢(shì),能夠在多個(gè)行業(yè)的
    的頭像 發(fā)表于 11-15 11:51 ?295次閱讀
    基于深控技術(shù) “不需<b class='flag-5'>要點(diǎn)</b>表的邊緣計(jì)算網(wǎng)關(guān)” 的<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>解決方案

    聯(lián)網(wǎng)學(xué)習(xí)路線來(lái)啦!

    聯(lián)網(wǎng)學(xué)習(xí)路線來(lái)啦! 聯(lián)網(wǎng)方向作為目前一個(gè)熱門的技術(shù)發(fā)展方向,有大量的人才需求,小白的學(xué)習(xí)入門路線推薦以下步驟。 1.了解
    發(fā)表于 11-11 16:03

    全面講解聯(lián)網(wǎng)應(yīng)用的設(shè)計(jì)技巧和方法

    本文要點(diǎn)了解不同的聯(lián)網(wǎng)領(lǐng)域和應(yīng)用了解聯(lián)網(wǎng)設(shè)計(jì)的基本組成部分
    的頭像 發(fā)表于 11-02 08:04 ?684次閱讀
    全面講解<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>應(yīng)用的設(shè)計(jì)技巧和方法

    “不需要點(diǎn)表的工業(yè)網(wǎng)關(guān)”如何實(shí)現(xiàn)松下FPG-C32T2H數(shù)據(jù)采集和遠(yuǎn)程維護(hù)的聯(lián)網(wǎng)解決方案

    深控技術(shù)的 “不需要點(diǎn)表的工業(yè)網(wǎng)關(guān)” 實(shí)現(xiàn)松下 FPG-C32T2H 數(shù)據(jù)采集和遠(yuǎn)程維護(hù)的聯(lián)網(wǎng)解決方案
    的頭像 發(fā)表于 10-12 11:30 ?357次閱讀
    “不需<b class='flag-5'>要點(diǎn)</b>表的工業(yè)網(wǎng)關(guān)”如何實(shí)現(xiàn)松下FPG-C32T2H數(shù)據(jù)采集和遠(yuǎn)程維護(hù)的<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>解決方案

    “不需要點(diǎn)表的工業(yè)網(wǎng)關(guān)” 深控技術(shù)聯(lián)網(wǎng)解決方案

    “不需要點(diǎn)表的工業(yè)網(wǎng)關(guān)” 聯(lián)網(wǎng)解決方案
    的頭像 發(fā)表于 09-29 15:43 ?415次閱讀
    “不需<b class='flag-5'>要點(diǎn)</b>表的工業(yè)網(wǎng)關(guān)” 深控技術(shù)<b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>解決方案

    什么是聯(lián)網(wǎng)技術(shù)?

    什么是聯(lián)網(wǎng)技術(shù)? 聯(lián)網(wǎng)技術(shù)(Internet of Things, IoT)是一種通過(guò)信息傳感設(shè)備,按約定的協(xié)議,將任何物體與網(wǎng)絡(luò)相連接,實(shí)現(xiàn)智能化識(shí)別、定位、跟蹤、監(jiān)管等功能的
    發(fā)表于 08-19 14:08

    深入淺出系列之代碼可讀性

    原創(chuàng)聲明:該文章是個(gè)人在項(xiàng)目中親歷后的經(jīng)驗(yàn)總結(jié)和分享,如有搬運(yùn)需求請(qǐng)注明出處。 這是“深入淺出系列”文章的第一篇,主要記錄和分享程序設(shè)計(jì)的一些思想和方法論,如果讀者覺(jué)得所有受用,還請(qǐng)“一鍵三連
    的頭像 發(fā)表于 08-09 16:00 ?285次閱讀

    深入淺出談TDR阻抗測(cè)試

    Chrent為什么要測(cè)阻抗?計(jì)算機(jī)、通信系統(tǒng)、視頻系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)等領(lǐng)域的數(shù)字系統(tǒng)開(kāi)發(fā)人員正面臨著越來(lái)越快的時(shí)鐘頻率和數(shù)據(jù)速率,隨之,信號(hào)完整性變得越來(lái)越重要。在當(dāng)前的高工作速率下,影響信號(hào)上升時(shí)間、脈寬、時(shí)序、抖動(dòng)或噪聲內(nèi)容的任何事物都會(huì)影響整個(gè)系統(tǒng)的性能和可靠性。為保證信號(hào)完整性,必須了解和控制信號(hào)經(jīng)過(guò)的傳輸環(huán)境的阻抗。阻抗不匹配和不連續(xù)會(huì)導(dǎo)致反射,增加系
    的頭像 發(fā)表于 06-06 08:28 ?6327次閱讀
    <b class='flag-5'>深入淺出</b>談TDR阻抗測(cè)試

    深入淺出帶你搞懂-MOSFET柵極電阻

    一、MOSFET簡(jiǎn)介MOSFET是金屬(metal)—氧化(oxide)—半導(dǎo)體(semiconductor)場(chǎng)效應(yīng)晶體管,屬于電壓控制電流型元件,是開(kāi)關(guān)電路中的基本元件,其柵極(G極)內(nèi)阻極高
    的頭像 發(fā)表于 05-09 08:10 ?2.3w次閱讀
    <b class='flag-5'>深入淺出</b>帶你搞懂-MOSFET柵極電阻

    深入淺出Matter創(chuàng)建設(shè)計(jì)的挑戰(zhàn)以及實(shí)踐的重要步驟

    Matter是智能家居和聯(lián)網(wǎng)設(shè)備的開(kāi)源連接標(biāo)準(zhǔn)。它旨在提高不同制造商之間的互操作性和兼容性,促進(jìn)互聯(lián)網(wǎng)連接設(shè)備之間的無(wú)縫通信。
    的頭像 發(fā)表于 03-27 16:13 ?1179次閱讀

    怎么理解負(fù)頻率呢?射頻人眼中的負(fù)頻率

    說(shuō)實(shí)話,我對(duì)負(fù)頻率這個(gè)概念,也是有點(diǎn)凌亂。不過(guò),最近不是正在看“深入淺出通信原理”嘛,看了一些相關(guān)概念。
    的頭像 發(fā)表于 03-05 16:10 ?3433次閱讀
    怎么理解負(fù)頻率呢?射頻人眼中的負(fù)頻率

    深入淺出理解三極管

    原文來(lái)自原創(chuàng)書籍《硬件設(shè)計(jì)指南 從器件認(rèn)知到手機(jī)基帶設(shè)計(jì)》: 本小節(jié)介紹下三極管的特性,清晰易懂,使用通俗的水流模型加強(qiáng)對(duì)三極管的原理記憶,一定比課堂上講的要形象的多,各位同學(xué)要學(xué)會(huì)類比的方法來(lái)加深記憶(比如在介紹相對(duì)論中引力扭曲時(shí)空的概念時(shí),國(guó)外科學(xué)家們就用生活中的漩渦,或者在彈性膜中間的重球,來(lái)類比星體引力對(duì)時(shí)空的影響,這樣會(huì)大大簡(jiǎn)化我們學(xué)習(xí)、理解和記憶的過(guò)程,這種學(xué)習(xí)方法被稱為類比學(xué)習(xí)法)。 我們
    的頭像 發(fā)表于 02-23 08:41 ?734次閱讀
    <b class='flag-5'>深入淺出</b>理解三極管
    主站蜘蛛池模板: 扒开双腿爽爽爽视频www| 国产精品va一区二区三区| sihu国产午夜精品一区二区三区| 美女色黄一男一女| 激情五月婷婷在线| 国产色秀视频| 国产精品四虎在线观看免费| 国产精品你懂的在线播放| www.色.com| 天天爱天天爽| 操人视频网站| 亚洲免费视频播放| 一级片高清| 色欲麻豆国产福利精品| 欧美大片一区| 国产成人综合久久| 婷婷四房播客五月天| 国产在线精品香蕉综合网一区| 欧美中出| 黄视频免费在线看| 五月天精品| 免费观看的黄色网址| xxxx欧美69免费| 免费又爽又黄1000禁片| 国产yw.8825.c免费| 最新日本免费一区二区三区中文| 婷五月综合| 九色视频播放| 亚洲九九香蕉| 2019天天操天天干天天透| 男女交性视频免费| 色视频网站在线| 国产免费人人看大香伊| 天天爱天天插| 欧美性xxxx巨大黑人猛| 一级欧美一级日韩| 你懂得在线| 亚洲va欧美va国产综合久久| 在线免费观看91| 国产精品污视频| 欧美丝袜一区|