<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

9.100ASK_V853-PRO開發板支持E907小核開發

嵌入式Linux那些事 ? 來源:嵌入式Linux那些事 ? 作者:嵌入式Linux那些事 ? 2023-05-12 10:35 ? 次閱讀

0.前言

? 100ASK_V853-PRO開發板的V853芯片集成Arm Cortex-A7和RISC-V E907 雙CPU,玄鐵E907 是一款完全可綜合的高端 MCU 處理器。它兼容 RV32IMAC 指令集,提供可觀的整型性能提升以及高能效的浮點性能。E907 的主要特性包括:單雙精度浮點單元,以及快速中斷響應。下圖為RISC-V E907 核的介紹。

poYBAGRdpUGAYIkDAAKVeCYfPdA120.png

本章主要講述如何E907小核進行開發并與Arm A7大核進行通信。

平頭哥E907官網:https://www.t-head.cn/product/E907?spm=a2ouz.12986968.0.0.7bfc2cbdcYnL2b

E907芯片資源下載中心https://occ.t-head.cn/community/download?id=3916180248689188864

全志E907開發指南:https://tina.100ask.net/SdkModule/Linux_E907_DevelopmentGuide-01/

Yuzuki大佬的V85x E907 小核開發與使用:https://www.gloomyghost.com/live/20230215.aspx

1.配置E907環境

E907_RTOS BSP包:https://github.com/YuzukiHD/Yuzukilizard/tree/master/Software/BSP/e907_rtos

E907編譯工具鏈: https://github.com/YuzukiHD/Yuzukilizard/releases/download/Compiler.0.0.1/riscv64-elf-x86_64-20201104.tar.gz

感謝Yuzuki大佬的V851S的倉庫提供的E907_RTOS源碼,這里我將E907開發包放在百度網盤中,方便大家獲取。鏈接為:

鏈接:https://pan.baidu.com/s/1TX742vfEde9bMLd9IrwwqA?pwd=sp6a
提取碼:sp6a

您可以在百度網盤的V853資料光盤中09_E907開發包中獲取到e907_rtos.tar.gz

1.1 編譯E907源碼

將下載完成的E907開發包放在任意目錄下,假設放在/home/book/workspaces目錄下

book@100ask:~/workspaces$ ls
e907_rtos.tar.gz   

解壓e907源碼壓縮包,輸入tar -xzvf e907_rtos.tar.gz ,例如:

book@100ask:~/workspaces$ tar -xzvf e907_rtos.tar.gz 
e907_rtos/
e907_rtos/README.md
e907_rtos/rtos/
e907_rtos/rtos/LICENSE
e907_rtos/rtos/toolchain/
e907_rtos/rtos/toolchain/riscv64-elf-x86_64-20201104/
e907_rtos/rtos/toolchain/riscv64-elf-x86_64-20201104/libexec/
e907_rtos/rtos/toolchain/riscv64-elf-x86_64-20201104/libexec/gcc/
...

解壓完成后,進入e907源碼目錄

book@100ask:~/workspaces$ cd e907_rtos/
book@100ask:~/workspaces/e907_rtos$ ls
README.md  rtos  rtos-hal

進入rtos/source/目錄下

book@100ask:~/workspaces/e907_rtos$ cd rtos/source/
book@100ask:~/workspaces/e907_rtos/rtos/source$ ls
disfunc.sh  ekernel   envsetup.sh  Kbuild   Kconfig.melis     Makefile      modules.order  platform.txt  scripts
drivers     emodules  include      Kconfig  Kconfig.platform  melis-env.sh  out            projects      tools

配置編譯環境變量,輸入source melis-env.sh

book@100ask:~/workspaces/e907_rtos/rtos/source$ source melis-env.sh

輸入lunch選中對應的開發板

book@100ask:~/workspaces/e907_rtos/rtos/source$ lunch

You're building on Linux 100ask 5.4.0-148-generic #165~18.04.1-Ubuntu SMP Thu Apr 20 01:14:06 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Lunch menu... pick a combo:
The supported board:
    1. v851-e907-lizard
    2. v851-e907-lizard-tinymaix
    3. v853-e907-100ask
    4. v853-e907-100ask-tinymaix
