AVR simulator for Linux?

Long time ago, I have found some projects which simulates some plain circuits and components (LCDs, LEDs and some other basic) and some AVRs or some Arduino. They was basically free or trial and all for Windows, some of them are probably abandoned long time ago...

I do not use Windows anymore, for a very long time now. With Linux, I also prefer not to install Wine.

Is there any similar free and reliable native Linux GUI project which allow simulation of 328p, 2560 and at least LCD with HD44780 driver?

Hmm, with no respond so far, it seems there is none, or nobody here is aware of any suitable simulator.

I don't see the point of using a simulator. If i want to debug or test code on my computer, I use the native compiler instead of Arduino's cross-compiler, if I want to test it on-target, I run it on the target.

An Arduino costs €20, developing an Arduino simulator costs thousands of euros in development time. Time that is better spent actually developing the code you wanted to write in the first place.

Pieter

(Take 2, since site just crashed while I posted reply)

Indeed there is no point when sketch is small, however long time ago I stopped to write trivial ones. I rater write much complex libraries and sketchs for MEGA, require each function/method to be fully tested. If code is not related to MCU, can be tested fully on desktop program, however that doesn't guarantee it will work the same when compile for 8-bit MCU, specifically MEGA.

To avoid extreme upload, proper simulator is handy solution. At least according to my philosophy during software developing, optimization and testing.

Certainly there is one suitable free for Linux, however I have not manage to find it, yet.

proper simulator is handy solution

Simulators are just that, simulators.

They DO NOT replicate hardware function, are orders of magnitude slower, and will never, ever be 100% reliable.

jremington:
They DO NOT replicate hardware function, are orders of magnitude slower, and will never, ever be 100% reliable.

I'm very well aware of that and that is not what I'm asking. It is not possible to 100% simulate hardware nor modules supported inside MCU, but simply CPU instructions, flash and RAM memory and very basic functionality of module is possible to simulate properly.

I have actually almost finished one several years ago, but because of other life requirement it is on hold and I doubt I will be able to finish it. It is actually designed to behave similar as VirtualBreadboard for Winodws, even much simpler and that is exactly what I need. It does not have to be Altair simulator at all.

It is not that complex to make, it only require quite a bit of free time for one person.

But you expect someone else to do it correctly, and for free.

jremington:
But you expect someone else to do it correctly, and for free.

No, I believe that someone still done that before me. That is what I’m asking exactly.

When Linus started with Linux, most of people said that he is losing his time. Look now. There is also many free CAD softwares for Linux, why not this I’m asking?

I’m asking here because I’m not aware of any for Linux, which does not means other people here do not know as well. If you do not know, others may know. Please do not spread discussion about something I’m well aware.

noob314:
It is not possible to 100% simulate hardware nor modules supported inside MCU, but simply CPU instructions, flash and RAM memory and very basic functionality of module is possible to simulate properly.

If you're not emulating the hardware, it's even more useless.

noob314:
Indeed there is no point when sketch is small, however long time ago I stopped to write trivial ones. I rater write much complex libraries and sketchs for MEGA, require each function/method to be fully tested.

If you need reproducible testing, use a mocking framework, not a simulator.

If you write poor, non-portable code, there might be situations where it works fine on a computer but not on the AVR, however, a simulator is not going to save you in that situation.

Integration tests will always have to be performed on-target, in a real-life setup.

Here's an example of the testing/mocking framework I'm using for my larger libraries:

@PieterP

Obviously, you do not understand my requirement for a simulator. It is PITA to upload and test frequently all on real hardware, even there is no single connections with active signals, but plainly to check and optimize algorithms/code...

Never mind. If I ever get more time I will finish my own simulator, I do not want to waste my time on off topic discussion.

This topic may be locked.

noob314:
This topic may be locked.

Why?

Because you don't like seeing the replies, perchance? :grinning:

Can't think of any other reason. :roll_eyes:

noob314:
I do not want to waste my time on off topic discussion.

That has a familiar ring to it .............................

MPLABX runs on linux and now includes an AVR simulator that mostly works and is "vendor-supported."
simulavr is a relatively mature simulator.
I believe gdb now supports "target sim" (perhaps using simulavr.)

I'm not sure to what extent any of the above support AVR peripherals or external hardwre.

There is also the simavr project GitHub - buserror/simavr: simavr is a lean, mean and hackable AVR simulator for linux & OSX but it would be quite difficult to use it for testing large projects, it can be great for testing isolated functionality or even writing unit tests for isolated pieces of your code.