G120 - MF 4.2.8
Although hard to proof for me, I have some sense that the current related WiFi - DHCP - Socket problems on the G120 has to do with internal storage / memory management of variables in non volatile memory / flash.
I mentioned the example below in another topic, but for now added simple WiFi open - Close. Run this example using the debugger, restart the debug sessions 2 or 3 times and WiFi will try to update the firmware… Also notice that data in EWR is lost the 3rd run…
Found debugger!
Create TS.
Loading start at a0e00000, end a0e0fc38
Assembly: mscorlib (4.2.0.0) Assembly: Microsoft.SPOT.Native (4.2.0.0) Assembly: Microsoft.SPOT.Hardware (4.2.0.0)
Assembly: Microsoft.SPOT.Hardware.PWM (4.2.0.1) Loading Deployment Assemblies.
Attaching deployed file.
Assembly: G120EWR (1.0.0.0) Attaching deployed file.
Assembly: GHI.Premium.Net (4.2.8.0) Attaching deployed file.
Assembly: GHI.Premium.System (4.2.8.0) Attaching deployed file.
Assembly: Microsoft.SPOT.Hardware.Usb (4.2.0.0) Attaching deployed file.
Assembly: GHI.Premium.Hardware.G120 (4.2.8.0) Attaching deployed file.
Assembly: Microsoft.SPOT.Net (4.2.0.0) Resolving.
GC: 1msec 304392 bytes used, 7035276 bytes available
Type 0F (STRING ): 24 bytes
Type 15 (FREEBLOCK ): 7035276 bytes
Type 17 (ASSEMBLY ): 11544 bytes
Type 1E (BINARY_BLOB_HEAD ): 292752 bytes
Type 34 (APPDOMAIN_HEAD ): 72 bytes
GC: performing heap compaction…
The debugging target runtime is loading the application assemblies and starting execution.
Ready.
New configuration, defaults saved
The thread ‘’ (0x2) has exited with code 0 (0x0).
EWR test start
#### Exception GHI.Premium.Net.NetworkInterfaceExtensionException - 0x00000000 (1) ####
#### Message:
#### GHI.Premium.Net.WiFiRS9110::RunFirmware [IP: 0049] ####
#### GHI.Premium.Net.WiFiRS9110::Open [IP: 0014] ####
Start Updating WiFi module firmware:
This might take up to 1 minute
0 Sec
1 Sec
2 Sec
3 Sec
4 Sec
5 Sec
6 Sec
7 Sec
8 Sec
9 Sec
10 Sec
using System;
using System.Threading;
using GHI.Premium.Hardware;
using GHI.Premium.Net;
using GHI.Premium.System;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
namespace G120EWR
{
public class Program
{
private static readonly Configuration Config = new Configuration();
private static WiFiRS9110 _wifi;
public static void Main()
{
Debug.Print("EWR test start");
_wifi = new WiFiRS9110(SPI.SPI_module.SPI3, G120.Pin.P1_10, G120.Pin.P0_5, G120.Pin.P1_8);
try
{
if (!_wifi.IsOpen)
_wifi.Open();
}
catch (Exception e)
{
Debug.Print("WiFi Open Exception: " + e.Message);
Thread.Sleep(Timeout.Infinite);
}
_wifi.Close();
// Place a breakpoint here and restart a debug session.
Thread.Sleep(Timeout.Infinite);
}
}
public sealed class Configuration
{
private static ExtendedWeakReference _settingsReference;
internal AppSettings Settings = new AppSettings();
public Configuration()
{
_settingsReference = ExtendedWeakReference.RecoverOrCreate(typeof (AppSettings), 0,
ExtendedWeakReference.c_SurviveBoot |
ExtendedWeakReference.c_SurvivePowerdown);
_settingsReference.Priority = (int) ExtendedWeakReference.PriorityLevel.System;
Settings = _settingsReference.Target as AppSettings;
if (Settings == null)
{
// Must be a first time init
Settings = new AppSettings();
_settingsReference.Target = Settings;
Util.FlushExtendedWeakReferences();
Debug.Print("New configuration, defaults saved");
}
else
{
// -------------------------------------------------
// !!! EWR destroyed when next method "PushBackIntoRecoverList" is called !!!
// -------------------------------------------------
_settingsReference.PushBackIntoRecoverList();
Debug.Print("Configuration loaded");
}
}
public void Save()
{
_settingsReference.Target = Settings;
Util.FlushExtendedWeakReferences();
}
}
[Serializable]
internal sealed class AppSettings
{
public string SomeConfigData = "just some text";
}
}