What is your choice? 

此時輸入3,并按回車。選擇v853-e907-100ask方案,選擇完成后會如下所示

book@100ask:~/workspaces/e907_rtos/rtos/source$ lunch

You're building on Linux 100ask 5.4.0-148-generic #165~18.04.1-Ubuntu SMP Thu Apr 20 01:14:06 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Lunch menu... pick a combo:
The supported board:
    1. v851-e907-lizard
    2. v851-e907-lizard-tinymaix
    3. v853-e907-100ask
    4. v853-e907-100ask-tinymaix
What is your choice? 3
You have select v853-e907-100ask 
============================================
Project Based On Platform sun20iw3p1 v853-e907-100ask
============================================

此時即可進行編譯,輸入make

book@100ask:~/workspaces/e907_rtos/rtos/source$ make
scripts/kconfig/conf  --silentoldconfig Kconfig
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/melis/version.h
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
  UPD     include/generated/uapi/melis/version.h
  CHK     include/generated/utsrelease.h
  CC      sysconfig.fex
  CC      ekernel/arch/common/common.o
  LD      ekernel/arch/common/built-in.o
  AS      ekernel/arch/riscv/sunxi/blobdata.o
  LD      ekernel/arch/riscv/sunxi/built-in.o
  LD      ekernel/arch/riscv/built-in.o
  LD      ekernel/arch/built-in.o
  LD      ekernel/built-in.o
  LD [M]  ekernel/melis30.o
/home/book/workspaces/e907_rtos/rtos/source/../toolchain/riscv64-elf-x86_64-20201104//bin/riscv64-unknown-elf-ld: ekernel/melis30.o: section .dram_seg.stack lma 0x43c3a2b8 adjusted to 0x43c3a34c
  OBJCOPY ekernel/melis30.bin
  RENAME  ekernel/melis30.o ----> ekernel/melis30.elf
/home/book/workspaces/e907_rtos/rtos/source/../toolchain/riscv64-elf-x86_64-20201104//bin/riscv64-unknown-elf-strip: ekernel/stW7SdkR: section .dram_seg.stack lma 0x43c3a2b8 adjusted to 0x43c3a34c

   text    data     bss     dec     hex filename
 221280   17132   25488  263900   406dc ekernel/melis30.elf

  pack    melis

#### make completed successfully (11 seconds) ####

編譯完成后會在當前目錄的ekernel/下生成一個melis30.elf文件,該文件即可用于啟動小核。

1.2 E907配置項

? E907開發包的配置與Tina SDK的配置類似,在e907_rtos/rtos/source目錄下,執行make menuconfig

例如:

book@100ask:~/workspaces/e907_rtos/rtos/source$ make menuconfig

執行完成后會進入如下界面:

poYBAGRdpVmAEIX3AABams7SQXg875.png

2.加載E907小核

2.1 Tina配置

2.1.1 設備樹配置

? 在Tina根目錄下,進入設備樹目錄

book@100ask:~/workspaces/tina-v853-open$ cd device/config/chips/v853/configs/100ask/

編輯設備樹

book@100ask:~/workspaces/tina-v853-open/device/config/chips/v853/configs/100ask$ vi board.dts 

在設備樹文件中找到E907相關的設備樹節點,設備樹默認設置為:

reserved-memory {
                e907_dram: riscv_memserve {
                        reg = <0x0 0x48000000 0x0 0x00400000>;
                        no-map;
                };

                vdev0buffer: vdev0buffer@47000000 {
                        /* 256k reserved for shared mem pool */
                        compatible = "shared-dma-pool";
                        reg = <0x0 0x47000000 0x0 0x40000>;
                        no-map;
                };

                vdev0vring0: vdev0vring0@47040000 {
                        reg = <0x0 0x47040000 0x0 0x20000>;
                        no-map;
                };

                vdev0vring1: vdev0vring1@47060000 {
                        reg = <0x0 0x47060000 0x0 0x20000>;
                        no-map;
                };
        };

        e907_rproc: e907_rproc@0 {
                compatible = "allwinner,sun8iw21p1-e907-rproc";
                clock-frequency = <600000000>;
                memory-region = <&e907_dram>, <&vdev0buffer>,
                                                <&vdev0vring0>, <&vdev0vring1>;

                mboxes = <&msgbox 0>;
                mbox-names = "mbox-chan";
                iommus = <&mmu_aw 5 1>;

                memory-mappings =
                /* DA            len         PA */
                        /* DDR for e907  */
                        < 0x48000000 0x00400000 0x48000000 >;
                core-name = "sun8iw21p1-e907";
                firmware-name = "melis-elf";
                status = "okay";
        };

        rpbuf_controller0: rpbuf_controller@0 {
                compatible = "allwinner,rpbuf-controller";
                remoteproc = <&e907_rproc>;
                ctrl_id = <0>;  /* index of /dev/rpbuf_ctrl */
                iommus = <&mmu_aw 5 1>;
                status = "okay";
        };

        rpbuf_sample: rpbuf_sample@0 {
                compatible = "allwinner,rpbuf-sample";
                rpbuf = <&rpbuf_controller0>;
                status = "okay";
        };

由于我們需要使用uart3打印E907小核的打印信息,為防止內核搶占uart3,所以需要禁用uart3節點

&uart3 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&uart3_pins_active>;
        pinctrl-1 = <&uart3_pins_sleep>;
        uart-supply = ;
        status = "okay";
};

修改設備樹復用

uart3_pins_active: uart3@0 {
                allwinner,pins = "PH0", "PH1";
                allwinner,function = "uart3";
                allwinner,muxsel = <5>;
                allwinner,drive = <1>;
                allwinner,pull = <1>;
        };

        uart3_pins_sleep: uart3@1 {
                allwinner,pins = "PH0", "PH1";
                allwinner,function = "gpio_in";
                allwinner,muxsel = <0>;
        };

2.1.2 內核配置

在Tina根目錄下,執行make kernel_menuconfig,例如:

book@100ask:~/workspaces/tina-v853-open$ make kernel_menuconfig

1.使能硬件支持

進入內核配置界面后,進入Device Drivers 目錄,選中Mailbox Hardware Support,如下圖所示

poYBAGRdpWeAAEGHAADnxtxQsnI824.png

選中后進入Mailbox Hardware Support目錄中,選中sunxi Mailboxsunxi rv32 standby driver,選中完成后如下圖所示:

poYBAGRdpW-AYdMRAAB39l6DHhw424.png

2.使能RPMsg驅動

進入如下目錄中

→ Device Drivers 
	→ Rpmsg drivers

選中如下配置

<*> allwinnertech rpmsg driver for v853-e907
<*> allwinnertech rpmsg hearbeat driver
<*> sunxi rpmsg ctrl driver
<*> Virtio RPMSG bus driver 

選中完成后如下圖所示:

poYBAGRdpXyABUq4AACHTlOjQdw682.png

3.使能共享內存驅動

? 進入如下目錄中

→ Device Drivers 
	→ Remoteproc drivers 

選中如下配置

<*> SUNXI remote processor support  --->

如下圖所示:

pYYBAGRdpYOASwQyAABfYlUJtoE330.png

修改完成后,保存內核配置并退出。

2.1.3 編譯新鏡像

在Tina根目錄下,輸入make編譯剛剛選中的內核驅動,編譯完成后,輸入pack,打包生成新鏡像。例如:

book@100ask:~/workspaces/tina-v853-open$ make
...
book@100ask:~/workspaces/tina-v853-open$ pack
...

生成新鏡像后,將生成的v853_linux_100ask_uart0.img文件拷貝到Windows主機端。

2.2 E907配置

2.2.1 修改E907鏈接腳本

? 進入目錄e907_rtos/rtos/source/projects/v853-e907-100ask中,找到kernel.lds文件,該文件保存有E907小核的鏈接信息。

book@100ask:~/workspaces/e907_rtos/rtos/source/projects/v853-e907-100ask$ ls
configs  data  epos.img  kernel.lds  src  version

