Teraterm Scripts
From Texas Instruments Embedded Processors Wiki
Introduction
Tera Term is an opensource terminal emulator on MS-Windows commonly used by us developers. Tera Term supports a "rich" macro language that can help in automating user actions. These scripts usually remain personal - rarely shared.
In this page, I intend to share the basic scripts that can be used to automate common tasks in the Linux PSP release. The scripts were created with intentional hierarchy to maximize reuse (via inclusion) and minimize redundancy across scripts. Currently, these scripts apply to OMAP35x Linux PSP. But, can be extended easily to other platforms.
Needless to say, these scripts are open to enhancements.
How to execute a TeraTerm script?
Scripts
File Naming Conventions
- A file containing common macros - that can be included in other scripts - is prefixed with double underscore e.g.
__common.ttl - The purpose / functionality of the file can be indicated after a "-" (minus) in the file name e.g.
__uboot-config.ttl - Name of the container script that you execute is prefixed with name of the board e.g.
omap3evm-boot-ramdisk.ttl.
__common.ttl
;; Tera Term Macro ;; ============================================================================ ;; file __common.ttl ;; ;; desc Common definitions used across the macros. ;; ============================================================================ ;; HISTORY ;; ;; 2007-11-30 Sanjeev Premi ;; Original Version ;; ============================================================================ ;; ============================================================================ ;; DEFINITIONS ;; ============================================================================ ;; ;; Current Date ;; getdate CurDate ;; ;; Current Time ;; gettime CurTime ;; ;; Title of the Tera Term Window ;; StrWindowTitle = 'OMAP35x EVM' ;; ;; Boot methods ;; Boot_RAMDISK = 'RAMDISK' Boot_NFS = 'NFS' ;; ;; Is Lauterbach used for debug? ;; UseLauterbach = 0 ;; ;; Caption prefix ;; StrCaption = ':::::::::::::::::::::::::::::::::::::::: ' ;; ;; Dividers ;; StrEmpty = ''#13#10 StrDivider_1 = '====================================================='#13#10 StrDivider_2 = '-----------------------------------------------------'#13#10 StrDivider_3 = '.....................................................'#13#10 ;; ;; Set position of status dialog box ;; setdlgpos 10 10 ;; ;; Set window title ;; settitle StrWindowTitle
__uboot-config-common.ttl
;; Tera Term Macro ;; ============================================================================ ;; file __uboot-config-common.ttl ;; ;; desc Common u-boot related definitions ;; ============================================================================ ;; HISTORY ;; ;; 2007-11-30 Sanjeev Premi ;; Original Version ;; ============================================================================ ;; ============================================================================ ;; DEFINITIONS ;; ============================================================================ ;; ;; The u-boot message to stop autoboot. ;; MsgAutoboot = 'Hit any key to stop autoboot:' ;; ;; The u-boot prompt ;; PromptUboot = 'OMAP3EVM #' ;; ============================================================================ ;; EXECUTION ;; ============================================================================ ;; ;; Disable autoload ;; wait PromptUboot sendln 'setenv autoload no'
__uboot-config-network.ttl
This file uses dummy values for various macros. They need to be defined with correct values for your platform.
;; Tera Term Macro ;; ============================================================================ ;; file __uboot-config-network.ttl ;; ;; desc Configure the u-boot network settings. ;; ============================================================================ ;; HISTORY ;; ;; 2007-11-30 Sanjeev Premi ;; Original Version ;; ============================================================================ ;; ============================================================================ ;; DEFINITIONS ;; ============================================================================ ;; ;; Ethernet on EVM ;; VarMacAddr = 'A1:B1:C1:E1:D1:E1' VarGatewayIP = '192.168.1.1' VarNetMask = '255.255.255.0' ;; ;; Server running the TFT Server ;; VarServerIP = '192.168.1.2' ;; ;; Get IP address from DHCP server ;; CmdDHCP = 'dhcp' ;; ============================================================================ ;; EXECUTION ;; ============================================================================ ;; ;; Setup Network ;; wait PromptUboot sendln 'setenv ethaddr ' VarMacAddr wait PromptUboot sendln 'setenv gatewayip ' VarGatewayIP wait PromptUboot sendln 'setenv netmask ' VarNetMask ;; ;; Set the IP address of the TFTP Server ;; wait PromptUboot sendln 'setenv serverip ' VarServerIP ;; ;; Get an IP Address ;; wait PromptUboot sendln CmdDHCP ;; ;; Set the IP address of the TFTP Server again. ;; (Required on some networks) ;; wait PromptUboot sendln 'setenv serverip ' VarServerIP
__uboot-load-kernel.ttl
;; Tera Term Macro ;; ============================================================================ ;; file __uboot-load-kernel.ttl ;; ;; desc Steps to boot the Linux kernel. ;; ============================================================================ ;; HISTORY ;; ;; 2007-11-30 Sanjeev Premi ;; Original Version ;; ============================================================================ ;; ============================================================================ ;; DEFINITIONS ;; ============================================================================ ;; ;; Name of the boot file ;; BootFile = 'uImage' ;; ;; Boot arguments ;; BootArgs_RAMDISK = 'console=ttyS0,115200n8 mem=128M root=/dev/ram0 rw initrd=0x81600000,16M ip=dhcp' BootArgs_NFS = 'console=ttyS0,115200n8 mem=128M root=/dev/nfs noinitrd nfsroot=192.168.1.10:/home/user/remote/098,nolock,rsize=1024,wsize=1024 ip=dhcp' ;; ;; Boot commands ;; CmdLoadRamDisk = 'tftpboot 0x81600000 kernel/ramdisk.gz' CmdLoadUimage = 'tftpboot 0x80000000 kernel/uImage' CmdBootm = 'bootm 0x80000000' ;; ============================================================================ ;; EXECUTION ;; ============================================================================ ;; ;; General configuration ;; wait PromptUboot sendln 'setenv bootfile ' BootFile ;; ;; Set boot arguments ;; wait PromptUboot strcompare VarBootMethod Boot_RAMDISK if result=0 then sendln 'setenv bootargs ' BootArgs_RAMDISK endif strcompare VarBootMethod Boot_NFS if result=0 then sendln 'setenv bootargs ' BootArgs_NFS endif ;; ;; Print current environment (Just for the record) ;; wait PromptUboot sendln 'printenv' ;; ;; Load RamDisk Image ;; strcompare VarBootMethod Boot_RAMDISK if result=0 then wait PromptUboot sendln CmdLoadRamDisk endif ;; ;; Load uImage ;; wait PromptUboot sendln CmdLoadUimage ;; ;; Boot Linux ;; wait PromptUboot if UseLauterbach=0 then sendln CmdBootm elseif UseLauterbach=1 then send CmdBootm endif
__kernel-common.ttl
;; Tera Term Macro ;; ============================================================================ ;; file __kernel-common.ttl ;; ;; desc Common kernel related definitions & commands. ;; ============================================================================ ;; HISTORY ;; ;; 2007-11-30 Sanjeev Premi ;; Original Version ;; ============================================================================ ;; ============================================================================ ;; DEFINITIONS ;; ============================================================================ ;; ;; The Linux kernel prompt ;; PromptLinux = '[root@OMAP3EVM /]# ' ;; ;; Clear screen ;; CmdClear = 'clear'
__kernel-power.ttl
;; Tera Term Macro ;; ============================================================================ ;; file __kernel-power.ttl ;; ;; desc Common power related definitions and commands. ;; ============================================================================ ;; HISTORY ;; ;; 2008-04-25 Sanjeev Premi ;; Original Version ;; ============================================================================ ;; ============================================================================ ;; DEFINITIONS ;; ============================================================================ ;; ;; Set LCD timeout to 2 secs ;; CmdFbTimeout = 'echo 2 > /sys/power/fb_timeout_value' ;; ;; Different pause durations used in testing ;; PauseLog = 2 PauseNormal = 30 PauseSuspendBefore = 5 PauseSuspendAfter = 10 ;; ;; Strings indicating sleep duration ;; StrSleepNormal = 'Wait for 30 secs'#13#10 StrSleepBeforeSuspend = 'Wait for 5 secs'#13#10 StrSleepAfterSuspend = 'Wait for 60 secs'#13#10 ;; ;; Strings indicating actions performed ;; StrSuspend = 'Attempt Suspend'#13#10 StrResume = 'Attempt Resume (send key click)'#13#10 StrViewPowerStates = 'View previous power states'#13#10 StrViewDeepestIdleState = 'View the deepest IDLE state'#13#10 StrViewGovernor = 'View current governor'#13#10 StrViewVDD1 = 'View VDD1 OPP'#13#10 StrViewVDD2 = 'View VDD2 OPP'#13#10 StrViewClock_MPU_IVA = 'View MPU & IVA clocks'#13#10 StrViewClock_VirtVDD = 'View virtual VDD clocks'#13#10 ;; ---------------------------------------------------------------------------- ;; CPUIDLE ;; ---------------------------------------------------------------------------- ;; ;; Set deepest IDLE state ;; CmdShowPowerStates = 'cat /proc/pm_prepwst' ;; ;; Show current deepest IDLE state ;; CmdShowDeepestIdleState = 'cat /sys/power/cpuidle_deepest_state' ;; ;; Show status of OMAP clocks ;; CmdShowClocks = 'cat /proc/omap_clocks' ;; ;; Set deepest IDLE state ;; CmdSetDeepestIdleState_0 = 'echo "0" > /sys/power/cpuidle_deepest_state' CmdSetDeepestIdleState_1 = 'echo "1" > /sys/power/cpuidle_deepest_state' CmdSetDeepestIdleState_2 = 'echo "2" > /sys/power/cpuidle_deepest_state' CmdSetDeepestIdleState_3 = 'echo "3" > /sys/power/cpuidle_deepest_state' CmdSetDeepestIdleState_4 = 'echo "4" > /sys/power/cpuidle_deepest_state' CmdSetDeepestIdleState_5 = 'echo "5" > /sys/power/cpuidle_deepest_state' CmdSetDeepestIdleState_6 = 'echo "6" > /sys/power/cpuidle_deepest_state' ;; ;; Put system to 'suspend' state ;; CmdSuspend = 'echo -n "mem" > /sys/power/state' ;; ---------------------------------------------------------------------------- ;; CPUFREQ ;; ---------------------------------------------------------------------------- ;; ;; OMAP Clocks ;; CmdShowAllClocks = 'cat /proc/omap_clocks' CmdShowClock_MPU = 'cat /proc/omap_clocks | grep mpu' CmdShowClock_IVA = 'cat /proc/omap_clocks | grep iva' CmdShowClock_VDDs = 'cat /proc/omap_clocks | grep virt' ;; ;; Governor related ;; CmdShowGovernor = 'cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor' CmdSetGovernor_Ondemand = 'echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor' CmdSetGovernor_Performance = 'echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor' ;; ;; Set OPPs for VDD1 ;; CmdSetVDD1_1 = 'echo "1" > /sys/power/vdd1_opp_value' CmdSetVDD1_2 = 'echo "2" > /sys/power/vdd1_opp_value' CmdSetVDD1_3 = 'echo "3" > /sys/power/vdd1_opp_value' CmdSetVDD1_4 = 'echo "4" > /sys/power/vdd1_opp_value' CmdSetVDD1_5 = 'echo "5" > /sys/power/vdd1_opp_value' CmdShowVdd1 = 'cat /sys/power/vdd1_opp_value' ;; ;; Set OPPs for VDD2 ;; CmdSetVDD2_1 = 'echo "1" > /sys/power/vdd2_opp_value' CmdSetVDD2_2 = 'echo "2" > /sys/power/vdd2_opp_value' CmdShowVdd2 = 'cat /sys/power/vdd2_opp_value'
__test-cpuidle.ttl
;; Tera Term Macro ;; ============================================================================ ;; file __test-cpuidle.ttl ;; ;; desc Unit tests for "cpuidle" framework. ;; ============================================================================ ;; HISTORY ;; ;; 2008-04-25 Sanjeev Premi ;; Original Version ;; ============================================================================ include '__common.ttl' ;; ============================================================================ ;; DEFINITIONS ;; ============================================================================ ;; ;; Testcase title ;; StrDescription = 'UNIT TEST CASES FOR CPUIDLE'#13#10 ;; ;; Strings indicating deepest idle state ;; StrDeepestIdleState_0 = 'Deepest Idle State = 0'#13#10 StrDeepestIdleState_1 = 'Deepest Idle State = 1'#13#10 StrDeepestIdleState_2 = 'Deepest Idle State = 2'#13#10 StrDeepestIdleState_3 = 'Deepest Idle State = 3'#13#10 StrDeepestIdleState_4 = 'Deepest Idle State = 4'#13#10 StrDeepestIdleState_5 = 'Deepest Idle State = 5'#13#10 StrDeepestIdleState_6 = 'Deepest Idle State = 6'#13#10 StrDeepestIdleState_9 = 'Deepest Idle State = 9 (Incorrect)'#13#10 ;; ;; Commands for negative testing ;; CmdSetDeepestIdleState_9 = 'echo "9" > /sys/power/cpuidle_deepest_state' ;; ============================================================================ ;; EXECUTION ;; ============================================================================ wait PromptLinux sendln CmdFbTimeout wait PromptLinux sendln wait PromptLinux ;; ;; Open log file ;; logopen 'test-cpuidle.log' 0 0 logstart logwrite StrEmpty logwrite StrCaption logwrite CurDate logwrite StrEmpty logwrite StrCaption logwrite CurTime logwrite StrEmpty pause PauseLog sendln wait PromptLinux ; C0 StrStateCaption = StrDeepestIdleState_0 CmdDeepestIdleState = CmdSetDeepestIdleState_0 call ExecIdleTest ; C1 StrStateCaption = StrDeepestIdleState_1 CmdDeepestIdleState = CmdSetDeepestIdleState_1 call ExecIdleTest ; C2 StrStateCaption = StrDeepestIdleState_2 CmdDeepestIdleState = CmdSetDeepestIdleState_2 call ExecIdleTest ; C3 StrStateCaption = StrDeepestIdleState_3 CmdDeepestIdleState = CmdSetDeepestIdleState_3 call ExecIdleTest ; C4 StrStateCaption = StrDeepestIdleState_4 CmdDeepestIdleState = CmdSetDeepestIdleState_4 call ExecIdleTest ; C5 StrStateCaption = StrDeepestIdleState_5 CmdDeepestIdleState = CmdSetDeepestIdleState_5 call ExecIdleTest ; C6 StrStateCaption = StrDeepestIdleState_6 CmdDeepestIdleState = CmdSetDeepestIdleState_6 call ExecIdleTest ; C9 StrStateCaption = StrDeepestIdleState_9 CmdDeepestIdleState = CmdSetDeepestIdleState_9 call ExecIdleTest_N ; Return to C2 sendln sendln wait PromptLinux sendln sendln CmdSetDeepestIdleState_2 wait PromptLinux ; ---------------------------------------------------------------------------- ; Close log file ; ---------------------------------------------------------------------------- sendln wait PromptLinux pause PauseNormal logclose exit ; ============================================================================ ; SUBROUTINES ; ============================================================================ :ExecIdleTest ; ============================================================================ ; Execute the CPUIDLE Tests ; ============================================================================ msgStatus = '' ; State caption strconcat msgstatus StrStateCaption statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrDivider_2 logwrite StrStateCaption logwrite StrDivider_2 pause PauseLog ; Set deepest idle state ; (Additional 'newlines' sent just in case first is missed in deeper C states) sendln sendln wait PromptLinux sendln sendln CmdDeepestIdleState wait PromptLinux pause PauseLog ; View previous power states logwrite StrEmpty logwrite StrCaption logwrite StrViewPowerStates logwrite StrEmpty pause PauseLog strconcat msgstatus StrViewPowerStates statusbox msgstatus TitleWindow sendln sendln wait PromptLinux sendln sendln CmdShowPowerStates wait PromptLinux pause PauseLog ; Wait for 'PauseNormal' ; (Additional 'newline' sent just in case first is missed in deeper C states) strconcat msgstatus StrSleepNormal statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrSleepNormal logwrite StrEmpty pause PauseNormal sendln sendln wait PromptLinux pause PauseLog ; View previous power states (again) ; (Additional 'newline' sent just in case first is missed in deeper C states) strconcat msgstatus StrViewPowerStates statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrViewPowerStates logwrite StrEmpty pause PauseLog sendln sendln wait PromptLinux sendln sendln CmdShowPowerStates wait PromptLinux pause PauseLog ; Wait for 'PauseSuspendBefore' ; (Additional 'newline' sent just in case first is missed in deeper C states) strconcat msgstatus StrSleepBeforeSuspend statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrSleepBeforeSuspend logwrite StrEmpty pause PauseSuspendBefore sendln sendln wait PromptLinux pause PauseLog ; Suspend strconcat msgstatus StrSuspend statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrSuspend logwrite StrEmpty pause PauseLog sendln sendln wait PromptLinux sendln sendln CmdSuspend ; Wait for 'PauseSuspendAfter' strconcat msgstatus StrSleepAfterSuspend statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrSleepAfterSuspend logwrite StrEmpty pause PauseSuspendAfter ; Resume strconcat msgstatus StrResume statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrResume logwrite StrEmpty sendln wait PromptLinux flushrecv pause PauseLog closesbox return ; ============================================================================ ; SUBROUTINE ; ; Execute the CPUIDLE Tests (Negative) ; ============================================================================ :ExecIdleTest_N msgStatus = '' ; State caption strconcat msgstatus StrStateCaption statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrDivider_2 logwrite StrStateCaption logwrite StrDivider_2 pause PauseLog ; Set deepest idle state ; (Additional 'newline' sent just in case first is missed in deeper C states) sendln sendln wait PromptLinux sendln sendln CmdDeepestIdleState wait PromptLinux flushrecv pause PauseLog closesbox return
__test-cpufreq.ttl
;; Tera Term Macro ;; ============================================================================ ;; file __test-cpufreq.ttl ;; ;; desc Unit tests for "cpufreq" framework. ;; ============================================================================ ;; HISTORY ;; ;; 2008-04-25 Sanjeev Premi ;; Original Version ;; ============================================================================ include '__common.ttl' ;; ============================================================================ ;; DEFINITIONS ;; ============================================================================ ;; ;; Testcase title ;; StrDescription = 'UNIT TEST CASES FOR CPUFREQ'#13#10 ;; ;; Strings related to governors ;; StrGovernorOndemand = 'Set ONDEMAND Governor'#13#10 StrGovernorPerformance = 'Set PERFORMANCE Governor'#13#10 ;; ;; Strings indicating OPPs ;; StrOppVdd1_1 = 'VDD1 OPP = 1'#13#10 StrOppVdd1_2 = 'VDD1 OPP = 2'#13#10 StrOppVdd1_3 = 'VDD1 OPP = 3'#13#10 StrOppVdd1_4 = 'VDD1 OPP = 4'#13#10 StrOppVdd1_5 = 'VDD1 OPP = 5'#13#10 StrOppVdd1_6 = 'VDD1 OPP = 6 (Incorrect)'#13#10 StrOppVdd2_1 = 'VDD2 OPP = 1'#13#10 StrOppVdd2_2 = 'VDD2 OPP = 2'#13#10 StrOppVdd2_3 = 'VDD2 OPP = 3'#13#10 StrOppVdd2_4 = 'VDD2 OPP = 4 (Incorrect)'#13#10 ;; ;; Commands for negative testing ;; CmdSetVDD1_6 = 'echo "6" > /sys/power/vdd1_opp_value' CmdSetVDD2_4 = 'echo "4" > /sys/power/vdd2_opp_value' ;; ============================================================================ ;; EXECUTION ;; ============================================================================ wait PromptLinux sendln CmdFbTimeout wait PromptLinux sendln CmdClear wait PromptLinux sendln wait PromptLinux ;; ;; Open log file ;; logopen 'test-cpufreq.log' 0 0 logstart logwrite StrEmpty logwrite StrCaption logwrite CurDate logwrite StrEmpty logwrite StrCaption logwrite CurTime logwrite StrEmpty pause PauseLog sendln ; Show current governor & switch to 'ondemand' governor StrStateCaption = StrOppVdd1_1 CmdSetVDD1 = CmdSetVDD1_1 call ExecGovernors ; VDD1 - OPP1 StrStateCaption = StrOppVdd1_1 CmdSetVDD1 = CmdSetVDD1_1 call ExecFreqTest ; VDD1 - OPP2 StrStateCaption = StrOppVdd1_2 CmdSetVDD1 = CmdSetVDD1_2 call ExecFreqTest ; VDD1 - OPP3 StrStateCaption = StrOppVdd1_3 CmdSetVDD1 = CmdSetVDD1_3 call ExecFreqTest ; VDD1 - OPP5 ; (Do this early so we don't keep MPU in overdrive for long during negative ; tests). StrStateCaption = StrOppVdd1_5 CmdSetVDD1 = CmdSetVDD1_5 call ExecFreqTest ; VDD1 - OPP4 StrStateCaption = StrOppVdd1_4 CmdSetVDD1 = CmdSetVDD1_4 call ExecFreqTest ; VDD1 - OPP6 (Negative) StrStateCaption = StrOppVdd1_6 CmdSetVDD1 = CmdSetVDD1_6 call ExecFreqTest_N ; VDD2 - OPP1 StrStateCaption = StrOppVdd2_1 CmdSetVDD2 = CmdSetVDD2_1 call ExecFreqTest2 ; VDD1 - OPP2 StrStateCaption = StrOppVdd2_2 CmdSetVDD2 = CmdSetVDD2_2 call ExecFreqTest2 ; VDD1 - OPP3 StrStateCaption = StrOppVdd2_3 CmdSetVDD2 = CmdSetVDD2_3 call ExecFreqTest2 ; ---------------------------------------------------------------------------- ; Close log file ; ---------------------------------------------------------------------------- sendln wait PromptLinux pause PauseNormal logclose exit ; ============================================================================ ; SUBROUTINES ; ============================================================================ :ExecGovernors ; ============================================================================ ; Execute the CPUFREQ Tests ; ============================================================================ msgStatus = '' ; State caption strconcat msgstatus StrStateCaption statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrDivider_2 logwrite StrStateCaption logwrite StrDivider_2 pause PauseLog sendln wait PromptLinux ; Show current governor strconcat msgstatus StrViewGovernor statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrViewGovernor logwrite StrEmpty sendln CmdShowGovernor wait PromptLinux pause PauseLog ; Set 'ondemand' governor strconcat msgstatus StrGovernorOndemand statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrGovernorOndemand logwrite StrEmpty pause PauseLog sendln CmdSetGovernor_Ondemand wait PromptLinux ; View virtual VDD clocks logwrite StrEmpty logwrite StrCaption logwrite StrViewClock_VirtVDD logwrite StrEmpty pause PauseLog sendln wait PromptLinux wait PromptLinux sendln CmdShowClock_VDDs pause PauseLog ; View current MPU & IVA clocks logwrite StrEmpty logwrite StrCaption logwrite StrViewClock_MPU_IVA logwrite StrEmpty pause PauseLog sendln wait PromptLinux wait PromptLinux sendln CmdShowClock_MPU pause PauseLog sendln wait PromptLinux sendln CmdShowClock_IVA wait PromptLinux pause PauseLog closesbox return :ExecFreqTest ; ============================================================================ ; Execute the CPUFREQ Tests ; ============================================================================ msgStatus = '' ; State caption strconcat msgstatus StrStateCaption statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrDivider_2 logwrite StrStateCaption logwrite StrDivider_2 pause PauseLog ; Set VDD1 OPP sendln wait PromptLinux sendln CmdSetVDD1 wait PromptLinux pause PauseLog ; View current VDD1 OPP logwrite StrEmpty logwrite StrCaption logwrite StrViewVDD1 logwrite StrEmpty pause PauseLog sendln wait PromptLinux wait PromptLinux sendln CmdShowVdd1 pause PauseLog ; View current VDD2 OPP logwrite StrEmpty logwrite StrCaption logwrite StrViewVDD2 logwrite StrEmpty pause PauseLog sendln wait PromptLinux wait PromptLinux sendln CmdShowVdd2 pause PauseLog ; View virtual VDD clocks logwrite StrEmpty logwrite StrCaption logwrite StrViewClock_VirtVDD logwrite StrEmpty pause PauseLog sendln wait PromptLinux wait PromptLinux sendln CmdShowClock_VDDs pause PauseLog ; View current MPU & IVA clocks logwrite StrEmpty logwrite StrCaption logwrite StrViewClock_MPU_IVA logwrite StrEmpty pause PauseLog sendln wait PromptLinux wait PromptLinux sendln CmdShowClock_MPU pause PauseLog sendln wait PromptLinux sendln CmdShowClock_IVA wait PromptLinux pause PauseLog ; Wait for 'PauseSuspendBefore' strconcat msgstatus StrSleepBeforeSuspend statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrSleepBeforeSuspend logwrite StrEmpty pause PauseSuspendBefore sendln wait PromptLinux pause PauseLog ; Suspend strconcat msgstatus StrSuspend statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrSuspend logwrite StrEmpty pause PauseLog sendln sendln CmdSuspend ; Wait for 'PauseSuspendAfter' strconcat msgstatus StrSleepAfterSuspend statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrSleepAfterSuspend logwrite StrEmpty pause PauseSuspendAfter ; Resume strconcat msgstatus StrResume statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrCaption logwrite StrResume logwrite StrEmpty sendln wait PromptLinux flushrecv pause PauseLog closesbox return :ExecFreqTest2 ; ============================================================================ ; Execute the CPUFREQ Tests (VDD2) ; ============================================================================ msgStatus = '' ; State caption strconcat msgstatus StrStateCaption statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrDivider_2 logwrite StrStateCaption logwrite StrDivider_2 pause PauseLog ; Set VDD2 OPP sendln wait PromptLinux sendln CmdSetVDD2 wait PromptLinux pause PauseLog ; View current VDD1 OPP logwrite StrEmpty logwrite StrCaption logwrite StrViewVDD1 logwrite StrEmpty pause PauseLog sendln wait PromptLinux wait PromptLinux sendln CmdShowVdd1 pause PauseLog ; View current VDD2 OPP logwrite StrEmpty logwrite StrCaption logwrite StrViewVDD2 logwrite StrEmpty pause PauseLog sendln wait PromptLinux wait PromptLinux sendln CmdShowVdd2 pause PauseLog sendln wait PromptLinux flushrecv pause PauseLog closesbox return ; ============================================================================ ; SUBROUTINE ; ; Execute the CPUFREQ Tests (Negative) ; ============================================================================ :ExecFreqTest_N msgStatus = '' ; State caption strconcat msgstatus StrStateCaption statusbox msgstatus TitleWindow logwrite StrEmpty logwrite StrDivider_2 logwrite StrStateCaption logwrite StrDivider_2 pause PauseLog ; Set VDD1 OPP sendln wait PromptLinux sendln CmdSetVDD1 wait PromptLinux flushrecv pause PauseLog closesbox return
omap3evm-flash-uboot.ttl
omap3evm-boot-ramdisk.ttl
;; Tera Term Macro ;; ============================================================================ ;; file omap3evm-boot-ramdisk.ttl ;; ;; desc Steps to boot the Linux kernel using ramdisk on the OMAP3EVM. ;; ============================================================================ ;; HISTORY ;; ;; 2007-11-30 Sanjeev Premi ;; Original Version ;; ============================================================================ include '__common.ttl' VarBootMethod = Boot_RAMDISK include '__uboot-config-common.ttl' include '__uboot-config-network.ttl' include '__uboot-load-kernel.ttl' include '__kernel-common.ttl' include '__kernel-boot.ttl'
omap3evm-boot-nfs.ttl
;; Tera Term Macro ;; ============================================================================ ;; file omap3evm-boot-nfs.ttl ;; ;; desc Steps to boot the Linux kernel using NFS on the OMAP3EVM. ;; ============================================================================ ;; HISTORY ;; ;; 2007-11-30 Sanjeev Premi ;; Original Version ;; ============================================================================ include '__common.ttl' VarBootMethod = Boot_NFS include '__uboot-config-common.ttl' include '__uboot-config-network.ttl' include '__uboot-load-kernel.ttl' include '__kernel-common.ttl' include '__kernel-boot.ttl'
omap3evm-test-power.ttl
;; Tera Term Macro ;; ============================================================================ ;; file omap3evm-test-power.ttl ;; ;; desc Steps to execute Power Management test cases on the OMAP3EVM. ;; ============================================================================ ;; HISTORY ;; ;; 2008-04-25 Sanjeev Premi ;; Original Version ;; ============================================================================ include '__common.ttl' include '__kernel-common.ttl' include '__kernel-power.ttl' include '__test-cpuidle.ttl' include '__test-cpufreq.ttl' beep pause 1 beep pause 1 beep
What about DaVinci TeraTerm Scripts?
Below are a few simple scripts used to boot a DaVinci EVM - obviously you'll need to modify your IP address, kernel name and rootpath appropriately. These examples should serve as a good starting point if you want to create your own scripts.
To run the scripts, simply hit any key during the U-boot countdown to get to the U-boot prompt. Then run "Macro->Control" and browse to the *.ttl.
DM6446: Crossover Script
When you don't have a switch/router and need to boot your EVM using TFTP/NFS, you can directly connect your EVM to your laptop with a crossover cable. Here, the Linux host's IP address is set to 192.168.1.100 (modify as needed). To manually set the Linux host's IP address:
- host$ su - Login as root
- host# setup - Setup your network
- Browse to Network Configuration, then choose "Yes" (to Setup Network)
- Uncheck "Use dynamic IP configuration" using the spacebar (if needed)
- Tab to "IP address:" and type 192.168.1.100 and tab (using default values for Netmask, Gateway and Nameserver) to "OK" and hit Enter. Save your settings when prompted.
- host# /etc/init.d/network restart - Restart your network
- host# ipconfig - Verify that your IP address has been set to 192.168.1.100
Also, note the $(videoargs) setting below (setup for DVSDK 1.30)--if you are using an older DVSDK, simply remove $(videoargs) from the bootargs.
;; Tera Term Macro ;; ============================================================================ ;; file dm6446_crossover.ttl ;; comments rename serverip, rootpath and bootfile ;; ============================================================================ showtt 0 setsync 1 sendln 'setenv serverip 192.168.1.100' waitrecv '#' 1 0 sendln 'setenv ipaddr 192.168.1.101' waitrecv '#' 1 0 sendln 'setenv nfshost $(serverip)' waitrecv '#' 1 0 sendln 'setenv rootpath /home/user/target' waitrecv '#' 1 0 sendln 'setenv videoargs video=davincifb:vid0=720x576x16,2500K:vid1=720x576x16,2500K:osd0=720x576x16,2025K davinci_enc_mngr.ch0_output=COMPOSITE davinci_enc_mngr.ch0_mode=ntsc' waitrecv '#' 1 0 sendln 'setenv bootargs $(videoargs) console=ttyS0,115200n8 noinitrd rw root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock ip=$(ipaddr) mem=120M' waitrecv '#' 1 0 sendln 'tftpboot 0x80700000 uImage; bootm' waitrecv '#' 1 0
Note: The use of parenthesis for variable substitution is being deprecated for new U-boot releases - use curly braces {} instead. Check http://www.denx.de/wiki/view/DULG/CommandLineParsing
Are there any DM355 examples?
Below are 4 macros for each of the boot options on DM355 - TFTP/NAND for kernel and NAND/NFS for file system):
;; Tera Term Macro ;; ============================================================================ ;; file dm355_tftp_nfs.ttl ;; comments rename the serverip, rootpath and bootfile ;; ============================================================================ showtt 0 setsync 1 sendln 'setenv serverip xxx.xxx.xxx.xxx' waitrecv '#' 1 0 sendln 'setenv nfshost $(serverip)' waitrecv '#' 1 0 sendln 'setenv rootpath /home/user/target' waitrecv '#' 1 0 sendln 'setenv videoargs video=dm355fb:vid0=720x480x16,2025K@0,0:vid1=720x480x16,2025K@0,0:osd0=720x480,1350K@0,0:osd1=720x480,1350K@0,0 waitrecv '#' 1 0 sendln 'setenv bootargs $(videoargs) console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=$(nfshost):$(rootpath) ip=dhcp mem=116M' waitrecv '#' 1 0 sendln 'setenv bootfile uImage' waitrecv '#' 1 0 sendln 'dhcp;bootm' waitrecv '#' 1 0
Note: The use of parenthesis for variable substitution is being deprecated for new U-boot releases - use curly braces {} instead. Check http://www.denx.de/wiki/view/DULG/CommandLineParsing
;; Tera Term Macro ;; ============================================================================ ;; file dm355_tftp_nand.ttl ;; comments rename the serverip and bootfile ;; ============================================================================ showtt 0 setsync 1 sendln 'setenv serverip xxx.xxx.xxx.xxx' waitrecv '#' 1 0 sendln 'setenv videoargs video=dm355fb:vid0=720x480x16,2025K@0,0:vid1=720x480x16,2025K@0,0:osd0=720x480,1350K@0,0:osd1=720x480,1350K@0,0 waitrecv '#' 1 0 sendln 'setenv bootargs $(videoargs) console=ttyS0,115200n8 root=/dev/mtdblock3 rw rootfstype=yaffs2 rw ip=dhcp mem=116M' waitrecv '#' 1 0 sendln 'setenv bootfile uImage' waitrecv '#' 1 0 sendln 'dhcp;bootm' waitrecv '#' 1 0
Note: The use of parenthesis for variable substitution is being deprecated for new U-boot releases - use curly braces {} instead. Check http://www.denx.de/wiki/view/DULG/CommandLineParsing
;; Tera Term Macro ;; ============================================================================ ;; file dm355_nand_nfs.ttl ;; comments rename the serverip and rootpath ;; ============================================================================ showtt 0 setsync 1 sendln 'setenv serverip xxx.xxx.xxx.xxx' waitrecv '#' 1 0 sendln 'setenv nfshost $(serverip)' waitrecv '#' 1 0 sendln 'setenv rootpath /home/user/target' waitrecv '#' 1 0 sendln 'setenv videoargs video=dm355fb:vid0=720x480x16,2025K@0,0:vid1=720x480x16,2025K@0,0:osd0=720x480,1350K@0,0:osd1=720x480,1350K@0,0 waitrecv '#' 1 0 sendln 'setenv bootargs $(videoargs) console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=$(nfshost):$(rootpath) ip=dhcp mem=116M' waitrecv '#' 1 0 sendln 'nboot 0x80700000 0 0x400000;bootm' waitrecv '#' 1 0
Note: The use of parenthesis for variable substitution is being deprecated for new U-boot releases - use curly braces {} instead. Check http://www.denx.de/wiki/view/DULG/CommandLineParsing
;; Tera Term Macro ;; ============================================================================ ;; file dm355_nand_nand.ttl ;; ============================================================================ showtt 0 setsync 1 sendln 'setenv videoargs video=dm355fb:vid0=720x480x16,2025K@0,0:vid1=720x480x16,2025K@0,0:osd0=720x480,1350K@0,0:osd1=720x480,1350K@0,0 waitrecv '#' 1 0 sendln 'setenv bootargs $(videoargs) console=ttyS0,115200n8 root=/dev/mtdblock3 rw rootfstype=yaffs2 rw ip=dhcp mem=116M' waitrecv '#' 1 0 sendln 'nboot 0x80700000 0 0x400000;bootm' waitrecv '#' 1 0
Note: The use of parenthesis for variable substitution is being deprecated for new U-boot releases - use curly braces {} instead. Check http://www.denx.de/wiki/view/DULG/CommandLineParsing
Are there any DM6467 examples?
Below is an example ttl script for users with a switch/router. To reiterate one of the advantages of using a ttl script is that you can share boards between team members without wrenching their boot settings.
This ttl script has been tested in the DVSDK 1.40 environment.
Naturally replace the serverip with whatever /sbin/ifconfig shows as your IP address.
showtt 0 setsync 1 sendln 'setenv serverip 158.123.45.678' waitrecv '#' 1 0 sendln 'setenv nfshost $(serverip)' waitrecv '#' 1 0 sendln 'setenv ipaddr dhcp' waitrecv '#' 1 0 sendln 'setenv rootpath /home/user/workdir/filesys_dm6467' waitrecv '#' 1 0 sendln 'setenv bootargs console=ttyS0,115200n8 noinitrd rw root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock ip=$(ipaddr) mem=120M davincihd_capture.channel0_numbuffers=4' waitrecv '#' 1 0 sendln 'setenv bootfile uImage.DM6467' waitrecv '#' 1 0 sendln 'dhcp;tftpboot;bootm' waitrecv '#' 1 0
Note: The use of parenthesis for variable substitution is being deprecated for new U-boot releases - use curly braces {} instead. Check http://www.denx.de/wiki/view/DULG/CommandLineParsing
What about OMAP-L1 TeraTerm Scripts?
Are there any OMAPL137 examples?
Below is an example ttl script for users with a switch/router and NFS server. To reiterate one of the advantages of using a ttl script is that you can share boards between team members without wrenching their boot settings.
This ttl script has been tested in the SDK 1.00.00.10 environment and all directories and filenames match the default installation procedure as listed in the Installing_the_Software_for_OMAP-L137
Note: for OMAPL137 you must set the delay as mentioned in the What is a TeraTerm INI? section
- Replace the serverip with whatever /sbin/ifconfig shows as your IP address.
- Replace the useracct with the name you use to login to your Linux PC.
; Keep the VT window open while executing macro showtt 1 ; Set the synchronous mode setsync 1 ; Set the title to make easier identification between boards settitle 'OMAPL137' ; set tftp server ip address sendln 'setenv serverip 192.168.1.89' ;CHANGE 192.168.1.89 TO MATCH YOUR CONFIGURATION!!! ; set nfs server ip address sendln 'setenv nfshost ${serverip}' ; set nfs rootpath sendln 'setenv rootpath /home/<useracct>/workdir/filesys' ;CHANGE <useracct> TO MATCH YOUR CONFIGURATION!!! ; set kernel command line argument sendln 'setenv bootargs console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=${nfshost}:${rootpath},nolock mem=32M' ; choose kernel image file name sendln 'setenv bootfile uImage' ; obtain the IP via dhcp server and boot the board! sendln 'dhcp;bootm' ; end of macro file
The script below works with an USB pendrive that should meet the requirements below. Check the <LSP_02.20_OMAP-L137_User_Guide.pdf> and this topic for additional details.
- U-boot must be rebuilt with USB support enabled.
- The 2GB USB pendrive must be connected to USB0 only and contain two partitions:
- the first partition must be of type FAT16 or FAT32 and contains the uImage (Linux Kernel) file in the root directory
- the second partition must be of type ext2 or ext3 and contains the target filesystem (the same contents of /home/<useracct>/workdir/filesys)
; Keep the VT window open while executing macro showtt 1 ; Set the synchronous mode setsync 1 ; needed because of the slower operations usb start and fatload PromptUboot = 'U-Boot > ' ; Set the title to make easier identification between boards settitle 'OMAPL137' ; check if USB is alive and which devices are on sendln 'usb start' wait PromptUboot ; load the kernel image to memory sendln 'fatload usb 0:1 0xC0700000 uimage' wait PromptUboot ; set kernel command line argument sendln 'setenv bootargs console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/sda2 rootfstype=ext2 mem=32M' ;USB BOOT ; choose kernel image file name sendln 'setenv bootfile uImage' ; boot the board! sendln 'bootm' ; end of macro file
Note: The command usb start sometimes hangs on the message scanning bus for storage devices.... If this happens to you, stop the macro from executing, reset the board and reload the script file.
The script below works with a linux kernel in SPI and a MMC/SD card that contains the root filesystem
- The SPI Flash should be pre-loaded with a linux kernel located at address 0x1e0000 (Primus U-boot is not able to initialize and load a kernel from the SD card). The production boards will have the kernel preloaded. For additional details on how to do this, please check this topic and section 5.4.2 of the <LSP_02.20_OMAP-L137_User_Guide.pdf>
- The last parameter of the sf read command must be equal or greater than the size of the linux kernel image.
; Keep the VT window open while executing macro showtt 1 ; Set the synchronous mode setsync 1 ; Set the title to make easier identification between boards settitle 'OMAPL137' ; needed because of the slower SPI Flash operations PromptUboot = 'U-Boot > ' ; set kernel command line argument sendln 'setenv bootargs console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/mmcblk0p1 rootfstype=ext2 mem=32M' ;MMC/SD BOOT ; select the SPI Flash memory sendln 'sf probe 0' wait PromptUboot ; load kernel image to RAM address 0xc0700000... sendln 'sf read 0xc0700000 0x1e0000 0x220000' wait PromptUboot ; ...and boot the board! sendln 'bootm' ; end of macro file
Are there any OMAPL138 examples?
Below is an example ttl script for users with a switch/router and NFS server. To reiterate one of the advantages of using a ttl script is that you can share boards between team members without wrenching their boot settings.
This ttl script has been tested in the SDK 1.00.00.08 environment and all directories and filenames match the default installation procedure as listed in the GSG:_Installing_the_Software_for_OMAP-L1
; Keep the VT window open while executing macro showtt 1 ; Set the synchronous mode setsync 1 ; Set the title to make easier identification between boards settitle 'OMAPL138' ; The timeout between lines is 1 second ;timeout = 1 ; set tftp server ip address sendln 'setenv serverip 192.168.1.89' ;CHANGE 192.168.1.89 TO MATCH YOUR CONFIGURATION!!! ; set nfs server ip address sendln 'setenv nfshost ${serverip}' ; set nfs rootpath sendln 'setenv rootpath /home/<useracct>/workdir/filesys' ;CHANGE <useracct> TO MATCH YOUR CONFIGURATION!!! ; set kernel command line argument sendln 'setenv bootargs console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=${nfshost}:${rootpath},nolock mem=32M' ; choose kernel image file name sendln 'setenv bootfile uImage' ; obtain the IP via dhcp server and boot the board! sendln 'dhcp;bootm' ; end of macro file
What about using a DLP Pico Projector?
Beagle example
; Tera Term script for using DLP Pico Projector as display on Beagle ; File system on partition 2 of SD card - you may need to modify the DSS based on your kernel ; The first bootargs are for 2.6.28, and second set for 2.6.29 setsync 1 sendln 'mmcinit' waitrecv '#' 1 0 sendln 'setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait omap-dss.def_disp=dvi omapfb.video_mode=640x480MR-16@60 omapfb.vram=4M,4M,4M mem=80M' ;sendln 'setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait omapdss.def_disp=dvi omapfb.mode=dvi:640x480MR-16@60 omapfb.vram=0:4M,1:4M,2:4M mem=80M' waitrecv '#' 1 0 sendln 'setenv bootcmd mmcinit;fatload mmc 0 80300000 uImage;bootm 80300000' waitrecv '#' 1 0
What is a TeraTerm INI?
When TeraTerm starts, it runs TERATERM.INI to setup the console. Once you have set your serial terminal to the correct baude rate (via "Setup->Serial") on COM1 (via "Setup->General->Default Port"), you can save the setup via "Setup->Save Setup." Save this setup in the TeraTerm Installation directory by overwriting TERATERM.INI. Now your TeraTerm will be setup correctly every time you start it.
To run the above scripts, you may need to add a line delay of 100ms (otherwise the lines can become concatenated) by setting the Transmit delay to 100 ms/line (via "Setup->Serial"). You'll probably want to save this modification in TERATERM.INI to avoid having to modify it every time you start TeraTerm.
Leave a CommentComments
Comments on Teraterm Scripts



Teraterm keeps a 16K receive buffer. The waitrecv command searches the buffer but does NOT purge the buffer. This is why your above scripts require the transmit delay. If you add flushrecv before each sendln in the above scripts they would work properly. Otherwise the very first "#" that is received satisfies all the following waitrecv '#' 1 0. You need to flush the existing "#" from the recv buffer by calling flushrecv if you want to wait for a new one.
--Keith 13:45, 14 September 2009 (CDT)