0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 作者:RTThread物聯(lián)網(wǎng)操作 ? 2021-07-02 11:52 ? 次閱讀

BusyBox 是一個(gè)集成了數(shù)百個(gè)常用Linux/Unix命令和工具的軟件。BusyBox 包含了一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更復(fù)雜的工具,例grep、find、mount以及telnet。有些人將 BusyBox 稱為 Linux 工具里的瑞士軍刀。簡單的說BusyBox就好像是個(gè)大工具箱,它集成壓縮了 Linux 的許多工具和命令,也包含了 Android 系統(tǒng)的自帶的shell。

這篇文章將介紹把BusyBox移植到RT-Thread Smart下。

準(zhǔn)備工作

以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里面的一些變量替換成交叉編譯環(huán)境變量,下面會(huì)通過一個(gè)patch文件實(shí)現(xiàn)。

首先還是創(chuàng)建一份簡單的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”配置一下需要編譯的指令,這里為了方便提供一個(gè)配置好的def_config文件,在上面的build.sh腳本里面會(huì)用到。

文件比較長,請將以下鏈接復(fù)制至外部瀏覽器打開,打開后可直接下載文件:

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,一般的方式會(huì)是建立一個(gè)個(gè)的符號(hào)鏈接,例如把ls通過符號(hào)鏈接的方式鏈接到busybox,這樣在調(diào)用ls時(shí),實(shí)際上會(huì)被調(diào)用到busybox。只是對于main(int argc, char** argv)來說,這個(gè)argv[0]是‘ls’。

當(dāng)然busybox也支持直接調(diào)用busybox,并把命令附加在后面的方式,例如:

1msh /》 busybox.elf ls -l

因?yàn)镽T-Thread及RT-Thread Smart并不支持符號(hào)鏈接,所以還只能采用后面的形式。

BusyBox包含有很多個(gè)指令,可以通過執(zhí)行“make menuconfig”來配置需要編譯的指令。

