chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

RT-Thread Smart qemu-virt64-riscv用戶(hù)態(tài)userapps的編譯與運(yùn)行

冬至子 ? 來(lái)源:張世爭(zhēng) ? 作者:張世爭(zhēng) ? 2023-10-08 15:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

userapps 的獲取

rt-smart 上,為了實(shí)現(xiàn)用戶(hù)態(tài)與內(nèi)核態(tài)的分離,使用了【系統(tǒng)調(diào)用】,這個(gè)系統(tǒng)調(diào)用可以認(rèn)為是個(gè) sdk,當(dāng)前 userapps 提供了 armriscv 的 sdk(編譯好的二進(jìn)制)文件與頭文件,所以用戶(hù)態(tài)的程序開(kāi)發(fā),只需要開(kāi)發(fā) app 即可。

userapps 的編譯環(huán)境

編譯 userapps 的方法:下載 userapps 后,進(jìn)入 tools 目錄,然后把 運(yùn)行平臺(tái)的 交叉編譯工具鏈拉取下來(lái),qemu-virt64-riscv 使用的是 riscv64,在 ubuntu 20.04 shell 中運(yùn)行: $ python3 get_toolchain.py riscv64 即可拉取 riscv64 的 gcc 交叉編譯工具鏈 riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2,并解壓到 userapps/tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu

設(shè)置 riscv64 gcc 交叉編譯鏈的 環(huán)境變量:ubuntu 20.04 下,在 userapps 目錄下,直接運(yùn)行 $ source smart-env.sh riscv64 即可

zhangsz@zhangsz:~/rtt/smart/userapps$ source smart-env.sh riscv64
/home/zhangsz/rtt/smart/userapps
Arch => riscv64
CC => gcc
PREFIX => riscv64-unknown-linux-musl-
EXEC_PATH => /home/zhangsz/rtt/smart/userapps/tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
可以運(yùn)行 $ riscv64-unknown-linux-musl-gcc -v 驗(yàn)證 riscv64 gcc 交叉編譯工具鏈生效

1.jpg

userapps 的編譯
編譯 userapps,可以在 userapps 目錄直接使用 scons 進(jìn)行編譯,也可以進(jìn)入 userapps/apps/xxx 目錄下,單獨(dú)編譯某個(gè) app。

如單獨(dú)編譯 userapps/apps/hello 的方法,進(jìn)入 userapps/apps/hello,運(yùn)行 scons 編譯,生成 hello.elf 文件,這個(gè) elf 就是用戶(hù)態(tài)的可執(zhí)行文件,可以放進(jìn) rt-smart 文件系統(tǒng)中,運(yùn)行執(zhí)行。

zhangsz@zhangsz: /rtt/smart/userapps/apps/hello$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build/hello
CC build/hello/main.o
LINK hello.elf
scons: done building targets.
在 userapps 目錄下,默認(rèn)是全部編譯,生成的產(chǎn)物在 userapps/root/bin
zhangsz@zhangsz:
/rtt/smart/userapps$ cd root/bin/
zhangsz@zhangsz: /rtt/smart/userapps/root/bin$ ls
hello.elf ping.elf pong.elf umailbox.elf vi.elf webclient.elf webserver.elf
zhangsz@zhangsz:
/rtt/smart/userapps/root/bin$
可以把 userapps 的編譯產(chǎn)物 userapps/root/bin 目錄下的所有 elf 文件等,全部 拷貝到 qemu-virt64-riscv 的 sd.bin 鏡像文件中
sd.bin 鏡像文件
ubuntu 20.04 下,有各種文件系統(tǒng)鏡像文件的制作工具,如 fat、ext4 等文件系統(tǒng)類(lèi)型

如當(dāng)前 RT-Thread 支持 elm 文件系統(tǒng),也就是 fat 文件系統(tǒng),制作方法如下:

進(jìn)入 qemu-virt64-riscv 的內(nèi)核目錄,注意 userapps 和 qemu-virt64-riscv 是獨(dú)立的

$ dd if=/dev/zero of=sd.bin bs=1024 count=65536 /* 64MB 大小,可以根據(jù)需要更改大小 */
$ mkfs.fat sd.bin /* 格式化為 fat 文件類(lèi)型 */
$ mkdir sdcard /* 鏡像文件 sd.bin mount 掛載目錄,掛載后可往鏡像文件里面拷貝或刪除文件 */
$ sudo mount sd.bin sdcard/ /* 掛載到 sdcard 目錄下,這樣就可以拷貝文件了 */
$ sudo cp -r /home/zhangsz/rtt/smart/userapps/root/bin sdcard/ /* userapps 產(chǎn)物拷貝到 鏡像文件 */
$ ls sdcard/ /* 文件拷貝進(jìn)去了 */
bin
$ sudo umount sdcard /* 取消鏡像文件 sd.bin 的掛載, userapps 的產(chǎn)物已經(jīng)在里面了 */
運(yùn)行 qemu
qemu-virt64-riscv 下 運(yùn)行 $ ./qemu-nographic.sh 即可
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: [0x802e7078 - 0x842e7078]
| /

RT - Thread Smart Operating System
/ | 5.0.0 build Mar 19 2023 20:34:47
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
msh />
msh />ls
Directory /:
bin

msh />cd bi
msh />cd bin/
msh /bin>ls
Directory /bin:
hello.elf 341224
ping.elf 347336
pong.elf 342152
umailbox.elf 357440
vi.elf 517448
webclient.elf 393016
webserver.elf 489320
msh /bin>./h
msh /bin>./hello.elf
msh /bin>hello world!

可以進(jìn)入 /bin 目錄下,運(yùn)行 elf 用戶(hù)態(tài)的程序了

進(jìn)程間通信例程

當(dāng)前用戶(hù)態(tài)程序 ping.elf pong.elf,可以用于驗(yàn)證 線(xiàn)程通信

首先后臺(tái)方式運(yùn)行 pong.elf,運(yùn)行命令: ./pong.elf &,注意后面的 & 代表后臺(tái)線(xiàn)程,這樣 shell 不會(huì)被占用,否則無(wú)法再運(yùn)行其他的 elf 文件

msh /bin>./pong.elf &
msh /bin>
Pong: wait on the IPC channel: 3
接下來(lái)運(yùn)行 ping.elf,看下效果 ./ping.elf

1.jpg

用戶(hù)態(tài)的線(xiàn)程可以正常的運(yùn)行

小結(jié)

rt-smart 的內(nèi)核態(tài)與用戶(hù)態(tài)分離,與 嵌入式Linux開(kāi)發(fā)方法相似, rt-smart 在不斷的完善,后期會(huì)適配到更多的平臺(tái)上

