QtARMSim
========
QtARMSim is an easy to use graphical ARM simulator. It provides an easy
to use multiplatform ARM emulation environment that has been designed
for Computer Architecture introductory courses.
The ARMSim ARM simulator, Copyright (c) 2014-20 by Germán Fabregat, is
bundled with QtARMSim. It can be found on the ``armsim/``
subdirectory of the QtARMSim installation path.
1. Installing QtARMSim
----------------------
In order to install QtARMSim, its dependencies should be installed first.
QtARMSim has the following dependencies: `Python3 <https://www.python.org/>`_,
`Qt for Python (PySide6) <https://wiki.qt.io/Qt_for_Python>`_, and ARMSim.
ARMSim, which is bundled with QtARMSim, has in turn the next dependencies:
`Ruby <https://www.ruby-lang.org/en/>`_ and the
`GNU GCC Arm toolchain <http://gcc.gnu.org/>`_.
The next subsections describe how to install QtARMSim and its dependencies on
GNU/Linux, Windows and macOS.
1.1 Installing QtARMSim on GNU/Linux
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The major GNU/Linux distributions already provide packages for ``Python3`` and
``Ruby``. Therefore, the provided package manager can be used to install them.
As for the GNU GCC, the required part of the GNU GCC Arm toolchain is bundled
with QtARMSim. Finally, ``Qt for Python`` and ``QtARMSim`` can be installed
using the ``pip3`` command provided by ``Python3``.
For example, on Ubuntu you can install QtARMSim using:
.. code-block:: shell-session
$ sudo apt install python3-pip ruby libxcb-xinerama0
$ sudo gem install shell e2mmap sync
$ sudo pip3 install QtARMSim
On a Gentoo distribution, you can install QtARMSim issuing (as root):
.. code-block:: shell-session
# emerge -av pip ruby
# pip3 install --user QtARMSim
If you are installing QtARMSim on a system where PySide6 is already provided as
a package, you can install the packaged version of PySide6 and then install
QtARMSim using the ``--no-deps`` option (be aware that the packaged version can
be not so to up to date as the one obtained from pip). Once the PySide6
package(s) are installed, QtARMSim should be installed as follows:
.. code-block:: shell-session
# sudo pip3 install --no-deps QtARMSim
1.2 Installing QtARMSim on Windows
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To install QtARMSim on Windows please follow the next steps:
1. Download a 64 bits **Python executable installer** from
`Python releases for Windows <https://www.python.org/downloads/windows/>`_.
During the installation process, please select the ``Add Python 3.X to PATH``
option.
2. Download a 64 bits **Ruby with Devkit** installer from
`Ruby Installer for Windows <http://rubyinstaller.org/>`_.
During the installation process, make sure that the
``Add Ruby executables to your PATH`` option is selected.
3. Open a Windows console (executing either ``Windows PowerShell`` or
``cmd``, depending on your Windows version), and execute the commands
indicated in the next steps.
3.1. Install the ``shell``, ``e2mmap`` and ``sync`` Ruby modules with:
.. code-block:: powershell
PS C:\Users\Username> gem install shell e2mmap sync
3.2. Install QtARMSim using the ``pip3`` command:
.. code-block:: powershell
PS C:\Users\Username> pip3 install QtARMSim
1.3 Installing QtARMSim on macOS
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To install QtARMSim on macOS, please follow the next steps:
1. Download and install **Python 3** from the
`Python downloads page <https://www.python.org/downloads/>`_.
2. Open a ``Terminal`` and execute the next command:
.. code-block:: shell-session
$ sudo -H pip3 install QtARMSim
After doing the previous steps, you should be able to execute QtARMSim by
typing ``qtarmsim`` on a **new** ``Terminal``.
Note: If an error message appeared when executing the ``pip3`` command saying that
there was no matching distribution of PySide6 for your macOS version, you can
instead install PySide6 with
`MacPorts <https://guide.macports.org/#installing.xcode>`_ and QtARMSim with no
dependencies using the following commands (MacPorts should be installed
previously):
.. code-block:: shell-session
$ sudo port install py39-pyside6 # same version as the installed Python
$ sudo -H pip3 install --no-deps QtARMSim
1.4 Installing the ``GNU GCC Arm toolchain`` (optional)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Starting with version 0.3.1 of QtARMSim, the required part of the ``GNU GCC Arm
toolchain`` is already bundled with QtARMSim. So this step should only be done
if there is a problem with the bundled GNU GCC Arm toolchain (i.e., QtARMSim
is not able to assemble any source code).
In this case, another instance of GNU GCC Arm toolchain can be installed and used.
On GNU/Linux, this can be accomplished by installing a GNU GCC ARM package
provided by the GNU/Linux distribution being used, by building a cross-compiling
toolchain, or by extracting the ``gcc-arm-none-eabi-????-linux.tar.bz2``
file from the `GNU Arm Embedded Toolchain Downloads page
<https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads>`_.
For example, on Ubuntu, this optional step can be achieved with:
.. code-block:: shell-session
$ sudo apt install gcc-arm-linux-gnueabi
And on Gentoo with:
.. code-block:: shell-session
# emerge -av crossdev
# echo "PORTDIR_OVERLAY=/usr/local/portage" >> /etc/portage/make.conf
# crossdev --target arm --ov-output /usr/local/portage
On Windows and macOS, to perform this optional step, download and execute the
respective Windows or macOS GNU GCC Arm toolchain package from the
`GNU Arm Embedded Toolchain Downloads page
<https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads>`_.
Once a new ``GNU GCC Arm toolchain`` is installed, please
configure the ``ARMSim Gcc Compiler`` QtARMSim option to point to the new
``arm-none-eabi-gcc`` executable.
2. Executing QtARMSim
---------------------
To execute QtARMSim, run the ``qtarmsim`` command, or click on the corresponding
entry on the applications menu (on GNU/Linux, under the ``Education:Science``
category).
3. Upgrading QtARMSim
---------------------
To upgrade an already installed version of QtARMSim, execute the following
command on GNU/Linux:
.. code-block:: shell-session
$ sudo pip3 install --upgrade QtARMSim
On Windows:
.. code-block:: powershell
PS C:\Users\Username> pip3 install --upgrade QtARMSim
On macOS:
.. code-block:: shell-session
sudo -H pip3 install --upgrade QtARMSim
4. Uninstalling QtARMSim
------------------------
To uninstall QtARMSim on GNU/Linux, execute the following command:
.. code-block:: shell-session
$ sudo pip3 uninstall QtARMSim
On Windows:
.. code-block:: powershell
PS C:\Users\Username> pip3 uninstall QtARMSim
On macOS:
.. code-block:: shell-session
sudo -H pip3 uninstall QtARMSim
5. Installation related known issues
------------------------------------
If something goes wrong after installing QtARMSim, executing the ``qtarmsim``
command on a terminal could give some insight of what is the error cause.
The next known issues should not occur if the installation instructions are
followed to the letter. They are listed here just in case they can be of some
help when upgrading a previously installed version.
+ The 5.14 packaged version of PySide2 on Ubuntu 20.04 LTS does not properly
display some icons and SVG images of QtARMSim. This can be solved by
installing a newer version of PySide2 using ``pip``::
$ sudo pip3 install PySide2
+ On Ubuntu 20.04 LTS, if the next error is shown when executing QtARMSim from
a terminal::
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
[...]
It can be solved by installing the package ``libxcb-xinerama0``::
$ sudo apt install libxcb-xinerama0
+ Starting with the 2.5 version of the Ruby installer, ``shell``, ``e2mmap``
and ``sync`` ruby modules are no longer bundled in. Therefore, they must be
manually installed using the ``gem`` command, as stated in the general
instructions.
+ Versions 5.12.0 and 5.12.1 of PySide2 introduced some changes that prevented
QtARMSim to work. Version 5.12.2 of PySide2 corrected these regressions.
License
-------
Copyright 2014-20 Sergio Barrachina Mir <barrachi@uji.es>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
3rd party software acknowledgments
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The next 3rd party software is used and distributed with QtARMSim.
ARMSim: an ARM simulator, copyright Germán Fabregat Llueca, licensed
under the GPLv3+. Included under the ``qtarmsim/armsim`` directory.
`GCC, the GNU Compiler Collection <https://www.gnu.org/software/gcc/>`_,
copyright the Free Software Foundation, Inc, licensed under the GPLv3,
with the addition under section 7 of an exception described in the “GCC
Runtime Library Exception, version 3.1”
(see <https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html>).
Binary versions targeting the ARM EABI are included under the
``qtarmsim/gcc-arm`` directory.
`Qfplib: an ARM Cortex-M0 floating-point library in 1 kbyte
<https://www.quinapalus.com/qfplib.html>`_, copyright Mark Owen,
licensed under the GPLv2. Source code
included under the ``3rdparty/`` directory. This part of the code
is only available under the GPLv2 license.
`AlphaSmart 3000 <https://www.urbanfonts.com/fonts/AlphaSmart_3000.font>`_ font,
designed by Colonel Sanders. Included under the ``3rdparty/`` directory.
Changelog
---------
1.0.1 (2023-11-28)
^^^^^^^^^^^^^^^^^^
- Fixed the way an ARM macOS is detected.
1.0.0 (2023-11-03)
^^^^^^^^^^^^^^^^^^
- Migrated from PySide2 to PySide6.
- Updated the bundled GNU GCC (cross) compilers and added the win64 and ARM macOS versions.
- Added the font increase and decrease functionality to the registers and memory panels.
0.5.5 (2021-10-28)
^^^^^^^^^^^^^^^^^^
- Fixed bug with macOS BigSur and PySide2.
0.5.4 (2021-05-27)
^^^^^^^^^^^^^^^^^^
- Fixed incompatibility with Ruby 3.0.
0.5.3 (2020-11-06)
^^^^^^^^^^^^^^^^^^
- Updated the installation instructions.
- A newer 64 bit GNU GCC Arm toolchain for macOS has been included.
0.5.2 (2020-06-20)
^^^^^^^^^^^^^^^^^^
- Updated the installation instructions.
- Updated post installation hook for linux.
- Post installation code reorganized to allow post_install to be installed as a script.
0.5.1 (2020-06-13)
^^^^^^^^^^^^^^^^^^
- Reformatted post_install code and added a hook for linux.
- Changed default QtARMSim icon by the SVG version.
- Moved post_install.py script outside of qtarmsim module to avoid its dependency on PySide2 (under certain circumstances, post-install is called before the PySide2 dependency is installed).
0.5.0 (2020-05-25)
^^^^^^^^^^^^^^^^^^
- Visualization improvements, especially on the trace ribbon (left area of the simulator).
- The registers at the register dock are now highlighted when a register is highlighted in the editor or in the simulator.
- Added Full Screen mode.
- Added new Compact layout. Hides everything but the registers and memory docks (which are stacked at the left) and the Edit/Simulation widget (which takes the rest of the window).
- The ARMSim path and GNU compiler path are tested on initialization. If they are no longer valid (usually due to a system python update), they are replaced by their default values.
- Improved the QtARMSim installation and integration on GNU/Linux, Windows and macOS. On GNU/Linux, the KDE expected mime type for assembler editors has been added. On Windows, a menu entry and a desktop shortcut are now created. On macOS, the qtarmsim script is automatically copied on /opt/local/bin/.
- Added a simulator output panel that displays the stdout of ARMSim (available only in debug mode).
- Fixed a bug in ARMSim due to GCC trimming the lines of the LST file at a fixed number of bytes, which under certain circumstances could lead to split a multi byte UTF-8 character and provoke an exception.
0.4.19 (2020-05-05)
^^^^^^^^^^^^^^^^^^^
- Fixed bug: 'QPaintDevice: Cannot destroy paint device that is being painted'.
- Updated ARMSim version.
0.4.18 (2020-05-05)
^^^^^^^^^^^^^^^^^^^
- Fixed bug: assigning a PIPE to armsim stdout prevented the Windows version to work properly.
0.4.17 (2020-05-04)
^^^^^^^^^^^^^^^^^^^
- Updated installation instructions for Windows systems.
0.4.16 (2019-11-08)
^^^^^^^^^^^^^^^^^^^
- Added the Show/Hide tabs and spaces functionality (on the editor contextual menu).
- Saved files are forced to end with a new line (to avoid misleading the gcc compiler if the last line ended with a TAB).
- Added zoom in and zoom out via CTRL++ and CTRL+- (CTRL+wheel already was there).
- Tab width is now correctly computed.
0.4.15 (2019-07-15)
^^^^^^^^^^^^^^^^^^^
- Added the ``printf`` subroutine to the ARMSim firmware.
0.4.12 (2019-04-24)
^^^^^^^^^^^^^^^^^^^
- PySide2 5.12.2 has corrected the previously changed signature of QAbstractItemModel.createIndex(). The INSTALL documentation has been modified to no longer force the installation of PySide2 5.11.
0.4.11 (2019-01-21)
^^^^^^^^^^^^^^^^^^^
- PySide2 5.12 has changed the signature of QAbstractItemModel.createIndex(), as it seems that they are going to do a regression, the INSTALL documentation has been changed to force the installation of the previous 5.11.2 version of PySide2.
0.4.10 (2018-11-20)
^^^^^^^^^^^^^^^^^^^
- Added an scroll area inside the LCD Display dock widget (so that the LCD width does not force the whole simulator width).
- Changed LCD font to "AlphaSmart 3000" by Colonel Sanders.
- Added a new example of floating point operations usage, ``triangle.s``, under 'File > Examples > Floating point' menu.
0.4.9 (2018-10-16)
^^^^^^^^^^^^^^^^^^
- Changed LCD font to "1 Digit" by David Chung.
- Fixed bug that prevented code to be resized.
0.4.8 (2018-10-8)
^^^^^^^^^^^^^^^^^
- Properly acknowledging Qfplib by Mark Owen.
0.4.7 (2018-7-27)
^^^^^^^^^^^^^^^^^
- Added memory contents tooltips.
- Added new example, LCD/ascii, and revised previous ones.
- Changed the way the monospaced font is selected.
0.4.4 (2018-7-25)
^^^^^^^^^^^^^^^^^
- Migrated to Qt for Python (PySide2).
- Speeded up the filling of the simulator data.
- Added examples as a File menu entry.
- Added ARMSim tabs to separate the source code of the different ROMs.
- Added Qfplib (floating point library) API documentation to the help.
- Added UseLabels ARMSim option.
- Memory dock: first RAM is expanded by default and whenever a memory entry is modified it scrolls to its position.
0.3.16 (2018-1-17)
^^^^^^^^^^^^^^^^^^^
- Corrected typo on the restructured text format of the changelog documentation.
0.3.15 (2018-1-17)
^^^^^^^^^^^^^^^^^^^
- Added support in the simulator to showing jump labels instead of
their addresses.
- Corrected errata on Qfp library acknowledgments.
- Removed legacy code from GlSpim.
0.3.14 (2017-11-08)
^^^^^^^^^^^^^^^^^^^
- Added SVG icon support explicitly: the toolbar icons now will be
also shown on Windows.
- ARMSyntaxHighlighter rules are now generated only the first time.
- ARMSim:
- Added support for floating point operations including Qfplib: an ARM Cortex-M0 floating-point library in 1 kbyte.
- Corrected minor bug: .global declared labels generated a linking error.
- Corrected minor bug: negative displacements on 'bl' instructions where incorrectly displayed.
0.3.13 (2017-11-02)
^^^^^^^^^^^^^^^^^^^
- Added preliminary printing support.
0.3.12 (2017-04-21)
^^^^^^^^^^^^^^^^^^^
- Changed the icon set to the KDE Breeze one.
- LCD Display not rescaling correctly on some desktop environments
fixed.
- LCD display can now be zoomed with CTRL+mouse wheel.
- Editors and panels now honor the system default point size.
- Now the menu bar is displayed on the system menu bar on Mac OS X.
0.3.11 (2016-10-30)
^^^^^^^^^^^^^^^^^^^
- The Edit menu actions have been implemented.
- Settings values are now automatically stripped to avoid errors due
to misplaced spaces.
- ARMSim: updated firmware to correct a bug on sdivide subroutine.
0.3.10 (2016-09-19)
^^^^^^^^^^^^^^^^^^^
- ARMSim: updated firmware to provide a signed division subroutine.
0.3.8 (2016-09-19)
^^^^^^^^^^^^^^^^^^
- Bug corrected: waiting spinner occluded File and Edit menus.
0.3.7 (2016-09-18)
^^^^^^^^^^^^^^^^^^
- Added firmware ROM that provides, among others, functions to display
strings and numbers on the LCD display. The new memory organization
consists of two ROM blocks and two RAM blocks. The first ROM block
is filled with the assembled user code. The second ROM, with the
firmware machine code. The first RAM can be used to store the user
program data. The second RAM is used by the LCD display.
- The graphical interface now uses a thread to retrieve the memory
contents and the disassembled code from the two ROM blocks.
- The regular expressions used to highlight the code on the editors
have been optimized to increase the highlighting process speed.
0.3.5 (2016-09-12)
^^^^^^^^^^^^^^^^^^
- Improved the Mac OS X compatibility and added installation
instructions for this platform.
- Changed the minimum size of the code editor container to accommodate
lower resolution screens.
- ARMSim: (i) LSL result is now bounded to 32 bits; (ii) command
redirection is performed explicitly to avoid an error on newer
Windows versions; and (iii) the method used to compare whether
memory blocks where not defined has been changed to avoid errors on
Ruby with version >= 2.3.
0.3.4 (2016-01-21)
^^^^^^^^^^^^^^^^^^
- Added a memory dump dock widget that allows to see and edit the
memory at byte level. It also shows the ASCII equivalent of each
byte.
- Added a LCD display dock widget that provides a simple output
system. It has a size of 32x6 and each character is mapped to a
memory position starting a 0x20070000.
0.3.3 (2015-11-28)
^^^^^^^^^^^^^^^^^^
- Added a visual indication of which instructions have already been
executed on the left margin of the ARMSim panel.
- Added automatic scroll on simulation mode in order to keep the next
line that is going to be executed visible.
- Improved the automatic selection of a mono spaced font (previously
selected font used ligatures).
- Fixed an error on the Preferences Dialog which prevented to select
the ``ARMSim directory`` and the ``Gcc ARM command line`` using the
corresponding directory/file selector dialogs.
- ARMSim: Fixed the simulation of shift instructions: only the 8 least
significant bits are now used to obtain the shift amount.
- ARMSim.: Fixed the behavior when memory outside the current memory
map is accessed: each wrong access now raises a memory access error.
- Bundled a reduced set of the GNU compiler toolchain. To reduce the
package size, only those files actually required to assemble an
assembly source code have been included.
0.3.0 (2015-06-09)
^^^^^^^^^^^^^^^^^^
- Migrated from PyQt to PySide to allow a simpler installation of
QtARMSim.
- Developed a new source code editor based on QPlainTextEdit, though
removing the prior QScintilla dependency, which allows a simpler
installation of QtARMSim.
- Improved the ARM Assembler syntax highlighting.
0.2.7 (2014-11-05)
^^^^^^^^^^^^^^^^^^
- Last revision of the first functional QtARMSim implementation. This
implementation was used on the first semester of an introductory
course on Computer Architecture at Jaume I University. This is the
last version of that implementation, which used PyQt and QScintilla.
Raw data
{
"_id": null,
"home_page": "http://lorca.act.uji.es/project/qtarmsim/",
"name": "qtarmsim",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "ARM,simulator,assembler,disassembler,debugger",
"author": "Sergio Barrachina Mir",
"author_email": "barrachi@uji.es",
"download_url": "https://files.pythonhosted.org/packages/75/45/ce5d436a6757b40505803d84df99e135ecdf57f7afbc01c26477876a9ec7/qtarmsim-1.0.1.tar.gz",
"platform": null,
"description": "QtARMSim\n========\n\nQtARMSim is an easy to use graphical ARM simulator. It provides an easy\nto use multiplatform ARM emulation environment that has been designed\nfor Computer Architecture introductory courses.\n\nThe ARMSim ARM simulator, Copyright (c) 2014-20 by Germ\u00e1n Fabregat, is\nbundled with QtARMSim. It can be found on the ``armsim/``\nsubdirectory of the QtARMSim installation path.\n\n\n1. Installing QtARMSim\n----------------------\n\nIn order to install QtARMSim, its dependencies should be installed first.\n\nQtARMSim has the following dependencies: `Python3 <https://www.python.org/>`_,\n`Qt for Python (PySide6) <https://wiki.qt.io/Qt_for_Python>`_, and ARMSim.\n\nARMSim, which is bundled with QtARMSim, has in turn the next dependencies:\n`Ruby <https://www.ruby-lang.org/en/>`_ and the\n`GNU GCC Arm toolchain <http://gcc.gnu.org/>`_.\n\nThe next subsections describe how to install QtARMSim and its dependencies on\nGNU/Linux, Windows and macOS.\n\n\n1.1 Installing QtARMSim on GNU/Linux\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe major GNU/Linux distributions already provide packages for ``Python3`` and\n``Ruby``. Therefore, the provided package manager can be used to install them.\nAs for the GNU GCC, the required part of the GNU GCC Arm toolchain is bundled\nwith QtARMSim. Finally, ``Qt for Python`` and ``QtARMSim`` can be installed\nusing the ``pip3`` command provided by ``Python3``.\n\nFor example, on Ubuntu you can install QtARMSim using:\n\n.. code-block:: shell-session\n\n $ sudo apt install python3-pip ruby libxcb-xinerama0\n $ sudo gem install shell e2mmap sync\n $ sudo pip3 install QtARMSim\n\nOn a Gentoo distribution, you can install QtARMSim issuing (as root):\n\n.. code-block:: shell-session\n\n # emerge -av pip ruby\n # pip3 install --user QtARMSim\n\nIf you are installing QtARMSim on a system where PySide6 is already provided as\na package, you can install the packaged version of PySide6 and then install\nQtARMSim using the ``--no-deps`` option (be aware that the packaged version can\nbe not so to up to date as the one obtained from pip). Once the PySide6\npackage(s) are installed, QtARMSim should be installed as follows:\n\n.. code-block:: shell-session\n\n # sudo pip3 install --no-deps QtARMSim\n\n\n1.2 Installing QtARMSim on Windows\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTo install QtARMSim on Windows please follow the next steps:\n\n1. Download a 64 bits **Python executable installer** from\n `Python releases for Windows <https://www.python.org/downloads/windows/>`_.\n During the installation process, please select the ``Add Python 3.X to PATH``\n option.\n\n2. Download a 64 bits **Ruby with Devkit** installer from\n `Ruby Installer for Windows <http://rubyinstaller.org/>`_.\n During the installation process, make sure that the\n ``Add Ruby executables to your PATH`` option is selected.\n\n3. Open a Windows console (executing either ``Windows PowerShell`` or\n ``cmd``, depending on your Windows version), and execute the commands\n indicated in the next steps.\n\n 3.1. Install the ``shell``, ``e2mmap`` and ``sync`` Ruby modules with:\n\n .. code-block:: powershell\n\n PS C:\\Users\\Username> gem install shell e2mmap sync\n\n 3.2. Install QtARMSim using the ``pip3`` command:\n\n .. code-block:: powershell\n\n PS C:\\Users\\Username> pip3 install QtARMSim\n\n\n\n1.3 Installing QtARMSim on macOS\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nTo install QtARMSim on macOS, please follow the next steps:\n\n1. Download and install **Python 3** from the\n `Python downloads page <https://www.python.org/downloads/>`_.\n\n2. Open a ``Terminal`` and execute the next command:\n\n .. code-block:: shell-session\n\n $ sudo -H pip3 install QtARMSim\n\nAfter doing the previous steps, you should be able to execute QtARMSim by\ntyping ``qtarmsim`` on a **new** ``Terminal``.\n\nNote: If an error message appeared when executing the ``pip3`` command saying that\nthere was no matching distribution of PySide6 for your macOS version, you can\ninstead install PySide6 with\n`MacPorts <https://guide.macports.org/#installing.xcode>`_ and QtARMSim with no\ndependencies using the following commands (MacPorts should be installed\npreviously):\n\n.. code-block:: shell-session\n\n $ sudo port install py39-pyside6 # same version as the installed Python\n $ sudo -H pip3 install --no-deps QtARMSim\n\n\n1.4 Installing the ``GNU GCC Arm toolchain`` (optional)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nStarting with version 0.3.1 of QtARMSim, the required part of the ``GNU GCC Arm\ntoolchain`` is already bundled with QtARMSim. So this step should only be done\nif there is a problem with the bundled GNU GCC Arm toolchain (i.e., QtARMSim\nis not able to assemble any source code).\n\nIn this case, another instance of GNU GCC Arm toolchain can be installed and used.\n\nOn GNU/Linux, this can be accomplished by installing a GNU GCC ARM package\nprovided by the GNU/Linux distribution being used, by building a cross-compiling\ntoolchain, or by extracting the ``gcc-arm-none-eabi-????-linux.tar.bz2``\nfile from the `GNU Arm Embedded Toolchain Downloads page\n<https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads>`_.\n\nFor example, on Ubuntu, this optional step can be achieved with:\n\n.. code-block:: shell-session\n\n $ sudo apt install gcc-arm-linux-gnueabi\n\nAnd on Gentoo with:\n\n.. code-block:: shell-session\n\n # emerge -av crossdev\n # echo \"PORTDIR_OVERLAY=/usr/local/portage\" >> /etc/portage/make.conf\n # crossdev --target arm --ov-output /usr/local/portage\n\nOn Windows and macOS, to perform this optional step, download and execute the\nrespective Windows or macOS GNU GCC Arm toolchain package from the\n`GNU Arm Embedded Toolchain Downloads page\n<https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads>`_.\n\nOnce a new ``GNU GCC Arm toolchain`` is installed, please\nconfigure the ``ARMSim Gcc Compiler`` QtARMSim option to point to the new\n``arm-none-eabi-gcc`` executable.\n\n\n2. Executing QtARMSim\n---------------------\n\nTo execute QtARMSim, run the ``qtarmsim`` command, or click on the corresponding\nentry on the applications menu (on GNU/Linux, under the ``Education:Science``\ncategory).\n\n\n3. Upgrading QtARMSim\n---------------------\n\nTo upgrade an already installed version of QtARMSim, execute the following\ncommand on GNU/Linux:\n\n.. code-block:: shell-session\n\n $ sudo pip3 install --upgrade QtARMSim\n\nOn Windows:\n\n.. code-block:: powershell\n\n PS C:\\Users\\Username> pip3 install --upgrade QtARMSim\n\nOn macOS:\n\n.. code-block:: shell-session\n\n sudo -H pip3 install --upgrade QtARMSim\n\n\n4. Uninstalling QtARMSim\n------------------------\n\nTo uninstall QtARMSim on GNU/Linux, execute the following command:\n\n.. code-block:: shell-session\n\n $ sudo pip3 uninstall QtARMSim\n\nOn Windows:\n\n.. code-block:: powershell\n\n PS C:\\Users\\Username> pip3 uninstall QtARMSim\n\nOn macOS:\n\n.. code-block:: shell-session\n\n sudo -H pip3 uninstall QtARMSim\n\n\n5. Installation related known issues\n------------------------------------\n\nIf something goes wrong after installing QtARMSim, executing the ``qtarmsim``\ncommand on a terminal could give some insight of what is the error cause.\n\nThe next known issues should not occur if the installation instructions are\nfollowed to the letter. They are listed here just in case they can be of some\nhelp when upgrading a previously installed version.\n\n+ The 5.14 packaged version of PySide2 on Ubuntu 20.04 LTS does not properly\n display some icons and SVG images of QtARMSim. This can be solved by\n installing a newer version of PySide2 using ``pip``::\n\n $ sudo pip3 install PySide2\n\n+ On Ubuntu 20.04 LTS, if the next error is shown when executing QtARMSim from\n a terminal::\n\n qt.qpa.plugin: Could not load the Qt platform plugin \"xcb\" in \"\" even though it was found.\n [...]\n\n It can be solved by installing the package ``libxcb-xinerama0``::\n\n $ sudo apt install libxcb-xinerama0\n\n+ Starting with the 2.5 version of the Ruby installer, ``shell``, ``e2mmap``\n and ``sync`` ruby modules are no longer bundled in. Therefore, they must be\n manually installed using the ``gem`` command, as stated in the general\n instructions.\n\n+ Versions 5.12.0 and 5.12.1 of PySide2 introduced some changes that prevented\n QtARMSim to work. Version 5.12.2 of PySide2 corrected these regressions.\n\n\nLicense\n-------\n\nCopyright 2014-20 Sergio Barrachina Mir <barrachi@uji.es>\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 3 of the License, or (at\nyour option) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\nGeneral Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see <http://www.gnu.org/licenses/>.\n\n3rd party software acknowledgments\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe next 3rd party software is used and distributed with QtARMSim.\n\nARMSim: an ARM simulator, copyright Germ\u00e1n Fabregat Llueca, licensed\nunder the GPLv3+. Included under the ``qtarmsim/armsim`` directory.\n\n`GCC, the GNU Compiler Collection <https://www.gnu.org/software/gcc/>`_,\ncopyright the Free Software Foundation, Inc, licensed under the GPLv3,\nwith the addition under section 7 of an exception described in the \u201cGCC\nRuntime Library Exception, version 3.1\u201d\n(see <https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html>).\nBinary versions targeting the ARM EABI are included under the\n``qtarmsim/gcc-arm`` directory.\n\n`Qfplib: an ARM Cortex-M0 floating-point library in 1 kbyte\n<https://www.quinapalus.com/qfplib.html>`_, copyright Mark Owen,\nlicensed under the GPLv2. Source code\nincluded under the ``3rdparty/`` directory. This part of the code\nis only available under the GPLv2 license.\n\n`AlphaSmart 3000 <https://www.urbanfonts.com/fonts/AlphaSmart_3000.font>`_ font,\ndesigned by Colonel Sanders. Included under the ``3rdparty/`` directory.\n\nChangelog\n---------\n\n1.0.1 (2023-11-28)\n^^^^^^^^^^^^^^^^^^\n- Fixed the way an ARM macOS is detected.\n\n1.0.0 (2023-11-03)\n^^^^^^^^^^^^^^^^^^\n- Migrated from PySide2 to PySide6.\n- Updated the bundled GNU GCC (cross) compilers and added the win64 and ARM macOS versions.\n- Added the font increase and decrease functionality to the registers and memory panels.\n\n0.5.5 (2021-10-28)\n^^^^^^^^^^^^^^^^^^\n- Fixed bug with macOS BigSur and PySide2.\n\n0.5.4 (2021-05-27)\n^^^^^^^^^^^^^^^^^^\n- Fixed incompatibility with Ruby 3.0.\n\n0.5.3 (2020-11-06)\n^^^^^^^^^^^^^^^^^^\n- Updated the installation instructions.\n- A newer 64 bit GNU GCC Arm toolchain for macOS has been included.\n\n0.5.2 (2020-06-20)\n^^^^^^^^^^^^^^^^^^\n- Updated the installation instructions.\n- Updated post installation hook for linux.\n- Post installation code reorganized to allow post_install to be installed as a script.\n\n0.5.1 (2020-06-13)\n^^^^^^^^^^^^^^^^^^\n- Reformatted post_install code and added a hook for linux.\n- Changed default QtARMSim icon by the SVG version.\n- Moved post_install.py script outside of qtarmsim module to avoid its dependency on PySide2 (under certain circumstances, post-install is called before the PySide2 dependency is installed).\n\n0.5.0 (2020-05-25)\n^^^^^^^^^^^^^^^^^^\n- Visualization improvements, especially on the trace ribbon (left area of the simulator).\n- The registers at the register dock are now highlighted when a register is highlighted in the editor or in the simulator.\n- Added Full Screen mode.\n- Added new Compact layout. Hides everything but the registers and memory docks (which are stacked at the left) and the Edit/Simulation widget (which takes the rest of the window).\n- The ARMSim path and GNU compiler path are tested on initialization. If they are no longer valid (usually due to a system python update), they are replaced by their default values.\n- Improved the QtARMSim installation and integration on GNU/Linux, Windows and macOS. On GNU/Linux, the KDE expected mime type for assembler editors has been added. On Windows, a menu entry and a desktop shortcut are now created. On macOS, the qtarmsim script is automatically copied on /opt/local/bin/.\n- Added a simulator output panel that displays the stdout of ARMSim (available only in debug mode).\n- Fixed a bug in ARMSim due to GCC trimming the lines of the LST file at a fixed number of bytes, which under certain circumstances could lead to split a multi byte UTF-8 character and provoke an exception.\n\n0.4.19 (2020-05-05)\n^^^^^^^^^^^^^^^^^^^\n- Fixed bug: 'QPaintDevice: Cannot destroy paint device that is being painted'.\n- Updated ARMSim version.\n\n0.4.18 (2020-05-05)\n^^^^^^^^^^^^^^^^^^^\n- Fixed bug: assigning a PIPE to armsim stdout prevented the Windows version to work properly.\n\n0.4.17 (2020-05-04)\n^^^^^^^^^^^^^^^^^^^\n- Updated installation instructions for Windows systems.\n\n0.4.16 (2019-11-08)\n^^^^^^^^^^^^^^^^^^^\n- Added the Show/Hide tabs and spaces functionality (on the editor contextual menu).\n- Saved files are forced to end with a new line (to avoid misleading the gcc compiler if the last line ended with a TAB).\n- Added zoom in and zoom out via CTRL++ and CTRL+- (CTRL+wheel already was there).\n- Tab width is now correctly computed.\n\n0.4.15 (2019-07-15)\n^^^^^^^^^^^^^^^^^^^\n- Added the ``printf`` subroutine to the ARMSim firmware.\n\n0.4.12 (2019-04-24)\n^^^^^^^^^^^^^^^^^^^\n- PySide2 5.12.2 has corrected the previously changed signature of QAbstractItemModel.createIndex(). The INSTALL documentation has been modified to no longer force the installation of PySide2 5.11.\n\n0.4.11 (2019-01-21)\n^^^^^^^^^^^^^^^^^^^\n- PySide2 5.12 has changed the signature of QAbstractItemModel.createIndex(), as it seems that they are going to do a regression, the INSTALL documentation has been changed to force the installation of the previous 5.11.2 version of PySide2.\n\n0.4.10 (2018-11-20)\n^^^^^^^^^^^^^^^^^^^\n- Added an scroll area inside the LCD Display dock widget (so that the LCD width does not force the whole simulator width).\n- Changed LCD font to \"AlphaSmart 3000\" by Colonel Sanders.\n- Added a new example of floating point operations usage, ``triangle.s``, under 'File > Examples > Floating point' menu.\n\n0.4.9 (2018-10-16)\n^^^^^^^^^^^^^^^^^^\n- Changed LCD font to \"1 Digit\" by David Chung.\n- Fixed bug that prevented code to be resized.\n\n0.4.8 (2018-10-8)\n^^^^^^^^^^^^^^^^^\n- Properly acknowledging Qfplib by Mark Owen.\n\n0.4.7 (2018-7-27)\n^^^^^^^^^^^^^^^^^\n- Added memory contents tooltips.\n- Added new example, LCD/ascii, and revised previous ones.\n- Changed the way the monospaced font is selected.\n\n0.4.4 (2018-7-25)\n^^^^^^^^^^^^^^^^^\n- Migrated to Qt for Python (PySide2).\n- Speeded up the filling of the simulator data.\n- Added examples as a File menu entry.\n- Added ARMSim tabs to separate the source code of the different ROMs.\n- Added Qfplib (floating point library) API documentation to the help.\n- Added UseLabels ARMSim option.\n- Memory dock: first RAM is expanded by default and whenever a memory entry is modified it scrolls to its position.\n\n0.3.16 (2018-1-17)\n^^^^^^^^^^^^^^^^^^^\n- Corrected typo on the restructured text format of the changelog documentation.\n\n0.3.15 (2018-1-17)\n^^^^^^^^^^^^^^^^^^^\n- Added support in the simulator to showing jump labels instead of\n their addresses.\n- Corrected errata on Qfp library acknowledgments.\n- Removed legacy code from GlSpim.\n\n0.3.14 (2017-11-08)\n^^^^^^^^^^^^^^^^^^^\n- Added SVG icon support explicitly: the toolbar icons now will be\n also shown on Windows.\n- ARMSyntaxHighlighter rules are now generated only the first time.\n- ARMSim:\n - Added support for floating point operations including Qfplib: an ARM Cortex-M0 floating-point library in 1 kbyte.\n - Corrected minor bug: .global declared labels generated a linking error.\n - Corrected minor bug: negative displacements on 'bl' instructions where incorrectly displayed.\n\n0.3.13 (2017-11-02)\n^^^^^^^^^^^^^^^^^^^\n- Added preliminary printing support.\n\n0.3.12 (2017-04-21)\n^^^^^^^^^^^^^^^^^^^\n- Changed the icon set to the KDE Breeze one.\n- LCD Display not rescaling correctly on some desktop environments\n fixed.\n- LCD display can now be zoomed with CTRL+mouse wheel.\n- Editors and panels now honor the system default point size.\n- Now the menu bar is displayed on the system menu bar on Mac OS X.\n\n0.3.11 (2016-10-30)\n^^^^^^^^^^^^^^^^^^^\n- The Edit menu actions have been implemented.\n- Settings values are now automatically stripped to avoid errors due\n to misplaced spaces.\n- ARMSim: updated firmware to correct a bug on sdivide subroutine.\n\n0.3.10 (2016-09-19)\n^^^^^^^^^^^^^^^^^^^\n- ARMSim: updated firmware to provide a signed division subroutine.\n\n0.3.8 (2016-09-19)\n^^^^^^^^^^^^^^^^^^\n- Bug corrected: waiting spinner occluded File and Edit menus.\n\n0.3.7 (2016-09-18)\n^^^^^^^^^^^^^^^^^^\n- Added firmware ROM that provides, among others, functions to display\n strings and numbers on the LCD display. The new memory organization\n consists of two ROM blocks and two RAM blocks. The first ROM block\n is filled with the assembled user code. The second ROM, with the\n firmware machine code. The first RAM can be used to store the user\n program data. The second RAM is used by the LCD display.\n- The graphical interface now uses a thread to retrieve the memory\n contents and the disassembled code from the two ROM blocks.\n- The regular expressions used to highlight the code on the editors\n have been optimized to increase the highlighting process speed.\n\n0.3.5 (2016-09-12)\n^^^^^^^^^^^^^^^^^^\n- Improved the Mac OS X compatibility and added installation\n instructions for this platform.\n- Changed the minimum size of the code editor container to accommodate\n lower resolution screens.\n- ARMSim: (i) LSL result is now bounded to 32 bits; (ii) command\n redirection is performed explicitly to avoid an error on newer\n Windows versions; and (iii) the method used to compare whether\n memory blocks where not defined has been changed to avoid errors on\n Ruby with version >= 2.3.\n\n0.3.4 (2016-01-21)\n^^^^^^^^^^^^^^^^^^\n- Added a memory dump dock widget that allows to see and edit the\n memory at byte level. It also shows the ASCII equivalent of each\n byte.\n- Added a LCD display dock widget that provides a simple output\n system. It has a size of 32x6 and each character is mapped to a\n memory position starting a 0x20070000.\n\n0.3.3 (2015-11-28)\n^^^^^^^^^^^^^^^^^^\n- Added a visual indication of which instructions have already been\n executed on the left margin of the ARMSim panel.\n- Added automatic scroll on simulation mode in order to keep the next\n line that is going to be executed visible.\n- Improved the automatic selection of a mono spaced font (previously\n selected font used ligatures).\n- Fixed an error on the Preferences Dialog which prevented to select\n the ``ARMSim directory`` and the ``Gcc ARM command line`` using the\n corresponding directory/file selector dialogs.\n- ARMSim: Fixed the simulation of shift instructions: only the 8 least\n significant bits are now used to obtain the shift amount.\n- ARMSim.: Fixed the behavior when memory outside the current memory\n map is accessed: each wrong access now raises a memory access error.\n- Bundled a reduced set of the GNU compiler toolchain. To reduce the\n package size, only those files actually required to assemble an\n assembly source code have been included.\n\n0.3.0 (2015-06-09)\n^^^^^^^^^^^^^^^^^^\n- Migrated from PyQt to PySide to allow a simpler installation of\n QtARMSim.\n- Developed a new source code editor based on QPlainTextEdit, though\n removing the prior QScintilla dependency, which allows a simpler\n installation of QtARMSim.\n- Improved the ARM Assembler syntax highlighting.\n\n0.2.7 (2014-11-05)\n^^^^^^^^^^^^^^^^^^\n- Last revision of the first functional QtARMSim implementation. This\n implementation was used on the first semester of an introductory\n course on Computer Architecture at Jaume I University. This is the\n last version of that implementation, which used PyQt and QScintilla.\n",
"bugtrack_url": null,
"license": "",
"summary": "Easy to use graphical ARM simulator",
"version": "1.0.1",
"project_urls": {
"Homepage": "http://lorca.act.uji.es/project/qtarmsim/"
},
"split_keywords": [
"arm",
"simulator",
"assembler",
"disassembler",
"debugger"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7545ce5d436a6757b40505803d84df99e135ecdf57f7afbc01c26477876a9ec7",
"md5": "3597155d7ba8d5fde45fdb5e13935456",
"sha256": "ebc5f49326833a8a90be344dcb9042a807b34885294ff9e7b2c991058dd81276"
},
"downloads": -1,
"filename": "qtarmsim-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "3597155d7ba8d5fde45fdb5e13935456",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 79307247,
"upload_time": "2023-11-29T11:13:19",
"upload_time_iso_8601": "2023-11-29T11:13:19.746439Z",
"url": "https://files.pythonhosted.org/packages/75/45/ce5d436a6757b40505803d84df99e135ecdf57f7afbc01c26477876a9ec7/qtarmsim-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-11-29 11:13:19",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "qtarmsim"
}