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.