WWW.DUMAIS.IO
ARTICLES
OVERLAY NETWORKS WITH MY SDN CONTROLLERSIMPLE LEARNING SWITCH WITH OPENFLOWINSTALLING KUBERNETES MANUALLYWRITING A HYPERVISOR WITH INTEL VT-X CREATING YOUR OWN LINUX CONTAINERSVIRTIO DRIVER IMPLEMENTATIONNETWORKING IN MY OSESP8266 BASED IRRIGATION CONTROLLERLED STRIP CONTROLLER USING ESP8266.OPENVSWITCH ON SLACKWARESHA256 ASSEMBLY IMPLEMENTATIONPROCESS CONTEXT ID AND THE TLBTHREAD MANAGEMENT IN MY HOBBY OSENABLING MULTI-PROCESSORS IN MY HOBBY OSNEW HOME AUTOMATION SYSTEMINSTALLING AND USING DOCKER ON SLACKWARESYSTEM ON A CHIP EMULATORUSING JSSIP AND ASTERISK TO MAKE A WEBPHONEC++ WEBSOCKET SERVERSIP ATTACK BANNINGBLOCK CACHING AND WRITEBACKBEAGLEBONE BLACK BARE METAL DEVELOPEMENTARM BARE METAL DEVELOPMENTUSING EPOLLMEMORY PAGINGIMPLEMENTING HTTP DIGEST AUTHENTICATIONSTACK FRAME AND THE RED ZONE (X86_64)AVX/SSE AND CONTEXT SWITCHINGHOW TO ANSWER A QUESTION THE SMART WAY.REALTEK 8139 NETWORK CARD DRIVERREST INTERFACE ENGINECISCO 1760 AS AN FXS GATEWAYHOME AUTOMATION SYSTEMEZFLORA IRRIGATION SYSTEMSUMP PUMP MONITORINGBUILDING A HOSTED MAILSERVER SERVICEI AM NOW HOSTING MY OWN DNS AND MAIL SERVERS ON AMAZON EC2DEPLOYING A LAYER3 SWITCH ON MY NETWORKACD SERVER WITH RESIPROCATEC++ JSON LIBRARYIMPLEMENTING YOUR OWN MUTEX WITH CMPXCHGWAKEUPCALL SERVER USING RESIPROCATEFFT ON AMD64CLONING A HARD DRIVECONFIGURING AND USING KVM-QEMUUSING COUCHDBINSTALLING COUCHDB ON SLACKWARENGW100 MY OS AND EDXS/LSENGW100 - MY OSASTERISK FILTER APPLICATIONCISCO ROUTER CONFIGURATIONAASTRA 411 XML APPLICATIONSPA941 PHONEBOOKSPEEDTOUCH 780 DOCUMENTATIONAASTRA CONTACT LIST XML APPLICATIONAVR32 OS FOR NGW100ASTERISK SOUND INJECTION APPLICATIONNGW100 - DIFFERENT PROBLEMS AND SOLUTIONSAASTRA PRIME RATE XML APPLICATIONSPEEDTOUCH 780 CONFIGURATIONUSING COUCHDB WITH PHPAVR32 ASSEMBLY TIPAP7000 AND NGW100 ARCHITECTUREAASTRA WEATHER XML APPLICATIONNGW100 - GETTING STARTEDAASTRA ALI XML APPLICATION

NGW100 - GETTING STARTED

2012-02-25

Installing the development environment

I wrote this howto because everywhere I was looking , people kept talking about the "buildroot". I didn't want that. I just wanted the basic stuff to get me going and do standalone development without installing all the linux kernel files and libc etc...

First, download these files:

  • AVR32_Header_Files.zip
  • binutils-2.18.atmel.1.0.1.tar.bz2
  • gcc-4.2.2.atmel.1.1.3.tar.bz2

1 - compile binutils

./configure --prefix=/opt/avr32 --program-prefix=avr32- --target=avr32-linux make make install

Now add the /opt/avr32/bin path in your PATH. I installed that in /opt/avr32 and all the applications are prefixed with "avr32-" (avr32-ar, avr32-as etc)

2 - compile GCC

mkdir build cd build ../configure --target=avr32-linux --prefix=/opt/avr32 --enable-languages=c --disable-threads --disable-libmudflap --disable-libssp --disable-libgomp --program-prefix="avr32-" make make install

3 - copy the header files

Now unzip the header files in /opt/avr32/avr32-linux/include (the "include" folder will need to be created first)

4 - Make a test application

I made this code as a test application that flashes a led on the board. Compile it using this Makefile and see if it works

5 - upload the test application on your device

The first thing to do is to connect the board using a serial port. By default communication is established at 115200 8N1. when booting the device, you have 1second to press "space" to get in the uboot prompt. I connected the "lan" port of the device to my switch and entered the following commands:

setenv tftpip 192.168.1.3 setenv serverip 192.168.1.36 setenv bootcmd 'set ipaddr 192.168.1.37;tftpboot 0x24004000 firmware.bin;go 0x24004000' saveenv

the bootcmd variable tells uboot what to do at boot time. In this case, it will connect to the tftp server located at the address provided in 'tftpip' and download "firmware.bin" and store it at memory location 0x24004000. After that, it will jump to that address.

If you're trying to upload in flash memory, you need to unprotect a whole block, erase it and write to it. Blocks are 64k in size and alligned on 64k boundaries. So let's say we want to copy our firmware at 0x100000 (23rd sector in parallel flash chip) we would do the following. Assume that the firmware has been downloaded to 0x24004000 first and is 0x242 byte in size:

protect off 0x100000 0x10ffff era 0x100000 0x10ffff cp.b 0x24004000 0x100000 242 protect on all