From 688f049b74d4743d3890ce72f27c99d68061f4e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=5B=20Kristjan=20Komlo=C5=A1i=20HomePC=20=5D?= <[ kristjan.komlosi@gmail.com ]> Date: Sun, 18 Jun 2017 17:13:26 +0200 Subject: [PATCH] Igot my lazy ass to write some dox --- docs/Getting-Started.md | 10 ++++----- docs/manual.md | 46 ++++++++++++++++++++++++++--------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/docs/Getting-Started.md b/docs/Getting-Started.md index 947cd86..09272b2 100644 --- a/docs/Getting-Started.md +++ b/docs/Getting-Started.md @@ -8,11 +8,11 @@ is a tool for interfacing the Cypress CY7C65211 USB-Serial Bridge Controller and To set up TinI/O, you'll need: -- A linux machine (the processor architecture doesn't matter, but Debian or Ubuntu is almost guaranteed to work) -- an USB dongle with the chip -- a C and C++ compiler (GCC recommended) -- GNU Make and CMake -- libusb 1.0 +- A linux machine (the processor architecture doesn't matter, but Debian or Ubuntu is almost guaranteed to work) +- an USB dongle with the chip +- a C and C++ compiler (GCC recommended) +- GNU Make and CMake +- libusb 1.0 You can build TinI/O by diff --git a/docs/manual.md b/docs/manual.md index aec04b0..79fb487 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -2,7 +2,7 @@ -------------------------------------------------------------------------------- -# 1\. Introduction to TinI/O +# 1. Introduction to TinI/O ## 1.1 What is TinI/O? @@ -10,11 +10,11 @@ TinI/O (or tinio) is a program that makes Linux computers with USB GPIO-capable ## 1.2 What features does TinI/O have? -- It can make any linux computer GPIO enabled -- It runs as a standalone program that can be easily integrated into other programs via system() calls -- It consumes almost none of the host computer's resources, because it never runs in the background -- It's compatible with almost every Linux system that has USB, including the embedded and older ones -- It operates over USB 1.1 that make TinI/O compatible even with the oldest of USB-enabled computers +- It can make any linux computer GPIO enabled +- It runs as a standalone program that can be easily integrated into other programs via system() calls +- It consumes almost none of the host computer's resources, because it never runs in the background +- It's compatible with almost every Linux system that has USB, including the embedded and older ones +- It operates over USB 1.1, which makes TinI/O compatible even with the oldest of USB-enabled computers ## 1.3 How does it work? @@ -22,9 +22,9 @@ TinI/O can't provide GPIO by itself. Its capabilites rely on its chip companion ## 1.4 Under what license can it be used? -TinI/O is licensed under the GNU General Public License, which is publicly available at [] and in the COPYING file in the `docs` directory in the project's root. +TinI/O is licensed under the GNU General Public License, which is publicly available at and in the COPYING file in the `docs` directory in the project's root. -# 2\. Installing +# 2. Installing ## 2.1 What you should know @@ -32,13 +32,22 @@ TinI/O binaries aren't available yet, but that isn't a problem, because TinI/O i TinI/O requires some quite basic system requirements, so before you proceed, make sure that you have: -- a working C and C++ compiler (**a working C++ is a working C compiler, but not the other way round!**) -- installed libusb -- GNU Make and cmake +- a working C and C++ compiler (**a working C++ is a working C compiler, but not the other way round!**) +- installed libusb +- GNU Make and cmake ## 2.2 Manual build -_This chapter explains how to build TinI/O manually. If you don't feel comfortable or don't want to build it manually, skip this chapter._ The TinI/O build process is pretty common. It's automated with a makefile, common to most *nix build processes. It has 4 build targets: | **Target** | **Description** | |:----------:|:----------------| | _default_ | The default target. Calls _utils_ and _tinio_ | +_This chapter explains how to build TinI/O manually. If you don't feel comfortable or don't want to build it manually, skip this chapter._ + +The TinI/O build process is pretty common. It's automated with a makefile, common to most *nix build processes. It has 4 build targets: + +| **Target** | **Description** | +| -----------| ----------------| +| _default_ | The default target. Calls _utils_ and _tinio_ targets. | +| _tinio_ | Builds main TinI/O program. | +| _utils_ | Builds the flasher utility. | +| _install_ | Installs TinI/O and the flasher utility to /usr/bin and the flash files to /usr/bin/tinio/flashes | ### 2.2.1 Building the Library @@ -54,7 +63,7 @@ Because some people don't like manual binary building, TinI/O comes with the `au The `autobuilder`-automated build process is simple. You just need to run the script, which will do a typical TinI/O instalation. -# 3\. After the installation +# 3. After the installation After the installation of TinI/O, you actually don't need to do anything at all with _it_. The next step is to prepare the actual device you'll be using TinI/O with. @@ -62,14 +71,17 @@ After the installation of TinI/O, you actually don't need to do anything at all Cypress CY7C65211 can be flashed only from Windows with a dedicated Cypress utility due to its unique flash file format. Fortunately, after some bargaining with Cypress I got a Linux utility that is licensed under LGPL and free (as speech _and_ beer). It can flash special, decoded versions of flash files that can be produced with a special Windows decoder executable that I can't provide with TinI/O because it's not GPL'd (actually it's not even licensed!) and isn't released to the public (yet). Instead the TinI/O package includes 2 already decoded flash files that should satisfy the needs of a typical user. Their names are: -- `5-5_decoded.cyusbd`, that provides 5 input and 5 output ports -- `3-3cs_decoded.cyusbd`, that provides 3 input and 3 output ports, plus a CapSense button with its dedicated input. +- `5-5_decoded.cyusbd`, that provides 5 input and 5 output ports +- `3-3cs_decoded.cyusbd`, that provides 3 input and 3 output ports, plus a CapSense button with its dedicated input. ## 3.2 A little more detail on the flash files -_Here is a detailed description of the flash files configurations for the curious and other developers. It contains a lot of technical details, that aren't particularly useful in a typical TinI/O use case. A stripped-down version of the table below can be found at the end of the previous chapter "3.1 Flashing the chips"_ -TODO Make a big ol' able with them config's +The flash files that are included with TinI/O don't have a Linux-compatible editor and therefore can't be tweaked to fit one's needs ideally. However, this can be done in a Windows environment using a dedicated program from Cypress. With it you can modify the chip's configuration without being limited to the premade flash files. However, some USB-related settings are and **have to be** the same regardless of the use case to ensure compatibility with TinI/O program. + +Use case independent properties: + +| Max. Current drawn from USB | 350mA | ## 3.3 Flashing with the `cy-config` utility