GEM5学习(4): 运行全系统模式的ARM系统

详细说明可以见官网 gem5: Extending gem5 for ARM

下载镜像

mkdir -p cpu_tests/benchmarks/bin/arm
cd cpu_tests/benchmarks/bin/arm
wget dist.gem5.org/dist/v22-0/test-progs/cpu-tests/bin/arm/Bubblesort
wget dist.gem5.org/dist/v22-0/test-progs/cpu-tests/bin/arm/FloatMM

构建仿真器

构建arm 的仿真器

scons build/ARM/gem5.opt -j 20

运行脚本

设置环境

export IMG_ROOT=/absolute/path/to/fs_images/

运行脚本

fs 版本就是跑起来有点慢

gem5 的代码工程中有一个简单的simple_bootscript.rcS文件,可用通过 find ./ -name *.rcS 命令找到。有必要的可以把 bootscript的路径改成绝对路径

 ./build/ARM/gem5.opt configs/example/arm/fs_bigLITTLE.py \--caches \--bootloader="$IMG_ROOT/binaries/boot.arm"\--kernel="$IMG_ROOT/binaries/vmlinux.arm"\--disk="$IMG_ROOT/disks/m5_exit.squashfs.arm" \--bootscript=./util/dist/test/simple_bootscript.rcS

下面是不分输出日志

