国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

vue.js 可以做網(wǎng)站嗎百度拉新推廣平臺(tái)

vue.js 可以做網(wǎng)站嗎,百度拉新推廣平臺(tái),旅游網(wǎng)站定位,常州新北建設(shè)局網(wǎng)站前言 最近在對(duì)RISC-V架構(gòu)比較感興趣,正好手頭有《RISC-V體系結(jié)構(gòu)編程與實(shí)踐》的書(shū)籍,就打算跟隨笨叔將這塊的知識(shí)學(xué)習(xí)起來(lái),最開(kāi)始當(dāng)然是需要搭建一個(gè)基礎(chǔ)的實(shí)驗(yàn)平臺(tái),本來(lái)笨叔是貼心的提供了VMare的環(huán)境,奈何天生叛逆的…

在這里插入圖片描述

前言

最近在對(duì)RISC-V架構(gòu)比較感興趣,正好手頭有《RISC-V體系結(jié)構(gòu)編程與實(shí)踐》的書(shū)籍,就打算跟隨笨叔將這塊的知識(shí)學(xué)習(xí)起來(lái),最開(kāi)始當(dāng)然是需要搭建一個(gè)基礎(chǔ)的實(shí)驗(yàn)平臺(tái),本來(lái)笨叔是貼心的提供了VMare的環(huán)境,奈何天生叛逆的我就不下他的大鏡像(我就不說(shuō)我百度網(wǎng)盤(pán)沒(méi)會(huì)員),就拿手頭的wsl搭建了一套基于vscode的調(diào)試環(huán)境,可以直接一鍵調(diào)試,感覺(jué)還是蠻方便的。這里就進(jìn)行一下記錄。
參考連接:
優(yōu)雅的調(diào)試在vscode上完美調(diào)試xv6
笨叔RISC-V官方示例代碼倉(cāng)庫(kù)


文章目錄

  • 前言
  • WSL基礎(chǔ)環(huán)境的安裝
  • 環(huán)境搭建
    • 1. 基礎(chǔ)軟件包安裝
    • 2.示例源碼的下載
  • 問(wèn)題解決
    • PMP未開(kāi)啟導(dǎo)致無(wú)法進(jìn)入benos
    • VScode調(diào)試問(wèn)題
      • 理解調(diào)試方法
      • 配置lanuch.json
      • 配置tasks.json
      • 成果展示
    • 小插曲
      • .S文件不能打斷點(diǎn)
    • 最后


WSL基礎(chǔ)環(huán)境的安裝

我曾經(jīng)寫(xiě)過(guò)兩篇文章來(lái)完善這塊內(nèi)容,可以參考:
利用windows自帶的虛擬機(jī)安裝ubuntu的記錄用來(lái)完成基礎(chǔ)環(huán)境的安裝
[linux學(xué)習(xí)記錄](méi)win下子系統(tǒng)ubuntu體驗(yàn)記錄用來(lái)記錄其中遇到的問(wèn)題以及對(duì)應(yīng)的解決方案,會(huì)不定時(shí)更新
![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/95c97de674eb434da495e9cef2202a7a.png在這里插入圖片描述


環(huán)境搭建

1. 基礎(chǔ)軟件包安裝

QEMU Virt實(shí)驗(yàn)平臺(tái)模擬的是一款通用的RISC-V開(kāi)發(fā)板。
軟件環(huán)境:

  • WSL(ubuntu22.04)
  • qemu(QEMU emulator version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.15))
  • riscv64-linux-gnu-gcc-9 (Ubuntu 9.5.0-1ubuntu1~22.04) 9.5.0
  • gdb-multiarch(GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1)

安裝參考指令:

sudo apt install qemu-system-misc libncurses5-dev build-essential git bison flex libssl-dev
sudo apt install gcc-9-riscv64-linux-gnu
sudo ln -s /usr/bin/riscv64-linux-gnu-gcc-9 /usr/bin/riscv64-linux-gnu-gcc #切換默認(rèn)版本
sudo apt install gdb-multiarch

