GithubHelp home page GithubHelp logo

bapch / er-301 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from odevices/er-301

0.0 0.0 0.0 4.35 MB

License: MIT License

Makefile 0.35% C++ 11.30% Awk 0.01% C 77.16% XS 0.01% Java 0.22% HTML 0.01% CMake 0.01% Assembly 3.55% Objective-C 0.08% Lua 7.28% Julia 0.01% Shell 0.01% Python 0.02%

er-301's Introduction

ER-301 Sound Computer

Table of Contents

Introduction

This project contains the source code for:

  • primary boot loader (MLO)
  • secondary boot loader (SBL)
  • firmware (kernel.bin)
  • emulator (Linux only)
  • factory mods (core, teletype)
  • SDK for building your own mods

Emulator

⚠️ The following instructions have been tested on Ubuntu 20.xx.

Since cross-compilation has its own complexities, it is probably easier to first start with getting the emulator running on your development machine. To compile and run the emulator you will need the following dependencies installed:

sudo apt install build-essential libsdl2-dev libsdl2-ttf-dev libfftw3-dev swig python3 zip fonts-freefont-ttf

To compile, execute this in the top directory:

make emu

Running the emulator

To run the emulator, execute the following from the top directory:

testing/linux/emu/emu.elf ./xroot ~/.od/rear ~/.od/front

In the above, you are telling the emulator the location of the following 3 required directories:

  • lua scripts file tree (Usually the xroot folder of this project.)
  • file tree for the rear SD card (This will be created if it doesn't exist.)
  • file tree for the front SD card (This will be created if it doesn't exist.)

Since you are essentially booting up the ER-301 with empty (virtual) SD cards, it will populate the file trees with the default files but you will not have the core mod installed.

Installing packages

To compile and create the installation package for the core mod, execute:

make core ARCH=linux

Next, copy the resulting package file to the ER-301/packages directory of the emulator's front SD card. You will need to change the command below to match the correct version.

cp testing/linux/mods/core-<version>.pkg ~/.od/front/ER-301/packages

Finally, run the emulator again using the same command-line as before and install the core mod package from the Package Manager screen. Now you will have access to all of the core units in the emulator.

Limitations

Outputs are mixed down to stereo

Currently, the 4 output channels are mixed down to stereo for maximal compatibility with different setups.

  • Left channel: OUT1+OUT3
  • Right channel: OUT2+OUT4

No external inputs

There are no external input channels implemented yet. However, when it comes to the main purpose of this emulator, it hasn't been much of an obstacle since you can generate just about any testing signals that you need within the ER-301 emulation. In fact, when it comes to testing, it is usually much easier to deal with canned signals for their repeatibility and ease of setup.

No I2C control

The teletype mod will compile and install. You can even instantiate its units. However, there is no emulation of the I2C bus.

Creating your own mods

Install the TI Processor SDK for AM335x

First, you will need to install the TI-RTOS development tools for the AM335x.

  1. It is important that you use this specific version: 04.01.00.06.
  2. Navigate to this page and download the file called ti-processor-sdk-rtos-am335x-evm-04.01.00.06-Linux-x86-Install.bin.
  3. Executing this file will run an installer program.
  4. When asked, please set the destination folder to ~/ti. This is the path assumed by the project makefiles. If instead you install to a different folder then before executing any cross-compilation commands, you will need to set the TI_INSTALL_DIR shell environment variable to the actual path that you used. If you don't want to change your shell environment then you can also pass the path on the commandline like this:
make core TI_INSTALL_DIR=~/your-path-to-ti-sdk

This documentation will assume that you used the default location.

Note: If you get a warning message from the installer about a "Problem running post-install step. Installation may not complete correctly.", you can ignore it.

Other required dependencies

sudo apt install swig python3 zip gcc-multilib

Test your build environment

A good test of your build environment is to see if you can successfully build the factory mods:

make core teletype

USB Functions

There is a USB port on the back of the ER-301. As of v0.6.00 of the firmware, the ER-301 can enumerate as a mass storage device (which provides access to the front SD card) or a virtual serial port device (the ER-301 will output console messages here when connected). The settings for USB are located in admin > General Settings. However, I would think of the USB functionality as more developer-targeted for because...

⚠️ There is a gotcha with having the ER-301 plugged into a USB host. It will not boot because it will be waiting for the USB host to give it firmware via BOOTP/TFTP. This is baked into the AM335x ROM unfortunately. The solution is to have a BOOTP server always running on your host that either gives it the firmware or tells the ER-301 to give up and boot from the SD card.

Build Profiles and Target Architectures

All build outputs are placed in a sub folder composed of the build profile and the target architecture. There are 3 build profiles:

  • testing: All optimizations and logging enabled.
  • debug: No optimizations. Logging enabled.
  • release: All optimizations enabled. Logging disabled.

And here are the 2 supported target architectures:

  • am335x
  • linux

So for example, if I execute the following make command:

make core PROFILE=debug ARCH=linux

Then the build outputs will be placed in the debug/linux directory of the project root. Generally, the default profile is testing and the default architecture for everything except the emulator is am335x. So if you execute just:

make core

Then the build outputs will appear in the testing/am335x directory of the project root. See the top-level Makefile for more details.

er-301's People

Contributors

bapch avatar ngwese avatar odevices avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.