跳到主要内容

工具链与应用开发

RISC-V CPU工具链​

SDK的Linux用户态工具链通常位于prebuilt/rootfsbuilt,实际前缀由lunch方案和musl/glibc配置决定。先查询:

which gcc
find prebuilt -type f -name '*gcc' | head

编译简单程序:

${CROSS_COMPILE}gcc -O2 -Wall hello.c -o hello
file hello

动态库:

${CROSS_COMPILE}gcc -fPIC -c demo.c -o demo.o
${CROSS_COMPILE}gcc -shared demo.o -o libdemo.so

静态库:

${CROSS_COMPILE}gcc -c demo.c -o demo.o
${CROSS_COMPILE}ar rcs libdemo.a demo.o

RISC-V MCU工具链​

MCU工具链用于RTOS工程,不可与Linux用户态工具链混用。通过mrtos构建系统调用SDK内置工具链,避免手工设置错误的ABI和架构参数。

Git/Gitea管理​

为原厂SDK创建本地基线:

git init
git switch -c main
git add .
git commit -m 'baseline: vendor V821 SDK'
git remote add origin <gitea-url>
git push -u origin main

quick_config、存储切换和摄像头配置会修改多处文件,建议每个功能单独分支并在执行前后使用git status和git diff确认。

Tina增加软件包​

典型目录:

openwrt/package/utils/hello/
├── Makefile
└── src/
├── Makefile
└── hello.c

OpenWrt包Makefile需要定义包名、依赖、编译和安装步骤。加入后:

make menuconfig
# select Utilities -> hello
m -j4

开机自启​

优先将应用做成OpenWrt init脚本:

/etc/init.d/hello

脚本至少实现start()和stop(),并在rootfs安装阶段创建启用链接。板端临时验证可执行:

/etc/init.d/hello enable
/etc/init.d/hello start

应用应处理配置文件缺失、存储未挂载、网络未就绪和异常退出,不能只靠rc.local中后台启动。