其他版本比較叛逆直接安裝,但是對(duì)于gcc的版本還是要慎重,之前編譯oe的5.10內(nèi)核的時(shí)候如果用過(guò)高的編譯器版本會(huì)導(dǎo)致鏈接出現(xiàn)問(wèn)題,所以此處盡量與笨叔要求一致。

2.示例源碼的下載

git clone 笨叔RISC-V官方示例代碼倉(cāng)庫(kù)
大致命令如下:

git clone https://github.com/runninglinuxkernel/riscv_programming_practice
cd riscv_programming_practice/chapter_2/benos
make

即可完成基礎(chǔ)命令的執(zhí)行。
運(yùn)行命令如下:

make debug

然后就會(huì)看到如下的畫(huà)面
在這里插入圖片描述
這個(gè)其實(shí)是可以正常跑并且進(jìn)入到sbi內(nèi)了,只不過(guò)按照笨叔的說(shuō)明文檔,我們遇到了PMP未開(kāi)啟的問(wèn)題導(dǎo)致無(wú)法進(jìn)入到benos內(nèi)。所以接下來(lái)我們有兩個(gè)問(wèn)題待解決:

  1. 如何解決PMP問(wèn)題
  2. 如何使用vscode進(jìn)行調(diào)試

問(wèn)題解決

PMP未開(kāi)啟導(dǎo)致無(wú)法進(jìn)入benos

根據(jù)笨叔的介紹:
在這里插入圖片描述
那我們就以毒攻毒,把第十章的一部分代碼直接CV過(guò)來(lái)不就好了?雖然我看不懂但是CV我在行(不是),這塊其實(shí)就先解決問(wèn)題,等到學(xué)到了再認(rèn)真研究就好了,初學(xué)者Hello個(gè)world還是有必要的。
根據(jù)我的觀察大概需要改4個(gè)文件:

//include/asm/csr.h
+/* Machine Memory Protection
+ * 暫時(shí)支持8個(gè)pmpcfg
+*/
+#define RISCV_XLEN 64
+#define MAX_CSR_PMP     8
+#define CSR_PMPCFG0    0x3a0
+#define CSR_PMPADDR0   0x3b0
+#define CSR_PMPADDR1   0x3b1
+#define CSR_PMPADDR2   0x3b2
+#define CSR_PMPADDR3   0x3b3
+#define CSR_PMPADDR4   0x3b4
+#define CSR_PMPADDR5   0x3b5
+#define CSR_PMPADDR6   0x3b6
+#define CSR_PMPADDR7   0x3b7
+#define PMP_R  0x01UL
+#define PMP_W  0x02UL
+#define PMP_X  0x04UL
+#define PMP_A  0x18UL
+#define PMP_A_TOR 0x08UL
+#define PMP_A_NA4 0x10UL
+#define PMP_A_NAPOT 0x18UL
+#define PMP_L   0x80UL
+#define PMP_RWX (PMP_R | PMP_W | PMP_X)
+#define PMP_SHIFT 2
+#ifdef __ASSEMBLY__
+#define __ASM_STR(x)   x
+#else
+#define __ASM_STR(x)   #x
+#endif
#define read_csr(csr)                                          \({                                                             \register unsigned long __v;                             \
-       __asm__ __volatile__ ("csrr %0, " #csr                  \
+       __asm__ __volatile__ ("csrr %0, "  __ASM_STR(csr)                       \: "=r" (__v) :                    \: "memory");                      \__v;                                                    \#define write_csr(csr, val)                                    \({                                                             \unsigned long __v = (unsigned long)(val);               \
-       __asm__ __volatile__ ("csrw " #csr ", %0"               \
+       __asm__ __volatile__ ("csrw "__ASM_STR(csr)", %0"               \: : "rK" (__v)                    \: "memory");                      \})

上面其實(shí)是diff的部分輸出,就是在對(duì)應(yīng)文件進(jìn)行修改,+就是增加,-就是刪除,對(duì)照修改即可。
另外需要將第十章的sbi_lib.c以及sbi_lib.h拷貝到對(duì)應(yīng)目錄,以及對(duì)sbi_main.c進(jìn)行如下修改:

