<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > BB-Black之PRU-ICSS簡(jiǎn)析

BB-Black之PRU-ICSS簡(jiǎn)析

作者: 時(shí)間:2017-10-21 來(lái)源:網(wǎng)絡(luò ) 收藏

  什么是?

本文引用地址:http://dyxdggzs.com/article/201710/366971.htm

  Beaglebone Black所使用的TI芯片(XAM3359AZCZ revision 2)包含了一個(gè)主處理器和許多其他的模塊,如下圖:

  盡管ARM Cortex-A8內核的性能十分強大,但是Linux的本質(zhì)決定了對于高速外部硬件的控制可能會(huì )不太容易實(shí)現。而TI的這款芯片添加了兩個(gè)額外的CPU(稱(chēng)為或PRUSSv2,即可編程實(shí)時(shí)單元和工業(yè)用通信子系統,以后簡(jiǎn)稱(chēng)PRU),從而使這個(gè)問(wèn)題得到了改善。這意味著(zhù)這兩個(gè)CPU可以分別運行不同的軟件,以便減輕底層協(xié)議在硬件接口和處理上的工作量。

  這款芯片就好像具有Arduino類(lèi)似功能的處理器,只不過(guò)其額外的兩個(gè)CPU工作頻率要高出許多,達到200MHz,也就是說(shuō)在許多情況下可以不再需要外部邏輯器件、CPLD或者FPGA。

  通常來(lái)說(shuō),針對一個(gè)以上的處理器進(jìn)行編程是一件麻煩事,而且處理器之前還需要有通信協(xié)議。而TI的這款芯片則極大的簡(jiǎn)化了這種麻煩,原因有兩點(diǎn),一是用于PRU的代碼可以從主處理器下載,二是為了方便處理器之間通信,芯片集成了共享存儲器。

  PRU的作用體現在哪兒?

  對于低速通信來(lái)說(shuō),傳統的I2C或者常用的協(xié)議就已經(jīng)足夠應付了,因此PRU在這些地方并沒(méi)有用武之地。而對于高速通信PRU可能會(huì )非常受歡迎,這是因為PRU能夠消除由于Linux環(huán)境切換所造成的中斷,從而連續對硬件提供服務(wù),也不會(huì )對ARM主處理器造成負擔。這里有一些常見(jiàn)的并且可行例子;

  • 連接到高速ADC(例如模擬信號捕捉)

  • CCD 或者CMOS攝像機

  • LED或者LCD顯示器

  • 生成模擬視頻信號(視頻編碼器)

  • 自定義PWM或者其他自定義協(xié)議或非標準協(xié)議

  • 帶反饋的電機控制

  據我所知,PRU甚至能夠用某個(gè)外部時(shí)鐘來(lái)作為并行數據的時(shí)鐘。

  如何使用PRU?

  當前來(lái)說(shuō)使用PRU即不簡(jiǎn)單也不算困難。主要的難度在于在網(wǎng)上找到完整的實(shí)例。這里提供的內容就是從網(wǎng)上收集而來(lái)的。

  主要步驟如下:

  1. 在上使能PRU系統

  2. 將PRU匯編程序安裝到BBB上(當前用于PRU的代碼是都是用匯編寫(xiě)的,還沒(méi)有人開(kāi)發(fā)出這對PRU的C編譯器)

  3. 編寫(xiě)代碼。PRU應用程序分為兩部分,而且相互之間能夠通過(guò)存儲器尋址來(lái)進(jìn)行通信,即

 ?。╝) 匯編代碼,編譯為.bin機器指令文件,以便在PRU上運行

 ?。╞) C語(yǔ)言代碼,運行于主處理器上,也就是Linux系統上。這些代碼負責將匯編代碼下載到RPU

  4. 配置Linux設置樹(shù),啟用所有引腳用于輸入輸出

  5. 運行程序

  PRU使用什么樣的匯編代碼?

  還好寄存器數量很給力(都是32位),而且指令都是正交的,另外用于操作的位和字節參考都相當令人滿(mǎn)意,所以相對而言,比起某些常見(jiàn)的匯編語(yǔ)言,例如針對PIC或其他8位處理器的匯編來(lái)說(shuō),PRU使用的匯編代碼算是比較容易上手的了。匯編命令數量并不多,目前為止我只使用了大約45條命令中的一小部分,結果還不錯。(通常本人不愿意為了某個(gè)不太好用的處理器花太多時(shí)間學(xué)習匯編 – 但RPU完全不同,其指令集貌似很好用的樣子)

  PRU是否物有所值?

  我覺(jué)得答案是肯定的,應為有了PRU就能夠在高速狀態(tài)下控制硬件(比如50MHz)。每條指令在PRU上只需要5納秒的執行時(shí)間(200MHz頻率,每條指令占用一個(gè)周期),并且不存在由于Linux內核造成的不規則延遲。

  難點(diǎn)在哪兒?

  難點(diǎn)主要在于和設備樹(shù)相關(guān)的東西。希望在未來(lái)能夠有所變化或者變得更簡(jiǎn)單。在一個(gè)典型的微控制器上,輸入輸出的設定是用特定的寄存器完成的,這些寄存器存在于某個(gè)設備的某一部分存儲映射中。據我所知,當前運行在上的軟件不允許用戶(hù)通過(guò)傳統的C代碼對這些硬件寄存器進(jìn)行直接的修改操作。當前采用的方法叫做“設備樹(shù)”。它是一個(gè)文本文件,并且被壓縮成為二進(jìn)制文件,在系統啟動(dòng)時(shí)需要對其進(jìn)行讀操作。該文件高速系統哪些是用于輸入輸出的引腳。設備樹(shù)的修改也適用于使能RPU系統。

  有人曾經(jīng)通過(guò)設備樹(shù)關(guān)閉了上默認閃爍的LED燈。設備樹(shù)文件位于BB-Black的/boot目錄下,是一個(gè)二進(jìn)制文件,其內容自然無(wú)法看懂(如下圖),通常文件名為.dtb或者.dtbo。



關(guān)鍵詞: 英蓓特 BB-Black PRU-ICSS

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>