| Versions |
 |
|
| Author |
Topic  |
|
AHMHeeren
Netherlands
57 Posts |
Posted - 03 avr. 2011 : 09:25:09
|
I have a problem Mio with my Moov S505 (Seeker R 16 00 0773 STF 128 M) with built-in TMC-receiver. After unlocking it, I found out that while using another navigation progam that TMC COM1 port is not accesable so I can not use the build in TMC receiver in combination with it. It seems that the Mio Software opens this port only when Mio Software is used and shuts down the port when the program closes. I know I’m not talking about a new problem here, I have read a lot about it on other places and have tried a lot of suggestions (editing syst.txt, .ini files etc.) without any results so far.
I find it hard to believe there is no solution here: with so may people, knowledge and experience it must be possible to get other software working with this piece of hardware.
I’m thinking in the following two directions at this moment. 1. Upgrade/downgrade the Mio Software hoping the connection between the use of this software and the use of the internal TMC-receiver will be broken. 2. Finding a way to activate the port without using the Mio Software (and perhaps solving the baudrate issue later on) by getting the corresponding dll’s loaded as the other software is started. Perhaps there is a way to get this done by scripting or renaming the dll’s and put them in the of the other software, I don’t know.
I found out with PortSplitter that I can redirect TMC_com, GPS_com, SW_TMC COM1 and SirFNAVDRV to the available ports 0, 3, 4, 6, 7, and 8. I conclude from this that the ports 1, 2, 5 and ? are connected with one of the four drivers. Question now is what the role of TMC_com and SW_TMC COM1 is in order to be able to determine which one iGO force te connect to.
Using TotalCommander I found in \\Plugins\Registry\HKLM\Drivers\BuiltIn the following two subdirectories related to TMC: SW_TMC en TMC_HWCOM.
Within SW_TMC I found the following files with their values: CountryCode - 0 DeviceArrayIndex - 1 DeviceType -1 Dll - s3c2443_SW_TMC.Dll (to be found in \Windows) ErrorCorrection - 3 Index -1 Irq- 42 Order - 52 PIChecking - 0 Prefix - COM Protocol - 0 RadioEnable - 0 RFModuleType - 0
Within TMC_HWCOM I found the following files with their values: DeviceConfig 10 00 00 00 05 00 00 00 10 01 00 00 00 48 00 00 00 00 08 00 00 00 00 00 00 DeviceArrayIndex - 1 DeviceType - 0 Dll- serial_smdk2450.dll (to be found in\Windows) FriendlyName \u2013 TMC_COM IClass \u2013 {CC5195AC-BA49-48a0-BE17-DF6D1B0173DD} Index - 1 InterruptBitShift - 3 Irq - 23 MemBase- 1342193664 MemLen - 48 Order -53 Prefix - COM Priority - 0 Tsp \u2013 unimodem.dll (to be found in \Windows)
I’m not sure what all parameters are for and what they mean, but may be there is a way to change them in order to get them form preventing shutting down COM1 after the Mio Software is closed ?
R/Ton
|
Mio Moov S505 |
|
|
Ads
|
|
|
jwoegerbauer
1822 Posts |
Posted - 03 avr. 2011 : 10:06:59
|
Taken from here
quote: Originally posted by Osprey First, you should compare your sys.txt files. There are TMC settings for that file that your colleague may have and you not. If there's no difference, is your colleague using MioPocket? Regardless, one of the main differences between a Mio Digiwalker like the c720 and a Mio Moov/Spirit like the S555 is that, with Moovs & Spirits, some hardware functions are enabled only when MioMap is launched. In a Digiwalker, they're enabled at system startup, so you can use them in any app. That's likely why your colleague can use TMC in iGO. I don't know of any way for you to enable such functions without running the Mio software which, unfortunately, attempts to run MioMap. I would open up MioAutoRun\Scripts\iGoLauncher2.mscr and, before the "CallScript" line, add... Run("<pathtoexe>\<exefilename>") Sleep(1000) Kill("<exefilename>") ...where the file being run and killed is AppStartupSec.exe, AppStartupPri.exe and SmartST_CE.exe (which are likely located somewhere under "\My Flash Disk\Program Files", each being tried in turn. Also, play with the Sleep number (which is in milliseconds), as you may need 2000 or 3000 or more (or maybe even something less than 1000, who knows); it's all trial and error. You might save yourself time by trying multiple combinations per run, one after the other.
|
 |
|
|
Tarmangini
3 Posts |
Posted - 03 avr. 2011 : 10:45:17
|
@AHMHeeren You can use Mireo BE 3.1 and yours build in TMC will work.
regards |
Mio Moov S555 Eu |
 |
|
|
AHMHeeren
Netherlands
57 Posts |
Posted - 03 avr. 2011 : 15:27:13
|
@jwoegerbauer - didn't work for me :-( Isn't there a way to keep certain applications running in the background to keep COM1 open while using another navigation program ?
@Tarmangini - didn't get it up and running on my device. |
Mio Moov S505 |
 |
|
|
jwoegerbauer
1822 Posts |
Posted - 03 avr. 2011 : 16:50:28
|
quote: Originally posted by AHMHeeren Using TotalCommander I found in \\Plugins\Registry\HKLM\Drivers\BuiltIn the following two subdirectories related to TMC: SW_TMC en TMC_HWCOM.
Within SW_TMC I found the following files with their values:
Dll - s3c2443_SW_TMC.Dll (to be found in \Windows) Index -1 Prefix - COM
Within TMC_HWCOM
Dll- serial_smdk2450.dll (to be found in\Windows) Index - 1 Prefix - COM
I’m not sure what all parameters are for and what they mean ...
TMC_HWCOM is the chip's serial port SW_TMC seems to be a virtual serial port (i.e. mapped port, all can read from, none blocks the other one)
The most surprising fact for me is that 2 drivers are using the same COM-port, will say COM1. That cannot go well, IMO. You should try to redirect SW_TMC to another free, unused COM-port. If done so, try again whether iGO now can read from TMC_HWCOM (COM1), and if not, try to force iGO to read TMC-data from this (new) SW_TMC port (COMxxx).
EDIT: And of course you try all this in reverse order, will say you redirect TMC_HWCOM, let SW_TMC untouched.
No other ideas be me.
|
Edited by - jwoegerbauer on 03 avr. 2011 17:06:10 |
 |
|
|
AHMHeeren
Netherlands
57 Posts |
Posted - 06 avr. 2011 : 07:50:10
|
Thanks for the suggestion, still experimenting with it.
Another question about the earlier suggestion coming from Osprey where he said: I would open up MioAutoRun\Scripts\iGoLauncher2.mscr and, before the "CallScript" line, add... Run("<pathtoexe>\<exefilename>") Sleep(1000) Kill("<exefilename>") ...where the file being run and killed is AppStartupSec.exe, AppStartupPri.exe and SmartST_CE.exe (which are likely located somewhere under "\My Flash Disk\Program Files", each being tried in turn.
Is didn't work for me, as I believe first running and then killing an application doesn't keep COM1 port active and has the same result as closing down the mio software. What might work is to run the file(s) and keep them low profile active in the background. Now is there a way to do so, by using another command instead of 'kill' ? I'm not a scripter, but isn't there a command like sleep, snooze, standby or something like it ? |
Mio Moov S505 |
 |
|
|
jwoegerbauer
1822 Posts |
Posted - 06 avr. 2011 : 09:54:12
|
First of all, don't know which TMC-enabled nav app you are using, I'll try to explain things with iGO. a. iGo.exe depends on libraries COREDLL.dll, ole32.dll, toolhelp.dll and relies on GNSTMC driver (gpstmc.dll) to be loaded! b. gpstmc.dll only depends on COREDLL.dll. Secondly as shown above, neither iGo.exe nor gpstmc.dll relies on library s3c2443_SW_TMC.Dll, hence this really must be specific to your device. You should find out, which a. application ( AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe ??? ) makes use of this library, b. library s3c2443_SW_TMC.Dll itself depends / relies on to get an idea why this library s3c2443_SW_TMC.Dll is listet under HKLM\Drivers\BuiltIn Thirdly you should find out whether library s3c2443_SW_TMC.Dll is found under HKLM\Drivers\Active\xxx, too. If it's not activated yet ( not running AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe !!! ) then you can try to load s3c2443_SW_TMC.Dll it with TroNik's LoadDll.exe you find in \MioAutoRun\Programs\Tronik before you run your nav app. |
 |
|
|
AHMHeeren
Netherlands
57 Posts |
Posted - 06 avr. 2011 : 13:04:14
|
OK, I think I'm getting closer to a solution now. Please find my findings and addional questions within your message below.
a. iGo.exe depends on libraries COREDLL.dll, ole32.dll, toolhelp.dll and relies on GNSTMC driver (gpstmc.dll) to be loaded! b. gpstmc.dll only depends on COREDLL.dll.
gpstmc.dll is present in iGO's root next to iGO.exe on the SD Card core.dll, ole32.dll and toolhelp.dll are present in \Windows of the device.
Secondly as shown above, neither iGo.exe nor gpstmc.dll relies on library s3c2443_SW_TMC.Dll, hence this really must be specific to your device. You should find out, which a. application ( AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe ??? ) makes use of this library,
How to find out this ?
b. library s3c2443_SW_TMC.Dll itself depends / relies on to get an idea why this library s3c2443_SW_TMC.Dll is listet under HKLM\Drivers\BuiltIn
If I look ub \\Plugins\Registry\HKLM\Drivers\Builtin, I find within SW_TMC the following lines with corresponding values of parameters of which I do not know what they mean: CountryCode - 0 DeviceArrayIndex - 1 DeviceType -1 Dll - s3c2443_SW_TMC.Dll (te vinden in \Windows) ErrorCorrection - 3 Index -1 Irq- 42 Order - 52 PIChecking - 0 Prefix - COM Protocol - 0 RadioEnable - 0 RFModuleType - 0
Thirdly you should find out whether library s3c2443_SW_TMC.Dll is found under HKLM\Drivers\Active\xxx, too.
I'm not sure here: I only have a number of subdirectories numbered from 1 to 36 and an option to 'add value' in here.
If it's not activated yet ( not running AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe !!! ) then you can try to load s3c2443_SW_TMC.Dll it with TroNik's LoadDll.exe you find in \MioAutoRun\Programs\Tronik before you run your nav app.
So I have to put SW_TMC.DLL into the LoadDLL.ini and run TroNik's LoadDll.exe before starting iGO by adding this line into the script that launches iGO (iGO8.mcr) ? |
Mio Moov S505 |
 |
|
|
jwoegerbauer
1822 Posts |
Posted - 06 avr. 2011 : 18:33:21
|
A. Some theoretical stuff first of all
1) A library (.DLL-file) only contains helper functions, it's not an executable you can run. For each library OS (WinCE) maintains a load-counter. If loaded first time, library's load-counter becomes value 1. Generally said, if a library is loaded/unloaded by an application into/from RAM, OS (WinCE) corrects its load-counter. A well behaved app's (pseudo) source-code that uses functions contained in a .dll looks like
Start()
// load dll to be used into RAM
LoadLibrary(xyz.dll) <= increments load-counter by 1
// do something using function(s) contained in dll
DoProcess()
// unload dll used from RAM
FreeLibrary(xyz.dll) <= decrements load-counter by 1
Stop()
If the load-counter, maintained by OS (WinCE) equals 0, the library (in most cases automatically) gets wiped out from RAM.
2) If with registry editor you open an entry in HKLM\Drivers\Active\xxx, for example Active\05, you'll see under subkey "Key" its corresponding value in HKLM\Drivers\Builtin, in my case I'll see "Drivers\Builtin\TMC_HWCOM", and under subkey "Name" you'll see the port used, in my case "COM1:". Hence you've to walk the complete chain to find out which builtin driver(s) currently operate(s) on TMC-port (COM1).
3) To find out whether an application ( AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe ??? ) makes use of a specific library, you load it into ExecutabiltiyChecker.exe that comes with the MioPocket package or a Win32 tool like "CFF Explorer" (or similar) or into a HexEditor.
B. Using TroNik's LoadDlls.exe?
If you'll use TroNik's LoadDlls.exe to ensure s3c2443_SW_TMC.Dll stays loaded ( the dll's load-counter - see A.1 - in each case is at least 1, thus it doesn't get wiped out - until a hardreset is performed ), in your case of course library s3c2443_SW_TMC.Dll must be pre-loaded, i.e. loaded before the real application ( AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe ??? ) loads it again. Therefore it's so important to find out which application ( AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe ??? ) makes use of this specific library.
|
 |
