Monday, February 28, 2011

Feb.28 Debugger notes

[again: just dev notes]
Goal: Get at least 1 (gdb with ARM7) debugger working on laptop
Sideline: Flashing LMS


OpenOCD is what has been used. Looking for something easier to install and perhaps better
  • OpenOCD
    • used on lab PC ver.0.3 with patch (compiled) 
    • However neither 0.3 with patch (both compiled and from lab PC) nor 0.4 (installed) work
      • Possibly cygwin component not installed, but so far no clear documentation to check
      • Have not found any .cfg command documentation.
        • TCL in .cfg files may have changed between 0.3 and 0.4
  • Segger

SEGGER J-Link Commander V4.22c ('?' for help)
Compiled Jan 18 2011 11:40:21
Updating firmware:  J-Link ARM V8 compiled Dec 16 2010 20:21:29
Replacing firmware: J-Link ARM V8 compiled Dec  1 2009 11:42:48
Waiting for new firmware to boot
New firmware booted successfully
DLL version V4.22c, compiled Jan 18 2011 11:40:08
Firmware: J-Link ARM V8 compiled Dec 16 2010 20:21:29
Hardware: V8.00
S/N: 268000496
OEM: SEGGER-EDU
Feature(s): FlashBP, GDB
J-Link>


Options to Flash LMS HW:

  • SAM-BA v2.10_cdc (works Lab PC (XP) & laptop (Vista))
  • OpenOCD with flash cfg (works Lab PC (XP))
  • Segger J-Flash


Wednesday, February 23, 2011

Feb. 23 Notes before flying

Blog is back to a place to keep notes
C:\Users\Carolyn\Dropbox\LMS\LMS  has the code review cleaned up code


be sure have the right working small eCos!! 
Backed up:


Lab PC:
working off of G: = my usbstick
G:\BootBlinkyTests\BootBlinkyTests\hgforte0216_blinkyWS24
Test 1: Blinky (again)
G:\BootBlinkyTests\BootBlinkyTests\
[manual clean deletes everything in bin\lms except ecos dirs (lib & include) and leave an empty src dir.
src
ws24
openocd bat
- flash fast works
- openocd works
- cd to dir with forte.elf and forte.bin works
- arm-elf-insight forte.elf
(remember for target chose: choose Remote/TCP)
 connect to target
 monitor reset;  monitor halt
set breakpoints
WORKS


....................
Laptop:
working off of F: = my usbstick
F:\BootBlinkyTests\BootBlinkyTests\hgforte0216_blinkyWS24L

Friday, February 18, 2011

Feb.18 OpenOCD on Laptop


This is just in notes form. (Formatted later when works here or in another entry.)
2/23 Update 1:
If path is set correctly, then trunk3 version of openocd appears to work.
Need to test with JTAG installed.


Additionally reinstalled cygwin with additional development tools.

2/22
In http://forum.sparkfun.com/ many have same error and no replies:  
Command handler execution failed.   
Seems like a catch all error message. Turning on debug did help see where its failing, but it fails at the 3rd line so not much help.


So tried IRCchat channel... Yes the .cfg commands changed between 0.3 and 0.4(which had started doing, but nothing that helped so far.)
So I will try and compile the trunk3 source code and see if that works... and look at /read up on 0.4 while it compiles.



Also looking at the debug output from trunk3 on lab PC may help to see where the changes occur.


2/18
Just copying Openocd files over to laptop didn't work
Installed openOCD 4

Currently trying to get the .cfg files to work correctly.
Just using v.3 (+jtag patch)  copied into a directory does not work.
And meant openOCD 4 had to be reinstalled.
Example .cfg files are only in git.

"Warning: You must install OpenOCD first before connecting your USB JTAG adapter to the PC."

I hope that means connecting not installing the JTAG.
[reinstalled (again) with JTAG unplugged]


Hope this JTAG bug does not affect JLINK, too.
https://sourceforge.net/apps/trac/openocd/ticket/31


Differences between Trunk3 0.3+patch(built) and 0.4(installed)
Directories Trunk3 has but installed v4 doesn't:

  • Trunk3 built (3.0+patch):   
    • autom4te.cache; 
    • contrib; 
    • doc; 
    • ecosflash; 
    • src; 
    • tcl; 
    • testing; (has .cfg files  in subdirs)
    • tools;

Copied into 4.0 (from Trunk3): testing; tcl

  • Program files installed (4.0) but not in Trunk3:
    • bin; 
    • board;  (has .cfg files)
    • drivers; 
    • interface; (has .cfg files)
    • source; 
    • target; (has .cfg files)






Tuesday, February 15, 2011

Feb.15,16 Testing env notes

cMake via gui does not seem consistent
  • The same configuration seems to work sometimes and not others.
  • Need to find what pattern will set all the variables corrently.
  • In the meantime can change manually to the values in the screenshot from the cMake instructions in Jan. blog entry
cMake ECOS_SYSTEM_TARGET_LIBRARY
Should it be:
just the directory lms/bin/lib
or lms/bin/lib



LMS Flashing via OpenOCD:
Pattern when get error during flash process :
Cause of error: trying to change .cfg and forte.bin locations and didn't get it right.
  • When openOCD-flash.bat gets an error 
    • the sectors seem to have been locked somehow 
    • and must be unlocked via SAM-BA
  • The jtag lost connection once - pattern that caused it is not clear
  • The device is no longer recognized by windows at all... have to go into boot mode again.
Question: Is there a way in OpenOCD to unlock the sectors everytime?

Using Eclipse with Dropbox files:

If files are shared on multiple computers - slow due to syncing.
In Eclipse the filenames have an extra dropbox unknown to Windows and make has problems.

Feb.15 Boot blinky, new forte, smaller eCos

Boot blinky not working.
Most obvious (and annoying) question is: 
Why did appear to work last week 
  and does not appear to work with the same forte lms now?
  • Obvious answer would seem to be wrong forte.bin downloaded. 
    •  Backing up to this version did not help. 
  • See OpenOCD notes @ end of previous blog entry
    • having a hard-code location for forte.bin can lead to wrong .bin file
    Obvious tests are 
    • go back to a working version 
      • Summer 2010 with forte0.3 and larger eCos
      • Works - but flashed only with Sam-ba so far 
        • is screen shot needed? Only in case blinky stops working with this version

      • hg_LMS_SummerBkup now a hg repository 
        • committed all files to preserve everything this time  
      • Regression test of hg version works

    Then  switch out one piece at a time
    • smaller eCos for larger eCos 
      • Problems in code not used by LMS forte (abandoned test for now)
    • hg forte 0.4 for forte 0.3
      •  larger eCos for smaller eCos in current (2/16) forte  
        • too large if any FBs included
        • boot blinky works with larger eCos
      •  working boot blinky so try again with smaller eCos
        • eCos version used by DW had files 1 day newer than smaller eCos tested with
        • boot blinky works with larger eCos
    • HERE
    • various lms code changes 
      • Does the lmsmain that only does boot blinky work everywhere?
      • Incrementally add the code changes back into hg
        • initially with old file structure.
        • then new file structure
          • blinky works in new structure 
        • add in avr_cntl
        • add in FBs
        • (only if doesn't work in new structure) move code around with incremental testing
        • renames with incremental testing
    Less obvious tests are:
    • Is creation of forte.bin correct? 
      • since was part of setup before
        • what was the forte file before? 
      • generalized OpenOCD -flash bat file so 
        • input directory and openocd directories are variables
        • and .cfg file is in the same dir as the .bat file
    • New forte code changes
      • in Nov an rv and vr were exchanged, but think this change is in hg version



    Feb. 15,16 OpenOCD

    OpenOCD bat file details
     Created dropbox dir with openocd bat files as backup
     Goal: get openocd working on my laptop
     Status: 
       Trying to change the lab PC openocd bat files so openocd can flash from a fixed location


    Questions:
    • Can the arm sectors be unlocked from OpenOCD or just via SAM-BA?
      • yes
        • flash protect 0 0 15 off
    • Can .cfg files on Lab PC be used on Laptop
      • So far - no, but lab pc can be in local directory
      • lab pc is openOCD 3 and Laptop openOCD 4

    Bat files examined in detail:
    openocd - FLASH.bat
    .cfg files will be copied here as backup, but real files used.

    Not currently used:
    arm-elf-objcopy
    -->Copies a binary file, possibly transforming it in the process
    Option
    --gap-fill               Fill gaps between sections with

    Files used:
    D:\AA_local\eclipseWork\forte_lms_neu\bin\lms\src\forte 
    -- created by ???
    D:\AA_local\eclipseWork\forte_lms_neu\bin\lms\src\forte.bin
    -- created from forte file

    arm-elf-size D:\AA_local\eclipseWork\forte_lms_neu\bin\lms\src\forte
    To see size of data downloaded to know if too big for LMS 

    openocd.exe

    Options:
    -v display version
    -f flash

    C:\openocd\trunk3\src\openocd.exe -v

    C:\openocd\trunk3\src\openocd.exe -f C:\openocd\trunk3\testing\examples\SAM7S256Test\prj\SAM7S256_flash.cfg -d2

    .cfg files 
    Here are the real instructions to open 

    Monday, February 14, 2011

    Feb. 13,14 Code Review 1

    Code Review was done via SkyPe.
    The comments have been organized by topics, not time.


    cMake compile of hg + 1103 code

    [10:37:33 PM] Carolyn Oates: for cmake you copied everything from arch/ecos/lms unchanged into modules'/lms?
    [10:37:40 PM] Alois Zoitl: nope
    [10:37:51 PM] Alois Zoitl: I moved it to modules/lms/lms_hw
    [10:38:04 PM] Alois Zoitl: I thought a little seperation might be nice
    [10:38:09 PM] Carolyn Oates: No cmake...txt changes
    [10:38:28 PM] Alois Zoitl: yes added subdirectory and added additional cmake.txt there


    [11:07:23 PM] Carolyn Oates: lms_main goes in plain lms dir?
    [11:11:20 PM] Carolyn Oates: filenames should all be lower case?
    [11:11:27 PM] Alois Zoitl: yes and yes
    [11:11:46 PM] Carolyn Oates: So I need to rename Buttons to buttons
    [11:22:01 PM] Carolyn Oates: Do the .h files need to be listed in the CMakeLists.txt file?
    [11:22:30 PM] Alois Zoitl: I'm not sure. However for building distributins afterwards it would be better I gues
    [11:27:10 PM] Carolyn Oates: Does your code have #include "../../arch/ecos/lms/buttons.h" in it?
    [11:27:38 PM] Alois Zoitl: no changed it to "lms_hw/buttons.h"


    2/14 note: avr_ctl, buttons, sensors now start with lowercase letter and end with cpp
     Other files must stay .c files

    ////
    follow the coding rules
    10:15:31 PM] Alois Zoitl: How about having a baseclass for all sensor port fbs e.g. CSensorPortFB : public CFunctionBlock{...};
    [10:15:43 PM] Alois Zoitl: and put there the port management


    [10:26:17 PM] Alois Zoitl: please don't start functions with uppercase letters


    ////


    2/14 note: LED on/off and initialization are ready inline functions in the FB.
    Need to change lms_main to use these functions.

    [11:44:04 PM] Alois Zoitl: I'll be gone for today. Had a look on the i2c files in ecos they are somewhat different. so we should currently stay with the ones we have.

    10:23:46 PM] Carolyn Oates: LMS_LTLED_INIT and LMS_RS485 are init functions
    [10:24:06 PM] Carolyn Oates: LMS_LT_LED_ON /OFF are led fns that do something
    [10:25:30 PM] Carolyn Oates: The LMS_ functions should go in an LED.h except LMS_RS485... its initialized the Port in general.

    [10:26:24 PM] Carolyn Oates: so lms_RsvSensorPort  and LMS_RS485_PORT_INIT() belong together
    [10:26:45 PM] Alois Zoitl: there should also be a unrsv function

    10:28:58 PM] Alois Zoitl: it is just needed to support the an INIT-
    [10:30:42 PM] Alois Zoitl: no it means that you want to deinitialize the FB
    [10:30:48 PM] Alois Zoitl: i.e., QI false

    [11:39:46 PM] Carolyn Oates: isnt this backwards?
    [11:39:48 PM] Carolyn Oates:   if (pa_nInputPortPin < NXT_SENSOR_PORTS_MAX)
        return PORT_NUMBER_UNDEFINED; // Port doesn't exist
    [11:40:43 PM] Alois Zoitl: yep



    Open Question: 
    2/14 latest comment - avr_ctl content is ok.
    Anything else in avr code other than sensor code that is:

    [10:16:44 PM] Alois Zoitl: currently your separation feels for me not very natural as it seperates things that belong together
    [10:16:48 PM] Alois Zoitl: e.g., avr code
    [10:16:56 PM] Alois Zoitl: and isolates other stuff




    What is the event sent to the application?
    [10:35:52 PM] Alois Zoitl: there is the nice clean recsource feature we used in the demo with the students   


    [10:55:52 PM] Carolyn Oates: Off the top of your head - any idea what misc.h an miscxx.c are?
    [10:58:12 PM] Carolyn Oates: Asked without looking... Having looked I think its Alex's and Dominik's debug via usb print.


    [11:05:57 PM] Carolyn Oates: Did you compile with or without boot blinky?
    [11:06:18 PM] Alois Zoitl: without but that should't be an issue afik
    [11:06:51 PM] Carolyn Oates: Does it compile files not needed?



    Friday, February 11, 2011

    (Short-term) Future Task (Wishlist)

    Very near future: SIGCSE
    Before SIGCSE work out what is feasible and what could be a problem:


    Racket on KIPR BotBall
    - Want to demo to Racket group March 9 
    Greenfoot connection to Forte/4DIAC for simulations
    - Want to discuss with Greenfoot author
    LMS Forte 
    - Would like to be able to demo to individuals when asked specfics


    March:
    [Online access to student statistics for distance learning school]
       
    By end of June:
    LMS Forte:

    - More HW FBs (need larger blocks of time)
      like Tacho motor; Sonar (I2c);
            LCD; Sound on board (if possible)
    4DIAC/forte Applications formalization
    - Lego Segway
    - Line Follower with Timed Events instead of E_DELAY


    Summer: 
    NXTBee and distributed applications

    Feb.11 More Project Notes

    Blinky works under hg version with smaller ecos
    next:- avr with led, motor and light sensor support.


    next steps:
    - code review
    --- stable version
    --- cleaned-up version
    --- lab version


    Blinky support functions:
    - void InitLed(void);
    - delay( x)


    Fix (must be pushed into hg!!!!!)
    Warning about Strings  need in Stringdict.h
    to add include:
    #include







    Feb. 10 Next Step- Boot blinky in new forte

    Just project notes today:
    Moved into Dropbox folders.


    cmake process is repeatable.


    Next step move code from summer into project.
    Change lmsmain.cpp so boot blinky works


    What are .cdl files? eCos related

    Tuesday, February 8, 2011

    Feb.8 SAM-BA again

    For SamBa 2.10 on Vista use  com port LMS connected to with usb to serial driver.
    For SamBa 2.9 on XP use Atm6124 TestBoard USB driver
    Flashes under Vista now, 
    eCos is much smaller .Only flashes 9 sectors now instead of 14 or 15..