当前位置: 首页 > news >正文

单页网站怎么做wordpress cms theme

单页网站怎么做,wordpress cms theme,163邮箱官方注册入口,创建网站用什么语言前言 最近在对RISC-V架构比较感兴趣#xff0c;正好手头有《RISC-V体系结构编程与实践》的书籍#xff0c;就打算跟随笨叔将这块的知识学习起来#xff0c;最开始当然是需要搭建一个基础的实验平台#xff0c;本来笨叔是贴心的提供了VMare的环境#xff0c;奈何天生叛逆的… 前言 最近在对RISC-V架构比较感兴趣正好手头有《RISC-V体系结构编程与实践》的书籍就打算跟随笨叔将这块的知识学习起来最开始当然是需要搭建一个基础的实验平台本来笨叔是贴心的提供了VMare的环境奈何天生叛逆的我就不下他的大镜像我就不说我百度网盘没会员就拿手头的wsl搭建了一套基于vscode的调试环境可以直接一键调试感觉还是蛮方便的。这里就进行一下记录。 参考连接 优雅的调试在vscode上完美调试xv6 笨叔RISC-V官方示例代码仓库 文章目录 前言WSL基础环境的安装环境搭建1. 基础软件包安装2.示例源码的下载 问题解决PMP未开启导致无法进入benosVScode调试问题理解调试方法配置lanuch.json配置tasks.json成果展示 小插曲.S文件不能打断点 最后 WSL基础环境的安装 我曾经写过两篇文章来完善这块内容可以参考 利用windows自带的虚拟机安装ubuntu的记录用来完成基础环境的安装 [linux学习记录]win下子系统ubuntu体验记录用来记录其中遇到的问题以及对应的解决方案会不定时更新 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/95c97de674eb434da495e9cef2202a7a.png 环境搭建 1. 基础软件包安装 QEMU Virt实验平台模拟的是一款通用的RISC-V开发板。 软件环境 WSL(ubuntu22.04)qemu(QEMU emulator version 6.2.0 (Debian 1:6.2dfsg-2ubuntu6.15))riscv64-linux-gnu-gcc-9 (Ubuntu 9.5.0-1ubuntu1~22.04) 9.5.0gdb-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 #切换默认版本 sudo apt install gdb-multiarch其他版本比较叛逆直接安装但是对于gcc的版本还是要慎重之前编译oe的5.10内核的时候如果用过高的编译器版本会导致链接出现问题所以此处尽量与笨叔要求一致。 2.示例源码的下载 git clone 笨叔RISC-V官方示例代码仓库 大致命令如下 git clone https://github.com/runninglinuxkernel/riscv_programming_practice cd riscv_programming_practice/chapter_2/benos make即可完成基础命令的执行。 运行命令如下 make debug然后就会看到如下的画面 这个其实是可以正常跑并且进入到sbi内了只不过按照笨叔的说明文档我们遇到了PMP未开启的问题导致无法进入到benos内。所以接下来我们有两个问题待解决 如何解决PMP问题如何使用vscode进行调试 问题解决 PMP未开启导致无法进入benos 根据笨叔的介绍 那我们就以毒攻毒把第十章的一部分代码直接CV过来不就好了虽然我看不懂但是CV我在行不是这块其实就先解决问题等到学到了再认真研究就好了初学者Hello个world还是有必要的。 根据我的观察大概需要改4个文件 //include/asm/csr.h /* Machine Memory Protection* 暂时支持8个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); \})上面其实是diff的部分输出就是在对应文件进行修改就是增加-就是删除对照修改即可。 另外需要将第十章的sbi_lib.c以及sbi_lib.h拷贝到对应目录以及对sbi_main.c进行如下修改 //sbi/sbi_main.c{unsigned long val; /** 配置PMP* 所有地址空间都可以访问*/sbi_set_pmp(0, 0, -1UL, PMP_RWX);sbi_set_pmp(1, 0x80000000, 0x40000, PMP_RWX);其中sbi_set_pmp函数也需要从第十章的sbi_main.c内拷贝而来。 如果嫌弃麻烦的话也可以访问我的gitee分支 https://gitee.com/gaoxinglei/risc-v_practice VScode调试问题 由于我是采用WSL的实验方式VScode采用ssh远程连接需要以下插件 Remote-SSH(Host用于连接WSL)C/C(Ubuntu22.04 用于代码高亮跳转等 理解调试方法 书上以及相关资料采用的其实是使用gdb-multiarch选择选择对应的elf进行调试的使用remote的方式ipport的形式。一般的调试形式如下 gdb-multiarch benos.elf target remote localhost:1234然后我们可以配置这些手动的过程到launch.json并且观察也更加方便。 配置lanuch.json 理解了上面的过程我们再来看这份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就是对应我们qemu的地址然后miDebuggerPath来选择我们的gdb工具。program对应我们的命令后接的要调试的程序我们这里选择benos.elf如果需要调试书籍里面的sbi也可以换成对应的文件再建一个调试即可具体参考我的gitee。这里我发现参考代码都是源码上一级就是Makefile所以我可以简单的写成../benos.elf这种形式其他的可能需要思考更合理的判断方式。但注意到我们其实还有一个preLaunchTask预处理这块就是帮助我们敲make解放双手。 配置tasks.json 上面说到的preLaunchTask其实就是在这里进行定义的具体内容如下 // 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文件进行对应command就是编译指令我们这里也是因为目录层级简单可以这么简单书写。 beginsPattern是屏幕识别到相关代码才开始调试否则认为编译失败类似于下图 就是未识别到对应信息我们这里采用Makefile会输出的一句话即可 成果展示 经过上面的配置我们就可以对远程gdb进行调试了也符合我们日常的使用习惯。 小插曲 这个地方不定时更新遇到的问题 .S文件不能打断点 需要打开这个设置注意打开的是WSL的设置而不是本地设置哦。 最后 相关源码可以在 https://gitee.com/gaoxinglei/risc-v_practice进行获取哦
http://www.tj-hxxt.cn/news/134976.html

