mac m1调试aarch64 android kernel最终方案

问题

这是之前的,调试android kernel的方案还是太笨重了
完美调试android-goldfish(linux kernel) aarch64的方法

然后,看GeekCon AVSS 2023 Qualifier,通过
sdk-repo-linux_aarch64-emulator-8632828.zip 进行启动
完整编译的aosp + kernnl,和 android studio下载的镜像可以正常调试,自己编译的就是不行,总是报错
在这里插入图片描述

在mac m1上调试,可以查看内存信息,但是一下断点,就报错
在这里插入图片描述
搜不出原因,仅Can't get kernel version from the kernel image file,说是emulator版本低了

解决

下载最新版本的sdk-repo-linux_aarch64-emulator就可以了
网址

https://ci.android.com/builds/branches/aosp-emu-master-dev/grid?

在这里插入图片描述
在这里插入图片描述

效果

在这里插入图片描述

使用

在mac m1中的aarch64 ubuntu22.04中

#!/bin/bash
set -exfunction LOG() {echo -e "\e[96m LOG : $1 \e[0m"
}
function INFO() {echo -e "\e[40;38;5;82m INFO: $1 \e[0m"
}
function ERROR() {echo -e "\e[41m ERROR: $1 \e[0m"
}if [ $# -lt 2 ] || [ "$1" == "" ]; thenERROR "Usage: bash $0 emulator_path imgs_path"exit 1
fiemulator_path=$1
imgs_path=$2
args=${@:3}INFO "emulator_path: $emulator_path"
INFO "imgs_path: $imgs_path"
# INFO "args: $args"set +e
ps -e | grep "qemu"
if [ -z $? ]; thenecho "Killing prior emulator"pkill qemusleep 3
elseecho "No prior emulator"
fi
set -eif [ ! -d ~/.android ]; thenmkdir ~/.android
fi
if [ ! -f ~/.android/advancedFeatures.ini ]; thenecho "Vulkan = off" >> ~/.android/advancedFeatures.iniecho "GLDirectMem = on" >> ~/.android/advancedFeatures.ini
fiif [ ! -d $imgs_path ]; thenif [ ! -f /root/A*.zip ]; thenERROR "No images"exit 1fizipfile=$(realpath /root/A*.zip)unzip $zipfile -d /root/# unzipfile=$(realpath /root/mnt/wd2/buildout/*/*/files)# mv $unzipfile /root/
fiif [ ! -d $emulator_path ]; thenemuzip=$(realpath /root/*emulator*.zip)unzip $emuzip -d /root/
fiif [ ! -d "$1" ]; thenERROR "Path not exsit"exit 1
fifunction runemu() {DIR=$imgs_pathexport ANDROID_PRODUCT_OUT=$DIRexport ANDROID_BUILD_TOP=$DIRcd $DIR$emulator_path/emulator -system $DIR/system.img -data $DIR/userdata.img -ramdisk $DIR/ramdisk.img -kernel $DIR/kernel-ranchu -cache $DIR/cache.img -vendor $DIR/vendor.img -sysdir $DIR \-writable-system \-no-window  \-verbose \-show-kernel \-no-cache \-no-snapstorage \-no-audio \-no-snapshot \-wipe-data \-accel on -netdelay none -no-sim \-qemu -s -S -append 'nokaslr' -no-reboot \-cpu max -machine gic-version=max# -no-snapshot-save \
# -no-snapshot-load \# PID=$!# python3 /root/emuinit.py  >> /root/1.log 2>&1 &# INFO "DONE"
}runemu# while true; do
#   tail -n 10 /tmp/qemu.log | while read line; do
#     if [[ $line == *"Kernel panic"* ]]; then
#         if ps -p $PID > /dev/null; then
#             kill -9 $PID
#         fi
#     fi  
#   done#   if ! ps -p $PID > /dev/null; then
#     echo "Process exited unexpectedly, restarting" 
#     runemu
#     sleep 10
#   fi
#   sleep 3
# done# bash runemu.sh /root/emulator/ /root/mnt/wd2/buildout/2023-06-16-06-44-59/12/files/arm64-v8a/
# bash /root/runemu.sh /root/emulator/ /root/arm64-v8a/
runemu.sh /root/emulator/ /root/arm64-v8a/

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

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

相关文章

51单片机学习(4)-----独立按键进一步控制LED灯

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 目录 一. 独立按键灵活控制LED 程序一:单个独立按键控制多个…

Web性能优化-详细讲解与实用方法-MDN文档学习笔记

Web性能优化 查看更多学习笔记:GitHub:LoveEmiliaForever MDN中文官网 性能优良的网站能够提高访问者留存和用户满意度,减少客户端和服务器之间传输的数据量可降低各方的成本 不同的业务目标和用户需求需要不同的性能度量,要提高…

STM32CubeMX FOC工程配置(AuroraFOC)

一. 简介 哈喽,大家好,今天给大家带来基于AuroraFOC开发板的STM32CubeMX的工程配置,主要配置的参数如下: 1. 互补PWM输出 2. 定时器注入中断ADC采样 3. SPI配置 4. USB CDC配置 5. RT Thread配置 大家如果对这几部分感兴趣的话&#xff0c…

贪婪算法入门指南

想象一下,你在玩一款捡金币的游戏。在这个游戏里,地图中散布着各种大小不一的金币,而你的目标就是尽可能快地收集到最多的金币。你可能会采取一个直观的策略:每次都去捡最近的、看起来最大的金币。这种在每一步都采取局部最优解的…

新版Java面试专题视频教程——虚拟机篇①

新版Java面试专题视频教程——虚拟机篇① 1 JVM组成1.1 JVM由那些部分组成,运行流程是什么?1.2 什么是程序计数器?1.3 你能给我详细的介绍Java堆吗?1.3.1 1.7和1.8 堆的区别1.3.2 元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.4.1 堆和栈的区…

普中51单片机学习(AD转换)

AD转换 分辨率 ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V1/(2^12 )2.4mV。 量化误差 …

【Kafka】消息重复场景及解决

目录 生产者阶段重复根本原因过程记录顺序问题解决方案 生产者和broker阶段消息丢失原因解决 消费者阶段重复根本原因解决 生产者阶段重复 根本原因 生产发送的消息没有收到正确的broke响应,导致生产者重试。 生产者发出一条消息,broke落盘以后因为网…

linux drm mipi dsi lcd 点屏之设备树配置

linux drm mipi dsi lcd 点屏之设备树配置 设备树文档: https://elixir.bootlin.com/linux/v6.8-rc5/source/Documentation/devicetree/bindings/display/dsi-controller.yaml https://elixir.bootlin.com/linux/v6.8-rc5/source/Documentation/devicetree/binding…

网络安全笔记总结

IAE引擎 1.深度检测技术--DFI和DPI技术 DFI和DPI都是流量解析技术,对业务的应用、行为及具体信息进行识别,主要应用于流量分析及流量检测。 DPI:深度包检测技术 DPI是一种基于应用层的流量检测和控制技术,对流量进行拆包&#x…

我花了5天时间,开发了一个在线学习的小网站

大三寒假赋闲在家,闲来无事,用了5天时间做了一个在线学习的小网站,一鼓作气部署上线,制作的过程比较坎坷。内心经历过奔溃,也经历过狂喜。 按照惯例先放出网址,欢迎大家来访问学习:www.pbjlove…

LabVIEW串口通信的激光器模块智能控制

LabVIEW串口通信的激光器模块智能控制 介绍了通过于LabVIEW的VISA串口通信技术在激光器模块控制中的应用。通过研究VISA串口通信的方法和流程,实现了对激光器模块的有效控制,解决了数据发送格式的匹配问题,为激光器模块的智能控制提供了一种…

【Nginx】微信小程序后端开发、一个域名访问多个服务

【Nginx】微信小程序后端开发、一个域名访问多个服务 1. 微信小程序后端开发 对于后端程序员,其实你们的职责就是干老本行,即写接口和服务,让前端能够访问你的接口就行,必要时需要查看微信小程序开发文档去向微信服务器发请求。…

c#高级——插件开发

案例:WinForm计算器插件开发 1.建立插件库,设置各种自己所需的插件组件 如下图所示:进行了计算器的加减法插件计算组件 Calculator_DLL为总插件父类 Calculator_DLL_ADD 为插件子类的控件对象 Calculator_DLL_Sub Calculator_DLL_Factory 为…

即时设计和Axure对比,哪一个好用?

无论是国外页面设计工具,页面设计工具的发展从来没有停滞过, Axure,无论是国产设计工具即时设计,其功能都在不断更新迭代,为设计带来更高效的设计体验。今天对比两个设计工具,帮你找到最适合自己的&#xf…

用友NC65与用友NCC对接集成NC65-凭证列表查询打通凭证新增

用友NC65与用友NCC对接集成NC65-凭证列表查询打通凭证新增 数据源平台:用友NC65 用友NC是为集团与行业企业提供的全线管理软件产品,由亚太本土最大的企业管理软件提供商用友公司研发提供,用友NC率先采用J2EE架构和先进开放的集团级开发平台UAP&#xff0…

计算机网络-无线通信网

1.各种移动通信标准 1G:第一代模拟蜂窝:频分双工FDD。2G:第二代数字蜂窝 I.GDM(全球移动通信)采用TDMA。II.CDMA(码分多址通信)。2.5G:第2.5代通用分组无线业务GPRS。2.75G&#xf…

C语言-指针详解速成

1.指针是什么 C语言指针是一种特殊的变量,用于存储内存地址。它可以指向其他变量或者其他数据结构,通过指针可以直接访问或修改存储在指定地址的值。指针可以帮助我们在程序中动态地分配和释放内存,以及进行复杂的数据操作。在C语言中&#…

Redis篇之Redis持久化的实现

持久化即把数据保存到可以永久保存的存储设备当中(磁盘)。因为Redis是基于内存存储数据的,一旦redis实例当即数据将会全部丢失,所以需要有某些机制将内存中的数据持久化到磁盘以备发生宕机时能够进行恢复,这一过程就称…

链表和顺序表的优劣分析及其时间、空间复杂度分析

链表和顺序表的优劣分析及其时间、空间复杂度分析 一、链表和顺序表的优劣分析二、算法复杂度<font face "楷体" size 5 color blue>//上面算法的执行次数大致为&#xff1a;F&#xff08;N&#xff09; N^22*N10;   N 10,F(10) 1002010 130次   N 1…