1## 开发环境说明 2开发平台:armv8 3 4芯片型号:bcm2711 5 6OS版本信息:UniProton 22.03 7 8集成开发环境:UniProton-docker 9 10### 实现过程 11以RASPI4 demo为例:[demo目录结构](../demos/RASPI4/readme.txt) 12<ol> 13<li>进入到用户的工作目录,这里假设为/workspace/UniProton。</li> 14<li>将UniProton的源码放在/workspace/UniProton目录下。</li> 15<li>参考[编译指导](./UniProton_build.md) 准备编译环境以及libboundscheck库下载。</li> 16<li>编译生成的libRASPI4.a文件和libCortexMXsec_c.lib文件在UniProton/output/UniProton/lib/raspi4/目录下。将这两个静态库文件拷贝到demos/RASPI4/libs目录下。</li> 17<li>将UniProton/src/include目录下的头文件拷贝到demos/RASPI4/include目录下。</li> 18<li>可以通过修改demos/RASPI4/config目录下的prt_config.c和prt_config.h以适配用户功能,prt_config.h可配置os功能开关,按需裁剪。</li> 19<li>demos/RASPI4/bsp目录下可以新增板级驱动代码,demos/RASPI4/build目录下配置编译构建相关内容,raspi4.ld为链接文件,根据单板内存地址等修改适配。</li> 20<li>代码修改完成后,适配cmake,最后在build目录下运行sh build_app.sh即可在同级目录下生成RASPI4可执行二进制文件。</li> 21<li>加载到单板上运行可执行文件RASPI4。</li> 22</ol> 23 24### RASPI4 示例程序 25RASPI4 示例程序在demos/RASPI4/apps/openamp目录下,main.c文件主要用于系统初始化,rpmsg_backend.c文件主要用于openamp后端资源的初始化,rpmsg_service.c文件主要用于openamp的前端应用。 26 27### openamp使用指导 & 结果验证 28**材料准备** 29<li>1、上述编译获取到的RASPI4可执行二进制文件</li> 30<li>2、对应版本的mcs_km.ko、rpmsg_main,libmetal、libopen_amp、libsysfs的动态库(具体构建过程参考https://gitee.com/openeuler/mcs) 31<li>3、刷写好对应openEuler镜像的树莓派单板(具体刷写过程参考https://gitee.com/openeuler/raspberry)</li> 32**使用指导** 33<li>1、将上述1和2的材料通过ssh传输到树莓派单板上,这里假设传到/root/mcsdir目录。</li> 34<li>2、通过chmod +x rpmsg_main添加可执行权限</li> 35<li>3、将libmetal.so\*、libopen_amp.so\*复制到/usr/lib64目录下,将libsysfs.so复制到/lib64目录下</li> 36<li>4、进入/root/mcsdir目录依次执行 37 38 insmod mcs_km.ko 39 40 # 执行rpmsg_main, 41 # -c cpu 指定在哪个cpu拉起二进制文件 42 # -t RASPI4.bin 可执行二进制文件 43 # -a address 指定二进制文件的加载地址 44 ./rpmsg_main -c 3 -t RASPI4.bin -a 0x7a000000 45</li> 46<li>5、运行后,根据提示使用对应的pty设备和UniProton进行通信: 47 48 raspberrypi4-64 ~ # insmod mcs_km.ko 49 raspberrypi4-64 ~ # ./rpmsg_main -c 3 -t RASPI4.bin -a 0x7a000000 50 cpu:3, ld:7a000000, entry:7a000000, path:RASPI4.bin 51 mcs fd:3 52 53 Initialize the virtio, virtqueue and rpmsg device 54 virt add:0x7f8b700000, status_reg:0x7f8b700000, tx:0x7f8b72c000, rx:0x7f8b728000, mempool:0x7f8b704000 55 number of services: 1 56 start client os 57 pty master fd is :4 58 pls open /dev/pts/1 to talk with client OS 59 pty_thread for uart is runnning 60 pty master fd is :5 61 pls open /dev/pts/2 to talk with client OS 62 pty_thread for console is runnning 63 found matched endpoint, creating console with id:2 in host os 64 65如上所示,接着在另一个ssh窗口中,运行screen /dev/pts/2,此处在该窗口中,敲击回车即可触发demo程序。 66</li> 67 68可以在screen界面上看到输出结果如下: 69``` 70hello, UniProton! 71```