0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将BusyBox移植到RT-Thread Smart下

RTThread物联网操作系统 来源:RTThread物联网操作系统 作者:RTThread物联网操作 2021-07-02 11:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

BusyBox 是一个集成了数百个常用Linux/Unix命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。

这篇文章将介绍把BusyBox移植到RT-Thread Smart下。

准备工作

以busybox-1.32.0为例,下载源码包:

1$ mkdir -p userapps/gnu-apps/busybox

2$ wget https://busybox.net/downloads/busybox-1.32.0.tar.bz2

移植脚本

与上篇文章有些许不同的是,busybox自带Makefile,所以需要给Makefile里面的一些变量替换成交叉编译环境变量,下面会通过一个patch文件实现。

首先还是创建一份简单的build.sh脚本:

1#!/bin/sh

2 3APP_NAME=“busybox” 4VERSION=“1.32.0” 5APP_DIR=${APP_NAME}-${VERSION}

6 7# userapps is ROOTDIR

8ROOTDIR=${PWD}/。./。.

910# set env

11export RTT_EXEC_PATH=${ROOTDIR}/。./tools/gnu_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin

12export PATH=$PATH:$RTT_EXEC_PATH:$RTT_EXEC_PATH/。./arm-linux-musleabi/bin

1314# get src

15tar xjf ${APP_DIR}.tar.bz2

16cd ${APP_DIR}

1718# patch Makefile

19patch -Np1 -i 。./makefile.patch

2021# get default config

22cp 。./def_config .config

2324make V=1

makefile.patch文件如下:

1--- busybox-1.32.0/Makefile.orig 2020-12-24 12:51:40.752730739 +0800 2+++ busybox-1.32.0/Makefile 2020-12-24 12:55:44.162093866 +0800 3@@ -4,6 +4,21 @@

4 EXTRAVERSION =

5 NAME = Unnamed

6 7+

8+CROSS_COMPILE= arm-linux-musleabi-

9+

10+PWD := $(shell pwd)

11+# userapp dir

12+ROOTDIR := $(PWD)/。./。./。.

13+RT_DIR=$(ROOTDIR)/sdk/rt-thread

14+INC_DIR=${ROOTDIR}/sdk/include

15+LIB_DIR=${ROOTDIR}/sdk/lib

16+

17+CFLAGS = -march=armv7-a -marm -msoft-float -D__RTTHREAD__ -Wall -O2 -n --static -I. -I$(RT_DIR)/include -I$(RT_DIR)/components/dfs -I$(RT_DIR)/components/drivers -I$(RT_DIR)/components/finsh -I$(RT_DIR)/components/net -I${INC_DIR}

18+

19+LDFLAGS = -L. -L${LIB_DIR} -T $(ROOTDIR)/linker_scripts/arm/cortex-a/link.lds -march=armv7-a -marm -msoft-float -L$(RT_DIR)/lib -Wl,--whole-archive -lrtthread -Wl,--no-whole-archive -n --static -Wl,--start-group -lrtthread -Wl,--end-group

20+

21+

22 # *DOCUMENTATION*

23 # To see a list of typical targets execute “make help”24 # More info can be located in 。/README

Busybox在编译之前最好通过“make menuconfig”配置一下需要编译的指令,这里为了方便提供一个配置好的def_config文件,在上面的build.sh脚本里面会用到。

文件比较长,请将以下链接复制至外部浏览器打开,打开后可直接下载文件:

https://gitee.com/rtthread/rt-smart-notes/tree/master/examples/busybox

编译:

1userapps/gnu-apps/busybox$ ls

2build.sh busybox-1.32.0.tar.bz2 def_config makefile.patch

3userapps/gnu-apps/busybox$ sh build.sh

使用BusyBox

在Linux上使用BusyBox,一般的方式会是建立一个个的符号链接,例如把ls通过符号链接的方式链接到busybox,这样在调用ls时,实际上会被调用到busybox。只是对于main(int argc, char** argv)来说,这个argv[0]是‘ls’。

