Introduction to K230 Big-Little Core Communication with Sharefs#

Overview#

ShareFs provides the functionality for the big core to access the file system of the little core by accessing the respective /sharefs directories of the big and little cores. In practical use, executable programs for the big core are usually stored in the /sharefs directory, and the big core executes these programs using the sharefs functionality, facilitating the development and debugging of applications on the big core.

Environment Preparation#

Hardware Environment#

  • K230-USIP-LP3-EVB-V1.0 / K230-UNSIP-LP3-EVB-V1.1

Software Environment#

k230_SDK

Usage#

Running sharefs#

Sharefs relies on the inter-core communication driver component and the upper-layer IPCMSG library. After burning the SDK image, the sharefs functionality will be enabled by default, and the last partition of the SD card will be mounted to the /sharefs directory.

/dev/mmcblk1p4 on /sharefs type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)

If there is not enough space, you can unmount it first, then delete the last partition of the SD card, repartition it to a larger size, and finally restart the development board. The SDK will automatically execute the mounting.

Creating, Writing, and Viewing Files#

In the rt-smart command line of the big core, you can create a file in /sharefs using the echo command.

msh /sharefs>echo "hello world" hello.txt

In the shell terminal of the little core running Linux, you can view the content of this file in /sharefs.

[root@canaan ~]#cd /sharefs/
[root@canaan /sharefs]#cat hello.txt
hello world[root@canaan /sharefs]#

Creating Folders#

In the rt-smart command line of the big core, create a directory using mkdir.

msh /sharefs>mkdir test

In the shell of the little core running Linux, use ls to view the newly created directory.

[root@canaan /sharefs]#ls
System Volume Information  hello.txt  test

Reading Files#

In the shell of the little core running Linux, create a file using echo.

[root@canaan /sharefs]#echo "hello world this is linux" >> linux.txt

In the rt-smart command line of the big core, use cat to view the file content.

msh /sharefs>cat linux.txt
hello world this is linux

Loading Files#

Copy the compiled rt-smart user-mode executable ELF file to the /sharefs directory of the little core, and then execute it through the rt-smart command line of the big core.

msh /sharefs>./hello.elf
Hello world

Deleting Files#

In the rt-smart command line of the big core, delete files using rm.

msh /sharefs>ls
Directory /sharefs:
.                   <DIR>
..                  <DIR>
System Volume Information<DIR>
hello.txt           11
linux.txt           26
msh /sharefs>rm hello.txt
msh /sharefs>rm linux.txt
msh /sharefs>ls
Directory /sharefs:
.                   <DIR>
..                  <DIR>
System Volume Information<DIR>
msh /sharefs>

In the shell of the little core running Linux, use ls to check the deletion result.

[root@canaan /sharefs]#ls
System Volume Information

Others#

Sharefs supports most POSIX file interface operations on rt-smart, including:

  • open

  • close

  • ioctl

  • read

  • write

  • flush

  • lseek

  • stat

  • statfs

  • opendir

  • rewinddir

  • mkdir

  • rmdir

  • rename

Interested readers can write their own file I/O related test code to experience.

Notes#

  • Sharefs is not suitable for high-frequency real-time read-write scenarios, such as encoding and saving.

  • Files created by the big core in sharefs have read-write and executable permissions in Linux.

  • Sharefs is not suitable for multi-process use, i.e., avoid starting multiple processes on the big core to read and write files in the /sharefs directory simultaneously.