linux调试-访问物理地址

1. devmem 方式

root@raspberrypi:/home/niyu# busybox devmem  0x7e215000  8 0xa
root@raspberrypi:/home/niyu# busybox devmem  0x7e215000  8 
0x0A
root@raspberrypi:/home/niyu# busybox devmem  0x7e215000  8 0xb
root@raspberrypi:/home/niyu# busybox devmem  0x7e215000  8 
0x0B
        

2. kgdb 方式

[3]kdb> mdp 0x7e215000 1
phys 0x000000007e215000 000000000000000b ffffffbf00215008   .........P!....

3. devmem 方式备注:

 3.1 kernel 配置

 配置 CONFIG_STRICT_DEVMEM= n

否则会出现如下错误

root@raspberrypi:/usr# sudo busybox devmem 0x7e204000
devmem: mmap: Operation not permitted

    3.2 devmem 制作

        制作方法一. 基于busybox 

下载

        wget https://busybox.net/downloads/busybox-1.35.0.tar.bz2

        tar xf busybox-1.35.0.tar.bz2;cd busybox-1.35.0/

配置

        make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig -j32

        修改为静态连接 Settings [*] Build static binary (no shared libs)

安装

        make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 install -j32

使用

         busybox devmem 0x7e204000

    制作方法2: 手动交叉编译 

        aarch64-linux-gnu-gcc devmem.c -o devmem

/*devmem.c*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <stdint.h>// 定义映射大小和对齐掩码
#define MAP_SIZE 4096UL
#define MAP_MASK (MAP_SIZE - 1)int main(int argc, char **argv) {if (argc < 2) {fprintf(stderr, "Usage: %s <physical_address> [value_to_write]\n", argv[0]);return 1;}// 解析地址和可选的写入值unsigned long target = strtoul(argv[1], NULL, 0);unsigned int write_val = 0;int do_write = 0;if (argc > 2) {write_val = strtoul(argv[2], NULL, 0);do_write = 1;}// 打开 /dev/memint fd = open("/dev/mem", O_RDWR | O_SYNC);if (fd < 0) {perror("Can't open /dev/mem");return 1;}// 映射目标物理地址void *map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, target & ~MAP_MASK);if (map_base == (void *) -1) {perror("Memory map failed");close(fd);return 1;}// 计算指针偏移以访问目标地址void *virt_addr = (char *)map_base + (target & MAP_MASK);unsigned long read_result = *((unsigned long *)virt_addr);// 打印读取的值printf("Value at address 0x%lX (%p): 0x%lX\n", target, virt_addr, read_result);// 如果提供了值参数,则写入if (do_write) {*((unsigned long *)virt_addr) = write_val;printf("Written 0x%X to address 0x%lX (%p)\n", write_val, target, virt_addr);}// 清理资源if (munmap(map_base, MAP_SIZE) == -1) {perror("Memory unmap failed");}close(fd);return 0;
}

 4. kgdb 方式备注

        进入kgdb 

echo "ttyS0,115200" > /sys/module/kgdboc/parameters/kgdboc
echo g > /proc/sysrq-trigger;    

        退出kgdb

[3]kdb> go

root@raspberrypi:/home/niyu# 

         

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

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

相关文章

如何制作个性又美观的二维码?自定义Logo、样式,还能一键复用

草料二维码提供基础的二维码美化设置&#xff0c;包含Logo、颜色、码点码眼、容错、添加文字等设置。 还提供150标签样式&#xff0c;标签样式中所有内容&#xff0c;包括LOGO、背景、字段数量等&#xff0c;均可修改。 同时&#xff0c;支持将样式保存到账号下&#xff0c;方…

磨损对输送带安全的影响

磨损对输送带安全的影响 在工业生产中&#xff0c;输送带作为重要的物流传输设备&#xff0c;广泛应用于煤炭、化工、冶金、电力、建材等多个行业。然而&#xff0c;输送带在使用过程中不可避免地会出现磨损现象&#xff0c;这不仅会影响其使用寿命&#xff0c;还可能对生产安…

vue-router学习3:路由传参方式

路由传参的方式主要有两种&#xff1a;query传参和params传参。 1. Query 传参 首先&#xff0c;在路由配置文件中&#xff08;通常是 router/index.ts&#xff09;&#xff0c;定义你的路由&#xff1a; import { createRouter, createWebHistory } from vue-router; imp…

从递归角度串联二叉树-图论-动态规划

一、深度理解二叉树的前中后序遍历 二叉树遍历框架如下&#xff1a; void traverse(TreeNode* root) {if (root nullptr) {return;}// 前序位置traverse(root->left);// 中序位置traverse(root->right);// 后序位置 }先不管所谓前中后序&#xff0c;单看 traverse 函数…

常见的工业路由器访问问题

A&#xff1a;工业路由器已经设置了pptp怎么访问路由下面的电脑 1. 确认PPTP VPN设置&#xff1a;首先&#xff0c;确保PPTP VPN服务器在工业路由器上已正确设置&#xff0c;并且处于活动状态。这包括确保VPN服务器的IP地址、端口、用户名和密码等设置正确无误。 2. 连接到VP…

硬件24、嘉立创EDA丝印的优化和调整

1、调整全部丝印的属性 先选中一个丝印&#xff0c;然后右键点击它&#xff0c;选择查找&#xff0c;然后选择查找全部 选择查找全部这个时候可以设置所有丝印在元件的位置了&#xff0c;布局-》属性位置&#xff0c;位号&#xff0c;属性位置设置为上边&#xff0c;这时丝印就…

Linux红帽(RHCE)认证学习笔记 - (2)用户组和用户的管理

二、用户组和用户密码和用户组密码管理 ⽤户的添加(useradd) ⽤户的删除(userdel) ⽤户的修改(usermod) ⽤户的查看(查看/etc/passwd) id用户信息都是存放在 /etc/passwd 用户密码都是存放在 /etc/shadow 用户组信息都是存放在 /etc/group 用户组密码都是存放在 /etc/…

五、yolov8 tensorRT c++部署及接口封装(保姆级教程附源码)

采用 CTensorRT来部署深度学习模型有以下几个优点&#xff1a; 高性能推理&#xff1a;TensorRT是一个高性能的深度学习推理&#xff08;Inference&#xff09;优化器&#xff0c;专门为NVIDIA GPU硬件平台设计&#xff0c;能够提供低延迟、高吞吐量的模型推理性能。这意味着在…

深度学习pytorch实战4---猴逗病识别·

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 引言 1.复习上周并反思 K同学针对大家近…

STM32 float浮点数转换成四个字节

float浮点数转换成四个字节 在C或C中&#xff0c;联合体&#xff08;union&#xff09;是一种特殊的数据结构&#xff0c;它允许在相同的内存位置存储不同的数据类型。联合体中的所有成员共享同一块内存区域&#xff0c;这意味着同一时间内&#xff0c;联合体只能保存其中一个…

python爬虫 - 爬取html中的script数据(36kr.com新闻信息)

文章目录 1. 分析页面内容数据格式2. 使用re.findall方法&#xff0c;爬取新闻3. 使用re.search 方法&#xff0c;爬取新闻 1. 分析页面内容数据格式 打开 https://36kr.com/ 按F12&#xff08;或 在网页上右键 --> 检查&#xff08;Inspect&#xff09;&#xff09; 找…

c++初阶——类和对象(中)

大家好&#xff0c;我是小锋&#xff0c;我们今天继续来学习类和对象。 类的6个默认成员函数 我们想一想如果一个类什么都没有那它就是一个空类&#xff0c;但是空类真的什么都没有吗&#xff1f; 其实并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以…

电脑提示丢失iutils.dll怎么办?一分钟教你搞定dll丢失问题

在计算机世界中&#xff0c;DLL&#xff08;Dynamic Link Library&#xff0c;动态链接库&#xff09;文件扮演着至关重要的角色&#xff0c;它们如同乐高积木中的基础模块&#xff0c;不同程序通过调用这些模块来实现各种功能。其中&#xff0c;iutils.dll就是这样一款不可或缺…

transformer 最简单学习3, 训练文本数据输入的形式

1、输入数据中&#xff0c;源数据和目标数据的定义 def get_batch(source,i):用于获取每个批数据合理大小的源数据和目标数据参数source 是通过batchfy 得到的划分batch个 ,的所有数据&#xff0c;并且转置列表示i第几个batchbptt 15 #超参数&#xff0c;一次输入多少个ba…

Java 异常

异常概念 Java异常是程序在执行过程中发生的错误事件&#xff0c;它打断了正常的流程控制流。 在Java中&#xff0c;异常被定义为一种特殊的对象&#xff0c;它们可以被抛出、捕获和处理。以下是关于Java异常的一些详细信息&#xff1a; 异常分类&#xff1a;Java中的异常分…

AI大模型评测问题集合

文章目录 编程能力测试工作场景价值观测试生活场景数学能力测试中文能力测试编程能力测试 第一题:Google 面试题,Python 题目 给定一组不同的整数数组,给出一个算法对这些整数进行随机排序,使每个重 排序方法的可能性相等。换句话说,给定一副牌,你要如何洗牌才能确保牌的…

vue2 mixin的用法

在 Vue 2 中&#xff0c;mixin 是一种分发 Vue 组件中可复用功能的非常灵活的方式。一个 mixin 对象可以包含任意组件选项。当组件使用 mixin 对象时&#xff0c;所有 mixin 对象的选项将被“混合”进入该组件本身的选项。 下面是如何在 Vue 2 中使用 mixin 的基本步骤&#x…

聚类分析字符串数组

聚类分析字符串数组 对多个字符串进行聚类分析旨在根据它们之间的相似度将这些字符串划分成若干个类别&#xff0c;使得同一类别内的字符串彼此相似度高&#xff0c;而不同类别间的字符串相似度低 小结 数据要清洗。清洗的足够准确&#xff0c;可能不需要用聚类分析了数据要…

C++ //练习 13.34 编写本节所描述的Message。

C Primer&#xff08;第5版&#xff09; 练习 13.34 练习 13.34 编写本节所描述的Message。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /*************************************************************************>…

机器学习笔记-01

一…AI&#xff08;人工智能&#xff09; 二.机器学习–是人工智能实现的途径 三.深度学习–是机器学习的一个方法 1.机器学习能做什么&#xff1a; 1.1 传统预测 1.2 图像识别 1.3 自然语言处理&#xff08;nlp&#xff09; 2.数据集包含&#xff1a;特征值 目标值 3.机器学…