創龍OMAPL138 PRU開發例程

      網友投稿 603 2025-03-31

      Revision History

      Draft?Date

      Revision No.

      Description

      2016/05/25

      V1.1

      1.模板更新。

      2015/04/28

      V1.0

      1.初始版本。

      1 環境搭建

      1.1安裝pru-sdk包

      PRU的SDK源碼ti-pru-sw-1.00.00-r0+svnr33.tar.bz2位于光盤資料tools目錄下,將此文件解壓到虛擬機任意路徑下,解壓后如下圖所示:

      圖 1

      1.2 編譯pru-sdk包

      執行以下命令進行編譯:

      Host# make CROSS_COMPILE=arm-none-linux-gnueabi-?LINUXKERNEL_INSTALL_DIR=/home/tl/omapl138/linux-3.3

      編譯成功如下圖所示:

      圖 2

      參數解析:

      CROSS_COMPILE:交叉編譯工具鏈;

      LINUXKERNEL_INSTALL_DIR:內核安裝路徑;

      請務必使用創龍提供的linux-3.3內核源碼進行編譯,編譯前確保內核源碼已正確編譯過。

      1.3 安裝pru-sdk包到文件系統中

      執行以下命令進行編譯:

      Host# sudo make??DESTDIR=/home/tl/omapl138/rootfs?install

      安裝完如下圖所示:

      圖 3

      參數解析:

      DESTDIR:文件系統位置;

      2? LED開發例程

      本例程主要通過PRU控制開發板LED燈的閃爍。

      2.1源碼安裝

      源碼路徑位于光盤資料"demo/app/tl-pru-example/tl-pru-leds.tar.bz2",將源碼解壓到虛擬機任意路徑下,如下圖所示:

      圖 4

      2.2 修改配置文件

      修改Rules.make配置文件:

      CCTOOLS?=arm-none-linux-gnueabi-gcc???//交叉編譯工具鏈

      # where the ti_pru_sw path

      PRU_SW_DIR=/home/tl/pru/pru-sdk/ti-pru-sw-1.00.00-r0+svnr33???//PRU_SDK安裝目錄

      LIBDIR_APP_LOADER?=$(PRU_SW_DIR)/app_loader/lib

      INCDIR_APP_LOADER?=$(PRU_SW_DIR)/app_loader/include

      UTILS_DIR=$(PRU_SW_DIR)/utils

      如下圖所示:

      圖 5

      2.3 編譯

      執行以下命令進行編譯:

      Host# make

      圖 6

      編譯生成的可執行文件位于bin目錄下,如下圖所示:

      圖 7

      2.4 運行程序

      將bin目錄中的tl-pru-leds和tl-pru-leds.bin目標文件拷貝到開發板上,并放于同一目錄下。在此目錄下執行以下命令:

      Target# ./tl-pru-leds

      如下圖所示:

      圖 8

      演示現象:

      開發板LED會同時閃爍十次。

      3 按鍵開發例程

      本例程演示PRU通過按鍵對LED燈進行控制。

      開發板LED編號和GPIO對應關系如下:

      表 1

      開發板型號

      GPIO0[0]

      GPIO0[5]

      GPIO0[1]

      GPIO0[2]

      TL138/1808-EVM

      D7

      D6

      D9

      D10

      TL138/1808-EasyEVM

      D7

      D6

      D9

      D10

      TL138/1808-EthEVM

      D7

      D6

      D9

      D10

      TL138/1808F-EasyEVM

      \

      GD1

      GD2

      GD3

      TL138/1808F-EVM

      \

      D1

      D2

      D3

      3.1 源碼安裝

      源碼路徑位于光盤資料"demo/app/tl-pru-example/tl-pru-keys.tar.bz2",將源碼解壓到虛擬機任意路徑下,如下圖所示:

      圖 9

      3.2 修改配置文件

      修改Rules.make配置文件:

      CCTOOLS?=arm-none-linux-gnueabi-gcc???//交叉編譯工具鏈

      # where the ti_pru_sw path

      PRU_SW_DIR=/home/tl/pru/pru-sdk/ti-pru-sw-1.00.00-r0+svnr33???//PRU_SDK安裝目錄

      LIBDIR_APP_LOADER?=$(PRU_SW_DIR)/app_loader/lib

      INCDIR_APP_LOADER?=$(PRU_SW_DIR)/app_loader/include

      UTILS_DIR=$(PRU_SW_DIR)/utils

      如下圖所示:

      圖 10

      3.3編譯

      執行以下命令進行編譯:

      Host# make

      圖 11

      編譯生成的可執行文件位于當前bin目錄下,如下圖所示:

      圖 12

      3.4?運行程序

      將bin目錄中的tl-pru-keys和tl-pru-keys.bin目標文件拷貝到開發板上,并放于同一目錄下。在此目錄下執行以下命令:

      Target# ./tl-pru-keys

      如下圖所示:

      圖 13

      演示現象:

      以TL138-EVM為例,開發板LED D6被點亮,按下按鍵SW5時LED D9會被點亮,按下按鍵SW6時,LED D10會被點亮,大約歷時10s,測試程序執行完畢,LED D6熄滅,程序退出。

      4 程序代碼分析

      以LED例程為例:

      Linux端代碼分析

      程序設計流程如下:

      初始化pru模塊

      打開pru中斷

      下載程序到pru中

      等待程序執行完畢,pru會發送一個中斷給arm

      關閉pru并退出

      創龍OMAPL138 PRU開發例程

      Linux端代碼主要位于tl-pru-leds.c文件內,代碼如下圖所示:

      圖 14

      PRU端代碼分析

      PRU端代碼主要位于tl-pru-leds.p文件內,主要以匯編為主。主函數程序工作流程如下:

      Pinmux配置

      Gpio Direct配置

      Gpio Data輸出1,LED ON

      延時

      Gpio Data輸出0,LED OFF

      /*程序入口地址,匯編程序需要注明入口地址*/

      .origin 0 ?????????? //表示PRU從程序的0開始的位置開始取指

      .entrypoint START //告訴編譯器,程序入口地址是從label:START開始

      /*宏定義*/

      #define LOOP_TIMES 10 // define the LED flash times

      // Refer to this mapping in the file - \prussdrv\include\pruss_intc_mapping.h

      #define PRU0_ARM_INTERRUPT 34

      #define GPIO_BASE 0x01E26000 // the base address of GPIO registers

      #define GPIO01_DIRECT 0x10 // the offset address of DIR01 register

      #define GPIO0_SETDATAOUT 0x18 // the offset address of SET_DATA01 ?registers

      #define GPIO0_CLEARDATAOUT 0x1C // the offset address of CLR_DATA01 registers

      #define SYSCFG_BASE 0x01c14000

      #define PINMUX1_OFFSET 0x124

      // PINMUX_GPIO0_0 ?PINMUX_GPIO0_1 ?PINMUX_GPIO0_2 ?PINMUX_GPIO0_5

      #define PINMUX1_GPIO_LED_MASS (0xf << 28 | 0xf << 24 | 0xf << 20 | 0xf << 8)

      #define PINMUX1_GPIO_LED (0x8 << 28 | 0x8 << 24 | 0x8 << 20 | 0x8 << 8)

      /*START標號開始了PRU程序,類似C程序從main函數開始*/

      START:

      // setup pinmux gpio led

      MOV r3, SYSCFG_BASE + PINMUX1_OFFSET

      LBBO r2, r3, 0, 4

      MOV r4, PINMUX1_GPIO_LED_MASS

      NOT r4, r4

      AND r2, r2, r4

      MOV r4, PINMUX1_GPIO_LED

      OR r2, r2, r4

      SBBO r2, r3, 0, 4

      /*函數的定義*/

      // Delay 200ms funcation

      DELAY_400MS:

      MOV r0, 45600000 // delay: 400ms

      LOOP_DELAY: // PRU CORE CLK: 228MHz, cycle:8.77ns

      SUB r0, r0, 1 // 1 CPI

      QBNE LOOP_DELAY, r0, 0 // 1 CPI

      RET

      /*函數的調用*/

      CALL DELAY_400MS // Call to delay some time

      /*發送中斷信號給ARM*/

      // Send notification to Host for program completion

      MOV r31.b0, #PRU0_ARM_INTERRUPT

      /*關閉PRU*/

      // Halt the processor

      HALT

      附錄1

      圖15

      Linux 單片機

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel名稱的快捷鍵、函數,數據有效性介紹
      下一篇:顯示或隱藏參考線(顯示或隱藏參考線的快捷鍵是什么)
      相關文章
      亚洲日本精品一区二区| 亚洲一区二区三区高清| 亚洲最大视频网站| 久久久久久亚洲精品成人| 亚洲AV无码国产在丝袜线观看| 国产精品亚洲A∨天堂不卡| 亚洲中文字幕无码一久久区| 亚洲深深色噜噜狠狠爱网站| 亚洲熟妇中文字幕五十中出| 国产gv天堂亚洲国产gv刚刚碰| 国产亚洲成归v人片在线观看| JLZZJLZZ亚洲乱熟无码| 亚洲永久精品ww47| 精品久久久久久亚洲| 亚洲大尺度无码专区尤物| 亚洲AV日韩AV永久无码绿巨人| 亚洲AV日韩AV鸥美在线观看| 亚洲一区二区三区高清| 亚洲国产精品久久网午夜| 国产成人精品日本亚洲专一区| 日本亚洲免费无线码| 亚洲精品女同中文字幕| 爱情岛论坛亚洲品质自拍视频网站| 一本久到久久亚洲综合| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲日韩中文字幕无码一区| 亚洲精品又粗又大又爽A片| 亚洲欧美国产欧美色欲| 精品国产亚洲AV麻豆| 亚洲情a成黄在线观看| 亚洲色偷拍另类无码专区| 亚洲韩国—中文字幕| 亚洲大香伊人蕉在人依线| 日韩亚洲人成在线| 国产亚洲综合视频| 国产成人精品日本亚洲专区61| 久久久久亚洲精品美女| 亚洲国产综合精品| 亚洲免费网站观看视频| 亚洲国产黄在线观看| 亚洲色成人中文字幕网站|