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

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

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

RT-Thread BSP qemu-virt64-riscv的編譯環(huán)境搭建步驟

冬至子 ? 來(lái)源:張世爭(zhēng) ? 作者:張世爭(zhēng) ? 2023-10-08 15:41 ? 次閱讀

前言
最近需要使用 RT-Thread smart 開(kāi)發(fā)調(diào)試一些軟件功能,由于軟件功能平臺(tái)無(wú)關(guān),使用實(shí)際硬件操作,會(huì)耗費(fèi)較多的時(shí)間在程序燒寫環(huán)節(jié)。

打算使用 BSP qemu-virt64-aarch64 搭建一個(gè) RT-Thread smart 的開(kāi)發(fā)調(diào)試環(huán)境,可以開(kāi)發(fā)驗(yàn)證一些平臺(tái)無(wú)關(guān)的軟件功能,但是當(dāng)前的 RT-Thread smart 開(kāi)放出來(lái)的 userapps 不支持 aarch64 平臺(tái)。

所以選擇 qemu-virt64-riscv 平臺(tái)進(jìn)行編譯環(huán)境的搭建,搭建的流程跟 qemu-virt64-aarch64 基本一致。

環(huán)境搭建
Win10 64位

VMware Workstation Pro

VS Code (ssh 遠(yuǎn)程)

ubuntu 20.04

RT-Thread master 最新分支: BSP qemu-virt64-riscv

下載 RT-Thread
這里使用 gitee 的 RT-Thread 倉(cāng)庫(kù),先通過(guò) fork 的方式,把 RT-Thread fork 到自己的賬號(hào)下

ubuntu 中安裝好 git qemu,通過(guò) git 克隆一份 RT-Thread 最新代碼

可以直接克隆 RT-Thread 官方的 git clone https://gitee.com/rtthread/rt-thread.git

建議手動(dòng)搭建一個(gè) qemu-virt64-riscv 的獨(dú)立工程,修改一下構(gòu)建與配置腳本的路徑即可。

scons 構(gòu)建
進(jìn)入 rt-thread/bsp/qemu-virt64-riscv,直接 scons編譯,如果第一次,可能提示 scons 找不到,找不到就安裝一下 scons
$ scons
Command 'scons' not found, but can be installed with:
sudo apt install scons
安裝 scons 的方法: $ sudo apt install scons

運(yùn)行 $ scons --menuconfig,進(jìn)入Kconfig 圖形配置界面,初步運(yùn)行,會(huì)克隆 Linux 下的 RT-Thread env 工具 與 packages 軟件包

1.jpg

交叉編譯工具鏈
再次運(yùn)行 scons 后,發(fā)現(xiàn)提示找不到 gcc 交叉編譯工具鏈, riscv64-unknown-linux-musl-gcc: not found

下載工具鏈:可以使用 get_toolchain.py 下載,不過(guò)這個(gè)腳本默認(rèn)沒(méi)有在 RT-Thread 工程里面,需要手動(dòng)創(chuàng)建一個(gè)

備注:可以在 RT-Thread userapps 倉(cāng)庫(kù)中 copy 一份出來(lái),地址 https://github.com/RT-Thread/userapps

在 rt-thread/bsp/qemu-virt64-riscv 目錄下,新建一個(gè) tools 目錄,然后進(jìn)入這個(gè) rt-thread/bsp/qemu-virt64-riscv/tools 目錄,創(chuàng)建 get_toolchain.py

#!/usr/bin/env python

- - coding: utf-8 - -

Copyright (c) 2022, RT-Thread Development Team

SPDX-License-Identifier: GPL-2.0

Change Logs:

Date Author Notes

2022-02-1 Bernard The first version

import os
import sys
import platform
from ci import CI
toolchains_config = {
'arm':
{
'Linux': 'arm-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2',
'Windows': 'arm-linux-musleabi_for_i686-w64-mingw32_latest.zip'
},
'aarch64':
{
'Linux' : 'aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2',
'Windows' : 'aarch64-linux-musleabi_for_i686-w64-mingw32_latest.zip'
},
'riscv64':
{
'Linux': 'riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2',
'Windows': 'riscv64-linux-musleabi_for_i686-w64-mingw32_latest.zip'
}
}
if name == ' main ':

download toolchain