==== m5 terminal: Terminal 0 ====
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.18.0+ (arm-employee@arm-computer) (gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1)) #1 SMP PREEMPT Wed Nov 6 14:11:58 GMT 2019
[    0.000000] CPU: ARMv7 Processor [410fc0f0] revision 0 (ARMv7), cr=14c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[    0.000000] OF: fdt: Machine model: V2P-CA15
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] earlycon: pl11 at MMIO 0x1c090000 (options '')
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.18.0+ (arm-employee@arm-computer) (gcc version 7.4.0 (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1)) #1 SMP PREEMPT Wed Nov 6 14:11:58 GMT 2019
[    0.000000] CPU: ARMv7 Processor [410fc0f0] revision 0 (ARMv7), cr=14c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[    0.000000] OF: fdt: Machine model: V2P-CA15
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] earlycon: pl11 at MMIO 0x1c090000 (options '')
[    0.000000] bootconsole [pl11] enabled
[    0.000000] bootconsole [pl11] enabled
[    0.000000] Truncating memory at 0x80000000 to fit in 32-bit physical address space
[    0.000000] Truncating memory at 0x80000000 to fit in 32-bit physical address space
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] cma: Reserved 16 MiB at 0xfec00000
[    0.000000] cma: Reserved 16 MiB at 0xfec00000
[    0.000000] On node 0 totalpages: 524287
[    0.000000] On node 0 totalpages: 524287
[    0.000000]   Normal zone: 2862 pages used for memmap
[    0.000000]   Normal zone: 2862 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 325632 pages, LIFO batch:31
[    0.000000]   Normal zone: 325632 pages, LIFO batch:31
[    0.000000]   HighMem zone: 198655 pages, LIFO batch:31
[    0.000000]   HighMem zone: 198655 pages, LIFO batch:31
[    0.000000] random: get_random_bytes called from start_kernel+0xa0/0x494 with crng_init=0
[    0.000000] random: get_random_bytes called from start_kernel+0xa0/0x494 with crng_init=0
[    0.000000] percpu: Embedded 18 pages/cpu @(ptrval) s41292 r8192 d24244 u73728
[    0.000000] percpu: Embedded 18 pages/cpu @(ptrval) s41292 r8192 d24244 u73728
[    0.000000] pcpu-alloc: s41292 r8192 d24244 u73728 alloc=18*4096
[    0.000000] pcpu-alloc: s41292 r8192 d24244 u73728 alloc=18*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1
[    0.000000] pcpu-alloc: [0] 0 [0] 1
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 521425
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 521425
[    0.000000] Kernel command line: earlyprintk earlycon=pl011,0x1c090000 console=ttyAMA0 lpj=19988480 norandmaps loglevel=8 mem=2GiB root=/dev/vda1 rw init=/sbin/init vmalloc=768MB
[    0.000000] Kernel command line: earlyprintk earlycon=pl011,0x1c090000 console=ttyAMA0 lpj=19988480 norandmaps loglevel=8 mem=2GiB root=/dev/vda1 rw init=/sbin/init vmalloc=768MB
[    0.000000] Dentry cache hash table entries: 262144 (order: 8, 1048576 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 8, 1048576 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Memory: 2048700K/2097148K available (8192K kernel code, 447K rwdata, 1732K rodata, 1024K init, 167K bss, 32064K reserved, 16384K cma-reserved, 778236K highmem)
[    0.000000] Memory: 2048700K/2097148K available (8192K kernel code, 447K rwdata, 1732K rodata, 1024K init, 167K bss, 32064K reserved, 16384K cma-reserved, 778236K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xd0000000 - 0xff800000   ( 760 MB)
[    0.000000]     lowmem  : 0x80000000 - 0xcf800000   (1272 MB)
[    0.000000]     pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
[    0.000000]     modules : 0x7f000000 - 0x7fe00000   (  14 MB)
[    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (9184 kB)
[    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
[    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   ( 448 kB)
[    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 168 kB)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xd0000000 - 0xff800000   ( 760 MB)
[    0.000000]     lowmem  : 0x80000000 - 0xcf800000   (1272 MB)
[    0.000000]     pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
[    0.000000]     modules : 0x7f000000 - 0x7fe00000   (  14 MB)
[    0.000000]       .text : 0x(ptrval) - 0x(ptrval)   (9184 kB)
[    0.000000]       .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
[    0.000000]       .data : 0x(ptrval) - 0x(ptrval)   ( 448 kB)
[    0.000000]        .bss : 0x(ptrval) - 0x(ptrval)   ( 168 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=32 to nr_cpu_ids=2.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=32 to nr_cpu_ids=2.
[    0.000000] 	Tasks RCU enabled.
[    0.000000] 	Tasks RCU enabled.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] 	Offload RCU callbacks from CPUs: (none).
[    0.000000] 	Offload RCU callbacks from CPUs: (none).
[    0.000000] clk_gem5_energy_ctrl: No cpu-map in DT! Falling back to old detection method!
[    0.000000] clk_gem5_energy_ctrl: No cpu-map in DT! Falling back to old detection method!
[    0.000000] clk_gem5_energy_ctrl: No clusters in DT! Falling back to using CPU topology!
[    0.000000] clk_gem5_energy_ctrl: No clusters in DT! Falling back to using CPU topology!
[    0.000002] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000002] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.000236] arch_timer: cp15 and mmio timer(s) running at 25.16MHz (virt/virt).
[    0.000236] arch_timer: cp15 and mmio timer(s) running at 25.16MHz (virt/virt).
[    0.000363] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5cdd39714, max_idle_ns: 440795202620 ns
[    0.000363] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x5cdd39714, max_idle_ns: 440795202620 ns
[    0.000547] sched_clock: 56 bits at 25MHz, resolution 39ns, wraps every 4398046511084ns
[    0.000547] sched_clock: 56 bits at 25MHz, resolution 39ns, wraps every 4398046511084ns
[    0.000684] Switching to timer-based delay loop, resolution 39ns
[    0.000684] Switching to timer-based delay loop, resolution 39ns
[    0.000860] Console: colour dummy device 80x30
[    0.000860] Console: colour dummy device 80x30
[    0.000941] Calibrating delay loop (skipped) preset value.. 9994.24 BogoMIPS (lpj=19988480)
[    0.000941] Calibrating delay loop (skipped) preset value.. 9994.24 BogoMIPS (lpj=19988480)
[    0.001084] pid_max: default: 32768 minimum: 301
[    0.001084] pid_max: default: 32768 minimum: 301
[    0.001213] Mount-cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.001213] Mount-cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.001342] Mountpoint-cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.001342] Mountpoint-cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.001687] CPU: Testing write buffer coherency: ok
[    0.001687] CPU: Testing write buffer coherency: ok
[    0.001776] CPU0: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[    0.001776] CPU0: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[    0.002033] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.002033] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.024250] Setting up static identity map for 0x80100000 - 0x80100060
[    0.024250] Setting up static identity map for 0x80100000 - 0x80100060
[    0.032237] Hierarchical SRCU implementation.
[    0.032237] Hierarchical SRCU implementation.
[    0.048255] smp: Bringing up secondary CPUs ...
[    0.048255] smp: Bringing up secondary CPUs ...

