RT-Smart 官方 ARM 32 平臺 musl gcc 工具鏈下載

前言

  • RT-Smart 的開發離不開 musl gcc 工具鏈,用于編譯 RT-Smart 內核與用戶態應用程序

  • RT-Smart musl gcc 工具鏈代碼當前未開源,但可以下載到 RT-Thread 官方編譯好的最新的 musl gcc 工具鏈

ARM 32位 平臺

  • 比如 RT-Smart 最好用的 ARM32 位 qemu 平臺: qemu-vexpress-a9,位于 rt-thread/bsp/qemu-vexpress-a9,既支持 RT-Thread 內核,也支持 RT-Smart 內核,一般學習研究 RT-Smart,這個是首選,不需要硬件,讓 RT-Smart 跑起來,并且可以軟件 Debug 調試,對于研究與分析內核的功能與組件運行,非常的方便。

  • bsp qemu-vexpress-a9 屬于 ARM 32位 平臺,由于不同的平臺編譯工具鏈不同, 如果開啟 RT-Smart,當前必須使用 musl gcc 工具鏈。

  • musl gcc 工具鏈,是基于 musl libc 編譯的 gcc 交叉工具鏈,musl libc 與 Linux glibc、ucLibc 等,都屬于 標準C 庫。RT-Smart 當前使用 musl gcc 工具鏈。

Linux 開發平臺下載 ARM 32位 musl gcc 工具鏈

  • 下載地址 https://download.rt-thread.org/download/rt-smart/toolchains/arm-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2

  • 這個是 Linux 平臺上的 musl gcc 工具鏈,可以使用 Linux tar 命令進行解壓

zhangsz@zhangsz:~/smart/tools/gnu_gcc$ tar xjf /mnt/hgfs/work/ldso/musl_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu_211536-3de435f234.tar.bz2 -C ./
zhangsz@zhangsz:~/smart/tools/gnu_gcc$ ls
aarch64-linux-musleabi_for_x86_64-pc-linux-gnu  arm-linux-musleabi_for_x86_64-pc-linux-gnu
  • 我當前放在了 /home/zhangsz/smart/tools/gnu_gcc 路徑下

  • 設置環境變量,可以使用 shell 腳本 env_arm.sh

#!/bin/bash# arm musl gcc
export RTT_CC=gcc
export RTT_EXEC_PATH=/home/zhangsz/smart/tools/gnu_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin
export RTT_CC_PREFIX=arm-linux-musleabi-export PATH=$PATH:$RTT_EXEC_PATH
  • 腳本設置執行權限 chmod 777 env_arm.sh

  • 使能環境變量 source env_arm.sh

  • 查看 musl gcc 工具環境變量是否設置正常 arm-linux-musleabi-gcc -v

在這里插入圖片描述

Windows 開發平臺下載 ARM 32位 musl gcc 工具鏈

  • 開發 RT-Smart,建議在 ubuntu 等 Linux 環境下開發,當然也支持 Windows 下 env 工具開發

  • 下載 windows 版本的 ARM 32位平臺 musl gcc 交叉編譯工具鏈,地址如下

https://download.rt-thread.org/download/rt-smart/toolchains/arm-linux-musleabi_for_i686-w64-mingw32_latest.zip
  • zip 格式,可以在 windows 下使用 常用的解壓縮工具解壓到指定路徑

  • windows 下使用 bat 批處理腳本設置環境變量

  • 新建 env_arm.bat 腳本

@set RTT_CC=gcc
@set RTT_EXEC_PATH=%cd%\tools\gnu_gcc\arm-linux-musleabi_for_i686-w64-mingw32\bin
@set RTT_CC_PREFIX=arm-linux-musleabi-
@set PATH=%RTT_EXEC_PATH%;%ENV_ROOT%\tools\gnu_gcc\arm_gcc\mingw\bin;%PATH%
  • 注意修改 musl gcc 工具鏈的路徑

  • windows 下,使用 RT-Thread ENV 工具執行腳本即可 env_arm.bat

編譯 RT-Smart 內核

  • bsp qemu-vexpress-a9

  • ubuntu 開發,使用 scons --menuconfig 圖形界面配置,選擇 RT-Smart

在這里插入圖片描述

在這里插入圖片描述

  • 然后 scons -j8 就可以編譯內核了

在這里插入圖片描述