//sbi/sbi_main.c{unsigned long val;+       /*
+        * 配置PMP
+        * 所有地址空間都可以訪問(wèn)
+        */
+       sbi_set_pmp(0, 0, -1UL, PMP_RWX);
+       sbi_set_pmp(1, 0x80000000, 0x40000, PMP_RWX);

其中sbi_set_pmp函數(shù)也需要從第十章的sbi_main.c內(nèi)拷貝而來(lái)。
如果嫌棄麻煩的話也可以訪問(wèn)我的gitee分支: https://gitee.com/gaoxinglei/risc-v_practice


VScode調(diào)試問(wèn)題

由于我是采用WSL的實(shí)驗(yàn)方式,VScode采用ssh遠(yuǎn)程連接,需要以下插件:

  • Remote-SSH(Host用于連接WSL)
  • C/C++(Ubuntu22.04 用于代碼高亮跳轉(zhuǎn)等)

理解調(diào)試方法

書(shū)上以及相關(guān)資料采用的其實(shí)是使用gdb-multiarch選擇選擇對(duì)應(yīng)的elf進(jìn)行調(diào)試的,使用remote的方式ip+port的形式。一般的調(diào)試形式如下:

gdb-multiarch benos.elf
target remote localhost:1234

然后我們可以配置這些手動(dòng)的過(guò)程到launch.json,并且觀察也更加方便。

配置lanuch.json

理解了上面的過(guò)程我們?cè)賮?lái)看這份lanuch.json就更加方便了

//launch.json
{"version": "0.2.0","configurations": [{"name": "riscvkernel","type": "cppdbg","request": "launch","program": "${fileDirname}/../benos.elf","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}","miDebuggerServerAddress": "127.0.0.1:1234","miDebuggerPath": "gdb-multiarch","environment": [],"externalConsole": false,"MIMode": "gdb","preLaunchTask": "riscvbuild","setupCommands": [{"description": "pretty printing","text": "-enable-pretty-printing","ignoreFailures": true,},],},]
}

其中的miDebuggerServerAddress就是對(duì)應(yīng)我們qemu的地址,然后miDebuggerPath來(lái)選擇我們的gdb工具。program對(duì)應(yīng)我們的命令后接的要調(diào)試的程序,我們這里選擇benos.elf,如果需要調(diào)試書(shū)籍里面的sbi也可以換成對(duì)應(yīng)的文件,再建一個(gè)調(diào)試即可,具體參考我的gitee。這里我發(fā)現(xiàn)參考代碼都是源碼上一級(jí)就是Makefile,所以我可以簡(jiǎn)單的寫(xiě)成../benos.elf這種形式,其他的可能需要思考更合理的判斷方式。但注意到我們其實(shí)還有一個(gè)preLaunchTask預(yù)處理,這塊就是幫助我們敲make解放雙手。

配置tasks.json

上面說(shuō)到的preLaunchTask,其實(shí)就是在這里進(jìn)行定義的,具體內(nèi)容如下:

// tasks.json
{"version": "2.0.0","tasks": [{"label": "riscvbuild","type": "shell","isBackground": true,"command": "cd ${fileDirname}/..;make;make debug","problemMatcher": [{"pattern": [{"regexp": ".","file": 1,"location": 2,"message": 3}],"background": {"beginsPattern": ".*-kernel benos.elf -S -s","endsPattern": "."}}]}]
}

主要注意label要和launch.json文件進(jìn)行對(duì)應(yīng),command就是編譯指令,我們這里也是因?yàn)槟夸泴蛹?jí)簡(jiǎn)單可以這么簡(jiǎn)單書(shū)寫(xiě)。
beginsPattern是屏幕識(shí)別到相關(guān)代碼才開(kāi)始調(diào)試,否則認(rèn)為編譯失敗,類(lèi)似于下圖:
在這里插入圖片描述
就是未識(shí)別到對(duì)應(yīng)信息,我們這里采用Makefile會(huì)輸出的一句話即可