修改kernel.lds,找到MEMORY節點,修改起始地址為0x48000000,長度為0x00400000。此參數需要和Tina設備樹中的E907內存參數一致,所以可修改MEMORY節點參數為:

MEMORY
{
   /*DRAM_KERNEL: 4M */
   DRAM_SEG_KRN (rwx) : ORIGIN = 0x48000000, LENGTH = 0x00400000
}

兩者對比圖如下:

pYYBAGRdpZWAOyryAAA9YKiKuT0458.png

這里使用的0x48000000是假設V853擁有128M的內存,可設置十六進制為為0x48000000;長度為4M,十六進制為0x00400000

2.2.2 修改E907配置

進入e907_rtos/rtos/source/projects/v853-e907-100ask/configs目錄下,修改defconfig文件,例如:

book@100ask:~/workspaces/e907_rtos/rtos/source/projects/v853-e907-100ask$ cd configs/
book@100ask:~/workspaces/e907_rtos/rtos/source/projects/v853-e907-100ask/configs$ ls
defconfig  sys_config.fex

修改下面三個參數為:

CONFIG_DRAM_PHYBASE=0x48000000
CONFIG_DRAM_VIRTBASE=0x48000000
CONFIG_DRAM_SIZE=0x0400000

如下圖所示:

poYBAGRdpZyAVuMKAAAcpYaVb84169.png

2.2.3 使用uart3輸出信息

1.修改引腳復用

配置引腳復用文件,進入e907_rtos/rtos/source/projects/v853-e907-100ask/configs目錄下

修改sys_config.fex文件,通過查詢數據手冊,查看引腳復用功能,我們使用PH0和PH1作為uart3功能

pYYBAGRdpamAU_tcAAH6FV2xn1E654.png

修改uart3節點為:

[uart3]
uart_tx         = port:PH00<5><1>
uart_rx         = port:PH01<5><1>

2.修改配置

e907_rtos/rtos/source目錄下輸入make menuconfig,進入E907配置界面

進入如下目錄,選中[*] Support Serial Driver

 → Kernel Setup 
 	→ Drivers Setup 
 		→ Melis Source Support
 			[*] Support Serial Driver
pYYBAGRdpbSAKjq5AAB3Fw1Cnjc033.png

進入如下目錄,選中[*] enable sysconfig,啟用讀取解析 sys_config.fex 功能

 → Kernel Setup 
 	→ Drivers Setup 
 		→ SoC HAL Drivers 
 			→ Common Option 
 				[*] enable sysconfig
poYBAGRdpbqAQJpqAABkSJ5vPVE574.png

進入如下目錄中,啟用uart驅動,并使用uart3。

 → Kernel Setup 
 	→ Drivers Setup 
 		→ SoC HAL Drivers 
 			→ UART Devices
 				[*] enable uart driver 
 				[*]   support uart3 device
 				(3)   cli uart port number 
pYYBAGRdpcOACh9vAAB4iWpC7cc237.png

進入如下目錄,啟用sys_config.fex 解析器

 → Kernel Setup 
 	→ Subsystem support 
 		→ devicetree support 
 			[*] support traditional fex configuration method parser. 
pYYBAGRdpcqAMO7xAABh1deNcy0013.png

保存并退出E907配置。

2.2.4 編譯生成新鏡像

workspaces/e907_rtos/rtos/source目錄下,輸入make

book@100ask:~/workspaces/e907_rtos/rtos/source$ make
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/melis/version.h
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
  UPD     include/generated/uapi/melis/version.h
  CHK     include/generated/utsrelease.h
  CC      sysconfig.fex
  CC      ekernel/arch/common/common.o
  LD      ekernel/arch/common/built-in.o
  AS      ekernel/arch/riscv/sunxi/blobdata.o
  LD      ekernel/arch/riscv/sunxi/built-in.o
  LD      ekernel/arch/riscv/built-in.o
  LD      ekernel/arch/built-in.o
  LD      ekernel/built-in.o
  LD [M]  ekernel/melis30.o
