About. Project and team

Project. History and creation reasons

xc3sprog
Pic from: https://xc3sprog.sourceforge.net/guide.php
The project was created by accident at the moment of urgent need for a mobile standalone device for ISP programming and testing a lot of printed circuit boards with controllers and FPGAs. The task was quickly solved on a Raspberry by assembling a small IDC-10 socket adapter with a button and LEDs on a breadboard and installing OpenOCD and xc3sprog packages.

It became a solution, after which any thoughts about buying or upgrading another programmer just disappeared. In fact, if you have been working with programmable devices for a long time, you can surely find a whole museum of such devices for flashing (we have a whole drawer of them) - ByteBlaster, Segger, (maybe even several), ST-Link, etc., but there are many of them! These devices are built for LPT, COM, USB... lots of different ones, but here's the trouble - many are already old, unsupported, and incompatible. We'll have many more other reasons to finally buy a new one already. You know? And instead of all this happiness!
The advent of small and low-cost Linux microcomputers with GPIOs has allowed desktop applications to access external devices without special adapters, dongles, etc., leaving only electrical matching necessary.

Many projects immediately used this opportunity but also immediately raised the problem of unification on the use of GPIO (lack of unification). And this requires a solution.

Project Objectives

_
The first project objective is to create extension board for Linux microcomputers with GPIO, containing minimal indication and control elements and a small connector for connecting external devices with unified access to them.

Why do you need a board like this?

  1. In most practical applications, the extension connectors of these microcomputers are redundant. For example, a cursory review of published Raspberry application projects shows that you will often find that 10-pin will suffice.
  2. For the same reason, the same 40-pin connector is impractical (and more often - simply impossible) to install in the target device, and this means that somewhere, there must be a transition, a bridge to a smaller connector.
  3. Serial matching is very useful (and sometimes necessary) when connecting devices, for which, for example, Segger has a special adapter. Raspberry has no matching elements, so they must be placed somewhere. By the way, these elements (resistors) are useful for another important reason - they effectively reduce the risk of GPIO damage.
  4. A microcomputer, equipped with a minimalistic interface on a few LEDs and buttons, is freed from the monitor, mouse, and keyboard from the constant "tutelage" of the host-PC and becomes a handy standalone tool for a pervasive class of routine and cyclic tasks, such as:
    - programming, diagnostics (JTAG interface provides access to various pins of the chip, which allows the creation of the necessary test conditions (logic levels on the pins) and reading the states; general tests are also possible),
    - electrical training (test (usually cyclic) operation of the device in specified modes. For example, at the initial moment of the device lifetime, detection of hidden defects is most possible (semiconductors, switching, etc.), so "runs" of devices in the correct modes at the factory and workshop are necessary to ensure that consumers receive the best quality devices by filtering out defective devices back at the factory), etc.

    In fact, for example, what does the flashing process of a stack of assembled boards consist of? It consists of a sequence of actions: "plugin, start programming, wait, on a pass/fail signal, move to cell number either 1 or number 2, go back to the beginning". Ideal for a button and three LEDs.
GNOME Project, CC BY-SA 3.0 US, via Wikimedia Commons
The second project objective is to create a thematic repository with software a tool/infrastructure for easy and simple installation and updating of the required application/package.

The third project objective is to create and place in the repository thematic packages designed to facilitate installation and configuration, as well as application packages that solve independent tasks.

Already configured apps/packages, working scripts for apps with already configured pins and adapters for the right adapters.
Now we have a device that, first of all, is very versatile, and secondly, whose total lifetime should be much longer than the devices from our museum. It can be a classical programmer, working by command from a PC; it can be an autonomous device, able to program, test, and reject independently.

At the same time, the project's area of interest has expanded to the whole field of development, manufacturing, and testing of electronic devices - for example, you can install from our repository a package for cutting Dacron stencils with a plotter and use our know-how in working with such stencils. You can make or order a furnace for melting SMD components.

Our team

We have many years of experience in developing electronic devices for various customers. When we complete a non-standard task, we often explore new methods and ways to achieve the required result. By accumulating this knowledge, we create solutions to simplify the design and creation of devices. It's time to share some of our solutions with the community now.
Core team:
  • 3 full-time hard/firmware engineers
  • 15-30 years in product R&D and systems engineering
  • full range of product development jobs
    • highlighting the problem
    • transforming it into a task
    • searching for possible solutions based on target parameters
    • analysis and selection of the best option
Application and system programming:
  • core team programming languages: C/C++, ASM
  • compilers: C /C++ (CLI): GCC, IAR, SDCC, C++ Builder, Avocet C, Hi-Tech C
  • IDE: SlickEdit, emacs, IAR Embedded Workbench, Multi-Edit, eclipse cdt, STM32CubeIDE, Atmel Start, Atmel Studio, NetBeans IDE, Qt Creator
  • make, cmake, qmake, cvs, subversion, git, etc
  • experience/projects:
    • embedded programming z80, MCS-51, AVR, PIC, ARM (7, 9, Cortex), STM8
    • RT-tasks under eCos
    • eCos modules
    • in-house RTOS for telecom equipment
    • special Windows-NT services for own hardware
    • BDOS/BIOS CP/M for Z80CPU hardware emulator
    • desktop applications for Windows/Linux
Circuit engineering:
  • analog: automation, data acquisition, measurements, sound, etc
  • digital: from simple logic circuits to FPGA/MCU/PSoC
  • power electronics: experience in DC/DC up to 600W
  • experience: PSpice, VHDL, Verilog
Electronic devices R&D:
  • PCB/PCBA TH/SMD/multilayer w/auto testing @ production cycle
  • PCBA (bare and cased) thermal calculations
  • calculation and design of pulse transformers and inductors
  • 3D housing design
  • experience: KiCAD, Altium Designer, FreeCAD, OpenSCAD, Fusion360
  • projects:
    • wide spectrum of microcontrollers
    • telecommunication equipment (about 1M subscribers in service)
    • time measurement equipment for telecom
    • hardware emulator with a signature analyzer