I am currently not able to use the master branch of simulavr nor
simulavr 1.1 because all these versions have lost too many features in
the past. I started to reintegrate a lot of the old features and also
fix a long list of bugs. There are still a long list of known bugs, e.g.
broken irq handling, spi, some unit tests and a lot of dropped features.

So I decided to create a new branch which you can find on the repo named
"krud_private_reenable_old_features". The meaning of "private" is, that
I will not again see commits on this branch which will again remove
features :-)

The current state of "my" branch is:
* lcd support is now back from the old simulator and works as expected.
In addition 8 bit mode interface added.

* the console tracer is now working. The console tracer was dropped a
very long time ago and I have no idea why. I reenabled printing register
content, memory content, register names, timestamp, irq vector name and
a lot more.

* open drain simulation is working again

* building of libs for python and tcl is now working again

* unit tests are reenabled, some minor bugs have fixed there

* python is adapted to python 3

I did not remove any windows stuff on "my" branch, so there is a chance
that it works out of the box but I have no windows installation and
can't test it.

Feel free to use the new branch, it has a lot of reenabled features and
a lot of bugs fixed.

I have no idea what we will see in the future on the project. I did not
know if the master branch will take over my changes or not. But as the
master removes so many features, I was simply not able to compile nor to
use it anymore. The cmake stuff on master did not work on my fedora
installation so I wrote my own Makefile for the master branch, but still
it has dropped so many features that it is useless for me. Especially
that the console tracer is only tracing the instructions and nothing
more is useless for me.

I have planned, but without any timeline, also to fix irq handling (
using simply the old working code before it was "simplified" to get
correct irq handler selection and timing.

Also planned to monitor and analyze nested irqs in the irq statistic.
That has started but is not finished.

Also using the verilog interface for tracing registers, irq level and
memory content will be prepared ( after irq level info is available ).

Again: Feel free to use it, maybe some of the changes may help you,
maybe the non removed windows support is a startpoint.

Regards
Klaus




Am 25.10.20 um 14:23 schrieb Helge Kruse:
Hello,

The support for Windows has been dropped with simulavr 1.1.

But I would like to use the simulator on the Windows platform. I have
compiled the current version with VS2017 Community Edition. This
required some changes of the CMake output as well as at the source
files. Here are the necessary changes:

The Windows socket layer requires some changes:

- different set of include files.
- call to WSAStartup/WSACleanup
- call to _read() or recv() instead of read(), same applies to write()

The getopt module is not part of th Windows run time library and had to
be added from source.

The static constructors caused by the AVR_REGISTER macro invocation
doesn't work with the Microsoft linker. The reason is, that the linker
only uses object modules that resolve undefined symbols. As a
workaround, the simulavr currently links againts the static library
sim_static.lib and all object modules are forced to be included with
/WHOLEARCHIVE:sim_static.lib.

These changes require a change of the source code. Some "#ifdef WIN32"
can be used to make the adaption to the winsock subsystem. The getopt
module must be added or referenced by the simulavr project. Probably the
remaining changes can be done with a Windows specific CMakefile.txt.
Since CMake requires only one CMakefile.txt in a directory, the Linux
and the Windows build should get their own directories.

So, that's my idea of regaining the support for Windows of simulvar 1.x.
What do you think about it? Is it still desired to maintain a
cross-platform program? In that case I could  try to add my changes and
(honestly  current) hacks to a Git repository after improving the code
quality (remove hacks, etc.).


Best regards,
Helge




Reply via email to