首页 > 其他分享 >20230826 使用qemu boot gdb

20230826 使用qemu boot gdb

时间:2023-08-26 15:56:20浏览次数:45  
标签:aarch64 text kernel8 boot gdb qemu

macOS:

brew install qemu

qemu-system-aarch64 --version

去  https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads  下载交叉编译工具链

 

PREFIX=/Applications/ArmGNUToolchain/12.3.rel1/aarch64-none-elf/bin/aarch64-none-elf-

参考 https://github.com/rlepigre/bare-metal-aarch64/tree/master/step-01   

boot.S

// The entry point is in its own section ".text.boot".
.section ".text.boot"

// The symbol "_start" is the kernel's entry point, make it global.
.global _start

// Entry point for the main core.
_start:
  b .

kernel8.ld

/* Entry point defined in file "boot.S". */
ENTRY(_start)
 
SECTIONS {
  /* Our kernel image will be placed at address 0x80000. */
  . = 0x80000;
  /* It starts with the ".text" segment. */
  .text : {
    /* The ".text" segment itself starts with the code from "boot.S". */
    /* The "_start" symbol (at the beginning of "boot.S") is at 0x80000. */
    *(.text.boot)
  }
}

  Makefile

BINROOT=/Applications/ArmGNUToolchain/12.3.rel1/aarch64-none-elf/bin/aarch64-none-elf-
.PHONY: all
all: kernel8.img

boot.o: boot.S
	${BINROOT}as -c $< -o $@

kernel8.elf: kernel8.ld boot.o
	${BINROOT}ld -T $< -o $@ $(filter-out $<,$^)

kernel8.img: kernel8.elf
	${BINROOT}objcopy -O binary $< $@

.PHONY: clean
clean:
	@rm -f boot.o
	@rm -f kernel8.elf
	@rm -f kernel8.img

  

 

 

 

qemu-system-aarch64 -machine help  查看支持的物理机类型

 没找到 rock5b 。。。。选择类似的  cubieboard           cubietech cubieboard (Cortex-A8)

#qemu-system-aarch64 -M raspi3 -nographic -kernel kernel8.img

qemu-system-aarch64 -M cubieboard -nographic -kernel kernel8.img  当然不会显示什么,终端还会一直挂起。。。

使用GDB:

 

.PHONY: run-gdb
run-gdb: kernel8.img
        @echo "[QEMU]    running with $<"
        @echo "(Press Ctrl-A X to exit QEMU.)"
        ${Q}qemu-system-aarch64 -s -S -M cubieboard -nographic -kernel $<

.PHONY: gdb
gdb: kernel8.elf
        @echo "[GDB]     running with $<"
        ${Q}${BINROOT}gdb -ex "target remote :1234" $<

  make run-gdb

 新终端 make gdb

 出错,将-M 机器改为 raspi3b 后得到一样的结果

 

 

标签:aarch64,text,kernel8,boot,gdb,qemu
From: https://www.cnblogs.com/yangdinshan/p/17658891.html

相关文章

  • 基于springboot的图书馆管理系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了疫情下图书馆管理系统的开发全过程。通过分析疫情下图书馆管理系统管理的不足,创建了一个计算机管理疫情下图书馆管理系统的方案。文章介绍了疫情下图书馆管理系统的系统分析部分,包括可......
  • 基于springboot编程训练系统设计与实现
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足,创建了一个计算机管理编程训练系统的方案。文章介绍了编程训练系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了......
  • SpringBoot集成shiro权限安全框架
    在java开发中常用到两个权限安全框架,一是spring security,二是shiro。两者区别是spring security是针对spring和springboot项目的权限安全框架,而shiro则对环境无特别要求,可用于多种开发环境,并且相对简单,入门更加容易。本次主要就是分享shiro框架下对项目权限实现细粒度的划分,以及......
  • 基于springboot框架的网上商城系统的设计与实现
    系统实现系统实现部分就是将系统分析,系统设计部分的内容通过编码进行功能实现,以一个实际应用系统的形式展示系统分析与系统设计的结果。前面提到的系统分析,系统设计最主要还是进行功能,系统操作逻辑的设计,也包括了存储数据的数据库方面的设计等内容,系统实现就是一个最终的实施阶段,将......
  • 基于springboot中药实验管理系统设计与实现
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了中药实验管理系统的开发全过程。通过分析中药实验管理系统管理的不足,创建了一个计算机管理中药实验管理系统的方案。文章介绍了中药实验管理系统的系统分析部分,包括可行性分析等,系统设......
  • 基于springboot汽车资讯网站
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车资讯网站的开发全过程。通过分析汽车资讯网站管理的不足,创建了一个计算机管理汽车资讯网站的方案。文章介绍了汽车资讯网站的系统分析部分,包括可行性分析等,系统设计部分主要介绍了......
  • OpenSBI 中的 coolboot & warmboot
    coolboot&warmboot这里的coolboot和warmboot并不是传统意义上的热启动和冷启动,所以经常会造成误解。在OpenSBI的issue中,找到了以下对话:从这里的对话中我们可以清楚地得知,OpenSBI中的coolboot和warmboot不代表传统意义上的热启动和冷启动。而是“完全初始化”......
  • Spring Boot 的约定优于配置
    3.首先,约定优于配置是一种软件设计的范式,它的核心思想是减少软件开发人员对于配置项的维护,从而让开发人员更加聚焦在业务逻辑上。4.SpringBoot就是约定优于配置这一理念下的产物,它类似于Spring框架下的一个脚手架,通过SpringBoot,我们可以快速开发基于Spring生态下的......
  • 关于SpringBoot中出现的循环依赖问题
    环境:SpringBoot2.7.8背景:在增加出库订单时需要对物品表的的数量进行修改因此我在OutboundController中创建了几个公共方法,并将其注入到Spring中,结果给我报了这一串错误。Description:Thedependenciesofsomeofthebeansintheapplicationcontextfo......
  • 原来你是这样的SpringBoot--Async异步任务
    本节我们一起学习一下SpringBoot中的异步调用,主要用于优化耗时较长的操作,提高系统性能和吞吐量。一、新建项目,启动异步调用首先给启动类增加注解@EnableAsync,支持异步调用@EnableAsync@SpringBootApplicationpublicclassCathySpringbootDemoApplication{publicstat......