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

寄存器调试 (1):应用层基于shell命令访问

1.   打印单个寄存器

(1) 启动linux内核, 进入shell界面

(2) 执行”cd /sys/class/sunxi_dump”

(3) 执行”echo 0xf1c20000 > dump”

(4) 执行"cat dump", 查看寄存器值:

 

2. 打印一段连续寄存器

(1) 启动linux内核, 进入shell界面

(2) 执行”cd /sys/class/sunxi_dump”

(3) 执行”echo 0xf1c20004,0xf1c20058 > dump”

(4) 执行"cat dump", 查看寄存器值:

说明:

1)   ”echo 0xf1c20004,0xf1c20058 > dump”中, 逗号紧接着数字, 前后不能有空格或其他字符.

2)   为方便查看, 每行从16字节对齐的地址开始打印, 多余位置以空格补齐(如上图).

 

3. 比较单个寄存器值

假设需要比较0xf1c20010寄存器值与期望值是否一致. 则:

(1) 启动linux内核, 进入shell界面

(2) 执行”cd /sys/class/sunxi_dump”

(3) 执行”echo 0xf1c20010 0x03006007 0x03000007 > compare”.

(4) 执行"cat compare"查看比较结果.

参数说明:

1)   三个数字的含义:

0xf1c20010: 寄存器虚拟地址.

0x03006007: 用户期望的寄存器值.

0x03000007: 掩码, 表明用户关心的位. 比如0x03000007表示用户只关心bit0, bit1, bit2, bit24, bit25,

其他的位不影响比较结果。

2)   数字之间有且仅有一个空格, 不能有多余字符.

如“echo 0xf1c20010,0x03006007 0x03000007 > compare”,

”echo 0xf1c20010  0x03006007 0x03000007 > compare”均不正确.

 

执行结果:

 

(1) reg, expect, actual, mask, result栏分别对应寄存器地址, 期望值(用户输入), 实际值(程序读取), 掩码

 (用户输入), 比较结果(程序计算出).

(2) 关于result: 若(expect&mask) == (actual&mask), 则result为OK, 表示寄存器值与期望相符;

否则result为ERR.

 

4. 比较一组寄存器值

假设需要比较0xf1c20010, 0xf1c20020, 0xf1c20028三个寄存器值. 则:

(1) 启动linux内核, 进入shell界面

(2) 执行”cd /sys/class/sunxi_dump”

(3) 执行”echo 0xf1c20010 0x03006207 0x03006207,0xf1c20020 0x00001000 0x00001000,

0xf1c20028 0x80000000 0x80000000 > compare”.

(4) 执行"cat compare"查看比较结果.

参数说明:

1)   相邻两组参数之间用逗号隔开, 逗号前后不能有多余空格或其他字符.

如”echo 0xf1c20010 0x03006207 0x03006207, 0xf1c20020 0x00001000 0x00001000 ,0xf1c20028

0x80000000 0x80000000 > compare”不正确. 因为逗号前后有空格.

2)   和上节一样, 同组参数内相邻数字之间有且仅有一个空格, 不能有多余字符.

如”echo 0xf1c20010 0x03006207  0x03006207,0xf1c20020 0x00001000 0x00001000,0xf1c20028

0x80000000 0x80000000 > compare”不正确. 因为红色标记处有两个空格.

3)   和上节一样, 同组参数内三个数字分别表示寄存器地址, 期望值, 掩码.

执行结果:

 

5. 写单个寄存器值

假设需要将0xf1c20800寄存器写0x00000031. 则:

(1) 启动linux内核, 进入shell界面

(2) 执行”cd /sys/class/sunxi_dump”

(3) 执行”echo 0xf1c20800 0x00000031 > write”。

(4) 执行”cat write”查看写结果.

参数说明:

1)   数字含义:

0xf1c20800: 寄存器虚拟地址.

0x00000031: 待写的值.

2)   数字之间有且仅有一个空格, 不能有多余字符. 如”echo 0xf1c20800,0x00000031 > write”,

”echo 0xf1c20800  0x00000031 > write”均不正确.

reg, to_write, after_write分别对应寄存器地址, 写入的值, 写完读出的值.

 

6. 写一组寄存器值

假设需要将0xf1c20800,0xf1c20818寄存器分别写0x00000031,0x55555555. 则:

(1) 启动linux内核, 进入shell界面

(2) 执行”cd /sys/class/sunxi_dump”

(3) 执行”echo 0xf1c20800 0x00000031,0xf1c20818 0x55555555 > write”.

相邻两组参数之间用逗号隔开, 逗号前后不能有多余空格或其他字符.

如”echo 0xf1c20800 0x00000031, 0xf1c20818 0x55555555 > write”不正确. 因为逗号前后有空格.

(4) 执行”cat write”查看写结果.

执行结果:

reg, to_write, after_write分别对应寄存器地址, 写入的值, 写完读出的值.

 

转载于:https://www.cnblogs.com/zhangyin-ethan/p/7487278.html

相关文章:

  • 谱聚类实例
  • postgresql update returning
  • 其实吧,360的开发,素质也没高到哪去,看代码就看出来了
  • 判断js数据类型
  • Linux上给不是管理员的用户增加安装软件的权限
  • 【已解决】项目加载失败,Web应用程序项目XX已配置为使用IIS
  • JDBC连接数据库:单线程、多线程、批处理插入数据的对比
  • VS2015 +EF6 连接MYSQL数据库生成实体
  • CF 840 D
  • 初识oracle存储过程
  • 大数据竞赛平台Kaggle案例实战
  • 我的Hibernate学习记录(一)
  • Java 读写Properties配置文件
  • 输出斐波那契数列前20项,每输出5个数换行
  • MySQL5.6安装步骤
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Android开源项目规范总结
  • go append函数以及写入
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java 内存分配及垃圾回收机制初探
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript对象详解
  • Laravel 中的一个后期静态绑定
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • oschina
  • PHP的类修饰符与访问修饰符
  • windows-nginx-https-本地配置
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 如何设计一个比特币钱包服务
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 数组的操作
  • 双管齐下,VMware的容器新战略
  • 字符串匹配基础上
  • 白色的风信子
  • ​比特币大跌的 2 个原因
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • $.ajax中的eval及dataType
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (三分钟)速览传统边缘检测算子
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .net 提取注释生成API文档 帮助文档
  • .net 托管代码与非托管代码
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET面试题(二)
  • .NET中GET与SET的用法
  • @EnableAsync和@Async开始异步任务支持