TC397xp下载脚本

tc397.bat, 方便第一次启动trace32软件

 1@echo off
 2rem 设置 Trace32 安装路径(根据你的实际安装目录修改)
 3set TRACE32_PATH=C:\T32
 4
 5rem 设置配置文件和启动脚本路径(根据实际路径修改)
 6set CONFIG_FILE=%TRACE32_PATH%\config.t32
 7set CMM_SCRIPT=D:\mycodedev\project-tc397\elf\my-tc39x.cmm
 8
 9rem 启动 TRACE32 并加载脚本
10@REM start "" "%TRACE32_PATH%\bin\t32.exe" -c "%CONFIG_FILE%" -s "%CMM_SCRIPT%"
11start "" "%TRACE32_PATH%\bin\windows64\t32mtc.exe" -c "%CONFIG_FILE%" -s "%CMM_SCRIPT%"

win.cmm,可以在trace32软件上调整布局需要的窗口之后store windows,根据需求修改即可

 1// T32 Fri May 28 10:03:39 2023
 2
 3B::
 4
 5TOOLBAR   ON
 6STATUSBAR ON
 7FramePOS 39.432,15.216,,,Maximized
 8WinPAGE.RESet
 9
10WinPAGE.Create P000
11WinCLEAR
12
13WinPOS 33.729 35.83 51. 16. 0. 0. W004
14SYStem
15
16WinPOS 47.134 24.627 123. 21. 23. 1. W001
17WinTABS 13. 0. 0. 0. 0. 0. 0. 0. 0. 72.
18Break.List
19
20WinPOS 63.308 26.476 113. 26. 13. 1. W003
21WinTABS 10. 10. 25.
22List P:0x8021A074 
23
24WinPOS 56.154 11.714 140. 37. 5. 0. W002
25Frame
26
27WinPOS 0.0 0.0 158. 64. 0. 0. W000
28Var.Watch
29
30; 根据需要添加变量
31Var.AddWatch testcnt
32
33WinPAGE.select P000
34
35ENDDO

my-tc39x.cmm

 1; y.spath.srd D:\mycodedev\project-tc397
 2; 注释标识符
 3
 4system.CPU.TC397Xp
 5
 6SYStem.DOWN
 7SYStem.RESeT
 8
 9; 烧录下载
10do tc39x.cmm
11
12; 方便调试相关
13do win.cmm
14
15SYStem.Option.DUALPORT on
16
17SYStem.mode.down
18SYStem.mode.up
19SYStem.mode.go
20
21OS.LoadORTI "RTAOS.orti"

TC397多核debug

帮助文档 C:\T32\pdf\debugger_tricore.pdf

烧录完成之后启动时core0,如果需要调试core1,此操作的断点只会在core1上生效

1system.mode.NoDebug
2system.config.core 2
3system.mode.attach
4; break
5; go

此操作的断点会在所有设置的核上生效

1system.mode.NoDebug
2; 调试所有的6个核
3core.number 6
4; 只调试所有的6个核
5core.assign 1 2 3

其他

GHS-TC397编译器

帮助文档资料:通过helpview.exe进行查询

如反汇编脚本:

 1@echo off
 2
 3set TARGET_DIR=build
 4
 5if exist "%TARGET_DIR%" (
 6    echo Deleting dir...: %TARGET_DIR%
 7    @REM rmdir /s /q "%TARGET_DIR%"
 8)
 9
10set "currentDir=%CD%"
11
12set PATH=%currentDir%\bin;C:\ghs\bin;%path%
13
14@REM enter build dir
15pushd build
16
17@REM build elf
18cctri.exe test.c -cpu=tc1v162 -half_precision_type -g -dual_debug -X5853 -Omax -Xtricore_opts_20181 -ansi_alias -delete -data_delete -Onoalign_functions -no_align_standalone_objects --no_vla  -discard_zero_initializers --no_commons  --gnu_asm  -tricore_avoid_mem_trap -version_info -w -errmax=10 -passsource --c++14 --no_rtti --restrict --new_outside_of_constructor -globalcheck=normal -globalcheck_qualifiers --diag_warning=undefined_preproc_id --diag_warning=missing_type_specifier --no_wrap_diagnostics  -nostartfiles -Mu -Mx -Ml -Mn -keepmap --preprocess_linker_directive_full -Wl,-no_append  -nostartfiles -Mu -Mx -Ml -Mn -keepmap --preprocess_linker_directive_full -Wl,-no_append -o tc397.elf
19@REM Disassembly
20gdump.exe -asm -yd -yl -ylaball  tc397.elf  > relocations.txt
21
22popd

部分反汇编代码示例:

 1movh.a	 a2, 0xa000
 2mov16	 d15, 1
 3st.b	[a2]89, d15
 4ret16
 5  tttx1:
 6  __ghs_eofn_t234x1:
 7movh.a	 a2, 0xa000
 8mov16	 d15, 1
 9st.b	[a2]89, d15
10ret16
11  func1:
12  __ghs_eofn_tttx1:
13movh.a	 a2, 0xa000
14mov16	 d15, 1
15st.b	[a2]89, d15
16call	 .-22 (0xa000000c)
17ret16
18  func2:
19  __ghs_eofn_func1:
20mov16	 d8, d4
21movh.a	 a2, 0xa000
22st.b	[a2]90, d8
23ret16
24  __ghs_eofn_func2:
25  func3:
26movh.a	 a2, 0xa000
27ld.bu	 d15, [a2]91
28extr.u	 d2, d15, 0, 8
29ret16
30  __ghs_eofn_func3:
31  main:
32call	 .-66 (0xa0000000)
33call	 .-46 (0xa0000018)
34mov16	 d4, 2
35call	 .-36 (0xa0000028)
36call	 .-28 (0xa0000034)
37mov16	 d2, 0
38ret16
39
40da	. DW_TAG_subprogram
41	  DW_AT_name("func1")
42	  DW_AT_decl_line(15)
43	  DW_AT_decl_column(6)
44	  DW_AT_decl_file(1)
45	  DW_AT_low_pc(0xa0000018)
46	  DW_AT_high_pc(0xa0000028)
47	  DW_AT_frame_base: reg26
48	  DW_AT_ghs_rsm(0)
49	  DW_AT_ghs_rso(0)
50	  DW_AT_ghs_frsm(4294967295)
51	  DW_AT_ghs_frames(0)
52	  DW_AT_ghs_subcpu(0)
53	  DW_AT_declaration(false)
54	  DW_AT_inline(DW_INL_not_inlined)
55	  DW_AT_external(true)
56	  DW_AT_accessibility(DW_ACCESS_public)
57	  DW_AT_virtuality(DW_VIRTUALITY_none)
58	  DW_AT_prototyped(false)
59
60fb	. . TAG_lexical_block
61	    DW_AT_low_pc(0xa0000018)
62	    DW_AT_high_pc(0xa0000026)