上面的这些输出需要通过串口模拟器的才能看到

cd util
make 
./util/term/m5term 3456

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95980.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快捷:常见ocr学术数据集预处理版本汇总(适配mmocr)

快捷:常见ocr学术数据集预处理版本汇总(适配mmocr)快捷:常见ocr学术数据集预处理版本汇总(适配mmocr)状态指标验证快捷:常见ocr学术数据集预处理版本汇总(适配mmocr) 状…

从抽象到实现:Elasticsearch数据类型及其底层Lucene数据结构的深度解析

第一部分:Lucene基础:核心索引结构Elasticsearch的强大功能根植于其核心——Apache Lucene,一个高性能、功能完备的搜索引擎库 1。要深入理解Elasticsearch如何处理各种数据类型,首先必须剖析构成Lucene索引的三个基本数据结构&am…

Claude Code核心功能操作指南

(一)核心交互面板:认识操作界面 登录后进入 Claude Code 主界面,核心区域分为三部分,各模块功能清晰:可以通过 注册免费体验。左侧导航栏:包含 “新建任务”“历史记录”“收藏夹”“帮助中心”…

数据仓库进化:Agent驱动数智化新范式

目录 回顾:从 "人为中心" 的数仓,到大数据与云数仓的进化 AI Agent 成为数据的 "新用户" Agentic Data Stack 如何打破低效与内耗 企业数智化的新范式 案例与趋势展望 所有软件都会被 Agent 改写一遍 经过半个世纪的数据仓库发…

什么是shellcode

好的,我们来详细地解释一下什么是 Shellcode。核心定义Shellcode 是一段精炼的、用作有效载荷(Payload) 的机器代码。它之所以叫这个名字,是因为最初这类代码的唯一目的就是启动一个命令行 Shell(例如 /bin/sh&#xf…

线性代数 | 行图像 / 列图像

注:本文为 “线性代数 | 行图像 / 列图像” 相关合辑。 图片清晰度受引文原图所限。 略作重排,未整理去重。 如有内容异常,请看原文。 MIT 线性代数笔记一 行图像和列图像 线性代数行图像与列图像解析 herosunly 已于 2022-01-25 15:34:26 …

Batch Normalization:深度学习中的“加速器”与“稳定器”

在深度学习的世界里,神经网络的训练常常充满了挑战。从复杂的梯度问题到漫长的收敛过程,每一个环节都可能成为阻碍我们前进的绊脚石。而今天,我们要深入探讨的 BatchNormalizationBatch NormalizationBatchNormalization(批量归一…

软考备考①

一、数值及其转换和数据的表示1、数值及其转换①任意进制到十进制以二进制为例,以小数点做分割,小数点以左从二的零次方开始,小数点以右从二的负一次方开始。②十进制到任意进制利用短除法③二进制到十六进制分为小数点前和小数点后&#xff…

小程序缓存数据字典

import { getDict } from /api/profile;const CACHE_KEY DICT_CACHE;let dictCache new Map();// 初始化时加载缓存const loadCache () > {const cache uni.getStorageSync(CACHE_KEY);if (cache) {dictCache new Map(JSON.parse(cache));}};// 保存缓存到Storageconst…

Java对象在内存中的布局详解

1、Java 对象内存布局(HotSpot 虚拟机)在 ​HotSpot 虚拟机​ 中,一个 Java 对象在堆内存中的存储布局可以分为以下几个部分:1、对象头(Object Header)​对象头是对象内存布局中最重要的部分之一&#xff0…

钾元素:从基础认知到多元应用与前沿探索

一、钾元素的基础认知1.1 钾元素的发现历程在人类历史的长河中,钾的化合物早早就进入了人们的视野,并在生活和生产中得到了应用。古代时期,人们就知晓草木灰里含有钾草碱,即碳酸钾 。在日常的洗涤活动中,碳酸钾发挥了重…

JAiRouter 配置文件重构纪实 ——基于单一职责原则的模块化拆分与内聚性提升

JAiRouter 配置文件重构纪实 ——基于单一职责原则的模块化拆分与内聚性提升 文章目录JAiRouter 配置文件重构纪实 ——基于单一职责原则的模块化拆分与内聚性提升一、背景:单体 YAML 的“熵增”困境二、重构策略:高内聚、低耦合的模块化方案2.1 拆分原则…

惊!printf 不往屏幕输?都是 fd 在搞鬼!爆肝拆解 Linux 文件描述符 + 重定向底层,学会直接在终端横着走

文 章 目 录一、文 件1、基 础 知 识2、C 文 件 接 口(1)代 码 示 例(2)当 前 路 径(3)文 件 权 限(4)w(5)a(6)三 个 输 入 输 出 流3…

【高分论文密码】大尺度空间模拟与不确定性分析及数字制图技术应用

大尺度模拟技术能够从不同的时空尺度揭示农业生态环境领域的内在机理和时空变化规律,为复杂过程模型的模拟提供技术基础。一:R语言空间数据及数据挖掘关键技术1、R语言空间数据讲解及应用特点 1)R语言基础与数据科学 2)R空间矢量数据 3)R栅格数据2、R语言…