|
|
AHMHeeren
Netherlands
57 Posts |
Posted - 08 avr. 2011 : 08:22:57
|
Your answeres provide me with a lot of new things from which I learn a lot, thanks for that. They also give me the idea you have an idea how to solve this problem about the blocked port COM1. What I can not get behind right now is, what steps you have in mind to get there.
I got some pieces from the puzzle that may bring the solution a bit closer.
A. I used a search function to look for files that contained the phrase 'loadlibrary'. Related to MioAutorum the result was that 'loadlibrary' is found in mortscript.exe, taskmgr.exe, systeminformation32.exe, coredl2.dll, ieceext.dll, ole32.dll, shlwapi.dll and celib.dll. Also it is found in Windows\oem.res.
B. In HKLM\Drivers\Active\23 I found the only one that is related to COM1 and reading further the following. Busname: built_inPhase1_0_18_0 Busparent: 200304 Hnd: 6916752 InterfaceType: 0 Key Drivers\BuiltIn\SW_TMC Name: Com1
C. I did not use ExecutabilityChecker.exe yet because I have to find it first as I'm using MioPocket Lite and this application does not come with this.
R/TH |
Mio Moov S505 |
 |
|
|
jwoegerbauer
1822 Posts |
Posted - 08 avr. 2011 : 09:17:11
|
A:
Never don't forget, all now hereby to be tried out is based on pure theory, it's not proven whether it really will work. The thought behind this theory:
s3c2443_SW_TMC.Dll (dll) gets pre-loaded, thus its load-counter initializes to 1 app is started which again loads dll (in reality no new copy of dll is stored in RAM, but the pre-loaded is used by OS), thus its load-counter is incremented by 1, i.e. becomes 2 app calls a function in (pre-loaded) dll which initializes and starts and processes TMC-port app is killed, thus its load-counter is decremented by 1, i.e. becomes 1, but dll is still in RAM, because its load-counter isn't zeroed yet.
Note, it's merely an extension to Osprey's logic I quoted some posts above, not really an invention of me.
B:
You not have to search for "LoadLibrary", you have to investigate which of the 3 applications AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe makes use of this specific library s3c2443_SW_TMC.Dll. As said: It's always an executable that loads a library into RAM.
C:
I'm not familiar with MioPocket Lite.
|
Edited by - jwoegerbauer on 08 avr. 2011 09:26:03 |
 |
