
History of EmbeddedGNU

Feb 17, 2003 initial release of version 0.5

Feb 18, 2003 version 0.5a
  - fixed bugs in syntax highlighting for char, float, hex, octal constants

  - found some problems trying to use GNU make with some versions of Windows.
   
Feb 19, 2003 version 0.6
  - I think I got the problem with GNU make worked out. Please specify
    the GNU make.exe program in "Environment Options".

  - I added the full pathname of your project in the caption bar

Feb 23, 2003 version 0.7
  - Fixed some bugs concerning the saving and restoring of window position and size

  - Fixed some bugs with adding and removing units from projects

  - Start distributing GNU programs "rm.exe" and "make.exe" with EmbeddedGNU.
    These are both necessary and these programs don't come with the gcc 
    distribution. Configuration is easier if I send these out in my archive.

  - Added support for GEL projects, and included one sample GEL project (primes,
    from the GEL distribution).
  
  - removed status bar at bottom of main screen - each edit window has a status bar,
    so we don't really need one for the main screen.

Feb 26, 2003 version 0.7a
  - the version of "rm.exe" that I distributed with 0.7 had a dependency on other
    programs. I replaced it with one that should work without other programs.

  - changed the terminal window so it keeps the focus after a download.

  - Thanks to Alex Harvey for these bug reports!

Mar 4, 2003 version 0.7b
  - fixed a bug in the serial port flow control code. It should work better now
    with high baud rates.

  - renamed the profile extension from .prf to .mem. This is due to a problem in 
    Microsoft Outlook. If you were to double-click on a file that has an extension
    of .prf (PLEASE do NOT do this) it will wipe out your configuation for Outlook.
    You won't lose any messages, but it's not fun to lose your configuration.

    Please CAREFULLY rename any profiles that you might have made (in the profiles
    subdirectory). Do NOT double click on them! From now on, all profiles will 
    have an extension of .mem.

    This version of the IDE will automatically delete the profile I have been
    distributing (dragon12.prf), so you don't have to change that one. You will
    get the .mem version with this release.

  - I added an hc11 demo. I am also halfway done patching in the Wytec debugger
    used with their EVBPlus2 board. This will be ready in the next version.
  
Mar 6, 2003 version 0.7c
  - I distributed the wrong version of rm.exe with version 0.7b. I made this 
    release just to include the right version of rm.exe. The EmbeddedGNU.exe
    didn't change this time.

Mar 27, 2003 version 0.7d
  - Fixed a bug that prevented a make from working in Windows 9x.
  - Added an application helpfile

Mar 30, 2003 version 0.7e
  - A fixed version of errout was provided by Ruben Jönsson. This allows Win95/Win98
    makes to work, even if you used a long directoryname for EmbeddedGNU.

  - Added a test to make sure errout.exe is found in the main EmbeddedGNU directory
    if a make is done on Win95 or Win98. Errout is not used on NT, 2k, or XP.

June 9, 2003 version 0.8
  - Change the syntax of the makefiles. I split apart the filenames from the gcc
    commandlines to make it easier to support new utilities, like objalloc and
    SRecCvt. 
  
  - Change the way filenames are stored in the project file. It will only store
    relative filenames now, because we don't always keep the same fully-qualified
    filenames between different installations. If an older project file is opened
    that still has fully-qualified filenames, they will automatically be converted
    to relative names.

  - Added new hardware profile settings for vector location and length. This gets
    added to the linker script file for use with interrupt handlers you write.
  
  - Included a demo for the hc11e9 that uses vectored interrupts (thanks to John 
    Hilton for this). 

  - Included 2 demos to show you how to use vectored interrupts in an 9s12 MPU
    in EVB mode (thanks to Tom Almy for this).

  - I added limited support for the use of GNU Assembler files in a project. I 
    am using an assembler module in the new VectorDemo project (vectors.s). I do
    not have syntax highlighting working on assembler source files yet, and I don't
    recommend doing much editing of assembler source files inside EmbeddedGNU yet.
    The assembler syntax might confuse the IDE because it is not fully "assembler
    aware" yet.

  - Added a new hardware profile for the hc11e9, and the hc11e20.

  - Added more documentation to explain the difference between opening a project
    and opening a file. Some users were confused about why they couldn't compile
    a single C file - you must open the project file in order to do a compile.

  - Added info in the help file to explain how you can update your hardware 
    profiles when you upgrade to new gcc compiler versions.

  - Added support for targeting the 68hc11e20 chip. This has a split memory model,
    which requires some special linker script entries. It also requires the objalloc
    utility to be included in the makefile. This has to be downloaded from the
    gcc 6811 web site. (thanks to John Hilton for information on this)

  - Added support for SRecCvt.exe utility from Motorola. This is used with the 9s12
    versions of the 6812. It reformats your .s19 file to make it compatible with the
    internal flash memory of these newer MPUs. You have to configure the commandline
    according to which particular MPU you are using - this has been added to the
    hardware profile configuration. I am also distributing SRecCvt.exe (and the 
    documentation file: SRecCvtRG.pdf) with this release of EmbeddedGNU. This is 
    freeware from Motorola, but it isn't always easy to find on their web site.

