VxWorks 6.9 kernel shell
vxWorks6.9 MMU采用物理地址和虚拟地址1:1映射,两个地址是相同的,
所以通过shell直接访问,如果访问物理地址0xffd02000
-> d 0xffd02000, 8, 4
NOTE: memory values are displayed in hexadecimal.
0xffd02000: 00000001 000000ee 3fe449ea 00000000 …I.?..
0xffd02010: 00000000 00000000 3130362a 00000000 *…601…
value = 0 = 0x0
->
-> m ffd02000, 4
0xffd02000: 00000001-
0xffd02004: 000000ee-ff
0xffd02008: 3e63054e-.
value = 0 = 0x0
->
VxWorks 7 kernel shell
vxWorks7.0 MMU的映射不是1:1映射了
还是以访问0xffd02000为例,如果直接通过物理地址访问
d 0xffd02000, 32, 4
NOTE: memory values are displayed in hexadecimal.
0xffd02000:
Data abort
Exception address: 0x003736a8
Current Processor Status Register: 0x60000013
Data Fault Address Register: 0xffd02000
Data Fault Status Register : 0x00000005
0x00358ea0 shellInterpCparse+0x1328: 0x0035f364 ()
0x0035f450 shellInterpClex+0x6074: shellInternalFunctionCall ()
0x00355854 shellInternalFunctionCall+0x88 : memoryDump ()
Shell task ‘tShell0’ restarted…
由于物理地址跟虚拟地址不相等,直接访问由于MMU没有映射,系统会报异常
可以通过pmapGlobalMap 来返回一个虚拟地址
-> l4wd0 = pmapGlobalMap (0xffd02000ULL, 0x1000, 0x483)
New symbol “l4wd0” added to kernel symbol table.
l4wd0 = 0x22bea338: value = 579825664 = 0x228f7000
->
d l4wd0, 32, 4
NOTE: memory values are displayed in hexadecimal.
0x228f7000: 00000001 000000ff 7b02c5be 00000000 …{…
0x228f7010: 00000000 00000000 3130362a 00000000 *…601…
0x228f7020: 00000000 00000000 00000000 00000000 …
0x228f7030: 00000000 00000000 00000000 00000000 …
0x228f7040: 00000000 00000000 00000000 00000000 …
0x228f7050: 00000000 00000000 00000000 00000000 …
0x228f7060: 00000000 00000000 00000000 00000000 …
0x228f7070: 00000000 00000000 00000000 00000000 …
value = 0 = 0x0
->
可以通过vmContextShow看物理地址和虚拟地址的映射关系
-> vmContextShow
VIRTUAL ADDR BLOCK LENGTH PHYSICAL ADDR PROT (S/U) CACHE SPECIAL
0x00000000 0x00050000 0x00000000 RW- / — CB-/CO/- --/S3
0x00050000 0x00001000 0x00050000 R-X / — CB-/CO/- --/S3
0x00051000 0x000af000 0x00051000 RW- / — CB-/CO/- --/S3
0x00100000 0x00418000 0x00100000 R-X / — CB-/CO/- –
…
0x228f7000 0x00001000 0xffd02000 RW- / — OFF/CO/G –
…
0x22d32000 0x00002000 0x040c3000 RW- / — CB-/CO/- --/S3
0x22d35000 0x00001000 0x040c6000 RW- / — CB-/CO/- --/S3
0x22d37000 0x00002000 0x040c8000 RW- / — CB-/CO/- --/S3
0x22d3a000 0x00001000 0x040cb000 RW- / — CB-/CO/- --/S3
0x22d3c000 0x00002000 0x040cd000 RW- / — CB-/CO/- --/S3
0x22d3f000 0x00f01000 0x040d0000 RW- / — CB-/CO/- --/S3
value = 0 = 0x0
->