s12zvl micro-controller Endianness

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

s12zvl micro-controller Endianness

ソリューションへジャンプ
1,639件の閲覧回数
charudattaingal
Contributor IV

Hi,

 

I observed that s12zvl micro-controller is Big Endian i am not getting any option to convert it into Little Endian format.

let me know if any option is available to convert endianness of s12zvl micro-controlle Big Endian to Little Endian.

Is there any code warrior IDE  option available ?

 

 

Thanks & Regards,

Charudatta

ラベル(1)
0 件の賞賛
1 解決策
954件の閲覧回数
GordonD
Contributor IV

Charudatta,

The CPU in all S12 MCUs (S12, S12S, S12X & S12Z) are Big Endian CPUs. That is they store the most significant byte of multi-byte types at the lowest address. Some advanced architectures allow the 'endianness' of a CPU to be configured 'on the fly' (I believe some Power Architecture devices allowed this). Some architectures, like ARM, allow the Endianness to be chosen when the device is implemented, but then it is fixed.

The Endianness of all S12Z devices is fixed as Big Endian.

Regards,

Gordon

元の投稿で解決策を見る

0 件の賞賛
4 返答(返信)
954件の閲覧回数
RadekS
NXP Employee
NXP Employee

HI Charudatta,

CW offers some tools which could be configured to Big or Little endian, but these tools was created for operations like dump from or load to memory and display data in memory window.

So, you can just display/export/import content of Flash/EEPROM/RAM in appropriate orde, but S12Z core works also with data in Big Endian order. For more details about memory window, please look at chapter “7.5.15 Can I change the endianness that is displayed in the Memory view?” in document:

"c:\Freescale\CW MCU v10.6\MCU\Help\PDF\Microcontrollers_FAQ_Guide.pdf"

If you will need swap between endian orders for some IO functions, probably you will have to use some conversion functions. As example you could look at standard POSIX htonl(), htons(), ntohl(), ntohs() functions.

/* Macros for converting values between big-/little-endian byte order */

#define _SWAP2BYTE_CONST(n) ((((n) & 0x00FF) << 8) | (((n) & 0xFF00) >> 8))

#define _SWAP4BYTE_CONST(n) ((((n) & 0x000000FF) << 24) | (((n) & 0x0000FF00) << 8) | (((n) & 0x00FF0000) >> 8) | (((n) & 0xFF000000) >> 24))


I hope it helps you.

Have a great day,
RadekS

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 件の賞賛
954件の閲覧回数
charudattaingal
Contributor IV

Hi Radeks,

Thanks for your response.It may help me.

Have a great day,

Regards,

Charudatta

0 件の賞賛
955件の閲覧回数
GordonD
Contributor IV

Charudatta,

The CPU in all S12 MCUs (S12, S12S, S12X & S12Z) are Big Endian CPUs. That is they store the most significant byte of multi-byte types at the lowest address. Some advanced architectures allow the 'endianness' of a CPU to be configured 'on the fly' (I believe some Power Architecture devices allowed this). Some architectures, like ARM, allow the Endianness to be chosen when the device is implemented, but then it is fixed.

The Endianness of all S12Z devices is fixed as Big Endian.

Regards,

Gordon

0 件の賞賛
954件の閲覧回数
charudattaingal
Contributor IV

Hi Gordon,

Thanks for your response.It may help me.

Regards,

Charudatta

0 件の賞賛