相关文章:

  • 营销型网站建设对比分析网站怎么发邮件
  • 商城网站做推广方案张家界seo优化首选
  • 大型网站建设设备wordpress电影主题会员
  • 免备案网站空间购买金融投资网站 php源码
  • 设计网站推广的广告语注册公司一年交多少税
  • 好公司网站建设价格保定网站推广费用
  • 南宁网站seo服务安徽湖滨建设集团网站
  • 做影视网站需要境外商城网站建设流程图
  • 淮北做网站电话安卓app用什么开发
  • 做国外营销型网站网页制作设计步骤
  • 做php网站会员开店代码如何编写wordpress jiu
  • 网页设计素材网站花郑州网站建设zzwzjs
  • 做 视频在线观看网站wordpress使用图床
  • 如何选择营销网站建设三亚手机台app
  • apache配置多个网站心悦免做卡领取网站
  • 网站统计怎么做做ui什么图库网站好呀
  • 如何优化企业网站河北百度seo点击软件
  • html5video网站深圳建设项目信息网
  • 湖北建设执业资格注册中心网站桥东网站建设
  • 义乌官网制作网站商城属于电商网站吗
  • wordpress网站前端wordpress制作网站教程
  • 做视频哪个网站收入高沈阳网站专业
  • 做安装系统网站有钱赚吗做网站的为什么一直拖
  • html网站后台管理系统唐山网站设计公司
  • 南昌网站建设哪家好东莞建设局网
  • 公司网站建设设计如何收费微信推广平台收费标准
  • 苏州网站设计服务80端口被封怎么做网站
  • 常见的cms网站程序有哪些王占山战斗英雄简历
  • 高端网站建设磐石网络好开发公司官网
  • 网站建设季度考核评价工作总结株洲专业建设网站