haute
Here are a few hints for you. All info below is for valid eTrex 20 firmware version 2.80.
eTrex is a multi-language device, so localizable strings won't be referenced directly from the firmware. Instead, some code will be used when referencing strings. And indeed there is a function for loading localizable strings which takes an integer as a string index:
There is a default English locale, which is the only locale contained in the firmware. The string of interest at 0x 80845EF8 is a part of the English locale.Code:GRMFW:802B0762 LoadString ; CODE XREF: sub_8010378C+12p
GRMFW:802B0762 ; sub_8010378C+7Cp ...
GRMFW:802B0762 PUSH {R4-R6,LR}
GRMFW:802B0764 LDR R4, =0x40036B0
Also there is a list of tags used for loading localizable strings from localization XML files:Code:GRMFW:80843DC4 LangEnglish unicode 0, <English>,0 ; DATA XREF: GRMFW:80857800o
GRMFW:80843DD4 aBearing unicode 0, <Bearing>,0
The tag of interest is the followingCode:GRMFW:808413BC TagList DCD aTxt_lang_id_st ; DATA XREF: LoadLanguage+56o
GRMFW:808413BC ; sub_802B0A7E:off_802B0D68o
GRMFW:808413BC ; "TXT_LANG_ID_STR_M"
GRMFW:808413C0 DCD aTxt_bearing_st ; "TXT_Bearing_STR_M"
GRMFW:808413C4 DCD aTxt_course_str ; "TXT_Course_STR_M"
GRMFW:808413C8 DCD aTxt_off_course ; "TXT_Off_Course_STR_M"
GRMFW:808413CC DCD aTxt_to_course_ ; "TXT_To_Course_STR_M"
The corresponding string index is (0x80841834-0x808413BC)/4 = 0x11E.Code:GRMFW:80841834 DCD aTxt_new_softwa ; "TXT_New_software_is_older_than_current_"
Then I suggest disassembling the firmware by issuing disasm(0x80100000,0x803C0000), which is defined in the following script: [Only registered and activated users can see links. Click Here To Register...].
After that I suggest searching for text "0x11E" (Alt-T). Then we can find where integer constant 0x11E is used for loading strings:
So it looks like this is the code that displays the message of interest. Good luck :)Code:GRMFW:8018EC5A MOVS R0, 0x11E
GRMFW:8018EC5E BL LoadString
GRMFW:8018EC62 STR R0, [R5,#0x1C]
GRMFW:8018EC64 LDR R0, =0x4000274
P.S.
Also I think this way of searching for particular peace of code isn't universal, as some localizable strings may be referenced by data structures defining complex windows, and not the firmware code itself. Even worse, these data structures may be constructed dynamically.
I don't know how complex windows are displayed in tourist devices, so maybe AlexWhiter will shed some light on it.