User Tools

Site Tools


dev:nab:v2:nabgcc

This is an old revision of the document!


# NabGCC

## Overview

When Mindscape released the files related to the Nabaztag:tag, they released the source code of the firmware running on the Nabaztag:tag. When we tried to use them, we faced some problems:

- The projet uses an old version of the proprietary IDE from IAR (v4.x) - It does not compile with the new version (v6.x) - The firmware is too big for the freeware version of IAR (old or new) - The source code is what I would call a big mess. - IAR is not well integrated with OpenOCD or GDB (or at least, it was not that easy to use). - IAR doesn't provide any .elf file to use with GDB, so debugging was nearly impossible.

So, I started a port of the code to be used with GCC. It's called NabGCC :)

## Get the sources

It's currently hosted on my personnal GIT server:

  git clone git://git.redox.ws/nabgcc.git

## New architecture

  ├── inc        # Header files
  │   ├── hal    #    Hardware abstraction (Motor, LED, i2c, ...)
  │   ├── net    #    Wifi specific (IEEE802.11, hashes, ...)
  │   ├── usb    #    USB Host and RT2501usb
  │   ├── utils  #    Common tools
  │   └── vm     #    Metal Virtual Machine
  ├── mtl        # Metal sources, for the BOOT bytecode
  ├── openocd    # OpenOCD config files
  │   ├── interface
  │   │   └── ftdi
  │   └── target
  ├── src        # Source files
  │   ├── hal    #    Hardware abstraction (Motor, LED, i2c, ...)
  │   ├── net    #    Wifi specific (IEEE802.11, hashes, ...)
  │   ├── usb    #    USB Host and RT2501usb
  │   ├── utils  #    Common tools
  │   └── vm     #    Metal Virtual Machine
  ├── sys        # System files (CPU and USB Host chip)
  │   ├── asm    # ASM sources for IRQ handlers and CPU initialization
  │   ├── inc    # Header files 
  │   └── src    # Source files
  └── testvm     # Test PC software folder, using stubs, to debug the VM
      ├── src -> ../src
      └── stubs  # Stubs replacing the µC specific parts
          ├── hal
          ├── usb
          └── utils

## Compile

Using the makefile in the root folder, you can build the whole firmware project with just:

  make 

Delete the objects files, and binaries with

  make clean

The objects files should be in the `obj/` folder, and the binaries in the `bin/` folder.

## Flash

Assuming you have OpenOCD running and connected to the target, flash a new firmware with

  make program

## Debug

## Links

/home/share/www/redox.ws/wiki/data/attic/dev/nab/v2/nabgcc.1447420395.txt.gz · Last modified: 2023/11/24 21:55 (external edit)