This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

C51: Word Alignment in Keil C51

How I can turn-on word alignment in Keil C51?
I have such definition of USB-descriptors for Cypress EZ-USB chip CY7C68013:

const DEVICEDSCR code TestSyncSlave_DeviceDescriptor =
{   // Device descriptor
    sizeof(DEVICEDSCR),             // 0x00 Length of this descriptor
    DEVICE_DSCR,                    // 0x01 Descriptor type
    USBSPEC,                        // 0x02 USB Specification Release Number
    VENDOR_SPECIFIC,                // 0x04 Class Code
    0x00,                           // 0x05 Sub Class Code
    0x00,                           // 0x06 Protocol
    EP0_MAX_PACKET_SIZE,            // 0x07 Maximum Endpoint 0 Packet Size
    VID_EPOS,                       // 0x08 Vendor ID
    PID_ANALYSER,                   // 0x0a Product ID
    DID_ANALYSER,                   // 0x0c DeviceBCD Device Release Number
    STRING_INDEX_MANUFACTURER,      // 0x0e Index of string descriptor describing manufacturer
    STRING_INDEX_PRODUCT,           // 0x0f Index of string descriptor describing product
    0x00,                           // 0x10 Index of string descriptor describing serial number
    0x01                            // 0x11 Number of configurations
};

///////////////////////////////////////////////////////////////////////////////
const DEVICEQUALDSCR code TestSyncSlave_DeviceQualifierDescriptor =
{   // Device Qualifier descriptor
    sizeof(DEVICEQUALDSCR),         // 0x00 Length of this descriptor
    DEVQUAL_DSCR,                   // 0x01 Descriptor type
    USBSPEC,                        // 0x02 USB Specification Release Number
    VENDOR_SPECIFIC,                // 0x04 Class Code
    0x00,                           // 0x05 Sub Class Code
    0x00,                           // 0x06 Protocol
    EP0_MAX_PACKET_SIZE,            // 0x07 Maximum Endpoint 0 Packet Size
    0x01,                           // 0x08 Number of configurations
    0x00                            // 0x09 Reserve
};

///////////////////////////////////////////////////////////////////////////////
const DEVICECONFG code TestSyncSlave_HS_Config  =
{   // Configuration when connected to a High Speed host
    {   // Configuration Descriptor
        sizeof(CONFIGDSCR),     // 0x00 bLength: Length of this descriptor
        CONFIG_DSCR,            // 0x01 Type (CONFIGURATION_DESC or CONFIGURATION_DESC)
        LSB(sizeof(DEVICECONFG)),   // 0x02 wTotalLength: Total length for this configuration
        MSB(sizeof(DEVICECONFG)),   // 0x02 wTotalLength: Total length for this configuration
        NUM_INTERFACES,         // 0x04 bNumInterfaces: Number of Interfaces
        0x01,                   // 0x05 bConfigurationValue: Number of this configuration
        0x00,                   // 0x06 iConfiguration: Index of string descriptor describing this configuration
        CONFIG_ATTRIBUTES,      // 0x07 bmAttributes: 7:AlwaysSet|6:SelfPowered|5:RemoteWakeup
        150                     // 0x08 bMaxPower: Max USB power (in 2mA units)
    },

    {   // Interface Descriptor:
        sizeof(INTRFCDSCR),     // 0x00 Size of this descriptor
        INTRFC_DSCR,            // 0x01 Type
        0x00,                   // 0x02 Number of this interface
        0x00,                   // 0x03 Alternate interface
        ENDPOINT_COUNT, // 0x04 Number of endpoints in this interface (without EP0)
        VENDOR_SPECIFIC,        // 0x05 Class Code
        0x00,                   // 0x06 Sub Class Code
        0x00,                   // 0x07 Device Protocol
        0x00,                   // 0x08 Index of string descriptor describing this interface
    },

    {
        // Endpoint Descriptors:      Type     Dir     MaxPkt  UsbEp   Poll
        {MAKE_ENDPOINT_DESCRIPTOR( EP_BULK, EP_IN,  512, 0x86,   0   )},
        {MAKE_ENDPOINT_DESCRIPTOR( EP_BULK, EP_OUT, 64,  0x01,   0   )},
        {MAKE_ENDPOINT_DESCRIPTOR( EP_BULK, EP_IN,  64,  0x81,   0   )}

    }

};
//In such definition last structure is missalignment, so I must align it...
///////////////////////////////////////////////////////////////////////////////
const DEVICECONFG code TestSyncSlave_FS_Config =
{   // Configuration when connected to a Full Speed host
    {   // Configuration descriptor
        sizeof(CONFIGDSCR),     // 0x00 Length of this descriptor
        CONFIG_DSCR,            // 0x01 Type (CONFIGURATION_DESC or OTHER_SPEED_CONFIGURATION_DESC)
        LSB(sizeof(DEVICECONFG)),   // 0x02 wTotalLength: Total length for this configuration
        MSB(sizeof(DEVICECONFG)),   // 0x02 wTotalLength: Total length for this configuration
        NUM_INTERFACES,         // 0x04 Number of Interfaces
        0x01,                   // 0x05 Number of this configuration
        0x00,                   // 0x06 Index of string descriptor describing this configuration
        CONFIG_ATTRIBUTES,      // 0x07 bmAttributes: 7:AlwaysSet|6:SelfPowered|5:RemoteWakeup
        150                     // 0x08 Max USB power (in 2mA units)
    },

    {   // Interface Descriptor:
        sizeof(INTRFCDSCR),     // 0x00 Size of this descriptor
        INTRFC_DSCR,            // 0x01 Type
        0x00,                   // 0x02 Number of this interface
        0x00,                   // 0x03 Alternate interface
        ENDPOINT_COUNT,         // 0x04 Number of endpoints in this interface (without EP0)
        VENDOR_SPECIFIC,        // 0x05 Class Code
        0x00,                   // 0x06 Sub Class Code
        0x00,                   // 0x07 Device Protocol
        0x00,                   // 0x08 Index of string descriptor describing this interface
    },
    {
        // Endpoint Descriptors:      Type     Dir     MaxPkt  UsbEp   Poll
        {MAKE_ENDPOINT_DESCRIPTOR( EP_BULK, EP_IN,  64,  0x86,   0   )},
        {MAKE_ENDPOINT_DESCRIPTOR( EP_BULK, EP_OUT, 64,  0x01,   0   )},
        {MAKE_ENDPOINT_DESCRIPTOR( EP_BULK, EP_IN,  64,  0x81,   0   )}
        }


};

EZ-USB needs that each USB-descriptor was word alignment.
How can I do this in Keil C51(any directive such as #pragma pack)?

0