/home/book/workspaces/e907_rtos/rtos/source/../toolchain/riscv64-elf-x86_64-20201104//bin/riscv64-unknown-elf-ld: ekernel/melis30.o: section .dram_seg.stack lma 0x4803a2b8 adjusted to 0x4803a34c
  OBJCOPY ekernel/melis30.bin
  RENAME  ekernel/melis30.o ----> ekernel/melis30.elf
/home/book/workspaces/e907_rtos/rtos/source/../toolchain/riscv64-elf-x86_64-20201104//bin/riscv64-unknown-elf-strip: ekernel/stWPSq13: section .dram_seg.stack lma 0x4803a2b8 adjusted to 0x4803a34c

   text    data     bss     dec     hex filename
 221280   17132   25488  263900   406dc ekernel/melis30.elf

  pack    melis

#### make completed successfully (7 seconds) ####

編譯完成后會在ekernel目錄下生成的melis30.elf。

2.3 檢查開發板硬件

? 經過測試發現在100ASK_V853-PRO開發板上的R36電阻會導致uart3波特率過高,所以需要檢查開發板上的R36電阻是否存在,如果存在需要手動去掉該電阻。下圖為存在R36電阻的位置情況,紅框內即為R36電阻

poYBAGRdpdWAAXn1ABCcIMpIkHs321.png

如果電阻存在需要手動去除,下圖為去除R36電阻的示意圖

pYYBAGRdpdqAKJqhAAVqY7-jwew429.png

去除R36電阻后,即可正常訪問uart3串口。

2.4 開發板內使能E907

使用全志燒寫工具AllwinnertechPhoeniSuit更新Tina新鏡像,詳情請參考https://forums.100ask.net/t/topic/2882

更新完成后,打開串口終端進入開發板控制臺,將melis30.elf拷貝到/lib/firmware目錄下。

假設我使用ADB功能將文件拷貝到開發板的root/目錄下

root@TinaLinux:~# cd /root/
root@TinaLinux:~# ls
melis30.elf

root目錄下的melis30.elf拷貝到/lib/firmware目錄下

root@TinaLinux:~# cp melis30.elf /lib/firmware/
root@TinaLinux:~# ls /lib/firmware/
boot_xr829.bin   fw_xr829.bin     melis30.elf      sdd_xr829.bin
etf_xr829.bin    fw_xr829_bt.bin  regulatory.db

拷貝完成后,可以在/lib/firmware目錄下,看到小核固件。

2.4.1 連接開發板的uart3

? 此時需要使用USB轉串口模塊,連接我們上面設置的uart3。我們需要找到開發板上的PH0、PH1、GND,分別連接到USB轉串口模塊的RXD、TXD、GND。100ASK_V853-PRO開發板已經將PH0、PH1、GND引出來,位置圖圖下所示

poYBAGRdpeKAVkhpAAuJ5rZtdhI473.png

具體的引腳可查看開發板背面的絲印,確認引腳位置。

pYYBAGRdpeiAIfQKAAJEZqELp_k894.png

通過背面的絲印可以知道PH0、PH1、GND的位置,如下圖所示,PH0、PH1、GND,分別連接到USB轉串口模塊的RX、TX、GND。

poYBAGRdpe-ARbJPAAC6EZ0TBZA708.png

連接完成后將USB轉串口模塊插入windows主機端后,使用串口軟件打開uart3串口界面,波特率為115200。

在Tina Linux開發板串口終端輸入

root@TinaLinux:~# echo melis30.elf > /sys/kernel/debug/remoteproc/remoteproc0/firmware 

melis30.elf固件放在硬件節點firmware 下,啟動E907固件

root@TinaLinux:~# echo start > /sys/kernel/debug/remoteproc/remoteproc0/state
[ 3926.510018]  remoteproc0: powering up e907_rproc
[ 3926.515440]  remoteproc0: failed to parser head (melis30.elf) ret=-2
[ 3926.522674]  remoteproc0: failed to read boot_package item
[ 3926.528930]  remoteproc0: request_firmware failed from boot_package: -14
[ 3926.537528] virtio_rpmsg_bus virtio0: rpmsg host is online
[ 3926.543964]  remoteproc0: registered virtio0 (type 7)
[ 3926.550538]  remoteproc0: remote processor e907_rproc is now up
root@TinaLinux:~# [ 3926.560537] virtio_rpmsg_bus virtio0: creating channel rpbuf-service addr 0x400
[ 3926.569199] virtio_rpmsg_bus virtio0: creating channel sunxi,rpmsg_heartbeat addr 0x401
[ 3926.578725] virtio_rpmsg_bus virtio0: creating channel sunxi,notify addr 0x402
[ 3926.587194] virtio_rpmsg_bus virtio0: creating channel sunxi,rpmsg_ctrl addr 0x403