查看busybox當(dāng)前可使用的命令可以使用`--help‘ 選項(xiàng):

查看具體某個(gè)指令的使用幫助,如 ls 的:

更多指令

為確保一些特定的指令正常運(yùn)行,需要在kernel配置里面打開null、random、zero等設(shè)備;并確保/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是一套很精簡的工具集,已經(jīng)在rt-smart上驗(yàn)證過的命令包括(但不限于):

歸檔類工具,例如 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 等;

網(wǎng)絡(luò)類工具,例如ftpd/tcpsvd/ftpgt/ftpput/tftp/nslookup/telnet/httpd/wget 等

文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2894

    文章

    43316

    瀏覽量

    366457
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207917
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6545

    瀏覽量

    122744

原文標(biāo)題:如何把Linux工具里的“軍刀”BusyBox移植到RT-Thread Smart?

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    2024 RT-Thread全球巡回 線下培訓(xùn)火熱來襲!

    親愛的RT-Thread社區(qū)成員們:我們非常高興地宣布,2024年RT-Thread全球開發(fā)者線下培訓(xùn)即將拉開帷幕!24年全球巡回培訓(xùn)覆蓋超10座城市及國家,為開發(fā)者提供一個(gè)深入學(xué)習(xí)RT-T
    的頭像 發(fā)表于 08-07 08:35 ?362次閱讀
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓(xùn)火熱來襲!

    lvgl移植RT-Thread Nano后進(jìn)入硬件錯(cuò)誤中斷的原因?

    使用的是RT-Thread Nano的最新版,第一次移植,不知道是不是因?yàn)檫@個(gè)lvgl只能移植標(biāo)準(zhǔn)版里? 嘗試過給lvgl的線程分配更大的棧,但是依舊會(huì)卡死在硬件錯(cuò)誤中斷里。但只要把
    發(fā)表于 07-04 07:40

    BL808 RT-Thread Wi-Fi驅(qū)動(dòng)適配

    BL808 WiFi 屬于 SOC 單芯片型無線 MCU,片上集成 WiFi 功能,移植 RT-Thread 過程中,需要使用 RT-Thread wlan 框架。
    的頭像 發(fā)表于 12-04 11:38 ?667次閱讀

    ART Pi Smart基于RT-Thread Smart系統(tǒng)的LVGL移植

    ART-Pi Smart開發(fā)板為RT-Thread聯(lián)合百問科技出品,使用的是 NXP 公司的 i.MX6ULL 處理器,具備單核 ARM Cortex-A7,最高運(yùn)行頻率可以達(dá)到 800MHz。
    的頭像 發(fā)表于 11-29 14:29 ?968次閱讀
    ART Pi <b class='flag-5'>Smart</b>基于<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Smart</b>系統(tǒng)的LVGL<b class='flag-5'>移植</b>

    RT-thread源碼移植STM32F10x和STM32F4xx

    RT-thread源碼移植STM32F10x和STM32F4xx: 一、源碼下載 點(diǎn)擊入門->下載 ? 在歷史版本里邊隨便選取一個(gè) ? 會(huì)進(jìn)入百度云盤的下載地址,里邊有全部版本的源碼。這里下載
    的頭像 發(fā)表于 11-15 09:38 ?2059次閱讀
    <b class='flag-5'>RT-thread</b>源碼<b class='flag-5'>移植</b><b class='flag-5'>到</b>STM32F10x和STM32F4xx

    RT-Thread qemu mps2-an385 bsp移植制作 :系統(tǒng)運(yùn)行篇

    前面已經(jīng)讓 RT-Thread 進(jìn)入了 entry 入口函數(shù),并且 調(diào)整 鏈接腳本,自動(dòng)初始化與 MSH shell 的符號(hào)已經(jīng)預(yù)留, 進(jìn)入了 RT-Thread 的初始化流
    的頭像 發(fā)表于 11-14 12:27 ?682次閱讀
    <b class='flag-5'>RT-Thread</b> qemu mps2-an385 bsp<b class='flag-5'>移植</b>制作 :系統(tǒng)運(yùn)行篇

    i.MX RT1170:VGLite移植RT-Thread Nano過程講解()

    上篇介紹了如何移植 RT-Thread Nano 內(nèi)核與 Finsh 控制臺(tái) RT1170。本篇繼續(xù)介紹如何將 NXP 官方的 VGLit
    的頭像 發(fā)表于 11-09 11:22 ?750次閱讀

    i.MX RT1170:VGLite移植RT-Thread Nano過程講解(上)

    RT-Thread 是國人自主研發(fā)的開源實(shí)時(shí)操作系統(tǒng)(RTOS),RT-Thread Nano 是極簡版的硬實(shí)時(shí)內(nèi)核,內(nèi)存占用小,移植簡單。VGLite 是 NXP 提供的輕量級(jí) 2D 圖形 API,基于 FreeRTOS 實(shí)現(xiàn)
    的頭像 發(fā)表于 11-09 11:20 ?2131次閱讀
    i.MX <b class='flag-5'>RT</b>1170:VGLite<b class='flag-5'>移植</b><b class='flag-5'>RT-Thread</b> Nano過程講解(上)

    RT-Thread移植AT32平臺(tái)時(shí)的注意事項(xiàng)和步驟

    AT32移植RT-Thread描述了RT-Thread移植AT32平臺(tái)時(shí)的注意事項(xiàng)和步驟,并
    發(fā)表于 10-24 06:49

    基于rt-thread的socket通信設(shè)計(jì)

    最近再研究 rt-thread 的通信 ,想設(shè)計(jì)出 eps8266(多個(gè)) rt-thread(作為中控) 服務(wù)器的通信框架,使用的開發(fā)板是 潘多拉
    的頭像 發(fā)表于 10-13 15:02 ?1066次閱讀
    基于<b class='flag-5'>rt-thread</b>的socket通信設(shè)計(jì)

    RT-Thread在Lan8720a和 lwip基礎(chǔ)上移植ntp流程

    開發(fā)環(huán)境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,stm32f4的資源包為0.2.2。以RT-Thread中Lan8720和lwip協(xié)議棧的使用文章創(chuàng)建的工程為基礎(chǔ)。
    的頭像 發(fā)表于 10-12 16:59 ?1479次閱讀
    <b class='flag-5'>RT-Thread</b>在Lan8720a和 lwip基礎(chǔ)上<b class='flag-5'>移植</b>ntp流程

    RT-Thread移植使用webserver (lwip+httpd)

    開發(fā)環(huán)境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,stm32f4的資源包為0.2.2,rt-thread版本為4.0.3。
    的頭像 發(fā)表于 10-12 12:49 ?1072次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>移植</b>使用webserver (lwip+httpd)

    試用RT-Thread Studio(VSCode)

    想嘗試RT-Thread studio (VSCode),先下載安裝VSCode,再搜索RT-Thread
    的頭像 發(fā)表于 10-12 10:58 ?880次閱讀
    試用<b class='flag-5'>RT-Thread</b> Studio(VSCode)

    RT-Thread v5.0.2 發(fā)布

    RT-Thread 代碼倉庫地址: ●? https://github.com/RT-Thread/rt-thread RT-Thread 5.0.2 版本發(fā)布日志詳情: ●? htt
    的頭像 發(fā)表于 10-10 18:45 ?1202次閱讀
    <b class='flag-5'>RT-Thread</b> v5.0.2 發(fā)布

    使用RT-Thread Master+QEMU模擬器進(jìn)行RT-Thread原型快速開發(fā)

    前段時(shí)間分別在Win和Mac M1/M2 Silicon硬件環(huán)境折騰了VS Code + RT-Thread的編譯問題。
    的頭像 發(fā)表于 09-27 14:50 ?2545次閱讀
    使用<b class='flag-5'>RT-Thread</b> Master+QEMU模擬器進(jìn)行<b class='flag-5'>RT-Thread</b>原型快速開發(fā)