Catalina 3.1
RossH
Posts: 5,462
UPDATE: Catalina 3.2 has now been released! For details, see this thread.
Release 3.1 of Catalina is now available on SourceForge (here). Linux and Windows versions are both available. The win32 version works fine on both 32 and 64 bit versions of Windows, but there are now separate releases for 64 and 32 bit versions of Linux (so Linux 64 bit users no longer need to compile Catalina from source!).
Release 3.1 is a full release of Catalina. It contains new features, improvements and bug fixes. See the file README.WhatsNew (attached) for more details. One thing to note is that this release eliminates many of the redundant target files of previous releases, and also moves and renames some of the directories of previous releases. It is therefore recommended that you either remove any old versions of Catalina before installing release 3.1, or install release 3.1 to a different location.
There are only a few functional changes to Catalina in this release, since most of the functional changes were in release 3.0.4. The main change in 3.1 is a massive clean up and restructuring of the various "target" directories. It is now much easier to customize Catalina. Everything from adding a new platform, to adding a new plugin, to adding a new target, to adding an entirely new target package has been made easier, and also the documentation in this area has been brought up to date and expanded. Here is a brief overview of the changes:
The next release of Catalina will concentrate in simplifying the install process, which is still a little daunting for novices. My aim is to make it a "one touch" install process, and also make it possible to use Catalina entirely from within Code::Blocks, so you will never need to use the command line again (unless you want to, of course!). All the pieces are there (compilers, debuggers, loaders, utilities) and are not going to change - they just need to be better integrated.
Ross.
Release 3.1 of Catalina is now available on SourceForge (here). Linux and Windows versions are both available. The win32 version works fine on both 32 and 64 bit versions of Windows, but there are now separate releases for 64 and 32 bit versions of Linux (so Linux 64 bit users no longer need to compile Catalina from source!).
Release 3.1 is a full release of Catalina. It contains new features, improvements and bug fixes. See the file README.WhatsNew (attached) for more details. One thing to note is that this release eliminates many of the redundant target files of previous releases, and also moves and renames some of the directories of previous releases. It is therefore recommended that you either remove any old versions of Catalina before installing release 3.1, or install release 3.1 to a different location.
There are only a few functional changes to Catalina in this release, since most of the functional changes were in release 3.0.4. The main change in 3.1 is a massive clean up and restructuring of the various "target" directories. It is now much easier to customize Catalina. Everything from adding a new platform, to adding a new plugin, to adding a new target, to adding an entirely new target package has been made easier, and also the documentation in this area has been brought up to date and expanded. Here is a brief overview of the changes:
- Cleaned up the HMI plugins - there is now only one plugin for each screen type, not three!
- Removed the Reserve Cog functionality - it was too complex, and is no longer needed.
- Cleaned up the default Spin target files - they are now all very simple (and uniform) in structure.
- Cleaned up the use of "include" files - these sometimes made things more confusing, not less!
- Adopted a uniform method of setting up and starting plugins from all Spin target files - each plugin now contains a very simple Setup method and a Start method.
- Extracted out the configurable parts of each supported platform - now each one has only two files (or three if the platform has XMM RAM available):
- <platform>_DEF.inc - Pin definitions and clock configuration.
- <platform>_HMI.inc - Defines the supported HMI variants (VGA, TV, PC etc)
- <platform>_XMM.inc - Defines the XMM API for the platform (if XMM is available)
- Added a new file (Extras.spin) which is included by all nine target files - this allows a new plugin to be trivially added to all targets by just adding a few lines to a single file. A fully worked example (a new gamepad plugin) is included. This also makes it much easier to associate command line symbols to plugins (e.g. GAMEPAD for the gamepad plugin)
- Added a new "basic" target package. There are now three different target packages:
- target - the standard target package. Supports all platforms, all plugins, all memory models, and all load options. Basically, it supports everything!
- basic - a smaller target package. Supports only a single platform (which you must configure) and the minimum set of plugins required for ANSI C compliance (and which are only loaded if you actually use them). It supports all memory models and load options, but it doesn't include some of the complex and esoteric features that most people won't ever need (e.g. POD debugger support, proxy drivers, multiple HMI options). This makes it a good basis to start from if you have a specific platform or application to support. It's much easier to add the few extra things you may need to this package than to remove all the things you don't need from the standard package. For deeply embedded applications, you don't need to do anything more than configure your own pin definitions and clock configuration.
- simple - renamed from the old "custom" target package (to avoid confusion with the CUSTOM platform, which is something completely different). This package is mainly used to illustrate the process of adding a new plugin, although it is fully functional target package consisting of only a few files, which would be perfectly adequate for a deeply embedded application that could run entirely within the 32kb Hub RAM of a standard Propeller. This package supports only one platform (which you must configure) one plugin, one memory model and one load option.
- It is now possible to use standard Spin OBEX objects as Catalina plugins. There are now two different ways you can re-use existing SPIN/PASM objects in Catalina. Both are documented in the Catalina Reference manual, and fully worked examples of both are included:
- as unmodified Spin/PASM objects (e.g. the"tiny HMI" example in demos\spinc, which uses two drivers - keyboard and screen - taken straight from the OBEX in place of the usual Catalina HMI plugin). There are new Spin functions (in Catalina_Common.spin) specifically designed to support this approach, and simplify interaction with the Catalina registry from Spin.
- as modified PASM-only objects (e.g. the new plugin Catalina_Gamepad.spin in the target directory)
The next release of Catalina will concentrate in simplifying the install process, which is still a little daunting for novices. My aim is to make it a "one touch" install process, and also make it possible to use Catalina entirely from within Code::Blocks, so you will never need to use the command line again (unless you want to, of course!). All the pieces are there (compilers, debuggers, loaders, utilities) and are not going to change - they just need to be better integrated.
Ross.
Comments
May I suggest you also place a link in your first post to the Catalina 3.0 thread.
Ah yes! forgot that - thanks.
Ross.
I have just emailed version 3.1 of the Catalina Optimizer to those who have purchased this optional component (or donated money to Catalina). If you have not received your update but believe you are eligible, please let me know.
Version 3.1 of the Optimizer contains a minor bug fix to the 'inlining' capability, which was ignoring some functions that were able to be inlined. On some programs, this makes a large difference in code size - for example, the Optimizer now saves 42% of the code space on the simple Catalina 'test_leds.c' demo program. On most other programs it will not do that well, but code size savings (and speed improvements) of 10%-20% are typical.
Ross.
I'm in the process of porting code from VGA to TV. This is my command line
and the program is
I'm not getting anything on the display, and I suspect catalina does not know what pins the TV is on (it is pins 16,17,18).
How would I go about fixing this?
So, strictly speaking, it should be 'int main (void)' (to include ANSI style function prototyping as well.. and GCC is coming, as we know, and may start to complain, or at least not issue the warnings that it could have).
-Tor
Catalina currently does nothing with the return value, but eventually it will return the exit value to Catalyst - so it is good practice to declare main as 'int main()'
Ross.
Hi Ross,
I'm on version 3.0 and I can't find any file demo_def.inc (searched all subdirectories). I have constants.inc, debug.inc, fp.inc, hmi.inc, kernel.inc, loader.inc, xmm.inc
However, the demo one is probably not so important as I mainly use that as a test to see if a program compiles, without downloading it. The DRACBLADE version is the more important one to change, and this one is producing an error in the compilation (first time this has been tested with TV so not surprising)
Any suggestions would be most appreciated.
Hi Dr_A,
In version 3.0, edit the file Catalina_Common.spin in the target directory. The file will contain a section starting with the line #elseifdef DEMO - I have shown this section below:
Just edit this to suit your needs.
Ross.
Hi Dr_A,
Yes, I don't support TV on the DracBlade, since it has no TV outputs. However, if you have modified your DracBlade, it is easy enough to fix - I've posted a fix in the Catalina 3.0 thread. Please add any more 3.0 specific queries to that thread.
Ross.
Ok, I have Hello World white on blue on a TV. On my tiny TV the low res one is better, and on the 7" screen the hi res one is better.
This works for LMM. For XMM I'm getting another error - post edited #13 above
Yes - return a value ...
I've successfully used catalina/payload to run hello_world.c on my C3 with TV.
I tried the same using a Custom_def.inc with 96MHz clock.
While it eventually works, payload is truly struggling and quite unusable.
I could not get -D PC option to work until i did "build_all PC"
No idea what's happening there.
Looks like you need to update the Catalina revision??? I'm getting 3.0
I deleted the Catalina 3.0 directory entirely and my path only points to c:\Catalina.
There is no catalina in either "Program Files" directory.
I'll try to add one of my cache drivers now.
What platform are you on? Windows 7? I'm still struggling with some truly bizarre behavior on that platform (I think it has to do with Microsoft's bizarre VirtualStore "feature").
I'll check the revisions in the release, but is it possible you have mixed up some Catalina 3.0 and 3.1 files?
Also, what do you mean by payload "struggling"? Slow? Or getting timeouts? Try adding -t 1000 to the payload command line.
I'm hoping to have my "one touch" installer sorted out shortly, which should solve a lot of potential set-up issues.
Ross.
What is the 'official' way to change from PAL to NTSC?
I've got three different LCD TV displays of various sizes that are originally designed for car reversing videocams. Very reasonably priced on ebay and they accept Pal and NTSC.
On multiple propeller drivers, the NTSC video is a lot more solid looking, where the Pal tends to have wavy lines on the screen.
So I hacked into the TV driver for catalina and changed the commented out line to the line below
so with the values I think the one that looks the best is NTSC and Interlaced.
I couldn't find the variable NTSC_PAL in that local spin file, so I figured it might be in the common file but this seems to be set by variables from another file
So what would be the best way to set the TV driver to NTSC?
Add -D NTSC to your compile command. Same thing for -D NO_INTERLACE - for example: Ross.
All of that means "I wiped out Catalina 3.0 completely and replaced it with 3.1." AFAIK
No timeouts, just much slower than Propellent or other loaders.
For C3 it loads 5x faster (12 secs) than for my CUSTOM platform (60 secs) defined below.
Fantastic. All working very nicely now.
Each program (catalina, catbind, payload etc) should print the revision number if you include the -v flag on the command line. Unless I have stuffed up the build process (entirely possible!) they should all say 3.1 - I'll check this out when I get home.
As to payload being slow - I can't think of any reason why load time would be affected by the actual board in use. Possibly some FTDI/USB issue. But for simple LMM programs you don't have to use payload if you don't like it - you can use any loader you like (e.g. Propellent). As for XMM programs ... well, since payload is currently the only such loader currently available, it is by definition the fastest option . I agree that loading a 1mb program into Flash on the C3 via payload can be a bit tedious - which is why I tend to use Catalyst.
Ross.
I'm finding that programs more than about 200k are getting a bit tedious to download. A partial solution is to test components of a program individually with a quick LMM download which is only a few seconds. Minimum XMM via payload is 10 secs or so.
My longer term solution is a board which is being made at the moment which simply has a 4PDT toggle switch, to quickly switch the SD card between the propeller and as a drive on the PC. That gets things up to USB speeds. Untested as yet, but I am not sure that any download solution is going to work for huge programs if the speed is stuck at a maximum of 115200.
All I want is a solution that i can use to load and test the drivers i have that work perfectly in another nice environment. The drivers are compatible for the most part with the C3 cache driver.
Waiting over a minute for the default tool is just a little awkward. I would like to use your work since that's presumably what others might use.
I downloaded your Catalina_3.1_win32.zip from sourceforge. All the versions in the precompiled binaries are 3.0 or 3.0.x as far as i can tell. There must be some problem with that .zip.
I can't really believe the day I want to do something with your product that there is some kind of a problem. Let's figure it out and move on.
I usually download the file after uploading it to see if I have stuffed something up, but I have to admit I didn't do that this time (see where overconfidence gets you?). I can't do this from work, but I'll do so when I get home.
Ross.
The packages for release 3.1 on SourceForge are correct - the main changes in the 3.1 release (over the previous 3.0.x releases) are in the various target packages (i.e. basic, target & simple). Normally, I increment the executable version number whenever I change their source file, but in this case there were no changes to any executables since release 3.0.x, and I just plain forgot!
To avoid future confusion (it confused the heck out of me!) I will increment the revision number when I release the new "one touch" installer.
As for the payload speed, I accept that this is an annoyance to some users, but it is not a bug. Payload works very reliably on all the computers to which I have access (32 bit, 64 bit, Windows 6, Windows 7 and various incarnations of Linux). For me, this is more important than raw speed. However, I will work on improving the speed as time permits . Anyone who is good with USB/FTDI/Serial drivers on Windows and Linux is welcome to pitch in and help - the payload program itself is quite trivial - it's the serial port handling that's complex!
Ross.
A beta version of the Catalina "one touch" installer for Windows (Windows 6, Windows 7, 32 bit and 64 bit) has just been uploaded to SourceForge. Now you can install (or uninstall) both Catalina and Code::Blocks in a single step!
If I'd known it was so easy, I'd have done this months ago!
What this installer does (N.B. some of this is selectable during install, but the following list assumes you leave all the options at their default value):
- Installs Catalina, to whatever directory you choose (default is C:\Program Files\Catalina on 32 bit Windows, or C:\Program Files (X86)\Catalina on 64 bit Windows);
- Sets the permissions of that directory to disable the Microsoft "VirtualStore" nonsense (Windows 7 only);
- Sets the environment variable LCCDIR to that directory.
- Installs a shortcut on your desktop to launch the Catalina Command Line - all configured and ready to go!
- Installs Code::Blocks.
- Installs a Catalina program group, with shortcuts to both the Catalina Command Line, and Catalina CodeBlocks (and also a shortcut to Uninstall Catalina - but who'd ever want to do that?)
- Installs the Code::Blocks Catalina Compiler plugin, and the Code::Blocks Catalina Project Wizard, and the Code::Blocks Catalina Tools.
After all that, you're pretty much ready to just start programming in Catalina C!Refer to the document in the main Catalina folder called Gettting Started with CodeBlocks - but you can now completely ignore the installation section, and start with the Using Code::Blocks section (page 11).
Good luck!
Now for the fine print:
- Please keep in mind that this is a BETA release! Let me know if you try the installer and have problems, or try it and hate it for any reason.
- The installer currently only installs the Catalina Code::Blocks Tools for the current user. I have yet to figure out how to install these tools for "all users" - this may need to be a manual step for any users other than the one who actually does the install (currently, this will require manual editing of each user's codeblocks\default.conf file).
- This installer should not interfere with any existing Catalina installation (provided you install to a different directory) apart possibly from changing the setting of the LCCDIR environment variable. However - just in case - please first back up any critical source files you wish to preserve!
Ross.For me on XP SP3 Swedish Language ----> IT function Correctly!
THANKS
Ps. Very Professional