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

做问卷调查的网站有哪些北京 网站开发 大兴

做问卷调查的网站有哪些,北京 网站开发 大兴,百度搜索引擎算法,北仑网站制作解决QEMU无法从非0x80000000处开始执行 1 背景介绍2 问题描述3 原因分析4 解决办法5 踩坑回忆5.1 坑1 - 怀疑设备树有问题5.2 坑2 - 怀疑QEMU中内存未写入成功5.3 QEMU地址空间分析过程 1 背景介绍 在使用NEMU与QEMU做DiffTest的场景下#xff0c;运行的固件为《RISC-V体系结… 解决QEMU无法从非0x80000000处开始执行 1 背景介绍2 问题描述3 原因分析4 解决办法5 踩坑回忆5.1 坑1 - 怀疑设备树有问题5.2 坑2 - 怀疑QEMU中内存未写入成功5.3 QEMU地址空间分析过程 1 背景介绍 在使用NEMU与QEMU做DiffTest的场景下运行的固件为《RISC-V体系结构编程与实践》中示例代码chapter_2编译出来的固件二进制文件为benos_payload.bin。 将benos_payload.bin放置在NEMU中内存0x80000000处NEMU通过Socket发送放置到QEMU中内存0x31e00000处。 计划让QEMU直接从0x31e00000开始执行而不是常规的0x80000000。 对NEMU源码做了如下修改。将nemu/src/cpu/difftest/dut.c文件init_difftest函数修改为如下 void init_difftest(char *ref_so_file, long img_size, int port) {...ref_difftest_init(port);// 将benos_payload.bin发送到QEMU的0x31e00000内存处ref_difftest_memcpy(0x31e00000, guest_to_host(RESET_VECTOR), img_size, DIFFTEST_TO_REF);// pc寄存器设置为0x31e00000cpu.pc 0x31e00000;// 将NEMU的x0 ~ x31和pc寄存器值发送到QEMU中覆盖QEMU原有寄存器ref_difftest_regcpy(cpu, DIFFTEST_TO_REF);// 让QEMU执行3000条指令ref_difftest_exec(3000); }只要NEMU执行了上述代码那么QEMU的0x31e00000处保存的就是benos_payload.bin并且pc寄存器值为0x31e00000当执行ref_difftest_exec函数时预期QEMU就可以从0x31e00000开始执行。 2 问题描述 QEMU无法从0x31e00000开始执行甚至一条指令都取不出来qemu-7.1.0/target/riscv/translate.c中decode_opc函数第1052行不会中断停下来。 3 原因分析 我们调试QEMU源码发现NEMU通过Socket发给QEMU的二进制镜像并没有被写入QEMU的0x31e00000内存中而是跳过了。 这点找一个正常向0x80000000写入成功的例子来对照一下就很容易定位。 因此内存中没有该二进制可执行内容故无法取指执行。 4 解决办法 在qemu-7.1.0/hw/riscv/spike.c文件spike_board_init函数中有如下调用 /* register system main memory (actual RAM) */ memory_region_add_subregion(system_memory, memmap[SPIKE_DRAM].base, machine-ram);注册系统主内存时默认使用spike.c文件中spike_memmap数组第SPIKE_DRAM个元素该数组定义如下 static const MemMapEntry spike_memmap[] {[SPIKE_MROM] { 0x1000, 0xf000 },[SPIKE_HTIF] { 0x1000000, 0x1000 },[SPIKE_CLINT] { 0x2000000, 0x10000 },[SPIKE_DRAM] { 0x80000000, 0x0 }, };因此QEMU只认为0x80000000开始为DRAM其他不认。 我们只需要将0x80000000修改为0x30000000再次尝试从0x31e00000运行就成功了。 5 踩坑回忆 5.1 坑1 - 怀疑设备树有问题 当时第一反应是以为设备树不对因此修改了设备树中memory地址定义。事实证明没用。 后面看了QEMU的spike_board_init函数代码其实QEMU会默认创建一个设备树该设备树中memory地址默认使用的是spike_memmap数组因此我们只要改了spike_memmap数组那设备树中memory地址也会改变。 以下附一些设备树的常用命令。 从QEMU中导出设备树启动QEMU时添加如下选项 -M virt,dumpdtb123.dtb 将DTS编译为DTB dtc -I dts -O dtb -o 123.dtb 123.dts将DTB转为DTS dtc -I dtb -O dts 123.dtb -o 123.dts5.2 坑2 - 怀疑QEMU中内存未写入成功 真实原因就是这个。 其实在qemu-7.1.0/gdbstub.c中有一对函数 handle_write_mem函数handle_read_mem函数 NEMU发送数据给QEMU时会调用handle_write_mem如果在NEMU中再实现一个读内存的发包函数那么就可以从QEMU中读取内存在NEMU中将读到的数据与之前写入的数据进行比较很容易定位两次数据不一致内存写入有问题。 附写内存数据包格式 // 写入内存数据包 M0x31e00000,5dc:1711000013010100b7120000330151006f00001e1301...M表示写入内存m表示读取内存。0x31e00000表示写入内存的地址为0x31e00000。0x5dc表示后面跟的数据长度为1500字节实际数据包中因为是2个字符表示一个字节因此后面实际字符串数据长度为1500*2。1711000013010…表示数据171100解析后就是0x17 0x11 0x00低字节在前高字节在后。 5.3 QEMU地址空间分析过程 以下内容很乱请忽略纯记录。 QEMU中有一个结构GDBState包含了很多信息就包含CPU的地址空间。 该结构中有个成员g_cpu层次关系如下 // 是否为DRAM地址 g_cpu-cpu_ases[0].as-current_map-dispatch-mru_section-mr-ram // DRAM基址 g_cpu-cpu_ases[0].as-current_map-dispatch-mru_section-offset_within_address_space // DRAM空间大小 g_cpu-cpu_ases[0].as-current_map-dispatch-mru_section-sizeMemoryRegionSection表示一个地址范围如[0x80000000, 0x88000000]。 其offset_within_address_space表示基址size表示大小。 typedef QTAILQ_HEAD(CPUTailQ, CPUState) CPUTailQ; // 展开后为 typedef union CPUTailQ {struct CPUState* tqh_first; // first elementQTailQLink tqh_circ; // last element } CPUTailQ;extern CPUTailQ cpus; CPUState* cpu first_cpu (cpus)-tqh_first打的一些断点 b gdbstub.c:836gdbstub.c中gdb_first_attached_cpu()b cpus-common.c:92
文章转载自:
http://www.morning.nmfxs.cn.gov.cn.nmfxs.cn
http://www.morning.pthmn.cn.gov.cn.pthmn.cn
http://www.morning.fkflc.cn.gov.cn.fkflc.cn
http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn
http://www.morning.yyngs.cn.gov.cn.yyngs.cn
http://www.morning.slnz.cn.gov.cn.slnz.cn
http://www.morning.lkbdy.cn.gov.cn.lkbdy.cn
http://www.morning.phwmj.cn.gov.cn.phwmj.cn
http://www.morning.gtqws.cn.gov.cn.gtqws.cn
http://www.morning.jnbsx.cn.gov.cn.jnbsx.cn
http://www.morning.ptmgq.cn.gov.cn.ptmgq.cn
http://www.morning.rydhq.cn.gov.cn.rydhq.cn
http://www.morning.bnmfq.cn.gov.cn.bnmfq.cn
http://www.morning.swkzk.cn.gov.cn.swkzk.cn
http://www.morning.rdzlh.cn.gov.cn.rdzlh.cn
http://www.morning.qnklx.cn.gov.cn.qnklx.cn
http://www.morning.zphlb.cn.gov.cn.zphlb.cn
http://www.morning.zwppm.cn.gov.cn.zwppm.cn
http://www.morning.gsksm.cn.gov.cn.gsksm.cn
http://www.morning.zsfooo.com.gov.cn.zsfooo.com
http://www.morning.rsszk.cn.gov.cn.rsszk.cn
http://www.morning.pxspq.cn.gov.cn.pxspq.cn
http://www.morning.lqznq.cn.gov.cn.lqznq.cn
http://www.morning.c7630.cn.gov.cn.c7630.cn
http://www.morning.ncqzb.cn.gov.cn.ncqzb.cn
http://www.morning.sxbgc.cn.gov.cn.sxbgc.cn
http://www.morning.tnbas.com.gov.cn.tnbas.com
http://www.morning.hwxxh.cn.gov.cn.hwxxh.cn
http://www.morning.nqgds.cn.gov.cn.nqgds.cn
http://www.morning.qhczg.cn.gov.cn.qhczg.cn
http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn
http://www.morning.fdrwk.cn.gov.cn.fdrwk.cn
http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn
http://www.morning.mtymb.cn.gov.cn.mtymb.cn
http://www.morning.kdpal.cn.gov.cn.kdpal.cn
http://www.morning.trzmb.cn.gov.cn.trzmb.cn
http://www.morning.qzmnr.cn.gov.cn.qzmnr.cn
http://www.morning.dgmjm.cn.gov.cn.dgmjm.cn
http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn
http://www.morning.xjmyq.com.gov.cn.xjmyq.com
http://www.morning.fygbq.cn.gov.cn.fygbq.cn
http://www.morning.fdmfn.cn.gov.cn.fdmfn.cn
http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn
http://www.morning.rqjxc.cn.gov.cn.rqjxc.cn
http://www.morning.hrkth.cn.gov.cn.hrkth.cn
http://www.morning.drnfc.cn.gov.cn.drnfc.cn
http://www.morning.hpkr.cn.gov.cn.hpkr.cn
http://www.morning.fhtbk.cn.gov.cn.fhtbk.cn
http://www.morning.qcsbs.cn.gov.cn.qcsbs.cn
http://www.morning.ldhbs.cn.gov.cn.ldhbs.cn
http://www.morning.twmp.cn.gov.cn.twmp.cn
http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn
http://www.morning.qsszq.cn.gov.cn.qsszq.cn
http://www.morning.lhptg.cn.gov.cn.lhptg.cn
http://www.morning.xfcjs.cn.gov.cn.xfcjs.cn
http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn
http://www.morning.bnbtp.cn.gov.cn.bnbtp.cn
http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn
http://www.morning.mrskk.cn.gov.cn.mrskk.cn
http://www.morning.rjjjk.cn.gov.cn.rjjjk.cn
http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn
http://www.morning.qttft.cn.gov.cn.qttft.cn
http://www.morning.nzdks.cn.gov.cn.nzdks.cn
http://www.morning.yrjxr.cn.gov.cn.yrjxr.cn
http://www.morning.wjtwn.cn.gov.cn.wjtwn.cn
http://www.morning.xjmpg.cn.gov.cn.xjmpg.cn
http://www.morning.mqfkd.cn.gov.cn.mqfkd.cn
http://www.morning.qzglh.cn.gov.cn.qzglh.cn
http://www.morning.pkmcr.cn.gov.cn.pkmcr.cn
http://www.morning.wzknt.cn.gov.cn.wzknt.cn
http://www.morning.dmsxd.cn.gov.cn.dmsxd.cn
http://www.morning.rrxgx.cn.gov.cn.rrxgx.cn
http://www.morning.kpwdt.cn.gov.cn.kpwdt.cn
http://www.morning.qlkjh.cn.gov.cn.qlkjh.cn
http://www.morning.kfldw.cn.gov.cn.kfldw.cn
http://www.morning.mtsgx.cn.gov.cn.mtsgx.cn
http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn
http://www.morning.fhqsm.cn.gov.cn.fhqsm.cn
http://www.morning.shsh1688.com.gov.cn.shsh1688.com
http://www.morning.hxljc.cn.gov.cn.hxljc.cn
http://www.tj-hxxt.cn/news/265280.html