|
|
AHMHeeren
Netherlands
57 Posts |
Posted - 08 avr. 2011 : 11:15:27
|
OK, so what I take from this is that a possible workaround would be to add in Mortscript.exe (or iGO.exe ?) some lines that call for the function in (pre-loaded) dll which initializes and starts and processes TMC-port and loads the library into RAM. Question now is: how to do this ? I suspect there is a relation with what I found out earlier within HKLM\Drivers\Active\23 and HKLM\Drivers\Builtin but I don't know how to make use of these findings ?
I'm not sure why I should investigate which of the 3 applications AppStartupSec.exe, AppStartupPri.exe or SmartST_CE.exe makes use of this specific library s3c2443_SW_TMC.Dll ? This would from my perspective only be of any use if we would go for the option as mentioned earlier to start that specific application and kill it afterwards, hoping the library keeps loaded in RAM ?
R/TH |
Mio Moov S505 |
 |
|
|
jwoegerbauer
1822 Posts |
Posted - 08 avr. 2011 : 13:48:44
|
If library s3c2443_SW_TMC.Dll is activated not running any of the 3 named apps, then of course you can omit investigating, because this library then gets loaded during system boot by another app, we both (currently) do not know of (may be it's device exe), perhaps an e-mail to Mio's support team could bring light in this.
FYI: a. With the help of available MortScript.exe you can't call funcs in an external dll, but you could extend MortScript by such a functionality, because its source code indeed is available. b. You can't use iGO.exe to call funcs in an external dll, except you have access to its source code, extend this and re-compile it. |
 |
|
|
AHMHeeren
Netherlands
57 Posts |
Posted - 08 avr. 2011 : 14:07:42
|
OK, I will first start to try it with activating one of the three applications and kill them afterwards, hoping the library keeps loaded in RAM. Is there btw a reason why you advise to try this one at a time (3 possible combinations), or do you think it might be usefull to try all sorts of combinations as well (7 combinations possible) ?
If this doesn't work, could you provide me with a suggestion as to how I could extend MortScript by the functionality, iaw which lines should I try to refer to the available source code (and how should I name this source code) ?
THX again, it would be a major break-through for many mio moov spirit owners if we could come up with a solution here !
R/TH |
Mio Moov S505 |
 |
|
|
alois
7 Posts |
Posted - 08 avr. 2011 : 17:28:36
|
Accidentally came here. I'm wondering the scientific discussion fully lit. With IGO, my knowledge, TMC is steered by SYS.TXT, which at least should have these TMC related entries
[tmc] port="COM,1" baud=57600 source="gns"
|
 |
|
|
jwoegerbauer
1822 Posts |
Posted - 09 avr. 2011 : 08:25:05
|
AHMHeeren,
Reading your last post I won the impression you became totally confused, please correct me if I'm wrong.
quote:
If this doesn't work, could you provide me with a suggestion as to how I could extend MortScript by the functionality, iaw which lines should I try to refer to the available source code (and how should I name this source code) ?
IMO, you totally misinterpreted my statement MortScript.exe could be extendend, i.e. re-programmed. As I suspect it, you are not a programmer and you do not have a programming environment useable for PNA/GPS devices, such as ARM-capable compiler etc., right? Hence you should immediately forget this possibility.
quote:
I will first start to try it with activating one of the three applications and kill them afterwards, hoping the library keeps loaded in RAM. Is there btw a reason why you advise to try this one at a time (3 possible combinations), or do you think it might be usefull to try all sorts of combinations as well (7 combinations possible) ?
That's how I would create a test-environment (Notes: a. if below term <MioAutoRun> is used, it relates to folder MioAutoRun of MioPocket 4.0 Rel.68 distribution), b. if below term <ApplicationExe> is used, it relates to the device's default startup application, for example SmartST_CE.exe):
1) ensure GPS is external powered, thus in no case a power-supply interrupt may occur
2) a. copy TroNik's <storage media>\<MioautoRun>\Programs\Tronik\LoadDLLs.exe to <storage media>\<PathToApplication>\LoadDlls.exe b. in <storage media>\<PathToApplication> create (ANSI formatted) text file named LoadDlls.ini with contents as following
\Windows\s3c2443_SW_TMC.Dll
3) rename <ApplicationExe> to <ApplicationExe>.orig (e.g. SmartST_CE.exe.orig)
4) a. extract TULL.exe from <storage media>\MioAutoRun\Programs\TULL.zip b. copy extracted TULL.exe to <storage media>\<PathToApplication> and rename it to <ApplicationExe> (e.g. SmartST_CE.exe) c. create text file named <ApplicationExe>.ini (e.g. SmartST_CE.exe.ini) with contents as following
;pre-load s3c2443_SW_TMC.Dll L LoadDlls.exe ;delay 2.5 seconds D 2500 ;load orig startup app that again loads previously loaded dll L <ApplicationExe>.orig ;delay 10 seconds D 10000 ;kill orig startup app Z <ApplicationExe>.orig ;load MioPocket using its default loader L <flashdrive>\Launch.exe
5) Soft-reset device |
 |
|
Topic  |
|
|
|
| This page was generated in 0,59 seconds. |
 |
|