July 13, 2003 version 0.8a
  Fixed 2 bugs reported by Olivier Gauthier:
  - The Find option wasn't working
  
  - EmbeddedGNU would give an error if you tried launching it by double-click
    on a .prj file in Explorer.

Dec 14, 2003 version 0.8b
  - removed the buggy "smarttab" and "auto-indent" features

Changes made in Version 0.90:

This is the biggest single release since the first release of
EmbeddedGNU over a year ago.

1) Your own Lib and INCLUDE Folders

   I added LIB and INCLUDE folder options to let you specify
   common directories unique to your installation. You can set
   the INCLUDE directory to point to a common folder for your
   header (.h) files.

   The standard LIB folder is less useful because gcc won't
   automatically take object files there - it wants to find ".a"
   style libraries there. However, I've made it more useful by
   letting you put your startup code there.

   I added a new object file in the EmbeddedGNU\lib folder that
   you can use in your projects. This provides special startup 
   code for the 9s12C32 MPU. See number 8 and 10 for more info 
   on this.

2) Each Project Must be in a separate folder

   Each project must now be in a separate folder, and every file
   in a project must be in this project folder except:

    a) you can have .h files in a standard include folder.
       If you do this, then you should not try to add these
       files to the project itself. Any file that shows as
       part of a project must be in the project folder. Use
       the Environment Options to set the path of the include
       folder.

    b) you can have special precompiled startup code object files
       in a special lib folder. Use the memory profile to specify
       the location of this object file (under Project Options).

   If you create more than 1 project in the same folder, then
   you won't be able to use the "Managed" memory script file 
   option (see number 6). This is because I am always using the 
   same name for the memory script file (memory.x), and you can't
   have 2 files of the same name in the same folder.

   I strongly recommend using a separate folder for each project.

3) Broken out "File, Reopen" Option

   I used to have a single "File, Reopen" option. This was a 
   little hard to use because it would show both individual files
   and project files. I have now broken it out into 2 separate
   options:

   "File, Reopen File" - used to reopen individual files.

   "File, Reopen Project" - used to reopen projects. I think
      this is the most useful "Reopen" option.

4) New "Don't Use a COM Port" Option

   I added a new option under Environment Options that lets you
   tell EmbeddedGNU not to try to use a COM port. This is useful
   for cases where you use a custom download program and you don't
   want 2 different programs to fight over who has control of the
   COM port.

5) Optimize for Size is now Standard

   The new default optimization option is "-Os", which 
   optimizes for size. The old default was "-O3", which is 
   for speed optimization. I haven't found much difference
   in these options, but smaller size may be more important
   to some people.

   This will not automatically be changed in any projects you
   already have. The new change is only for new projects you
   create. You can manually modify existing projects by using
   the Project Options. Make sure you create a new makefile 
   after changing this (or use the "Managed" makefile support
   described in number 6 below).

