首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

汇编调试方式之:通过串口转义输出寄存器

前两天在调试DragonOSriscv引导代码时候,想在真机上获取寄存器,就找到了这篇帖子,非常有用,就把里面的代码提取出来,在此记录。...因为在汇编里面难以对字符串进行格式化操作,因此可以考虑把寄存器转义一下,然后输出到串口,再使用一个C程序把它转义回来。...方法如下: 编码函数 首先在汇编里面定义这样一个函数: // 要打的输入到a0 __do_show_val: // todo: 为了保护寄存器,这里应当添加压栈操作, // 把函数使用到寄存器都保存一下...,就把要打印寄存器,移动到a0,然后call这个函数即可。.../show Enter:PAAAIFPDAAAAAAAA 000000003F58000F Enter: 所以我们可以看到这个寄存器就是“3F58000F“。

10310

RGMII接口调试使用VIO读取PHY寄存器

比如RGMII接口,最重要是看在哪里去做时钟和数据偏移。这时,常常需要使用VIO去读取PHY里面对应寄存器,看是否工作在正常RGMII接口时序模式。 测试场景 测试拓扑图如下 ?...经验总结:遇到RGMII接口调试时,最关键是要查看PHY芯片型号,查阅PHY芯片手册,通过MDIO读取PHY芯片寄存器,看RGMII接口上数据和时钟是否偏移2ns,再决定FPGA对应管脚约束是否进行偏移...具体测试步骤为:通过VIO配置MDIO管理模块PHY地址、寄存器地址,然后选择读操作读取某一PHY芯片寄存器,结合PHY工作状态,判断该寄存器是否被正确读取。...mdc_o) ); //------------------------------------------------------------------- 通过VIO和MDIO读取相应寄存器...,如图10所示,读取到为1076,换算成2进为0000_0100_0011_0100,对应工作模式为图8所示Transmit clock internally delayed,即 add delay

3.7K21

振弦采集模块配置工具VMTool生成寄存器

河北稳控科技振弦采集模块配置工具VMTool生成寄存器图片生成寄存器VMXXX 有很多按位使用寄存器, 使用 VMTool 工具可进行方便设置,当需要知道寄存器实际时,可通过以下两种方法获取...(保持【 自动读取】 复选框为非选中状态)( 1) 振弦模块与 VMTool 工具连接时在界面上进行参数设置;点击【 写入模块参数】 按钮,将当前界面显示参数写入模块;点击【 读取模块参数】 按钮,模块寄存器会自动更新到...MODBUS 显示区表格内。...( 2) 振弦模块未与 VMTool 工具连接时在界面上进行参数设置;双击【参数设置】 区标题“ 参数设置” 文字;当前界面显示参数自动更新到 MODBUS 显示区表格内;图片VMTool 扩展功能双击主界面右侧扩展工具条可实现扩展功能区显示与隐藏切换

40730

寄存器寻址和寄存器间接寻址区别

它们用于确定指令中操作数所在位置或获取操作数。下面将详细介绍寄存器寻址和寄存器间接寻址区别以及它们应用。 寄存器寻址: 寄存器寻址是指指令中直接使用寄存器作为操作数寻址模式。...在寄存器寻址中,操作数存储在一个或多个特定寄存器中,并且指令直接指定要使用寄存器。这种寻址模式可以通过寄存器号或寄存器名称来表示。...寄存器间接寻址: 寄存器间接寻址是指指令中使用寄存器存储地址来获取操作数寻址模式。在寄存器间接寻址中,寄存器中存储是数据地址,而不是实际数据。...灵活性:寄存器寻址在编译时确定操作数寄存器,适用于固定操作数,而寄存器间接寻址允许在运行时动态改变目标地址,适用于灵活内存访问。...存储空间:寄存器寻址不需要分配额外内存空间来存储操作数,而寄存器间接寻址需要在寄存器中存储地址

39320

Linux下开发stm32 ③ | 寄存器工程开发

先来回顾一下前两篇 Linux下开发stm32(一) | 使用gcc-arm-none-eabi工具链编译 Linux下开发stm32(二) | 使用openocd下载与调试 前两篇我们介绍了如何创建一个空裸机工程...main文件),并编译工程生成elf文件,然后将其转为bin格式或hex格式,使用openocd下载,最后编写了一个makefile雏形,并成功点亮了一个LED~ 但是这个LED我们是通过指针直接操作寄存器地址来完成...,接下来,我们在此基础上,引入stm32头文件,其中包含了寄存器宏定义,也就是使用寄存器进行开发~ 1.创建寄存器工程 首先将上一节中创建裸机工程00-template-reg复制一份出来,改名为01...将其中空stm32f10x.h文件删掉,从固件库中复制一份,然后因为头文件中使用了core_cm3.h和system_stm32f10x.h中一些定义,包含了这两个头文件,所以将这两个文件也复制过来...,接下来开始编译~ 2.编译&下载寄存器工程 编译寄存器工程重点就在于C头文件和C源文件,启动文件编译和链接都和之前一样。

1.2K30

汇编寄存器规则