if len(sys.argv) > 1:
target = sys.argv[1]
else:
target = 'arm'
ci = CI()
toolchain_path = os.path.join(os.path.abspath('.'), 'gnu_gcc')
platform = platform.system()
try:
zfile = toolchains_config[target][platform]
URL = 'http://117.143.63.254:9012/www/rt-smart/' + zfile
except:
print('not found target')
exit(0)
ci.downloadFile(zfile, URL)
ci.extractZipFile(zfile, toolchain_path)
ci.delFile(zfile)
在 rt-thread/bsp/qemu-virt64-riscv/tools 目錄下,創(chuàng)建一個(gè) ci.py 腳本,因?yàn)?get_toolchain.py 依賴這個(gè)ci.py 腳本
#!/usr/bin/env python

- - coding: utf-8 - -

Copyright (c) 2022, RT-Thread Development Team

SPDX-License-Identifier: GPL-2.0

Change Logs:

Date Author Notes

2022-02-1 Bernard The first version

import os
import sys
import shutil
import platform
import requests
import time
import zipfile
class CI:
def downloadFile(self, name, url):
headers = {'Proxy-Connection':'keep-alive'}
r = requests.get(url, stream=True, headers=headers)
length = float(r.headers['content-length'])
f = open(name, 'wb')
count = 0
count_tmp = 0
time1 = time.time()
for chunk in r.iter_content(chunk_size = 512):
if chunk:
f.write(chunk)
count += len(chunk)
if time.time() - time1 > 2:
p = count / length * 100
speed = (count - count_tmp) / 1024 / 1024 / 2
count_tmp = count
print(name + ': ' + '{:.2f}'.format(p) + '%')
time1 = time.time()
print(name + ': 100%')
f.close()
def extractZipFile(self, zfile, folder):

self.delTree(folder)

if not os.path.exists(folder):
os.makedirs(folder)
if platform.system() == 'Windows':
zip_file = zipfile.ZipFile(zfile)
zip_list = zip_file.namelist()
for item in zip_list:
print(item)
zip_file.extract(item, folder)
zip_file.close()
elif platform.system() == 'Linux':
if zfile.endswith('tar.gz'):
os.system('tar zxvf %s -C %s' % (zfile, folder))
elif zfile.endswith('tar.bz2'):
os.system('tar jxvf %s -C %s' % (zfile, folder))
elif zfile.endswith('.zip'):
os.system('unzip %s -d %s' % (zfile, folder))
return
def zipFolder(self, folder, zfile):
zip_filename = os.path.join(folder)
zip = zipfile.ZipFile(zfile, 'w', compression=zipfile.ZIP_BZIP2)
pre_len = len(os.path.dirname(folder))
for parent, dirnames, filenames in os.walk(folder):
for filename in filenames:
pathfile = os.path.join(parent, filename)
arcname = pathfile[pre_len:].strip(os.path.sep)
zip.write(pathfile, arcname)
zip.close()
return
def touchDir(self, d):
if not os.path.exists(d):
os.makedirs(d)
def gitUpdate(self, url, folder, branch = 'master'):
cwd = os.getcwd()
if os.path.exists(folder):
os.chdir(folder)
os.system('git pull origin')
if branch != 'master':
os.system('git checkout -b %s origin/%s' % (branch, branch))
os.system('git submodule init')
os.system('git submodule update')
else:
os.system('git clone %s %s' % (url, folder))
os.chdir(folder)
os.system('git submodule init')
os.system('git submodule update')
os.chdir(cwd)
def installEnv(self, folder):
env_path = folder
cwd = os.getcwd()
os.chdir(env_path)
self.touchDir(os.path.join(env_path, 'local_pkgs'))
self.touchDir(os.path.join(env_path, 'packages'))
self.touchDir(os.path.join(env_path, 'tools'))
self.gitUpdate('https://gitee.com/RT-Thread-Mirror/env.git', 'tools/script')
self.gitUpdate('https://gitee.com/RT-Thread-Mirror/packages.git', 'packages/packages')
kconfig = open(os.path.join(env_path, 'packages', 'Kconfig'), 'w')
kconfig.write('source "$PKGS_DIR/packages/Kconfig"')
kconfig.close()
os.chdir(cwd)
return
def pkgsUpdate(self, env_folder):
self.touchDir(env_folder)
self.installEnv(env_folder)
os.environ['PKGS_DIR'] = env_folder
os.system('python %s package --update' % (os.path.join(env_folder, 'tools', 'script', 'env.py')))
return
def delTree(self, folder):
if os.path.exists(folder):
shutil.rmtree(folder)
def delFile(self, file):
if os.path.exists(file):
os.remove(file)
def appendFile(self, srcFile, otherFile):
f = open(otherFile, 'r')
s = f.read()
f.close()
f = open(srcFile, 'a')
f.write(s)
f.close()
def copyTree(self, srcTree, dstTree):
if os.path.exists(dstTree):
shutil.rmtree(dstTree)
shutil.copytree(srcTree, dstTree)
def run(self, cmds):
cwd = os.getcwd()
cmds = cmds.split('n')
for item in cmds:
item = item.lstrip()
if item == '':
continue
if item[0] == '-':
os.system(item[1:].lstrip())

keep current directory

os.chdir(cwd)
return
if name == ' main ':
ci = CI()
env_folder = os.path.abspath(os.path.join('.', 'env_test'))

ci.pkgsUpdate(env_folder)

cmds = '''

test

  • dir
  • dir tools
    '''
    ci.run(cmds)
    下載gcc 交叉編譯工具鏈: qemu-virt64-riscv 是 riscv64 平臺(tái)
    $ python3 get_toolchain.py riscv64 就可以下載 riscv64 的 gcc 交叉編譯工具鏈了

在 rt-thread/bsp/qemu-virt64-riscv 目錄下創(chuàng)建 一個(gè)設(shè)置環(huán)境變量的 shell 腳本,如 smart_env.sh
#!/bin/bash

usage:

source smart-env.sh [arch]

example: source smart-env.sh # arm

example: source smart-env.sh aarch64 # aarch64

supported arch list

supported_arch="arm aarch64 riscv64 i386"
def_arch="unknown"

find arch in arch list

if [ -z $1 ]
then
def_arch="arm" # default arch is arm
else
for arch in $supported_arch
do
if [ $arch = $1 ]
then
def_arch=$arch
break
fi
done
fi

set env

case $def_arch in
"arm")
export RTT_CC=gcc
export RTT_EXEC_PATH=$(pwd)/tools/gnu_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin
export RTT_CC_PREFIX=arm-linux-musleabi-
;;
"aarch64")
export RTT_CC=gcc
export RTT_EXEC_PATH=$(pwd)/tools/gnu_gcc/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
export RTT_CC_PREFIX=aarch64-linux-musleabi-
;;
"riscv64")
export RTT_CC=gcc
export RTT_EXEC_PATH=$(pwd)/tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
export RTT_CC_PREFIX=riscv64-unknown-linux-musl-
;;
"i386")
export RTT_CC=gcc
export RTT_EXEC_PATH=$(pwd)/tools/gnu_gcc/i386-linux-musleabi_for_x86_64-pc-linux-gnu/bin
export RTT_CC_PREFIX=i386-unknown-linux-musl-
;;
*) echo "unknown arch!"
return 1
esac

export RTT_EXEC_PATH

export PATH=**PATH:**RTT_EXEC_PATH
echo "Arch => ${def_arch}"
echo "CC => ${RTT_CC}"
echo "PREFIX => ${RTT_CC_PREFIX}"
echo "EXEC_PATH => ${RTT_EXEC_PATH}"
設(shè)置 smart_env.sh 的執(zhí)行權(quán)限 $ chmod +x smart_env.sh

下載 gcc 交叉編譯工具鏈后, 在 rt-thread/bsp/qemu-virt64-riscv 運(yùn)行

$ source smart_env.sh riscv64,即可設(shè)置 qemu-virt64-riscv 的 gcc 交叉編譯工具鏈

編譯 qemu-virt64-aarch64
配置好 gcc 交叉編譯工具鏈后,就可以 scons 編譯了
運(yùn)行 qemu 無(wú)法啟動(dòng)
qemu-virt64-riscv 目錄下有個(gè) qemu-nographic.sh,可以在 Linux shell 里面直接運(yùn)行

1.jpg

當(dāng)前 qemu 啟動(dòng)失敗,報(bào)如下的錯(cuò)誤

zhangsz@zhangsz:~/rtt/smart/rtt_qemu_aarch64/qemu-virt64-riscv$ ./qemu-nographic.sh
qemu-system-riscv64: warning: No -bios option specified. Not loading a firmware.
qemu-system-riscv64: warning: This default will change in a future QEMU release. Please use the -bios option to avoid breakages when this happens.
qemu-system-riscv64: warning: See QEMU's deprecation documentation for details.
QEMU: Terminated

退出 qemu 的方法: CTRL + a 組合按一下,松開(kāi)按鍵,再 按一下 x 鍵即可退出 qemu
qemu 更新解決啟動(dòng)問(wèn)題

經(jīng)過(guò)驗(yàn)證,確認(rèn) ubuntu 20.04 默認(rèn)安裝的 qemu 版本比較的老,需要更新最新的 qemu 版本,直接使用 sudo apt install qemu-system-riscv64 無(wú)法更新,只能手動(dòng)更新。

解決方法:下載 qemu 的代碼,手動(dòng)編譯更新 qemu,使用新版本的 qemu-system-riscv64

qemu 下載地址:可以再 github 上下載,注意拉取更新 git 子倉(cāng)庫(kù)

下載 qemu : $ git clone https://github.com/qemu/qemu.git

qemu 編譯依賴: $ sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build

qemu git 子倉(cāng)庫(kù) : $ git submodule update --init --force --recursive

編譯 qemu 的方法

進(jìn)入 qemu 目錄
$ mkdir build
$ cd build
$ ../configure
$ make -j8

1.jpg

編譯完 qemu 后,會(huì)在 生成目錄,如 build 目錄下,生成新版本的 qemu 系列工具,就是有點(diǎn)耗時(shí)。

zhangsz@zhangsz:~/rtt/qemu/build$ ./qemu-system-riscv64 --version
QEMU emulator version 7.2.90 (v8.0.0-rc0-27-g74c581b645-dirty)
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers

1.jpg

把 qemu 新版本 qemu-system-riscv64 的執(zhí)行路徑,替換 qemu-virt64-riscv 中 qemu 的執(zhí)行腳本中的 qemu-system-riscv64 即可。

我當(dāng)前可以運(yùn)行的腳本,把 qemu-system-riscv64 替換為 /home/zhangsz/rtt/qemu/build/qemu-system-riscv64,由于提示 網(wǎng)絡(luò)設(shè)備部分參數(shù)不支持,我暫時(shí)先把網(wǎng)絡(luò)設(shè)備部分去掉了
if [ ! -f "sd.bin" ]; then
dd if=/dev/zero of=sd.bin bs=1024 count=65536
fi
/home/zhangsz/rtt/qemu/build/qemu-system-riscv64 -nographic -machine virt -m 256M -kernel rtthread.bin
-drive if=none,file=sd.bin,format=raw,id=blk0 -device virtio-blk-device,drive=blk0,bus=virtio-mmio-bus.0
-device virtio-serial-device -chardev socket,host=127.0.0.1,port=4321,server=on,wait=off,telnet=on,id=console0 -device virtserialport,chardev=console0

1.jpg

運(yùn)行 qemu 效果
zhangsz@zhangsz:~/rtt/smart/rtt_qemu_aarch64/qemu-virt64-riscv$ ./qemu-nographic.sh
OpenSBI v1.2


/ __ / | _ _ |
| | | |
__ ___ _ __ | (
| |
) || |
| | | | '_ / _ '_ ___ | _ < | |
| | | | | ) | __/ | | | ** ) | | ) || |
_
** /| . / _ | | | | /|____/ |
| |
|_|
Platform Name : riscv-virtio,qemu
Platform Features : medeleg
Platform HART Count : 1
Platform IPI Device : aclint-mswi
Platform Timer Device : aclint-mtimer @ 10000000Hz
Platform Console Device : uart8250
Platform HSM Device : ---
Platform PMU Device : ---
Platform Reboot Device : sifive_test
Platform Shutdown Device : sifive_test
Firmware Base : 0x80000000
Firmware Size : 212 KB
Runtime SBI Version : 1.0
Domain0 Name : root
Domain0 Boot HART : 0
Domain0 HARTs : 0*
Domain0 Region00 : 0x0000000002000000-0x000000000200ffff (I)
Domain0 Region01 : 0x0000000080000000-0x000000008003ffff ()
Domain0 Region02 : 0x0000000000000000-0xffffffffffffffff (R,W,X)
Domain0 Next Address : 0x0000000080200000
Domain0 Next Arg1 : 0x000000008fe00000
Domain0 Next Mode : S-mode
Domain0 SysReset : yes
Boot HART ID : 0
Boot HART Domain : root
Boot HART Priv Version : v1.12
Boot HART Base ISA : rv64imafdch
Boot HART ISA Extensions : time,sstc
Boot HART PMP Count : 16
Boot HART PMP Granularity : 4
Boot HART PMP Address Bits: 54
Boot HART MHPM Count : 16
Boot HART MIDELEG : 0x0000000000001666
Boot HART MEDELEG : 0x0000000000f0b509
heap: [0x802bbcb8 - 0x842bbcb8]
| /

RT - Thread Smart Operating System
/ | 5.0.0 build Mar 19 2023 16:40:43
2006 - 2022 Copyright by RT-Thread team
lwIP-2.0.3 initialized!
[I/sal.skt] Socket Abstraction Layer initialize success.
[I/utest] utest is initialize success.
[I/utest] total utest testcase num: (0)
file system initialization done!
Hello RISC-V

1.jpg

qemu 支持 elm fat 文件系統(tǒng)
運(yùn)行 qemu 后,發(fā)現(xiàn) ls 提示找不到文件,查看代碼,發(fā)現(xiàn)沒(méi)有 mnt 文件掛載的操作,所以從其他的bsp 中,如 qemu-virt64-aarch64 copy 過(guò)來(lái)一份 mnt.c,重新編譯。

第一次運(yùn)行 qemu 會(huì)生成 sd.bin,這個(gè) sd.bin 為 RAW 格式的,可以使用 Linux shell 命令:mkfs.fat sd.bin,格式化為 fat 格式,這樣就可以正常的在RT-Thread 中掛載了

就可以支持 elm fat 格式的文件系統(tǒng)了。

小結(jié)
由于 ubuntu 20.04 默認(rèn)安裝的 qemu qemu-system-riscv64 版本較低,所以需要手動(dòng)更新 qemu-system-riscv64 版本到最新,可以通過(guò) qemu git 倉(cāng)庫(kù)手動(dòng)編譯

當(dāng)前 RT-Thread master 分支的 qemu-virt64-riscv 跑的是 RT-Thread,而不是 RT-Thread Smart,切換為 RT-Thread Smart,當(dāng)前只需要配置使用 RT-Thread Smart 配置選項(xiàng)即可!

1.jpg

