-
Notifications
You must be signed in to change notification settings - Fork 0
johnjwang/blocks
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
************************************************* ************************************************* ********* Welcome to the blocks repo ************ ************************************************* ************************************************* ************************************************* ******* This part of the setup is mandatory ******** ------------------------------------------------------------------------------- Bash Environment Setup ------------------------------------------------------------------------------- First, define $BLOCKS_HOME in bash ie, $ export BLOCKS_HOME=/home/<username>/blocks This would be useful to add to your ~/.bashrc to make the change persistent $ echo 'export BLOCKS_HOME=/home/<username>/blocks' >> ~/.bashrc Next we sync our udev rules to work with our physical devices $ $BLOCKS_HOME/setup/udev/sync_udev.sh ------------------------------------------------------------------------------- Installing required java packages ------------------------------------------------------------------------------- Go to the github page for the blocks repo's releases here: https://github.com/SkySpecs/blocks/releases Download all release jars and place them in your $BLOCKS_HOME/java directory Add the jars to your classpath in you ~/.bashrc to make the changes persistent This only has to be done once. No need to run the following commands more than once $ echo 'export CLASSPATH=$CLASSPATH:$BLOCKS_HOME/java/commons-collections-3.2.1.jar' >> ~/.bashrc $ echo 'export CLASSPATH=$CLASSPATH:$BLOCKS_HOME/java/skyspecs.jar' >> ~/.bashrc $ echo 'export CLASSPATH=$CLASSPATH:$BLOCKS_HOME/java/april.jar' >> ~/.bashrc $ echo 'export CLASSPATH=$CLASSPATH:$BLOCKS_HOME/java/blocks.jar' >> ~/.bashrc ------------------------------------------------------------------------------- Installing LCM ------------------------------------------------------------------------------- Follow the instructions to install LCM at the following link: https://code.google.com/p/lcm/wiki/BuildInstructions Make sure lcm.jar is in your classpath $ export CLASSPATH=$CLASSPATH:/usr/local/share/java/lcm.jar This would be useful to add to your ~/.bashrc to make the change persistent $ echo 'export CLASSPATH=$CLASSPATH:/usr/local/share/java/lcm.jar' >> ~/.bashrc ------------------------------------------------------------------------------- Making the repository ------------------------------------------------------------------------------- $ cd $BLOCKS_HOME $ make ------------------------------------------------------------------------------- Running drivers and guis ------------------------------------------------------------------------------- Some relevant files you might be interested in are: $ $BLOCKS_HOME/bin/projects/comms_driver (binary that interacts with the timing_blocks and lcm) $ java blocks.gui.GUI If you use the telemetry_t.lcm type defined in $BLOCKS_HOME/lcmtypes in your custom code, there is a special lcm-spy plugin that will let you view the data in the type (This is untested) ******* This part of the setup is optional ******** ------------------------------------------------------------------------------- Setting up the CCS Environment for firmware coding ------------------------------------------------------------------------------- Launch CCS Set your ccs workspace to be the workspace in this git repo (not required) Open ccs and setup path requirements: Window->Preferences->General->Workspace->Linked Resources Click new again and then in the "name" section enter 'BLOCKS_HOME' (without quotes) and click folder. Navigate to this directory and click Ok. Click Ok again to exit preferences. Compile driverlib and usblib Right click on driverlib in the Project Explorer and select 'Properties' Click on 'General' and select the chip that you are building for. Ie, TM4C1232C3PM Then switch configurations in the same menu pane to 'Release' and select the correct chip Do the same for usblib Note: A hotkey for properties is to click on the project and press alt+enter Now that the libraries are configured, click on the driverlib and then click on the hammer icon in the top tray to build. Do the same for usblib Import blocks projects Click "Import Project" and click "Browse..." Navigate to BLOCKS_HOME and click ok Again, make sure that you DO NOT have the "Copy projects into workspace" checked. Click Select All Click Finish Press ctrl+b to build your workspace Fix ccs util for building binary files (Linux only) Navigate to your ccs installation directory. Ie, ~/ti/ccsv6 Open the file utils/tiobj2bin/tiobj2bin and change the first line from #!/bin/sh to #!/bin/bash ------------------------------------------------------------------------------- Manually adding driverlib and usblib ------------------------------------------------------------------------------- Import driverlib and usblib in ccs: Click'Import Project' Click 'Browse' and browse to $TIVAWARE/driverlib and click Ok Click 'Select All' Make sure 'Copy projects into workspace' is NOT selected Click Ok Do the same for usblib IMPORTANT: we had to compile our own version of driverlib to get the SysCtlClockGet to function properly, a bug for our chip prevents the clock frequency from ever being reported as higher than 66.6MHz (a clock divisor of 3). To fix this, do: in file: driverlib/sysctl.c comment out lines 2939 - 2942 //if(ui32Max < ui32Clk) //{ // ui32Clk = ui32Max; //} Then, make sure that you clean and recompile all dependencies. ------------------------------------------------------------------------------- *** This currently does not work as ti has not yet written linux drivers for firmware upgrade *** Download UniFlash to be able to flash Tiva from command line ------------------------------------------------------------------------------- wget https://dl.dropboxusercontent.com/u/36951037/UNIFLASH2.2.0.00016_linux.tar.gz extract the tar.gz with 'tar -xvaf uniflash.tar.gz' run the uniflash_setup script without sudo permission install into your ti installation directory Once completed navigate to the uniflash installation directory. Ie ~/ti/uniflashv2 Run the following command $sudo ./install_scripts/install_drivers.sh ------------------------------------------------------------------------------- Todo list: ------------------------------------------------------------------------------- x watchdog the signals x watchdog the device itself x make bootload faster x add another bit to EEPROM that is "ignore bootload" use when rebooting because of watchdogs x kill listener x hardcode a manual/autonomous switch line \ board side comms \ linux side comms \ linux side kill program x write another program that uploads a serial number to eeprom - touch base with Ella, remind her that she needs USB hubs - test flight - detect if an xbee is plugged in above it - comms pass through from uart to usb