成果展示

經(jīng)過(guò)上面的配置,我們就可以對(duì)遠(yuǎn)程gdb進(jìn)行調(diào)試了,也符合我們?nèi)粘5氖褂昧?xí)慣。
在這里插入圖片描述

小插曲

這個(gè)地方不定時(shí)更新遇到的問(wèn)題

.S文件不能打斷點(diǎn)

需要打開(kāi)這個(gè)設(shè)置,注意打開(kāi)的是WSL的設(shè)置而不是本地設(shè)置哦。
在這里插入圖片描述

最后

相關(guān)源碼可以在 https://gitee.com/gaoxinglei/risc-v_practice進(jìn)行獲取哦

http://aloenet.com.cn/news/28147.html

相關(guān)文章:

  • 彩票走勢(shì)圖網(wǎng)站是用什么程序做的搜索引擎優(yōu)化的目標(biāo)
  • 海外 網(wǎng)站 推廣百度一下百度知道
  • 網(wǎng)站是否被百度收錄網(wǎng)址信息查詢
  • 怎嗎做網(wǎng)站掙錢(qián)揭陽(yáng)seo快速排名
  • 如何用騰訊云做網(wǎng)站seo百度關(guān)鍵詞優(yōu)化
  • 聊城做網(wǎng)站好的公司淘寶網(wǎng)店代運(yùn)營(yíng)正規(guī)公司
  • 做網(wǎng)站美工廣州seo推廣公司
  • 山西傳染病最新消息今天唐山seo排名外包
  • 如何建設(shè)網(wǎng)站方便后期維護(hù)東莞網(wǎng)絡(luò)推廣公司
  • 做培訓(xùn)的網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣工作內(nèi)容怎么寫(xiě)
  • 游戲軟件開(kāi)發(fā)屬于什么專(zhuān)業(yè)seo內(nèi)部?jī)?yōu)化具體做什么
  • 宣城市網(wǎng)站集約化建設(shè)茶葉網(wǎng)絡(luò)推廣方案
  • 長(zhǎng)沙做企業(yè)網(wǎng)站的公司中國(guó)網(wǎng)站排名
  • 網(wǎng)站制作難點(diǎn)故事式的軟文廣告例子
  • 青島網(wǎng)站建設(shè)青島新思維百度用戶服務(wù)中心人工電話
  • 浙江省建設(shè)通網(wǎng)站迅雷磁力
  • 網(wǎng)站建設(shè)找星火龍關(guān)鍵詞排名代做
  • PC端網(wǎng)站開(kāi)發(fā)以及設(shè)計(jì)費(fèi)用qq群推廣網(wǎng)站
  • 網(wǎng)站建設(shè)公司排行榜搜索引擎優(yōu)化內(nèi)容包括哪些方面
  • 貞豐縣住房和城鄉(xiāng)建設(shè)局網(wǎng)站鄭州關(guān)鍵詞排名顧問(wèn)
  • 成都設(shè)計(jì)公司官網(wǎng)東莞seo網(wǎng)絡(luò)營(yíng)銷(xiāo)
  • 泉州建設(shè)工程質(zhì)量網(wǎng)站千鋒教育學(xué)費(fèi)一覽表
  • 創(chuàng)建了網(wǎng)站百度推廣開(kāi)戶費(fèi)用
  • 小白學(xué)做網(wǎng)站買(mǎi)什么書(shū)優(yōu)化網(wǎng)站排名工具
  • wordpress查看網(wǎng)站內(nèi)容站長(zhǎng)工具服務(wù)器查詢
  • wordpress 操作數(shù)據(jù)庫(kù)大連seo顧問(wèn)
  • 唐山企業(yè)網(wǎng)站建設(shè)濟(jì)南百度
  • 云主機(jī) 做網(wǎng)站鏈接交換公司
  • 上海網(wǎng)站搜索排名婚戀網(wǎng)站排名前三
  • 做外貿(mào)網(wǎng)站好的公司志鴻優(yōu)化設(shè)計(jì)答案網(wǎng)