后面嘗試 把 RT-Thread 提供的 userapps 編譯后,放到 qemu 中 RT-Smart 的文件系統(tǒng)中,運(yùn)行用戶態(tài)程序。

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

    關(guān)注

    4

    文章

    587

    瀏覽量

    27181
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    359

    瀏覽量

    23192
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1239

    瀏覽量

    39437
  • RAW
    RAW
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    3782
  • gcc編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    3297
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在windows和linux平臺(tái)使用RT-Thread QEMU BSP,并運(yùn)行RT-ThreadGUI示例

    開(kāi)發(fā)板的情況下體驗(yàn)RT-Thread,RT-Thread使用QEMU模擬了ARM vexpress A9開(kāi)發(fā)板,并提供了相關(guān)的板級(jí)支持包(BSP)。本文主要介紹在windows平臺(tái)和l
    的頭像 發(fā)表于 02-08 08:50 ?1.3w次閱讀
    如何在windows和linux平臺(tái)使用<b class='flag-5'>RT-Thread</b> <b class='flag-5'>QEMU</b> <b class='flag-5'>BSP</b>,并運(yùn)行<b class='flag-5'>RT</b>-ThreadGUI示例

    如何在RT-Thread Smart下使用gcc交叉編譯工具鏈呢

    前言RT-Thread Smart的BSP rt-smartspd1-allwinner-nezha,也全志D1s的哪吒開(kāi)發(fā)板,基于RISCV64平臺(tái),需要CV
    發(fā)表于 06-17 11:13

    在Ubuntu平臺(tái)開(kāi)發(fā)RT-Thread文檔中步驟搭建QEMU環(huán)境

    NimBLE 可在 QEMU 環(huán)境下搭配藍(lán)牙 Control 芯片運(yùn)行,目前在 Ubuntu 18.04 下運(yùn)行成功。QEMU 環(huán)境搭建主要
    發(fā)表于 07-27 11:19

    基于RT-Thread操作系統(tǒng)的Env開(kāi)發(fā)環(huán)境搭建

    圖測(cè)試開(kāi)發(fā)環(huán)境進(jìn)入到源碼目錄 rt-thread\\bsp\\qemu-vexpress-a9,鼠標(biāo)右擊打開(kāi) env 工具。輸入指令 menuconfig,如果出現(xiàn)配置界面,說(shuō)明開(kāi)發(fā)
    發(fā)表于 09-30 10:38

    如何在Window及Ubuntu平臺(tái)使用QEMU運(yùn)行 RT-Thread qemu-vexpress-a9 BSP工程

    BSP 文件夾下創(chuàng)建一份空白的 sd.bin 文件,這是虛擬的 sd 卡,大小為 64M。Env 命令行界面顯示 RT-Thread 系統(tǒng)啟動(dòng)過(guò)程中打印的初始化信息及版本號(hào)信息等,qemu
    發(fā)表于 10-26 15:19

    在Windows平臺(tái)使用VSCode調(diào)試 RT-Thread qemu-vexpress-a9 BSP工程

    自動(dòng)打開(kāi) qemu-vexpress-a9 BSP 文件夾,如下圖所示。步驟編譯 RT-Thread點(diǎn)擊 VS Code “查看 -&g
    發(fā)表于 10-26 15:25

    在Windows平臺(tái)使用Eclipse調(diào)試RT-Thread qemu-vexpress-a9 BSP工程

    \\qemu-vexpress-a9 切換到 RT-Thread 源碼文件夾下的 qemu-vexpress-a9 BSP 根目錄,然后輸入 scons 命令
    發(fā)表于 10-26 15:31

    請(qǐng)教大神qemu模擬cortex-A53運(yùn)行rt-thread出錯(cuò)怎么解決呢?

    新手小白,參考官網(wǎng)文檔運(yùn)行 RT-Thread qemu-vexpress-a9 BSP 工程的方法自己配置了qemu-virt64-aarch64的工程模擬了cortex-A53的架
    發(fā)表于 02-15 10:51

    RT-Thread BSP qemu-virt64-aarch64編譯環(huán)境搭建步驟

      最近需要使用RT-Thread smart 開(kāi)發(fā)調(diào)試一些軟件功能,由于軟件功能平臺(tái)無(wú)關(guān),使用外部硬件操作,會(huì)耗費(fèi)更多的時(shí)間在后臺(tái)?! 〈蛩闶褂?b class='flag-5'>BSP qemu-virt64-aarch64
    發(fā)表于 04-04 17:04

    RT-Thread BSP qemu-virt64-aarch64文件系統(tǒng)

      前言   前面大體上搭建RT-Thread BSP qemu-virt64-aarch64 的交叉編譯
    發(fā)表于 05-16 10:29

    RT-Thread BSP qemu-virt64-riscv編譯環(huán)境搭建

    的 gcc 交叉編譯工具鏈了   在 rt-thread/bsp/qemu-virt64-riscv 目錄下創(chuàng)建 一個(gè)設(shè)置環(huán)境變量的 sh
    發(fā)表于 05-16 10:37

    AB32VG1 RT-Thread 開(kāi)發(fā)環(huán)境搭建

    是:RISC-V,RISC是精簡(jiǎn)指令集計(jì)算機(jī),V的意思應(yīng)該是【第五版】RT-Thread Studio 目前已經(jīng)支持 AB32VG1開(kāi)發(fā)板,所以,搭建一個(gè)RT-Thread的開(kāi)發(fā)環(huán)境
    發(fā)表于 12-20 19:09 ?22次下載
    AB32VG1 <b class='flag-5'>RT-Thread</b> 開(kāi)發(fā)<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    RT-Thread中的Github Actions

    RT-Thread中一共有五個(gè)Github Action(rt-thread/.github/workflow) 分別是: RT-Thread BSP build check(.git
    的頭像 發(fā)表于 06-01 03:10 ?547次閱讀
    <b class='flag-5'>RT-Thread</b>中的Github Actions

    RT-Thread qemu mps2-an385 bsp移植制作 :環(huán)境搭建

    最近打算系統(tǒng)地研究一下 RT-Thread,包括 RT-Thread BSP 的移植,由于一直在使用 QEMU 進(jìn)行一些軟件功能的驗(yàn)證,qemu
    的頭像 發(fā)表于 08-02 14:45 ?514次閱讀
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>qemu</b> mps2-an385 <b class='flag-5'>bsp</b>移植制作 :<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>篇

    RT-Thread BSP qemu-virt64-aarch64文件系統(tǒng)

    前面大體上搭建RT-Thread BSP qemu-virt64-aarch64 的交叉編譯環(huán)境
    的頭像 發(fā)表于 10-08 16:34 ?781次閱讀
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>BSP</b> <b class='flag-5'>qemu-virt64-aarch64</b>文件系統(tǒng)