除了運(yùn)行 RT-Thread userapps 下的app,用戶(hù)可以根據(jù)需要,設(shè)計(jì)自己的 app,當(dāng)前如果需要內(nèi)核設(shè)備驅(qū)動(dòng)支持,還需要在 內(nèi)核部分編寫(xiě)設(shè)備驅(qū)動(dòng)等。

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

    關(guān)注

    54

    文章

    8693

    瀏覽量

    149918
  • 嵌入式
    +關(guān)注

    關(guān)注

    5150

    文章

    19665

    瀏覽量

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

    關(guān)注

    32

    文章

    1406

    瀏覽量

    41918
  • Ubuntu系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

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

    關(guān)注

    0

    文章

    78

    瀏覽量

    3735
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    最近需要使用 RT-Thread smart 開(kāi)發(fā)調(diào)試一些軟件功能,由于軟件功能平臺(tái)無(wú)關(guān),使用實(shí)際硬件操作,會(huì)耗費(fèi)較多的時(shí)間在程序燒寫(xiě)環(huán)節(jié)。
    的頭像 發(fā)表于 10-08 15:41 ?2638次閱讀
    <b class='flag-5'>RT-Thread</b> BSP <b class='flag-5'>qemu-virt64-riscv</b>的<b class='flag-5'>編譯</b>環(huán)境搭建步驟

    RT-Thread Smart 入門(mén)指南

    。rt-smart 軟件包是 RT-Thread Smart用戶(hù)體驗(yàn)軟件包,可在 QEMU 模擬的 VExpress-A9 機(jī)器中或樹(shù)莓
    發(fā)表于 03-29 06:40

    快速上手RT-Thread Smart入門(mén)指南

    qemu 或樹(shù)莓派 4B 開(kāi)發(fā)板上執(zhí)行起來(lái),這里主要提及如何在樹(shù)莓派 4B 上執(zhí)行的方式。準(zhǔn)備編譯環(huán)境在 Windows 上編譯 rt-smart,可以借助
    發(fā)表于 04-01 17:38

    如何在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

    RT-Thread Smart快速上手入門(mén)指南

    、scons、qemu工具等。編譯應(yīng)用程序1# 進(jìn)入到rt-smart目錄 2cd rt-smart 3 4# 設(shè)置對(duì)應(yīng)的環(huán)境變量,和原RT-Thr
    發(fā)表于 09-08 15:40

    RT-Smart用戶(hù)態(tài)運(yùn)行LVGL的操作流程

    開(kāi)發(fā)流程1、RT-Smart 環(huán)境搭下載 RT-Smart 用戶(hù)態(tài)應(yīng)用代碼進(jìn)入到 userapps 目錄,克隆
    發(fā)表于 11-18 11:34

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

    =》 ${RTT_EXEC_PATH}”  下載gcc交叉編譯工具鏈接后,在rt-thread/bsp/qemu-virt64-aarch64 運(yùn)行  設(shè)置
    發(fā)表于 04-04 17:04

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

      前言   前面大體上搭建了 RT-Thread BSP qemu-virt64-aarch64 的交叉編譯環(huán)境,運(yùn)行后發(fā)現(xiàn),文件系統(tǒng)沒(méi)有掛載上,感覺(jué)是沒(méi)有 mkfs。   通過(guò)
    發(fā)表于 05-16 10:29

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

    smart_env.sh 的執(zhí)行權(quán)限 $ chmod +x smart_env.sh   下載 gcc 交叉編譯工具鏈后, 在 rt-thread/bsp/
    發(fā)表于 05-16 10:37

    RT-Thread Smart已正式上線(xiàn)

    rt-smart內(nèi)核即可包含基本功能,同時(shí)也可定制裁剪。rt-smart用戶(hù)態(tài)應(yīng)用環(huán)境采用musl libc提供POSIX接口調(diào)用及C運(yùn)行環(huán)
    的頭像 發(fā)表于 11-29 10:31 ?3079次閱讀

    絲滑的在RT-Smart用戶(hù)態(tài)運(yùn)行LVGL

    開(kāi)發(fā)流程 1、RT-Smart 環(huán)境搭建 下載 RT-Smart 用戶(hù)態(tài)應(yīng)用代碼: 1 git?clone?https: //github.com/
    的頭像 發(fā)表于 11-22 20:20 ?1592次閱讀

    riscvrt-smart中的板級(jí)初始化

    本文章的代碼來(lái)自于rt-smart中針對(duì)qemu-virt-riscv的bsp 倉(cāng)庫(kù)地址 https://gitee.com/rtthread/rt-thread/tree/rt-smart
    的頭像 發(fā)表于 02-09 17:45 ?1324次閱讀

    基于xmake的RT-Thread Smart用戶(hù)態(tài)開(kāi)發(fā)教程

    RT-Thread Smart(以下簡(jiǎn)稱(chēng) Smart) 是基于 RT-Thread 操作系統(tǒng)上的混合操作系統(tǒng),簡(jiǎn)稱(chēng)為 rt-smart,它把
    的頭像 發(fā)表于 06-07 11:44 ?1524次閱讀
    基于xmake的<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Smart</b><b class='flag-5'>用戶(hù)</b><b class='flag-5'>態(tài)</b>開(kāi)發(fā)教程

    基于xmake的RT-Thread Smart用戶(hù)態(tài)開(kāi)發(fā)教程

    RT-Thread Smart(以下簡(jiǎn)稱(chēng) Smart) 是基于 RT-Thread 操作系統(tǒng)上的混合操作系統(tǒng),簡(jiǎn)稱(chēng)為 rt-smart,它把
    的頭像 發(fā)表于 09-14 11:48 ?1432次閱讀
    基于xmake的<b class='flag-5'>RT-Thread</b> <b class='flag-5'>Smart</b><b class='flag-5'>用戶(hù)</b><b class='flag-5'>態(tài)</b>開(kāi)發(fā)教程

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

    前面大體上搭建了 RT-Thread BSP qemu-virt64-aarch64 的交叉編譯環(huán)境,運(yùn)行后發(fā)現(xiàn),文件系統(tǒng)沒(méi)有掛載上,感覺(jué)是沒(méi)有 mkfs。
    的頭像 發(fā)表于 10-08 16:34 ?1349次閱讀
    <b class='flag-5'>RT-Thread</b> BSP <b class='flag-5'>qemu-virt64-aarch64</b>文件系統(tǒng)