Windows natively or with Windows Subsystem for Linux
supports
USB-serial devices.
The device must be recognized in Windows Device Manager.
Plug the USB-serial adapter into the Windows PC.
Look in Windows Device Manager under Ports to see the COM port number.
See troubleshooting notes below if it doesn’t show there.
The device must show in Windows Device Manager → USB Devices → Ports.
The serial device baud rate must be consistent between device and PC.
If the baud rate is incorrect, either no text or garbled text will be seen.
The COM port number can change upon plugging in the same device, especially if replugging into a different physical USB port on the PC.
If plugging in a different unit of the same type of device, it may likely also get a new COM port number.
Distinct devices of the same model, even if sequentially plugged into the same USB port may get different COM port numbers.
If the device doesn’t show up in Device Manager → Ports, see if it was mistakenly enabled as a Mouse or Human Interface Device.
If so, unplug and replug your device.
If it still fails to show up as a Port, instead showing up as mouse or HID, try right-clicking and Disabling the device and unplug/plug it once more.
If it still fails, maybe the Windows device driver is missing.
Try the device in a native Linux PC and see if the device works there.
PuTTY
is a terminal emulator that also works well for serial port connections.
Currently, PuTTY can’t do file transfer over serial links with XMODEM, YMODEM, or ZMODEM.
To do file transfer over serial links, use minicom.
Matlab
redirects
the I/O streams of binaries compiled with GFortran by setting
runtime environment variables
for streams “stdout”, “stderr”, and “stdin”.
This can lead to unexpected behavior of programs run from Matlab with built-in functions like system() as well as external language interfaces run from Matlab scripts like Java ProcessBuilder, Python subprocess, etc.
Disable I/O stream capture before the external process is started in the Matlab script:
If given a link that is suspect, or troubleshooting behavior of a website that is having trouble doing a redirect, check the HTTP header for a redirect.
Curl does this with the
–head
option.
curl --head example.invalid
This will return the HTTP header, which will show if there is a redirect, and where it is redirecting to.
Some web servers behave differently to a HEAD request than a GET request.
To see the behavior of a GET request, use the
–location
option to follow redirects.
The RISC-V based Raspberry Pi Pico microcontroller is commonly used for analog and digital control, optionally with WiFi or Bluetooth wireless connectivity.
While the full Raspberry Pi boards have a general purpose ARM CPU with enough storage and RAM capable of being used as a PC, the Pico is not commonly used for general purpose computing.
The multi-core CPU of the Pi Pico is capable of running parallel multi-threaded programs.
The Pico Cortex-M or RISC-V Hazard3 CPUs lacks a memory management unit (MMU).
Without an MMU, the Pico is not so effective at running a preemptive multitasking OS like a full Linux distribution.
However, it is possible to run a minimal Linux kernel and user space.
Provided a Pico board with enough memory, it’s possible to
run a minimal Linux distribution
on the Pico.
The analog and digital I/O pins can be used for
VGA output
from the Pico.
The Jetson Nano board has gone through several generations.
Older Jetson Nano boards may be stuck on an older unsupported OS.
If compatible with the specific Nano version hardware, the
NVIDIA Jetpack SDK
may be used to install a newer OS.
Select a
Jetson container
suitable for the desired task and hardware.
Operating systems require a certain minimum ISA microarchitecture level to run for each CPU vendor family.
The levels are arbitrarily defined by the vendor as a collection of features, for example AVX2 or AVX512.
A C++-based
cpuid library
can detect across operating systems if the Intel CPU supports a certain ISA level.
On macOS, Terminal commands can be specified to run as a
Rosetta CPU arch translated binary
using the arch command.
This is useful for running or testing x86_64 software on Apple Silicon Macs.
See “man arch” for more details.
arch -x86_64 <command>
For example to run cmake as an x86_64 binary on an Apple Silicon Mac:
to run a program, the program must be a
universal binary
or an x86_64 binary.
If not, the error message will be similar to:
arch: posix_spawnp: <command>: Bad CPU type in executable
For programs like CMake that are designed for cross-compiling, command CMake to build for x86_64 by setting the
CMAKE_OSX_ARCHITECTURES
variable to x86_64:
The Fortran standard does not define a specific Fortran module file format.
Each compiler vendor has a unique incompatible Fortran module file format.
Fortran module files are not portable between different compilers or even different versions of the same compiler.
The per-compiler examples below assume Fortran source file “example.f90”:
Intel oneAPI .mod files are
a proprietary binary format.
It is possible to determine the version of the .mod file by using
od
to look at the first 2 bytes of the .mod file.
od -N4 -d dummy.mod
The first number is like “13” and is the module format version.
This version may change over time as oneAPI internals change.
The second number is the update version, which is fixed at “1”.
NVIDIA HPC SDK (NVHPC) and AOCC compilers generate .mod files that are text files.
The format for legacy Flang module files is distinct from LLVMFlang Fortran module files.
Create the .mod file like:
nvfortran -c example.f90
# orflang -c example.f90
generates a text file, beginning with the version number.
By default, Cray Fortran stores uppercase DUMMY.mod filenames.
This can be made lowercase with the ftn -ef flag.
The
Cray Fortran .mod format
is proprietary, but the version number might be seen like: