[Icc-430] 430X > 64K support
bailey at peak.org
bailey at peak.org
Wed Aug 20 03:54:33 PDT 2008
I'm not fully up on the 430X devices, but this sounds like a workable
approach. I was wondering how you were going to handle code pointers,
and this is a better approach than anything I've come up with.
If you want to support flash constant placement >64K, how will you handle
data pointers relative to base page data pointers? Or do you mean you will
support >64K flash constant data that semantically can't be "addressed"?
I'm also assuming that 20 bit address support would be independent of
whether the compiler takes advantage of the other new instructions, such
as multi-bit shifts, etc? keeping it independent would certainly help the
execution speed for small applications.
Kirk Bailey
> I am now adding compiler support for the 430X >64K addressing. At the
> minimum, we need to support function code and flash constant
> placement anywhere in the 20-bit address map.
>
> A new IDE/linker option to activate 20-bit address support will be
> added. This *may* be the default for any 430X device with > 64K flash
> memory. The general guideline is that we will support > 64K code but
> not data as there is no 430X devices with more than 64K SRAM.
>
> Function Calls: use CALLA/RETA
> Branches: use BRA
>
> Any instructions that touch the PC will use the "A" variants.
>
> ****************
> As for pointer type, the obvious choice is to support 16 bits data
> pointer and 32 bits (or 24 bits, but that is difficult to express)
> code pointers. Unfortunately, the compiler architecture is not mixed
> pointer size friendly. To change that will require a lot of effort,
> and with the 430X devices being a relatively rare part, I am not
> entirely sure the ROI is worth it.
>
> A compromise is to use 16 bits pointer, but that the (16 bits) code
> pointer is actually a pointer to a 3 byte real pointer. This is not
> as odd as it sounds, as to support the Code Compressor, we already do
> this extra level of indirection for code pointer, so making the entry
> to be a full 24 bits pointer should be fairly easy. There is one
> extra level of indirection for code pointer reference, but as
> mentioned, this is already done.
>
> ****************
>
> This should satisfy most people's requirements for using the 430X
> devices. I will of course add support for new instructions like
> multiple bit shifts etc.
>
> Comments? Suggestions?
>
>
>
> // richard <http://www.imagecraft.com/> blog:
> <http://imagecraft.wordpress.com>
> <http://www.dragonsgate.net/mailman/listinfo> On-line orders,
> support, and listservers available on web site.
> [ For technical support on ImageCraft products, please include all
> previous replies in your msgs. ]
>
> _______________________________________________
> Icc-430 mailing list
> Icc-430 at imagecraft.com
> http://dragonsgate.net/mailman/listinfo/icc-430
>
More information about the Icc-430
mailing list