Git 工作流与分支管理实战:rebase vs merge 对比、冲突解决、规范 Commit Message 与主干稳定性最佳实践

1. 版本控制与协作流程(Git 工作流、分支管理、合并冲突) 虽然 Git 用得多,但“rebase vs. merge”、如何解决冲突、如何编写规范的 commit message、如何维护主干的稳定性,都需要一段时间才能形成体系化的理解。 摘要 在日常团队…

调试 cuda kernel

调试 CUDA Kernel 并进入 __device__ 函数是 CUDA 开发中一项非常重要的技能。这主要依赖于 NVIDIA 的官方调试器 NVIDIA Nsight Systems (用于系统级分析) 和 NVIDIA Nsight Compute (用于内核级分析) 以及经典的 cuda-gdb (命令行调试器)。 这里将重点介绍两种最常用和强大的…

GD32自学笔记:4.ADC

while(1)里测试ADC是否正常首先,ADC引脚说明如下:ADC 通道引脚描述ADC_CHANNEL_0PA0端口 A 的引脚 0,可用于模拟信号输入,如传感器或外部电压。ADC_CHANNEL_1PA1端口 A 的引脚 1,常用于模拟输入,适用于一般…

渐变背景色和渐变字体颜色的实现方法

一、渐变背景色&#xff08;Gradient Background&#xff09;1. 线性渐变&#xff08;Linear Gradient&#xff09;通过 linear-gradient 创建从一种颜色到另一种颜色的线性渐变。代码示例<div class"linear-gradient"></div><style> .linear-grad…

Wi-Fi技术——传播与损耗

一、频段和信道 Wi-Fi通过发射无线电进行传输&#xff0c;而无线电的一个重要特性是频率。 频段&#xff1a;一个大的频率范围&#xff0c;如Wi-Fi工作在2.4GHz、5GHz、6GHz&#xff0c;其并不是一个值&#xff0c;而是一个范围信道&#xff1a;在每个频段中划分小的频率范围…

【Mysql-installer-community-8.0.26.0】Mysql 社区版(8.0.26.0) 在Window 系统的默认安装配置

ℹ️大家好&#xff0c;我是练小杰&#xff0c;好久不见了&#xff0c;周末愉快&#xff0c;今天周六了&#xff01;&#xff01;做了CSDN博客才发现&#xff0c;坚持不断发文是那么的困难&#xff0c;大家都是好样的&#xff01;&#xff01;&#x1f606; 本文是针对 Mysql 的…