但是,一旦函数序言(准备堆栈和寄存器函数开始部分)完成执行,这些寄存器就可能改变。生成程序集可能会覆盖存储在这些寄存器,或者在代码不再需要这些引用时丢弃这些引用。...需要注意是,该应用程序不会实时显示寄存器; 它只能在特定函数调用期间显示寄存器。...这意味着您不会看到这些寄存器有太多更改,因为在调用获取寄存器函数时它们可能具有相同(或相似)。...幸运是,只有一个指定寄存器用于返回:RAX。...了解 RAX 中返回非常重要,因为它将构成您将在后面的部分中编写调试脚本基础。 # 改变寄存器 为了巩固您对寄存器理解,您将在一个已编译应用程序中修改寄存器

2.4K50

8086CPU寄存器

在进行堆栈操作时,SP随着栈顶变化而自动改变,但始终指向栈顶位置;BP是访问堆栈时基址寄存器,存放堆栈中某一存储单元偏移地址,使用BP是为了访问堆栈区内任意位置存储单元。...PF(奇偶标志位) 同于反映运算结果奇偶性,即第八位中含有“1”个数。如果“1”个数为偶数,则PF为1,否则为0。利用PF可根据奇偶校验检查,或产生奇偶校验位。...如果运算结果超过当前运算位数所能表示范围,则称为溢出,OF被置为1,否则,OF被清为0.具体来说,就是当有符号数字节运算结果超出了-128~ +127范围,或者字运算时结果超出了-32768...8086指令系统中提供了专门改变IF指令。 DF(方向标志位) 用来控制串操作指令中地址指针变化方向。...单步执行方式主要用于程序调试,指令系统中没有提供专门指令来改变TF,但用户可以通过编程办法来改变其。 后续 如果想了解更多物联网、智能家居项目知识,可以关注我项目实战专栏。

83110

CPU 中通用寄存器作用

在计算机中央处理器(CPU)中,通用寄存器(General-Purpose Registers)是其中一个重要组件。通用寄存器是一种高速内部存储器,用于存储和操作计算机中数据。...它们提供了一组可供程序使用存储单元,用于暂时保存计算过程中数据。寄存器是CPU内部最快速存储器,可以迅速访问和更新其中数据,加快计算速度。 数据传递:通用寄存器用于在CPU内部传递数据。...这些寄存器作为操作数和结果暂存区域,支持计算机中各种运算执行。 寄存器间数据传输:通用寄存器可以用于在寄存器之间传输数据。...CPU可以将一个寄存器直接传送到另一个寄存器中,而不需要通过内存来进行中转。这种寄存器数据传输可以更快地实现数据移动和操作。 地址计算:通用寄存器用于支持地址计算。...在程序执行过程中,CPU需要计算内存中数据地址。通用寄存器可以存储和操作地址计算所需中间结果和临时值,以便进行有效地址计算。 存储临时结果:通用寄存器用于存储临时计算结果。

47030

Linux Shell函数返回

Shell函数返回,一般有3种方式:return,argv,echo 1) return 语句 shell函数返回,可以和其他语言返回一样,通过return语句返回。 示例: #!...获取函数返回通过调用函数,或者最后执行获得。 另外,可以直接用函数返回用作if判断。 注意:return只能用来返回整数值,且和c区别是返回为正确,其他为错误。...中,对全局变量修改也无济于事,全局变量根本就没有改变。...因此不存在上面提到由于管道导致返回失效情况。 在外边只需要获取函数返回即可。 示例: #!...参考推荐: Shell函数返回 Linux 之 shell 比较运算符(推荐) Linux Shell学习简单小结(推荐) SHELL学习笔记----IF条件判断,判断条件

8.6K20

浅析Linux root设置初始方法

ubuntu默认不允许使用root登录,因此初始root账户是不能使用,需要在普通账户下利用sudo权限修改root密码。...在终端输入sudo passwd root,按回车,然后系统会提示你输入普通用户密码(终端输入密码都是不显示)。 输入后,按回车,然后重复输入两次新root密码即可激活root用户。...输入用户密码,输入密码不显示) Enter new UNIX password:******( 设置root 密码) Retype new UNIX password: ******(重复密码) 之后提醒成功信息...切入root用户>>> ~$ su root passwd:*****(直接使用修改过后root密码) su默认切换到root用户,并且改变到root用户环境,输入后可以在终端下切换到root用户下进行一些操作了...具体输入流程: ? 总结 以上所述是小编给大家介绍Linux,root设置初始方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家

1.9K20

linux利用read命令获取变量中

前言 本文主要给大家介绍了关于linux利用read命令获取变量中值相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍吧。...read常用用法如下: read -[pstnd] var1 var2 ......-p提示语句 -n 字符个数 -s 屏蔽回显 -t 等待时间 -d 输入分界 read来获取变量,是通过屏幕中等待用户输入,如果是用read命令从已知变量来获取值要如何操作呢?...方法一: root@linux~# input_ips='127.127.127.10-127.127.127.14' root@linux~# read start_ip end_ip < <(echo...总结 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作能带来一定帮助,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn支持。

4.3K30
领券