使能后可以在另一個串口界面看到如下打印信息

|commitid: 
|halgitid: 
|timever : Thu, 04 May 2023 04:22:23 -0400

scheduler startup
msh >Start Rpmsg Hearbeat Timer
rpmsg ctrldev: Start Running...

按下回車即可進入終端界面。

輸入ps即可看見小核進程信息

msh >ps
thread                           pri  status      sp     stack size max used left tick  error
-------------------------------- ---  ------- ---------- ----------  ------  ---------- ---
tshell                            21  ready   0x000003e8 0x00004000    19%   0x00000008 000
ctrldev                            6  suspend 0x00000148 0x00001000    08%   0x0000000a 000
rpmsg_srm                          8  suspend 0x000000f8 0x00000800    22%   0x0000000a 000
vring-ipi                         15  suspend 0x00000118 0x00002000    03%   0x0000000a 000
rpbuf_init                         8  suspend 0x000000e8 0x00001000    12%   0x0000000a 000
standby                            1  suspend 0x00000128 0x00001000    07%   0x0000000a 000
tidle                             31  ready   0x00000178 0x00002000    04%   0x0000001e 000
timer                              8  suspend 0x000000d8 0x00000200    73%   0x0000000a 000

3.雙核通信

3.1 E907小核創建通訊節點

在E907小核串口終端建立兩個通訊節點用于監聽數據,輸入eptdev_bind test 2

msh >eptdev_bind test 2

查看監聽節點,輸入rpmsg_list_listen

msh >rpmsg_list_listen
name             listen  alive
test             2  0
console                  100  0

3.2 大核創建通訊節點

在Tina LInux下也創建兩個通訊監聽節點,輸入以下兩個命令

echo test > /sys/class/rpmsg/rpmsg_ctrl0/open
echo test > /sys/class/rpmsg/rpmsg_ctrl0/open

輸入后,如下所示:

root@TinaLinux:~# echo test > /sys/class/rpmsg/rpmsg_ctrl0/open
[ 5060.227158] virtio_rpmsg_bus virtio0: creating channel sunxi,rpmsg_client addr 0x404
s/rpmsg/rpmsg_ctrl0/openroot@TinaLinux:~# echo test > /sys/class/rpmsg/rpmsg_ctrl0/open
[ 5061.464758] virtio_rpmsg_bus virtio0: creating channel sunxi,rpmsg_client addr 0x405

在大核TIna Linux中也創建了兩個監聽節點,輸入ls /dev/rpmsg*查看節點信息

root@TinaLinux:~# ls /dev/rpmsg*
/dev/rpmsg0       /dev/rpmsg1       /dev/rpmsg_ctrl0

創建完成后,可以在E907小核終端中查看自動輸出的信息。

msh >ctrldev: Rx 44 Bytes
client: Rx 8 Bytes
rpmsg0: binding
send 0x13131411 to rpmsg0
create rpmsg0 client success
ctrldev: Rx 44 Bytes
client: Rx 8 Bytes
rpmsg1: binding
send 0x13131411 to rpmsg1
create rpmsg1 client success

3.3 大核傳輸至E907小核

在Tina LInux下輸入

echo "hello 100ASK_V853-PRO" > /dev/rpmsg0
echo "hello Tina Linux" > /dev/rpmsg1

Linux Message 0信息通過創建的監聽節點傳輸到E907小核,例如:

root@TinaLinux:~# echo "hello 100ASK_V853-PRO" > /dev/rpmsg0
root@TinaLinux:~# echo "hello Tina Linux" > /dev/rpmsg1