6) "Managed" Makefiles and Linker Script Files

   I added a new "managed" Makefile (projectname.mak) and Linker 
   Script file (memory.x) routine.

   Under past versions you had to control the times when you 
   wanted to create a new makefile or memory script file. This
   was confusing to many people because they didn't know they 
   had to generate a new makefile if their Project Options changed,
   or a new memory.x file if their memory profile changed. This
   was in the helpfile, but I guess many people don't look there.

   I've added new code to automatically detect whether or not
   you've made any manual changes to these 2 special files.
   If you haven't made your own custom changes, then EmbeddedGNU
   will automatically recreate these 2 files every time you do 
   a make. This guarantees that any changes to the options will
   be reflected when you do a make.
 
   However, this new "managed" option won't automatically apply
   to your own projects until you first bring these files under
   control of the manager. This is easy to do: just open each
   project, and select "Build, Create Makefile", and "Build,
   Create memory.x". Once you build these files a single time
   it will store a CRC "check" code for each of the files into
   the project file. In the future it will autmatically 
   regenerate these files as long as you have not made your
   own custom changes to them.

   As before, once you make your own custom changes, it will in
   effect make these files "unmanged". It will be up to you to 
   update them once you have made your own changes. This is the
   only safe option I have - I don't want EmbeddedGNU to 
   automatically wipe out any custom changes you might have made.

7) New Profiles added

   I added 2 new memory profiles in EmbeddedGNU\profiles:

     CML12S-DP256.mem - for the Axiom board of this name

     hcs12c32.mem - for the 9s12C32 (see number 10 below)

   If you send me any profiles you have created for boards that
   I haven't included yet, please email them to me for inclusion
   in my next release.

8) New Profile options
 
   You can now use backspace to edit the hex addresses in the
   memory profile, under Project Options.

   I used to have a setup option for you to configure you
   "sreccvt" options for programming Flash on the hc12 MPU. I
   added 2 new options in addition to this one:

   "binload for 9s12C32 Serial Monitor" - this is used to 
   specify if you want to use Karl Lunt's cool downloader to
   send .s19 files to your 9s12C32 MPU (see number xx for more 
   info).

   "startup code" - this lets you specify one of 3 different ways
   to use your own custom startup code:

    a) use standard startup code - this works as before. This is
       the right option for most boards with a smart monitor like
       d-bug12 or BUFFALO.
    b) use a source file that is in my project - this can be either
       a ".c" source file, or a ".s" assembler source file. This
       must be in your project folder, and it must be added to 
       the project itself.
    c) use an object file (already compiled) - this lets you have
       one object file stored in a standard place. This will be 
       used automatically to compile every project that uses this
       profile. If you don't specify a full pathname, then it
       will be a relative pathname located under the EmbeddedGNU
       base folder.

    As an example of C above, I have set up my profile for the
    9s12C32 board to use this startup code: lib\9s12c32-crt0.o.
    This will be found in the lib folder under the main EmbeddedGNU
    folder.
 
    Why would you want to use custom startup code? The main reason 
    is because you want to set the memory mapping registers of the 
    MPU before trying to use the stack. The standard gcc startup code
    sets the location of the stack pointer to the address you specify
    in the profile (which is in memory.x), and then it calls the
    premain function, and then the main function. This fails badly 
    if you don't have any RAM memory mapped to that location! There's
    one other thing you can do with the startup code: set the clock 
    speed of the PLL. I provided source to the custom startup code
    I wrote so you can see what I did, look here: lib\src

    You would not need your own startup code if you have the d-bug12 
    or BUFFALO monitor because they will set this stuff for you before
    they run your program.

9) Fixed the option to specify nonstandard vector tables 

   Fixed the code that sets the starting address of the vector table. 
   I didn't know before that you had to add a special option in the 
   memory.x script file if you used a non-standard starting address 
   for your vector table (vector tables for most new MPU's are bigger 
   than they used to be, so this is important!). you need to use 
   "Build, Create memory.x" to bring this file under management (see 
   number 6 above for more info).