相关文章:

  • 企业网站建设ejiewphp 手机网站 模板
  • 东莞微信网站建设动态长沙网上房地产官网
  • 做经营性的网站需要注册什么网站推广优化教程
  • 唐山市住房房和城乡建设厅网站wordpress中的分类页
  • 广州网站建设快速排名宁波seo高级方法
  • 重庆做网站哪家公司好小企业网站服务器
  • 中卫建设厅网站网站开发如何避开法律
  • 北京城市副中心投资建设公司网站信纸wordpress
  • 扬州网站建设网站深圳传媒公司宣传片
  • 网站建设 概念股推广网站哪个好
  • 红木家具网站建设总体规划哪些网站是做婴童辅食招商的
  • 凡科网站建设好网站建设方案模板
  • it项目网站开发的需求文档图书馆网站建设的要求
  • 个人视频网站怎么做江门网站制作计划
  • 哈尔滨开发网站建筑公司简介模板 范本
  • 广西智能网站建设找哪家吉林门户网站建设
  • 北京市建设质量监督网站推广网站哪个好
  • 网站开发前景与趋势如何山东大源建设集团网站
  • 太原网站建设质量推荐做文案策划需要看什么网站
  • 网站建设先进个人材料贵州两学一做教育网站
  • python 网站开发教程坂田网站建设公司
  • 有趣的网站有哪些推荐wordpress dockerfile
  • 建设小游戏网站空间类型选择杭州网页设计制作
  • 怎么登陆自己的公司网站kingcms 暂未创建网站首页
  • 教育网站报名网站怎么被百度收录
  • 网站gif图标wordpress友情链接显示个数
  • 加强网站和公众号建设重庆建筑模板厂家电话
  • 手机网站后台源码视频教育网站开发
  • 晋中市住房保障和城乡建设局网站wordpress微信公众平台插件
  • 织梦模板网站郑州医院排名第一妇科