輸入后,打開E907串口終端可以發現,大核傳輸過來的信息。

rpmsg0: Rx 22 Bytes
Data:hello 100ASK_V853-PRO

rpmsg1: Rx 17 Bytes
Data:hello Tina Linux

3.4 E907小核傳輸至大核

? 在小核端需要使用命令 eptdev_send 用法 eptdev_send ,這里的id號從0開始,我們設置有兩個通信節點,所以id號分別為0和1。

? 在小核的串口終端輸入以下命令:

eptdev_send 0 "hello E907"
eptdev_send 1 "hello E907"

例如:

msh >eptdev_send 0 "hello E907"
will send hello E907 to rpmsg0
msh >eptdev_send 1 "hello E907"
will send hello E907 to rpmsg1

輸入完成后,小核會將信息分別傳入rpmsg0和rpmsg1兩個通訊節點??梢栽诖蠛薚ina Linux端輸入

cat /dev/rpmsg0
cat /dev/rpmsg1

可查看從E907小核傳輸過來的信息。例如:

root@TinaLinux:~# cat /dev/rpmsg0
hello E907
^C
root@TinaLinux:~# cat /dev/rpmsg1
hello E907
^C

按下Crtl+C結束監聽前持續監聽該節點。

? 您可以在小核端多次傳輸信息到該節點,該節點支持持續接受小核傳輸的信息,例如:

在E907小核,多次傳輸信息到監聽節點rpmsg0

msh >eptdev_send 0 "hello E907 "
will send hello E907  to rpmsg0
msh >eptdev_send 0 "hello E907 "
will send hello E907  to rpmsg0
msh >eptdev_send 0 "hello E907 "
will send hello E907  to rpmsg0
msh >eptdev_send 0 "hello E907 "
will send hello E907  to rpmsg0
msh >eptdev_send 0 "hello E907 "
will send hello E907  to rpmsg0
msh >eptdev_send 0 "hello E907 "
will send hello E907  to rpmsg0
msh >eptdev_send 0 "hello E907 "
will send hello E907  to rpmsg0

在大核端則會一直接收到小核傳輸過來的信息

root@TinaLinux:~# cat /dev/rpmsg0
hello E907 hello E907 hello E907 hello E907 hello E907 hello E907 hello E907 

3.5 關閉通訊

? 在大核Tina Linux端,操作節點即可,輸入以下命令,echo 給到rpmsg的控制關閉節點即可

echo 0 > /sys/class/rpmsg/rpmsg_ctrl0/close
echo 1 > /sys/class/rpmsg/rpmsg_ctrl0/close

例如:

root@TinaLinux:~# echo 0 > /sys/class/rpmsg/rpmsg_ctrl0/close
[ 6783.156899] virtio_rpmsg_bus virtio0: destroying channel sunxi,rpmsg_client addr 0x404
root@TinaLinux:~# echo 1 > /sys/class/rpmsg/rpmsg_ctrl0/close
root@TinaLinux:~# [ 6784.224740] virtio_rpmsg_bus virtio0: destroying channel sunxi,rpmsg_client addr 0x405

? 此時E907小核端也會自動關閉通信節點,自動輸出以下信息

send 0x13131411 to rpmsg0
rpmsg0: unbinding
ctrldev: Rx 44 Bytes
send 0x13131411 to rpmsg1
rpmsg1: unbinding
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    18538

    瀏覽量

    223694
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16130

    瀏覽量

    344835
  • Linux
    +關注

    關注

    87

    文章

    11022

    瀏覽量

    207053
  • AI
    AI
    +關注

    關注

    87

    文章

    27061

    瀏覽量

    264825
  • 開發板
    +關注

    關注

    25

    文章

    4560

    瀏覽量

    94886
