Möglicher Fehler in der sblib
Verfasst: 2. Apr 2018, 23:06
Hallo,
ich habe jetzt schon einige Geräte von euch am Laufen, jetzt wollte ich die Firmware von diesem Thread http://selfbus.forums3.com/geraete-dev- ... -t446.html ausprobieren. Das Programmieren der TS hat beim ersten Versuch geklappt, es wurden auch die Schaltbefehle ausgeführt. Jetzt wollte ich die TS richtig in Betrieb nehmen und ich konnte die physikalische Adresse nicht über die ETS Funktion physikalische Adresse überschreiben. TS war schon in der Schalterdose und schön mit Isolierband umwickelt, daher kam ich dann auch nicht mehr an die Pins für den Programmiermodus dran.
So jetzt zum eigentlichen Problem. Bei der Fehlersuche habe ich festgestellt das ETS ein Memory Read von der Adresse 0x60 macht (Status BCU) und die TS hat 0x4d zurückgeliefert. Bei 0x4d ist auch das Bit für ich bin im Programmiermodus gesetzt und so hat ETS versucht die Adresse zu ändern, was aber nicht gelang da die TS überhaupt nicht im Programmiermodus ist.
Die Adresse 0x60 liegt bei BCU1 im UserRAM, die neue Firmware ist jetzt aber BIM112 und da beginnt das UserRam erst bei 0x5FC.
In der bcu.cpp wird jetzt aber bei einem MemoryRead geschaut ob die Adresse im UserRAM liegt:
Da das jetzt nicht der Fall ist, wird auch nicht die Funktion cpyFromUserRam aufgerufen in der bei Adresse 0x60 der Status zurückgegeben wird.
Der gleiche Fehler ist dann auch bei MemoryWrite wenn ETS das Gerät in den Programmiermodus setzen will.
Ist das jetzt ein Fehler in ETS5 das es bei einem BIM112 Gerät die Adresse 0x60 abfragt oder ist das ein Fehler in der sblib?
Gruß
Joachim
ich habe jetzt schon einige Geräte von euch am Laufen, jetzt wollte ich die Firmware von diesem Thread http://selfbus.forums3.com/geraete-dev- ... -t446.html ausprobieren. Das Programmieren der TS hat beim ersten Versuch geklappt, es wurden auch die Schaltbefehle ausgeführt. Jetzt wollte ich die TS richtig in Betrieb nehmen und ich konnte die physikalische Adresse nicht über die ETS Funktion physikalische Adresse überschreiben. TS war schon in der Schalterdose und schön mit Isolierband umwickelt, daher kam ich dann auch nicht mehr an die Pins für den Programmiermodus dran.
So jetzt zum eigentlichen Problem. Bei der Fehlersuche habe ich festgestellt das ETS ein Memory Read von der Adresse 0x60 macht (Status BCU) und die TS hat 0x4d zurückgeliefert. Bei 0x4d ist auch das Bit für ich bin im Programmiermodus gesetzt und so hat ETS versucht die Adresse zu ändern, was aber nicht gelang da die TS überhaupt nicht im Programmiermodus ist.
Die Adresse 0x60 liegt bei BCU1 im UserRAM, die neue Firmware ist jetzt aber BIM112 und da beginnt das UserRam erst bei 0x5FC.
In der bcu.cpp wird jetzt aber bei einem MemoryRead geschaut ob die Adresse im UserRAM liegt:
Code: Alles auswählen
else if (address >= USER_RAM_START && address < USER_RAM_END)
cpyFromUserRam(address - USER_RAM_START, sendTelegram + 10, count);
Der gleiche Fehler ist dann auch bei MemoryWrite wenn ETS das Gerät in den Programmiermodus setzen will.
Ist das jetzt ein Fehler in ETS5 das es bei einem BIM112 Gerät die Adresse 0x60 abfragt oder ist das ein Fehler in der sblib?
Gruß
Joachim