Created Wed, 30 Oct 2013 08:12:40 +0000 by ChristopheDupriez
Wed, 30 Oct 2013 08:12:40 +0000
Hi! Microchip proposes its USB Starter Kit III at a reasonable price with a nice MCU: the PIC32MX450 (soon 470?). Does anyone intend to work on a bootloader and a Board_Def for this? I ask before ordering but I would then be willing to help. It would need to beef up the PPS support...
Wed, 30 Oct 2013 15:32:36 +0000
I don't believe there's a bootloader set up for this baord or that processor, however it should be very simple to do so.
What changes do you think would need to be made to PPS support?
*Brian
Wed, 30 Oct 2013 16:00:23 +0000
Current PPS support is for PIC32MX1xx and PIC32MX2xx (I am learning using a ChipKit DP32 and just received some Fubarino Minis ).
But to support a board that we are developing for PIC32MX33-35-37-43-45-47 MCUs (100 lines version), we will have to add these MCUs within ChipKit PPS support in "cores/pic32" and Board_Def.
As USB Starter Kit III is using PIC32MX45x or 47x too, I was wondering what would be the interest of others in supporting this development kit. The USB Starter kit III is programmed through an onboard PIC24 OTG: may be it is "in the way" for ChipKit IDE programming?
It is the first time I do this, please excuse how naively I approach the topic.
Wed, 30 Oct 2013 22:47:59 +0000
This is a cool idea. I've long thought that it should be possible to program PIC32 Starter Kits directly from MPIDE.
You are correct in guessing that, out of the box, the on-board starter kit programmer can't communicate with MPIDE. You could work around that with a soldering iron, and just connect to the PIC32 through a serial port instead. But, heck, you can do anything with a soldering iron, right?
All PIC32 starter kits (except the first generation) include a programming circuit that is basically a PICkit 3. The PK3 firmware is proprietary, but it can be replaced by "scripting firmware" that is open source. You can download the scripting firmware here (scroll way down):
http://www.microchip.com/archives
Bascially, the scripting firmware turns a PK3 into a PICkit 2. There are multiple open source utilities that can communicate with PICkit 2. Here's one:
https://code.google.com/p/pic32prog/
If you want to dig into this (or anyone else on the forum) shoot me a PM and I'll provide whatever hardware you need. Except for the PC, Mac or Linux box, of course :-)
Cheers
Wed, 30 Oct 2013 23:08:38 +0000
I tried upgrading my pickit3 with the scripting firmware once. It crippled it.
Fortunately I have a pickit2 that I used to replace the firmware on the pickit3 with the proper firmware again.
So be careful suing the scripting firmware - it isn't always as straight forward as you may think...
Wed, 30 Oct 2013 23:38:50 +0000
I wouldn't expect the scripting firmware to work with MPLAB IDE, if that's what you mean. It's designed to work with the PICkit 3 Programmer Application, which is a stand-alone app that ships with the firmware.
As far as MPLAB goes, you're correct. The scripting firmware is not compatible.
Thu, 31 Oct 2013 09:53:04 +0000
As for the PPS side of things...
I would suggest moving away from
#if defined(__PIC32MX1__) || defined(__PIC32MX2__)
and start building up an index of chips and their capabilities in a header file in the core.
Something like
#if defined(__PIC32MX250__)
#define __PPS__ 1
#endif
Then you can, of course, use
#ifdef __PPS__
throughout the core. That way as new chips are released you can add them to the index and define their properties. We could also include other things in there, such as the style of CN interface, etc. Yes, the list could get quite big, but it would give us the most flexibility.
(by the way, I'm not sure off hand what the deciding macro should be - is PIC32MX250 right? I can never remember. It's something like that anyway...)
Thu, 31 Oct 2013 21:17:32 +0000
As I am not a comitter to ChipKit software so I would deeply appreciate a comitter make the changes suggested by Majenko before I start developing!
Advice to those beginning to investigate PPS: beware that only a limited number of digital functions is available to each pin!
Thu, 31 Oct 2013 23:17:37 +0000
Anyone can be a committer.
Just sign up to github, and fork your own copy of the repo. Make your changes to your local copy, check them in and push them, then if you're happy it's all working, create a pull request. Your changes can then be incorporated into the master repo by the maintainers.
Fri, 01 Nov 2013 06:40:15 +0000
I shall do my best then! Thanks Majenko! Christophe
Wed, 06 Nov 2013 09:00:53 +0000
Hi! PPS Support is not a simple thing (how to abstract constraints in digital devices assignment to pins?).
I start with a simple one though: adding PPS definition to cpudefs.h (see below). No objection/suggestion from anyone about putting the number of PPS pins as the definition of PPS symbol?
...... //************************************************************************ //* Microchip pic32 chip names #elif defined(PIC32MX)
#define E2END 0x0fff //* 4 k of simulated EEPROM
//************************************************************************
//* 100 series
#if defined(__32MX110F016B__)
#define _CPU_NAME_ "32MX110F016B"
#define FLASHEND (((16 - 4) * 1024L) - 1)
#define RAMEND ((4 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 20
#elif defined(__32MX110F016C__)
#define _CPU_NAME_ "32MX110F016C"
#define FLASHEND (((16 - 4) * 1024L) - 1)
#define RAMEND ((4 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 24
#elif defined(__32MX110F016D__)
#define _CPU_NAME_ "32MX110F016D"
#define FLASHEND (((16 - 4) * 1024L) - 1)
#define RAMEND ((4 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 32
#elif defined(__32MX120F032B__)
#define _CPU_NAME_ "32MX120F032B"
#define FLASHEND (((32 - 4) * 1024L) - 1)
#define RAMEND ((8 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 20
#elif defined(__32MX120F032C__)
#define _CPU_NAME_ "32MX120F032C"
#define FLASHEND (((32 - 4) * 1024L) - 1)
#define RAMEND ((8 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 24
#elif defined(__32MX120F032D__)
#define _CPU_NAME_ "32MX120F032D"
#define FLASHEND (((32 - 4) * 1024L) - 1)
#define RAMEND ((8 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 32
#elif defined(__32MX130F064B__)
#define _CPU_NAME_ "32MX130F064B"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 20
#elif defined(__32MX130F064C__)
#define _CPU_NAME_ "32MX130F064C"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 24
#elif defined(__32MX130F064D__)
#define _CPU_NAME_ "32MX130F064D"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 32
#elif defined(__32MX150F128B__)
#define _CPU_NAME_ "32MX150F128B"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 20
#elif defined(__32MX150F128C__)
#define _CPU_NAME_ "32MX150F128C"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 24
#elif defined(__32MX150F128D__)
#define _CPU_NAME_ "32MX150F128D"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX1XX__
#define __PPS__ 32
//************************************************************************
//* 200 series
#elif defined(__32MX210F016B__)
#define _CPU_NAME_ "32MX210F016B"
#define FLASHEND (((16 - 4) * 1024L) - 1)
#define RAMEND ((4 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 19
#elif defined(__32MX210F016C__)
#define _CPU_NAME_ "32MX210F016C"
#define FLASHEND (((16 - 4) * 1024L) - 1)
#define RAMEND ((4 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 23
#elif defined(__32MX210F016D__)
#define _CPU_NAME_ "32MX210F016D"
#define FLASHEND (((16 - 4) * 1024L) - 1)
#define RAMEND ((4 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 31
#elif defined(__32MX220F032B__)
#define _CPU_NAME_ "32MX220F032B"
#define FLASHEND (((32 - 4) * 1024L) - 1)
#define RAMEND ((8 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 19
#elif defined(__32MX220F032C__)
#define _CPU_NAME_ "32MX220F032C"
#define FLASHEND (((32 - 4) * 1024L) - 1)
#define RAMEND ((8 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 23
#elif defined(__32MX220F032D__)
#define _CPU_NAME_ "32MX220F032D"
#define FLASHEND (((32 - 4) * 1024L) - 1)
#define RAMEND ((8 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 31
#elif defined(__32MX230F064B__)
#define _CPU_NAME_ "32MX230F064B"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 19
#elif defined(__32MX230F064C__)
#define _CPU_NAME_ "32MX230F064C"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 23
#elif defined(__32MX230F064D__)
#define _CPU_NAME_ "32MX230F064D"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 31
#elif defined(__32MX250F128B__)
#define _CPU_NAME_ "32MX250F128B"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 19
#elif defined(__32MX250F128C__)
#define _CPU_NAME_ "32MX250F128C"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 23
#elif defined(__32MX250F128D__)
#define _CPU_NAME_ "32MX250F128D"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX2XX__
#define __PPS__ 31
//************************************************************************
//* 300 series
#elif defined(__32MX320F032H__)
#define _CPU_NAME_ "32MX320F032H"
#define FLASHEND (((32 - 4) * 1024L) - 1)
#define RAMEND ((8 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX320F064H__)
#define _CPU_NAME_ "32MX320F064H"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX320F128H__)
#define _CPU_NAME_ "32MX320F128H"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX340F128H__)
#define _CPU_NAME_ "32MX340F128H"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX340F256H__)
#define _CPU_NAME_ "32MX340F256H"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX340F512H__)
#define _CPU_NAME_ "32MX340F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX320F128L__)
#define _CPU_NAME_ "32MX320F128L"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX340F128L__)
#define _CPU_NAME_ "32MX340F128L"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX360F256L__)
#define _CPU_NAME_ "32MX360F256L"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX3XX__
#elif defined(__32MX360F512L__)
#define _CPU_NAME_ "32MX360F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX3XX__
//************************************************************************
//* 300 series with PPS
#elif defined(__32MX330F064H__)
#define _CPU_NAME_ "32MX330F064H"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX3XX__
#define __PPS__ 37
#elif defined(__32MX330F064L__)
#define _CPU_NAME_ "32MX330F064L"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX3XX__
#define __PPS__ 54
#elif defined(__32MX350F128H__)
#define _CPU_NAME_ "32MX350F128H"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX3XX__
#define __PPS__ 37
#elif defined(__32MX350F128L__)
#define _CPU_NAME_ "32MX350F128L"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX3XX__
#define __PPS__ 54
#elif defined(__32MX350F256H__)
#define _CPU_NAME_ "32MX350F256H"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX3XX__
#define __PPS__ 37
#elif defined(__32MX350F256L__)
#define _CPU_NAME_ "32MX350F256L"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX3XX__
#define __PPS__ 54
#elif defined(__32MX370F512H__)
#define _CPU_NAME_ "32MX370F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((128 * 1024L) - 1)
#define __PIC32MX3XX__
#define __PPS__ 37
#elif defined(__32MX370F512L__)
#define _CPU_NAME_ "32MX370F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((128 * 1024L) - 1)
#define __PIC32MX3XX__
#define __PPS__ 54
//************************************************************************
//* 400 series with PPS
#elif defined(__32MX430F064H__)
#define _CPU_NAME_ "32MX430F064H"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX4XX__
#define __PPS__ 34
#elif defined(__32MX430F064L__)
#define _CPU_NAME_ "32MX430F064L"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX4XX__
#define __PPS__ 51
#elif defined(__32MX450F128H__)
#define _CPU_NAME_ "32MX450F128H"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX4XX__
#define __PPS__ 34
#elif defined(__32MX450F128L__)
#define _CPU_NAME_ "32MX450F128L"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX4XX__
#define __PPS__ 51
#elif defined(__32MX450F256H__)
#define _CPU_NAME_ "32MX450F256H"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX4XX__
#define __PPS__ 34
#elif defined(__32MX450F256L__)
#define _CPU_NAME_ "32MX450F256L"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX4XX__
#define __PPS__ 51
#elif defined(__32MX470F512H__)
#define _CPU_NAME_ "32MX470F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((128 * 1024L) - 1)
#define __PIC32MX4XX__
#define __PPS__ 34
#elif defined(__32MX470F512L__)
#define _CPU_NAME_ "32MX470F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((128 * 1024L) - 1)
#define __PIC32MX4XX__
#define __PPS__ 51
//************************************************************************
//* 400 series
#elif defined(__32MX420F032H__)
#define _CPU_NAME_ "32MX420F032H"
#define FLASHEND (((32 - 4) * 1024L) - 1)
#define RAMEND ((8 * 1024L) - 1)
#define __PIC32MX4XX__
#elif defined(__32MX440F128H__)
#define _CPU_NAME_ "32MX440F128H"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX4XX__
#elif defined(__32MX440F256H__)
#define _CPU_NAME_ "32MX440F256H"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX4XX__
#elif defined(__32MX440F512H__)
#define _CPU_NAME_ "32MX440F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX4XX__
#elif defined(__32MX440F128L__)
#define _CPU_NAME_ "32MX440F128L"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX4XX__
#elif defined(__32MX460F256L__)
#define _CPU_NAME_ "32MX460F256L"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX4XX__
#elif defined(__32MX460F512L__)
#define _CPU_NAME_ "32MX460F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX4XX__
//************************************************************************
//* 500 series
#elif defined(__32MX534F064H__)
#define _CPU_NAME_ "32MX534F064H"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX564F064H__)
#define _CPU_NAME_ "32MX564F064H"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX564F128H__)
#define _CPU_NAME_ "32MX564F128H"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX575F256H__)
#define _CPU_NAME_ "32MX575F256H"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX575F512H__)
#define _CPU_NAME_ "32MX575F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX534F064L__)
#define _CPU_NAME_ "32MX534F064L"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((16 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX564F064L__)
#define _CPU_NAME_ "32MX564F064L"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX564F128L__)
#define _CPU_NAME_ "32MX564F128L"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX575F256L__)
#define _CPU_NAME_ "32MX575F256L"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX5XX__
#elif defined(__32MX575F512L__)
#define _CPU_NAME_ "32MX575F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX5XX__
//************************************************************************
//* 600 series
#elif defined(__32MX664F064H__)
#define _CPU_NAME_ "32MX664F064H"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX664F128H__)
#define _CPU_NAME_ "32MX664F128H"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX675F256H__)
#define _CPU_NAME_ "32MX675F256H"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX675F512H__)
#define _CPU_NAME_ "32MX675F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX695F512H__)
#define _CPU_NAME_ "32MX695F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((128 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX664F064L__)
#define _CPU_NAME_ "32MX664F064L"
#define FLASHEND (((64 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX664F128L__)
#define _CPU_NAME_ "32MX664F128L"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX675F256L__)
#define _CPU_NAME_ "32MX675F256L"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX675F512L__)
#define _CPU_NAME_ "32MX675F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX6XX__
#elif defined(__32MX695F512L__)
#define _CPU_NAME_ "32MX695F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((128 * 1024L) - 1)
#define __PIC32MX6XX__
//************************************************************************
//* 700 series
#elif defined(__32MX764F128H__)
#define _CPU_NAME_ "32MX764F128H"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX7XX__
#elif defined(__32MX775F256H__)
#define _CPU_NAME_ "32MX775F256H"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX7XX__
#elif defined(__32MX775F512H__)
#define _CPU_NAME_ "32MX775F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX7XX__
#elif defined(__32MX795F512H__)
#define _CPU_NAME_ "32MX795F512H"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((128 * 1024L) - 1)
#define __PIC32MX7XX__
#elif defined(__32MX764F128L__)
#define _CPU_NAME_ "32MX764F128L"
#define FLASHEND (((128 - 4) * 1024L) - 1)
#define RAMEND ((32 * 1024L) - 1)
#define __PIC32MX7XX__
#elif defined(__32MX775F256L__)
#define _CPU_NAME_ "32MX775F256L"
#define FLASHEND (((256 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX7XX__
#elif defined(__32MX775F512L__)
#define _CPU_NAME_ "32MX775F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((64 * 1024L) - 1)
#define __PIC32MX7XX__
#elif defined(__32MX795F512L__)
#define _CPU_NAME_ "32MX795F512L"
#define FLASHEND (((512 - 4) * 1024L) - 1)
#define RAMEND ((128 * 1024L) - 1)
#define __PIC32MX7XX__
//************************************************************************
#else
#error CPU type is unknown, cpudefs.h needs to have additions
#endif
#else #error unknown cpu architecture #endif
//************************************************************************ #ifndef CPU_NAME #define CPU_NAME "Unknown" #endif
Sat, 09 Nov 2013 09:36:20 +0000
To ensure PIC32MX450 is supported, I am looking at the necessary files for compiling, linking, etc. I notice the directory ...\hardware\pic32\compiler\pic32-tools\pic32mx\include\proc\ with one file per MCU e.g. p32mx250f128c.h
Those files could be extracted and adapted from the Microchip XC32 compiler files. Are we allowed to do that? Who can provide permission for this?
Thanks!
Christophe
Sat, 09 Nov 2013 10:37:52 +0000
I believe the ones there are extracted and adapted from the MCHP files in XC32 anyway. Jason Kajita's the guy that ports it all, so I assume he will be adding the files in due course anyway.
Sat, 09 Nov 2013 16:13:58 +0000
Thanks Matt for the explanation!
Where on ChipKit GitHub can I find the repository ...\hardware\pic32\compiler \pic32-tools and its content? I find many similarities with XC32 but some difference: I suppose the ChipKit community has a way to manage this?
I do not find it here: https://github.com/chipKIT32/chipKIT32-MAX/tree/master/hardware/pic32/compiler here neither: https://github.com/chipKIT32/chipkit-core/tree/master/compiler here neither: https://github.com/chipKIT32/chipKIT-cxx
Have a nice w.e.!
Christophe
Sat, 09 Nov 2013 16:45:18 +0000
There's a new release of the compiler scheduled for mid December. The new chips should be fully supported in it then. If you can wait until then it'll be easier than trying to port the chips yourself.
The compiler is on its own github repositories: [url]https://github.com/jasonkajita?tab=repositories[/url]
Sat, 09 Nov 2013 17:35:39 +0000
Dear Matt,
Problem is that we are designing our own board for a specific project and we will release in open source after (when debugged a bit): I must learn how to integrate it nicely with ChipKit as we like it a lot.
I was thinking to work on the USB Starter Kit III to have immediately a PIC32MX450 on hand and also to have common grounds with the community. But as you explain, the community will not be tooled with a compiler before mid-December... May be I am better to wait a bit!
I also follow your work on a better IDE which I found very promising.
Have a nice week-end,
Christophe