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)
评论