10) Added support for the 9s12C32 MPU

   This is the biggest single change, and this is also the change that
   drove many of the other changes made in this release. This new MPU 
   is very cool, and it brings Motorola up to the level of most other 
   embedded microprocessor makers. They finally fixed the single
   biggest problem with the FLASH memory in their MPUs - the fact that
   you always needed extenral circuitry and a BDM in order to program
   the internal FLASH.

   Welcome to the new world of the 9s12C32 - you no longer need any
   custom circuitry to program the onboard FLASH memory! And, although
   this is very important, there's one other thing that's equally
   important: Technological Arts has produced a cute little module
   using this MPU, and it's the same size and form factor as a DIP chip!
   This looks a lot like a BASIC Stamp! But, it's much faster than a 
   BASIC Stamp, and it has more internal memory. These are very easy to
   use for developing new programs (they also sell a docking board that 
   will get you up and running right away), and you can easily plug this
   into those white prototyping modular boards to play with your own 
   custom circuits.

   Among the new features I had to support in this release specifically
   for this MPU:

    - custom startup code to set the memory map and the PLL
    - a new memory profile with the custom startup code support
    - integrated support for binload to perform downloading (you just
      press the icon to do a download and it happens automatically)
    - automatic switching of the COM port between the terminal window
      and binload

   The single hardest aspect of using these new chips is that you need 
   to use a custom downloading program. This MPU has a new monitor called
   the "serial monitor". It's very lean and it doesn't have any kind of
   text user interface. There are 2 good programs you can use for
   downloading programs to this device:

     ubug12 from Technological Arts - this is a full featured graphical
      user interface program that lets you download to the board, and it
      supports debug features like inspecting memory and registers, etc.
      I find this program to be helpful for debugging, but I use binload
      to do the downloads. This program requires you to have the Microsoft
      .NET Framework (see number 11 below).
      http://www.technologicalarts.com/myfiles/9s12c.html

     binload from Karl Lunt - this is a commandline program that makes 
      it easy to do downloads from other programs. With Karl's permission, 
      I have integrated support for this program into this version of
      EmbeddedGNU. Karl's program uses a special trick that lets you fully
      use the 32K of FLASH as one contiguous check of memory. I've 
      designed for this in EmbeddedGNU, and this requires the profile to
      specify an origin of 0x8000. Because of this, you can't use ubug12
      to download .s19 files unless you change the origin to 0x4000. This
      program is now included with EmbeddedGNU.
      http://www.seanet.com/~karllunt/binload.htm
  
    What about other new MPUs in this 9s12Cxxx series, such as the 9s12C128
    and 9s12C256? These newer chips have been announced by Motorola, but I
    don't know if these are being sold yet. EmbeddedGNU won't be able to 
    support them until we can get a hold of some boards to work with. Both
    EmbeddedGNU and Karl's binload program would need to modified to support
    them.

    What about other boards that use the 9s12C32 chip? There are some other
    companies that make boards using this chip, but I haven't been able to
    test with them yet. If they are using the standard Motorola serial 
    monitor, then it's very likely that EmbeddedGNU will work with them.
    If they have a different monitor, then it's not likely EmbeddedGNU will
    work with them without some kind of custom modifications.

11) Microsoft .NET Framework Version Reporting

    Since you will need Microsoft's .NET Framework loaded on your computer
    if you want to use ubug12, I've added some detection code to the 
    "Help, About" window to tell you what versions of the Framework you have
    loaded on your computer. You can have various versions of the .NET 
    Framework loaded at the same time - this is called "side by side" 
    versioning. I recommend version 1.1 of the Framework to use with 
    "ubug12", but check with Technological Arts for more info on version
    requirements.

    NOTE: I don't have any integrated support for ubug12. I'm only reporting
    on your versions of the .NET Framework as a convenience to you in case 
    you want to use ubug12 on your own.

12) Modified "End of Line" code in Terminal window

    I changed the terminal port handling code so it would recognize a
    line-feed as a valid line terminator even if it isn't followed by a
    carridge return. This makes it look better with some embedded monitors 
    that use the unix style convention of ending lines with a line
    feed only.


Changes made in Version 0.91:

- made a new right-click menu for the Terminal Window. This adds
  a couple very nice features:
  -- can log to a file
  -- can copy the contents of this window and paste into another 
     application (but you can't copy individual characters selected
     by the mouse because there's no way to select characters in
     this window)
  -- can paste characters in
  -- can clear the window

- added support for extra COM ports. This is needed for some
  computers that use a USB serial port adapter. This gives you
  a "virtual" serial port that is not in the normal range of
  COM1 to COM4. I now allow ports up to COM9, if your computer
  can support them.

  NOTE: I didn't check this with binload, the loader program
        for the 9S12C32 serial monitor. I'm not sure if binload
        can accept COM ports higher than 4.

- Steven Lamb contributed these items for the 9S12C32:
  -- comments for the assembler startup code
  -- enhanced header file with more of the standard definitions
  -- 3 new demo projects for the 9S12C32:
       a) SCI_test, simple SCI I/O pprogram (no interrupts)
       b) Blick_using_RTI, interrupt-driven, SCI I/O program
       c) Scope - OSCILLOSCOPE/Digial analzer program. This uses
          a custom PC program written in VB, also provided.


Changes made in Version 0.92:

- A new AutoDownload feature was added. This is used to download
  .s19 files to RAM on an EVB type of board.

  -- You just do your make, then make sure your board is ready to
     receive a command (reset if needed), and press the Download
     button.

  -- One of the new Auto commands gives you the ability to run your
     downloaded program automatically. It will issue a "go" command
     to the address of your Text segment.

  -- IMPORTANT!!!  These new features are enabled by default! This
     should make it much easier for you to develop programs. However,
     these new features may not work with every board, so I give
     you the option to Disable the new Automatic commands.

  -- Before attempting to do an automatic download, EmbeddedGNU will
     do a simple test to see if your monitor is responding. It will
     send a CR to the board, and look for a ">" prompt to come back.
     If it doesn't see the prompt, then it will give you an error
     message and tell you to reset the board. 

  -- See the help file topics mentioned below for details.

- Some people wanted the ability to run extra commands after a
  successful make. This is needed by people who use Professor
  Valvano's TExaS simulator, for example.

  -- if you create a batch file named "extra.bat", and put it in
     your project folder, it will be automatically executed after
     a successful make.

  -- See the help file topics mentioned below for details.

- Han-Way Huang contibuted a sample project for the Dragon12 board.
  This is called music-hc12, and it plays a German Folk song on
  the speaker of the Dragon12.

  -- some early versions of the Dragon12 don't give you much volume
     from the speaker. Contact Wytec for more information on a fix.

- As part of the above project, Han-Way also made a very detailed
  header file for the hcs12dp256 processor. You should use this new 
  eader file in any of your projects for this processor.

- Updated the EmbeddedGNU help file:

  -- The topic "How to download an .S19 file to an embedded board" 
     now includes lots of info about the new AutoDownload option.
  
  -- The topic "How to perform extra commands after the make" 
     explains the new ability to run "extra.bat" in a project
     directory after a make.


Changes made in Version 0.93:

- updated the main editor control to the latest version. This may
  fix some problems reported when editting large files.

- updated the Microsoft .NET Framework detector on the Help..About screen.
  My future serial debugger, and my next major IDE will require the .NET 
  Framework, but its too early to pin down exactly what version you'll
  need. It's safe to say that version 2 (to be released in Nov 2005) 
  should definitely work with my future software. 
 

Changes made in Version 0.94:

- updated to the latest release of SynEdit for the syntax highlighting
  editor. Hopefully this will fix the hanging problem some users
  reported. My initial testing on this version shows that it's fast and
  seems like a noticable improvement.

- updated to a newer version of GNU make. This supports some advanced
  syntax options. However, I'm not sure if this works on Windows 98, so
  I am keeping my old make program also, but I renamed it to make-old.exe.

- add the gcc bin directory as the leading directory in the path for 
  all builds. This is needed because some people have multiple versions
  of gcc and the related utilities.

- added a few new demos



Please let me know if you find bugs, and send me your suggestions!

Eric Engler
englere@hotmail.com
