使用的是USB EJTAG V1.0
1、烧写代码常用指令set;program_cachelock XXXX.bin,如果要指定烧写的区域,则在最后加上要烧写的起始地址,如set;program_cachelock XXXX.bin 0x20000,这里引申出一个问题就是每次烧写的时候,是擦除所有flash还是根据烧写代码的大小而决定擦除的大小,根据实际经验来看,是只会擦除重新写代码的片区;
2、调试相关:(1)set:暂停CPU;(2)cont:继续运行;(3)hb [addr]:在addr处设置断点,hbls是列出当前所有断点,unb [addr]是取消addr处的断点;(4)si.s :set后可以通过si.s指令单步运行,si.s后可以加数字num代表单步运行num次,如si.s 100就是单步运行100次;
通过设置断点后单步运行,再结合编译生成的dump文件,可以推断处程序出现问题的位置。
3、通过d4指令查看memory存储的值,该指令不可看flash的值,只能把flash的值映射到ram上再通过d4查看:其中d4/d2/d1只是一次性显示出来的字节长度不一样,d8根据描述是可以改memory的值,但具体没有操作过;
4、memset1:可以修改map中出现的全局变量,具体使用方法为memset [addr] [c] [size] ,对应的[addr]在map里找对应关系即可;
5、杂:(1)pc寄存器表示当前运行指令的地址,epc表示异常返回寄存器;
(2)龙芯2k地址前面的8个f加和不加影响不大,默认都是f,可能原因是最开始设计架构时是按64位设计的,实际使用上只用到了32位;