前馈科技

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 861|回复: 0

Windows下如何自动给grmon发送命令

[复制链接]

97

主题

97

帖子

539

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
539
发表于 2020-7-30 17:09:29 | 显示全部楼层 |阅读模式
在Windows的cmd控制台下执行grmon后就进入了grmon的命令终端,如:
执行grmon -leon2 -ni -uart com2后就进入如下界面:

Screenshot from 2020-07-30 17-16-17.png
由于我们启动grmon之前使用了-ni选项(即不初始化目标处理器),导致存储器配置寄存器没配置,此时通过DSU向目标处理器下载程序是不可能成功的,此时需要在grmon控制台里输入初始化命令来设置存储器配置寄存器,例如:
wmem 0x81000004 0x7c47906f
最后我们还需要通过启动gdb命令来启动gdb,当然我们也可以在启动grmon时加上-gdb选项将gdb启动,但很遗憾,gdb启动之后就进入gdb状态,你就没法再通过wmem指令设置目标处理器的寄存器了。那能不能在启动grmon阶段加上-wmem -gdb选项来先设置寄存器再启动gdb呢?很遗憾,不行!因为grmon启动选项只支持如下几种:

Screenshot from 2020-07-30 16-11-36.png
加上-wmem选项,grmon也不会报错,直接忽略该选项!
难道我们需要每次启动grmon之后手动输入命令?leon系列处理器dsu调试过程中死掉的概率较高,每次连接挂掉之后重新输入命令让人不堪忍受!在网上四处搜索,终于找到了解决办法,这就需要用到Windows批处理命令中的管道操作!下面是学习时间:

----------------------------------------------------------------------------------------------

管道命令
即│ 命令
Usage:第一条命令 │ 第二条命令 [│ 第三条命令...]
管道符(|)的作用是将符号前的进程输出,当做符号后进程的输入。
例如:
有两条命令,“dir /s /b /a”和“ find ".txt"”,第一条显示当前文件夹中的所有文件、文件夹,第二条是查找含有字符“.txt”的字符串。
两条命令用管道符(|)连接就可以“查找当前文件夹中含有.txt的所有文件、文件夹”。
代码如下:
dir /s /b /a | find ".txt"
例如:
使用管道符来自动输入y/n,在工作中有时候调用cmd命令会出现提示信息,譬如使用pscp的时候会出现提示信息如下:
Store key in cache?(y/n)
每次都需要输入y或者n,如果是java或者python等调用cmd命令的时候,则会出现无法执行下去的情况,那么怎么办呢,可以使用管道符号来进行,譬如还是命令pscp,使用如下方法即可自动填入y:
echo y |pscp ......
后边的省略号是操作命令;
--------------------------------------------------------------------------------------------

经过上面的学习,对于怎样自动给grmon传输命令,咱们心中是不是有谱了?
下面尝试下:
echo gdb | grmon -leon2 -ni -uart com2
成功!
但尝试echo wmem 0x81000004 0x7c47906f | grmon -leon2 -ni -uart com2却一直失败!根据分析,问题的原因貌似如下:grmon启动后一直等待输入指令,由于有管道操作,echo wmem 0x81000004 0x7c47906f将wmem 0x81000004 0x7c47906f传输给了grmon,但不知为何,grmon收到wmem时就认为收到了完整指令,并开始执行,于是乎就报wmem指令参数个数不对的错误。折腾了好久也解决不掉(哪位仁兄知道原因请回帖啊,thank!),只好想其他办法!

Screenshot from 2020-07-30 17-02-51.png
grmon支持batch命令,即以batch file_name命令的方式执行file_name文件中的命令序列!于是在grmon目录下新建cmd.bat文件,里面内容如下:
wmem 0x81000004 0x7c47906f
gdb
再在grmon目录下建立一个grmon.bat,内容如下:
cd /d %~dp0
echo batch cmd.bat | grmon -leon2 -ni -uart com2
于是每次只需双击grmon.bat即可完成grmon的启动、处理器寄存器的初始化、gdb的启动!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|计算机控制

GMT+8, 2024-4-19 16:38 , Processed in 0.054207 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表