運行 RT-Smart

  • bsp qemu-vexpress-a9

  • ubuntu Linux 環境,運行 qemu.sh 腳本即可運行 RT-Smart 內核

  • 小插曲: 直接運行 默認的 qemu.sh,如果 qemu 啟動報錯,需要關閉 -nographic,腳本如下

qemu-system-arm -M vexpress-a9 -smp cpus=2 -kernel rtthread.bin -nographic -sd sd.bin

在這里插入圖片描述

退出 qemu-vexpress-a9

  • qemu 一般使用 按下 CTRL+ a 組合鍵 ,松開, 然后緊接著按 x 即可退出 qemu

小結

  • 本篇主要說明 RT-Smart ARM 32位 musl gcc 工具鏈的下載方法, RT-Smart 內核編譯的方法

  • RT-Smart 支持 用戶態應用程序,類似于 Linux 的應用程序,應用程序 app 可以單獨的編譯,編譯工具鏈依舊使用 musl gcc 工具鏈

  • 注意 arm (32位)平臺與 aarch64 (ARM 64位)使用不同的 musl gcc 工具鏈

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532366.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532366.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532366.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java list翻轉_JAVA實現兩種方法反轉單列表

/***authorluochengcheng* 定義一個單鏈表*/classNode {//變量private intrecord;//指向下一個對象privateNode nextNode;public Node(intrecord) {super();this.record record;}public intgetRecord() {returnrecord;}public void setRecord(intrecord) {this.record record;}…

OpenAI Whisper論文筆記

OpenAI Whisper論文筆記 OpenAI 收集了 68 萬小時的有標簽的語音數據,通過多任務、多語言的方式訓練了一個 seq2seq (語音到文本)的 Transformer 模型,自動語音識別(ASR)能力達到商用水準。本文為李沐老師…

mysql 工具 08s01_Mysql管理必備工具Maatkit詳解之十四(mk-kill)

mk-kill - 顧名思義,殺mysql線程。安裝方法查看這里。在一個OLTP的生產環境,一般不會讓sql執行過長的時間,特別是myisam這樣表鎖的引擎,如果出現長時間執行的sql一般是誤操作,要不就是出現問題了。出現這種情況&#x…

【經典簡讀】知識蒸餾(Knowledge Distillation) 經典之作

【經典簡讀】知識蒸餾(Knowledge Distillation) 經典之作 轉自:【經典簡讀】知識蒸餾(Knowledge Distillation) 經典之作 作者:潘小小 知識蒸餾是一種模型壓縮方法,是一種基于“教師-學生網絡思想”的訓練方法,由于其簡單&#xf…

深度學習三大謎團:集成、知識蒸餾和自蒸餾

深度學習三大謎團:集成、知識蒸餾和自蒸餾 轉自:https://mp.weixin.qq.com/s/DdgjJ-j6jHHleGtq8DlNSA 原文(英):https://www.microsoft.com/en-us/research/blog/three-mysteries-in-deep-learning-ensemble-knowledge…

在墻上找垂直線_墻上如何快速找水平線

在裝修房子的時候,墻面的面積一般都很大,所以在施工的時候要找準水平線很重要,那么一般施工人員是如何在墻上快速找水平線的呢?今天小編就來告訴大家幾種找水平線的方法。一、如何快速找水平線1、用一根透明的軟管,長度…

百度地圖mysql打點_關于百度地圖連接MYSQL的問題,謝謝啦!

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓大家好,剛使用百度地圖API,請教大家一個問題,謝啦!我需要從我的數據庫中取出字段為"city"的所有數據,然后通過bdGEO()函數在地圖上標注這些城市,我是…

PyTorch中的torch.nn.Parameter() 詳解

PyTorch中的torch.nn.Parameter() 詳解 今天來聊一下PyTorch中的torch.nn.Parameter()這個函數,筆者第一次見的時候也是大概能理解函數的用途,但是具體實現原理細節也是云里霧里,在參考了幾篇博文,做過幾個實驗之后算是清晰了&am…

Vision Transformer(ViT)PyTorch代碼全解析(附圖解)

Vision Transformer(ViT)PyTorch代碼全解析 最近CV領域的Vision Transformer將在NLP領域的Transormer結果借鑒過來,屠殺了各大CV榜單。本文將根據最原始的Vision Transformer論文,及其PyTorch實現,將整個ViT的代碼做一…

hdfs的副本數為啥增加了_HDFS詳解之塊大小和副本數

1.HDFSHDFS : 偽分布式(學習)NNDNSNNsbin/start-dfs.sh(開啟hdfs使用的腳本)bin/hdfs dfs -ls (輸入命令加前綴bin/hdfs dfs)2.block(塊)dfs.blocksize : 134217728(字節) / 128M 官網默認一個塊的大小128M*舉例理解塊1個文件 130M,默認一個塊的大小128M…

Linux下的ELF文件、鏈接、加載與庫(含大量圖文解析及例程)

Linux下的ELF文件、鏈接、加載與庫 鏈接是將將各種代碼和數據片段收集并組合為一個單一文件的過程,這個文件可以被加載到內存并執行。鏈接可以執行與編譯時,也就是在源代碼被翻譯成機器代碼時;也可以執行于加載時,也就是被加載器加…

mysql gender_Mysql第一彈

1、創建數據庫pythoncreate database python charsetutf8;2、設計班級表結構為id、name、isdelete,編寫創建表的語句create table classes(id int unsigned auto_increment primary key not null,name varchar(10),isdelete bit default 0);向班級表中插入數據pytho…

python virtualenv nginx_Ubuntu下搭建Nginx+supervisor+pypy+virtualenv

系統:Ubuntu 14.04 LTS搭建python的運行環境:NginxSupervisorPypyVirtualenv軟件說明:Nginx:通過upstream進行負載均衡Supervisor:管理python進程Pypy:用Python實現的Python解釋器PyPy is a fast, complian…

如何設置mysql表中文亂碼_php mysql表中文亂碼問題如何解決

為避免mysql中出現中文亂碼,建議在創建數據庫時指定編碼格式:復制代碼 代碼示例:create database zzjz CHARACTER SET gbk COLLATE gbk_chinese_ci;create table zz_employees (employeeid int unsigned not null auto_increment primary key,name varch…

java 按鈕 監聽_Button的四種監聽方式

Button按鈕設置點擊的四種監聽方式注:加粗放大的都是改變的代碼1.使用匿名內部類的形式進行設置使用匿名內部類的形式,直接將需要設置的onClickListener接口對象初始化,內部的onClick方法會在按鈕被點擊的時候執行第一個活動的java代碼&#…

java int轉bitmap_Java Base64位編碼與String字符串的相互轉換,Base64與Bitmap的相互轉換實例代碼...

首先是網上大神給的類package com.duanlian.daimengmusic.utils;public final class Base64Util {private static final int BASELENGTH 128;private static final int LOOKUPLENGTH 64;private static final int TWENTYFOURBITGROUP 24;private static final int EIGHTBIT …

linux查看java虛擬機內存_深入理解java虛擬機(linux與jvm內存關系)

本文轉載自美團技術團隊發表的同名文章https://tech.meituan.com/linux-jvm-memory.html一, linux與進程內存模型要理解jvm最重要的一點是要知道jvm只是linux的一個進程,把jvm的視野放大,就能很好的理解JVM細分的一些概念下圖給出了硬件系統進程三個層面內存之間的關系.從硬件上…

java 循環stringbuffer_java常用類-----StringBuilder和StringBuffer的用法

一、可變字符常用方法package cn.zxg.PackgeUse;/*** 測試StringBuilder,StringBuffer可變字符序列常用方法*/public class TestStringBuilder2 {public static void main(String[] args) {StringBuilder sbnew StringBuilder();for(int i0;i<26;i){char temp(char)(ai);sb.…

java function void_Java8中你可能不知道的一些地方之函數式接口實戰

什么時候可以使用 Lambda&#xff1f;通常 Lambda 表達式是用在函數式接口上使用的。從 Java8 開始引入了函數式接口&#xff0c;其說明比較簡單&#xff1a;函數式接口(Functional Interface)就是一個有且僅有一個抽象方法&#xff0c;但是可以有多個非抽象方法的接口。 java8…

java jvm內存地址_JVM--Java內存區域

Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分為若干個不同的數據區域&#xff0c;如圖&#xff1a;1.程序計數器可以看作是當前線程所執行的字節碼的行號指示器&#xff0c;通俗的講就是用來指示執行哪條指令的。為了線程切換后能恢復到正確的執行位置Java多線程是…