回答

收藏

[评测分享] RISC-V 全志-V821 PERF2B开发板评测试用试用体验】-05-编写第一个测试程序 -HelloWorl

#板卡评测 #板卡评测 163 人阅读 | 0 人回复 | 2025-09-12

在 Tina 里新增一个 Hello World 软件包,使用 Tina 编译 Hello World 并一同打包进入 Tina Linux。
这个方法不但适用于 Hello World 程序,同样也适用于所以希望将自己的软件包整合进入 Tina Linux 的情况。通过这个方法,可以很方便的管理多库编译链接,解决编译链接的难题,也可以提供Tina Linux 的底层调用库函数的接口,免去单独交叉编译的麻烦。
首先,在 Tina Linux SDK 的 openwrt/package 文件夹新建一个存放项目文件的 helloworld 文件夹,并准备 外层 Makefile 和 src 文件夹,在 src 文件夹里建立一个编译使用的 Makefile,把源码放到 src 文件夹里目录结构如下:

首先编写外层 Makefile 供 Tina Linux 检索查找。注意这个Makefile最后需要空行,否则会出现 Makefile:30: *** missing separator. Stop.*** 错误

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/package.mk

  1. PKG_NAME:=helloworld

  2. PKG_RELEASE:=1



  3. PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)

  4. SRC_CODE_DIR := ./src/



  5. define Package/$(PKG_NAME)

  6.         SECTION:=hello

  7.         CATEGORY:=Hello World

  8.         TITLE:=hello world test

  9. endef



  10. define Package/$(PKG_NAME)/description

  11.         Hello World

  12. endef



  13. define Build/Prepare

  14.         mkdir -p $(PKG_BUILD_DIR)

  15.         $(CP) ./src/* $(PKG_BUILD_DIR)/

  16. endef



  17. define Package/helloworld/install

  18.         $(INSTALL_DIR) $(1)/usr/bin

  19.         $(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/usr/bin/

  20. endef



  21. $(eval $(call BuildPackage,$(PKG_NAME)))

复制代码
然后编写用于编译 helloworld 的 Makefile

  1. main: main.o
  2.         $(CC) $(LDFLAGS) main.o -o helloworld

  3. main.o: main.c
  4.         $(CC) $(CFLAGS) -c main.c

  5. clean:
  6.         rm *.o helloworld
复制代码
和 main.c 的 helloworld 源码

  1. #include <stdio.h>

  2. int main(int argc, char const *argv[])
  3. {
  4.     printf("Hello World\n");
  5.     return 0;
  6. }
复制代码
之后 make menuconfig 里就可以找到 Hello World 了


可以进入并勾选它
编译,打包,烧写开发板,就可以直接运行 helloworld 命令了


将文件打包进入 Tina Linux
Tina Linux 提供 busybox-init-base-files 作为 rootfs 的接口提供用户将文件打包进入固件的功能。busybox-init-base-files 内的文件在打包编译系统的时候会覆盖进入 rootfs 内。注意如果放入的是可执行程序,需要保证其依赖的lib也一同放入,否则依赖关系会检查不过。

对于v821-perf2 板级来说,文件夹的路径 openwrt/target/v821/v821-perf2/busybox-init-base-files
配置开机自启
开机自启可以说是嵌入式 Linux 投入应用中最主要的一环。这里以自启动 helloworld 介绍一下 Tina Linux 如何配置开机自启功能
对于v821-perf2 板级来说,开机自启动主要的配置位于 openwrt/target/v821/v821-perf2/busybox-init-base-files/etc/init.d 文件夹内。系统启动后会按顺序执行这里的脚本,可以通过编写这里的脚本实现开机自启功能。

编写一个 S99helloworld 的启动脚本,S99 代表他会等待之前的 Sxx 脚本执行完毕他才会执行,这里的排序是字符的顺序。然后赋予可执行权限chmod 777 S99helloworld ,否则系统启动会出现rc.final: line 26: /etc/init.d/S99helloworld: Permission denied
  1. #!/bin/sh
  2. #
  3. # Start helloworld ....
  4. #

  5. start() {
  6.       printf "Start helloworld .... "
  7.       helloworld
  8. }

  9. stop() {
  10.     printf "Stopping helloworld .... "
  11. }

  12. case "$1" in
  13.     start)
  14.     start
  15.     ;;
  16.     stop)
  17.     stop
  18.     ;;
  19.     restart|reload)
  20.     stop
  21.     start
  22.     ;;
  23.   *)
  24.     echo "Usage: $0 {start|stop|restart}"
  25.     exit 1
  26. esac

  27. exit $?
复制代码
编译、打包烧录,可以看到开机运行了 hellowrold




分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条