# PaddleLite on Zephyr RTOS **Repository Path**: eqweaa/PaddleLite-on-Zephyr ## Basic Information - **Project Name**: PaddleLite on Zephyr RTOS - **Description**: PaddleLite-on-Zephyr - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-10-26 - **Last Updated**: 2023-10-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

使用方法

### 升级软件仓 ```xml sudo apt update sudo apt upgrade ``` ### 升级Kitware archive ```xml wget https://apt.kitware.com/kitware-archive.sh sudo bash kitware-archive.sh ``` ### 升级相关依赖仓库 ```xml sudo apt install --no-install-recommends git cmake ninja-build gperf \ ccache dfu-util device-tree-compiler wget \ python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \ make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 ``` ### 安装SDK工具 ```xml cd ~ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz cd zephyr-sdk-0.16.1 ./setup.sh ``` ### 安装west工具 ```xml pip3 install --user -U west echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc source ~/.bashrc ``` ### 核对版本 cmake最低最低3.20.5、python3最低最低3.8、dts最低1.4.6。 ```xml cmake --version python3 --version dtc --version ``` ### 创建工作区并拉取代码 ```xml cd ~ 放入代码 pip install pyelftools ``` ### 初始化工作区 ```xml cd PaddleLite-on-Zephyr cd zephyr west init -l ~/PaddleLite-on-Zephyr/zephyr ``` 执行完上面命令后,在'PaddleLite-on-Zephyr'目录下将会生成.west文件夹, 其中'config'文件中存放了west的相关配置。此时可以通过执行如下命令查看'west'配置是否成功: ```xml west -h ``` ### 验证 ```xml west build -b qemu_cortex_a53 samples/hello_world/ west build -t run ``` 能看到正确输出Hello World! qemu_cortex_a53代表环境没问题。 ### 在qemu_cortex_a53运行Paddle Lite 将git拉取的dirent.h放入到安装的sdk当中,具体放入到~/zephyr-sdk-0.16.1/aarch64-zephyr-elf/aarch64-zephyr-elf/sys-include下替换掉之前dirent.h。 ```xml rm -rf -R build west build -b qemu_cortex_a53 samples/paddlelite/ cd ~/PaddleLite-on-Zephyr/zephyr/build && ~/zephyr-sdk-0.16.1/sysroots/x86_64-pokysdk-linux/usr/bin/qemu-system-aarch64 -cpu cortex-a53 -nographic -machine virt,secure=on,gic-version=3 -m 4G -net none -pidfile qemu.pid -chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline -icount shift=4,align=off,sleep=on -rtc clock=vm -device loader,file=/path-to/PaddleLite-on-Zephyr/zephyr/samples/model/mobilenet_v1.nb,addr=0x70000000,force-raw=on -kernel ~/PaddleLite-on-Zephyr/zephyr/build/zephyr/zephyr.elf ``` ~/zephyr-sdk-0.16.1代表安装sdk的位置,file=/path-to/PaddleLite-on-Zephyr/zephyr/samples/model/mobilenet_v1_opt.nb代表的是推理mobilenet_v1_opt.nb,如果想推理其他模型,模型文件放在了zephyr/samples/model。 ### RK3568烧录 1.参照 https://wiki.t-firefly.com/zh_CN/ROC-RK3568-PC/debug.html 进入串口调试界面。 2.在开发板端,需要在上电时按住ctrl + c进入uboot,并使用help命令查看当前uboot是否支持tftp下载,否则需要自己修改uboot代码(当前项目已经提供uboot)。 3.默认烧录的uboot无法使用cache指令,即dcache和icache无法使用,因此需要更改uboot增加相应指令支持。修改uboot源码并且支持cache指令,然后重新编译生成uboot.img镜像(当前项目已经提供uboot)。 参考 https://wiki.t-firefly.com/zh_CN/ROC-RK3568-PC/03-upgrade_firmware.html 进行烧录。 ### 在RK3568下运行paddlelite 将git拉取的dirent.h放入到安装的sdk当中,具体放入到~/zephyr-sdk-0.16.1/aarch64-zephyr-elf/aarch64-zephyr-elf/sys-include下替换掉之前dirent.h。 ```xml rm -rf -R build west build -b roc_rk3568_pc samples/paddlelite/ cd build ``` 找到build下面的zephyr.bin文件,用tftp服务器下载生成的zephyr.bin文件,并将其加载到内存地址 0x40000000,其中根据自己tftp正确设置ip地址,配置服务器ip和当前开发板ip地址需要在同一网段。具体如下: ```xml setenv serverip 192.168.0.102 setenv ipaddr 192.168.0.103 tftp 0x40000000 zephyr.bin; ``` tftp服务器模型文件(resnet18为例),并将其加载到内存地址 0x70000000,具体如下: ```xml tftp 0x70000000 resnet18.nb; ``` 最终运行,具体如下: ```xml dcache flush; icache flush; dcache off; icache off; go 0x40000000; ```