当然busybox也支持直接调用busybox,并把命令附加在后面的方式,例如:

1msh /》 busybox.elf ls -l

因为RT-Thread及RT-Thread Smart并不支持符号链接,所以还只能采用后面的形式。

BusyBox包含有很多个指令,可以通过执行“make menuconfig”来配置需要编译的指令。

查看busybox当前可使用的命令可以使用`--help‘ 选项:

查看具体某个指令的使用帮助,如 ls 的:

更多指令

为确保一些特定的指令正常运行,需要在kernel配置里面打开null、random、zero等设备;并确保/etc/resolv.com和/etc/hosts文件存在。

1msh /》 busybox.elf cat /etc/resolv.conf

2nameserver 114.114.114.11434msh /》 busybox.elf cat /etc/hosts

5127.0.0.1 localhost

busybox是一套很精简的工具集,已经在rt-smart上验证过的命令包括(但不限于):

归档类工具,例如 tar/unzip/bzip2/bunzip2/bzcat/gzip/gunzip/zcat/xz/unxz/xzcat 等;

核心类工具,例如 cat/cp/dd/echo/head/ls/mv/mkdir/pwd/rm/tail/uname/wc 等;

编辑类工具,例如 vi/diff/cmp/awk/sed 等;

网络类工具,例如ftpd/tcpsvd/ftpgt/ftpput/tftp/nslookup/telnet/httpd/wget 等

文章出处:【微信公众号:RTThread物联网操作系统

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2939

    文章

    47315

    浏览量

    407584
  • Linux
    +关注

    关注

    88

    文章

    11627

    浏览量

    217893
  • 操作系统
    +关注

    关注

    37

    文章

    7328

    浏览量

    128605

原文标题:如何把Linux工具里的“军刀”BusyBox移植到RT-Thread Smart?

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    移植最新版的rt-thread nano时程序进入entry就报错,为什么?

    我在移植最新版的rt-thread nano时发现程序只要一进去entry函数就直接跳到一个死循环里,我使用的编译器是armgcc10.2版本。然而我移植旧版的rt-thread na
    发表于 10-09 07:17

    如何移植rt-thread野火imx6ull开发板上?

    求助如何将rt-thread移植野火imx6ull(coretex-A7)开发板上,官方的bsp中没有imx6ull
    发表于 09-29 06:25

    2025年RT-Thread开发者巡回培训报名正式启动!

    RT-Thread技术专家面对面答疑解惑的绝佳机会。在这里你体验丰富的理论课程、精彩Demo演示与动手实践!欢迎报名参加,与我们携手探索技术的更多可能!日期城市10月
    的头像 发表于 09-27 10:39 1128次阅读
    2025年<b class='flag-5'>RT-Thread</b>开发者巡回培训报名正式启动!

    移植网络PHY芯片驱动,如何融入 rt-thread 的网络体系,并添加新的以太网类型的报文?

    我需要移植一个 PHY 芯片(IS32CG5317,通过 SPI 与单板通信),当单板与 PHY 芯片的 SPI 通信驱动移植完后: 我如何将 PHY 芯片融入 rt-thread
    发表于 09-22 06:11

    RT-Thread Nano移植后动态创建线程创建不了怎么解决?

    RT-Thread Nano 移植后动态创建线程创建不了,静态可以.直接烧录DEMO也一样,RT_USING_HEAP开起来,使用动态创建就创建不起来,
    发表于 09-19 06:28

    【好书推荐】RT-Thread第20本相关书籍!《嵌入式实时操作系统RT-Thread原理与应用》| 技术集结

    01内容简介ContentSummary本书为读者提供了一个全面、系统的RT-Thread学习指南,旨在帮助初学者及有经验的开发者掌握RT-Thread实时操作系统和STM32嵌入式微控制器的核心
    的头像 发表于 08-24 10:05 685次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>第20本相关书籍!《嵌入式实时操作系统<b class='flag-5'>RT-Thread</b>原理与应用》| 技术集结

    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的RT-Thread Nano移植

    本篇还是以移植RT-Thread NanoMCUXpresso IDE为主,移植的代码可以在nxpic.org.cn论坛搜索
    的头像 发表于 08-21 09:49 6220次阅读
    恩智浦MCU教程 基于MCUXpresso和FRDM-MCXA346的<b class='flag-5'>RT-Thread</b> Nano<b class='flag-5'>移植</b>

    如何移植 RT-Thread Nano 并创建 2 个线程?

    基于 BSP 中的 GPIO_OutputInput 演示,展示了如何移植 RT-Thread Nano 并创建 2 个线程。
    发表于 08-19 07:45

    揭秘!基于RT-Thread探究“优先级反转”的任务调度究竟是什么样的?| 技术集结

    本文基于RT-Thread,结合RT-Trace调试器细化实际任务调度的粒度,来调试并逐步讲解“优先级反转”的调度和运行逻辑。如果对RT
    的头像 发表于 08-17 10:07 2791次阅读
    揭秘!基于<b class='flag-5'>RT-Thread</b>探究“优先级反转”<b class='flag-5'>下</b>的任务调度究竟是什么样的?| 技术集结

    RT-Thread Nano硬核移植指南:手把手实现VGLite图形驱动适配 | 技术集结

    VGLite是NXP提供的轻量级2D图形API,本文手把手带你实现VGLite图形驱动适配RT-Thread。文章分为上、两篇,手把手教您移植
    的头像 发表于 07-17 14:40 3039次阅读
    <b class='flag-5'>RT-Thread</b> Nano硬核<b class='flag-5'>移植</b>指南:手把手实现VGLite图形驱动适配 | 技术集结

    RT-Thread荣获2025优秀开源项目 | 新闻速递

    6月底,RT-Thread睿赛德受邀参与由上海开源信息技术协会主办的2025上海开源创新精英荟。上海市商委副主任张杰出席会议并致辞。RT-Thread嵌入式操作系统项目凭借其卓越的技术创新与开源生态
    的头像 发表于 07-04 09:04 2418次阅读
    <b class='flag-5'>RT-Thread</b>荣获2025优秀开源项目 | 新闻速递

    RT-Thread Nano移植后动态创建线程创建不了怎么处理?

    RT-Thread Nano移植后动态创建线程创建不了,静态可以.直接烧录DEMO也一样,RT_USING_HEAP开起来,使用动态创建就创建不起来,
    发表于 06-11 06:36

    RT-Thread审核团招募: 深度参与开源RTOS社区治理与演进

    全球开发者招募:RT-Thread审核团(ReviewTeam)正式开放申请!在开源的世界里,代码审查(CodeReview)是保证软件质量、促进技术交流的关键环节。RT-Thread作为全球领先
    的头像 发表于 05-21 18:02 1058次阅读
    <b class='flag-5'>RT-Thread</b>审核团招募: 深度参与开源RTOS社区治理与演进

    如何将RT-Thread移植NXP MCUXPressoIDE上

    RT-Thread默认支持的IDE只有IAR 和 Keil, 那如何将RT-Thread移植NXP MCUXPressoIDE上呢?本文内
    的头像 发表于 02-13 10:37 2431次阅读
    <b class='flag-5'>如何将</b><b class='flag-5'>RT-Thread</b><b class='flag-5'>移植</b><b class='flag-5'>到</b>NXP MCUXPressoIDE上

    RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!

    2024年RT-Thread开发者大会将于12月21日正式拉开帷幕!本次大会以“开源共生商业共赢”为主题,RT-Thread携手合作伙伴、客户伙伴、行业专家,以及全球开发者,共同探索如何在开源
    的头像 发表于 12-11 18:41 2937次阅读
    <b class='flag-5'>RT-Smart</b>首次线下培训,锁定2024 <b class='flag-5'>RT-Thread</b>开发者大会!