收藏 人收藏

    評論

    相關推薦

    5.100ASK_V853-PRO開發板支持按鍵輸入

    ? 100ASK_V853-PRO開發板上共有5個功能按鍵,本章節跟大家討論如何使能這五個按鍵。
    的頭像 發表于 05-11 10:02 ?919次閱讀
    5.100<b class='flag-5'>ASK_V853-PRO</b><b class='flag-5'>開發板</b><b class='flag-5'>支持</b>按鍵輸入

    全志V853開發板原理圖

    ,通過上拉或下拉執行啟動。 開發板預留了SPI NOR、SPI NAND的焊盤,可以焊接 V853 芯片支持的 SPI NOR、SPI NAND 儲存器 BOOT SEL 0BOOT SEL
    發表于 01-12 09:48

    全志V853開發板發布!開發板試用同步開放申請!

    Cortex-A7、RISC-V E907 和最大1T算力的NPU,采用三異構設計,同時還啟用了全志科技最新一代視覺處理引擎。為了方便開發者產品預研和項目
    發表于 07-01 10:46

    詳解全志V853上的ARM A7和RISC-V E907之間的通信方式

    需要用到 remoteproc 框架。remoteproc 框架支持對不同平臺,不同架構的處理器進行控制,可以監控輔助核心的運行情況。對于 V853 來說,remoteproc 用于對 E907 進行生命周期管理,一般來說包含
    發表于 07-07 14:15

    V853開發板硬件資料——RISC-VE907用戶手冊

    V853開發板購買鏈接:https://www.hqchip.com/p/KFB-V853.html玄鐵E907 R1S1用戶手冊:玄鐵E907
    發表于 07-20 10:12

    【免費試用04期】全志V853開發板試用活動

    ——RISC-VE907用戶手冊 系統配置官方支持Tina Linux系統,基于Linux 4.9 內核 & uboot-2018。Tina Linux 系統介紹:全新Tina Li
    發表于 07-21 10:27

    V853開發板開發進階——在Linux下加載E907核心固件

    V853開發板購買鏈接:https://www.hqchip.com/p/KFB-V853.htmlV853開發板資料下載:V853 Doc
    發表于 07-25 16:03

    每日推薦 | V853開發板開發進階,單PCB輪式機器人的教程

    大家好,以下為電子發燒友推薦每日好帖,歡迎留言點評討論~1、V853開發板開發進階——在Linux下加載E907核心固件推薦理由:在調試階段,需要經常修改
    發表于 07-26 09:59

    全志V853芯片 在Tina下RISC-VE907啟動方式的選擇

    V853開發板購買鏈接:https://www.hqchip.com/p/KFB-V853.html1.主題Tina V85x E907啟動
    發表于 08-05 15:03

    每日推薦 | Tina V85x 平臺E907啟動方式,OpenHarmony征文活動獲獎名單

    大家好,以下為電子發燒友推薦每日好帖,歡迎留言點評討論~1、全志V853芯片 在Tina下RISC-VE907啟動方式的選擇推薦理由:Tina V
    發表于 08-08 10:14

    【全志V853開發板試用】全志V853開發板試用測評報告

    。1.開發板基本資源情況 網上查看到該開發板介紹,V853開發板規格如下:類型說明主控全志V853 (Arm A7 1GHz + RISC-
    發表于 08-29 02:09

    【全志V853開發板試用】國產之光——全志V853開發硬件介紹

    開發板硬件:V853架構: 開發板亮點全志V853,搭載玄鐵e907-r1s1架構。STM32F103一般大小。功能卻異常強大。
    發表于 08-29 20:38

    【開源硬件大賽】基于全志V853設計的全功能BTB學習開發板

    100ask_V853-Pro開發簡述核心資源簡述BTB核心,板載EMMC DDR V853 主芯片 AXP電源芯片背面
    發表于 12-07 15:03

    全志 V85x E907 RISC-V開發與使用

    全志V853開發板購買鏈接:KFB-V853_Allwinner的KFB-V853_KFB-V853[參數 價格 pdf 中文資料]_華秋商城原文鏈接:https
    發表于 02-27 09:37

    100ASK_全志V853-PRO開發板 環境配置及編譯燒寫

    0.前言 本章主要介紹關于100ASK-V853-PRO開發板的Tina SDK包的下載和編譯打包生成鏡像,并將鏡像燒錄到100ASK-V853-PRO開發板上。在進行100
    發表于 05-04 10:14
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>