From 5e0ac65bb94bd0d02fecdb729a35d7157ef3f466 Mon Sep 17 00:00:00 2001 From: Kevin Townsend Date: Tue, 14 Jun 2011 12:45:01 +0200 Subject: [PATCH] Upgrade to v0.92 --- drivers/rtc/isl12022m/isl12022m.c | 344 ++++++++++++++++++ drivers/rtc/isl12022m/isl12022m.h | 159 ++++++++ lpc134x-vcom.inf | 65 ---- lpc134x-vcom_64.inf | 127 +++++++ ....bin => LPC1343_LCDStandalone_UART_LF.bin} | Bin 27797 -> 28121 bytes ...bin => LPC1343_LCDStandalone_USB_CRLF.bin} | Bin 32021 -> 32021 bytes 6 files changed, 630 insertions(+), 65 deletions(-) create mode 100644 drivers/rtc/isl12022m/isl12022m.c create mode 100644 drivers/rtc/isl12022m/isl12022m.h delete mode 100644 lpc134x-vcom.inf create mode 100644 lpc134x-vcom_64.inf rename tools/testfirmware/{LPC1343_LCDStandalone_UART.bin => LPC1343_LCDStandalone_UART_LF.bin} (52%) rename tools/testfirmware/{LPC1343_LCDStandalone_USB.bin => LPC1343_LCDStandalone_USB_CRLF.bin} (95%) diff --git a/drivers/rtc/isl12022m/isl12022m.c b/drivers/rtc/isl12022m/isl12022m.c new file mode 100644 index 0000000..b8ad0fa --- /dev/null +++ b/drivers/rtc/isl12022m/isl12022m.c @@ -0,0 +1,344 @@ +/**************************************************************************/ +/*! + @file isl12022m.c + @author K. Townsend (microBuilder.eu) + + @brief Drivers for the ISL12022M RTC + + @section DESCRIPTION + + The ISL12022M is an I2C RTC with 128 bytes battery-backed up SRAM. + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2010, microBuilder SARL + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/**************************************************************************/ +#include "isl12022m.h" +#include "core/systick/systick.h" + +extern volatile uint8_t I2CMasterBuffer[I2C_BUFSIZE]; +extern volatile uint8_t I2CSlaveBuffer[I2C_BUFSIZE]; +extern volatile uint32_t I2CReadLength, I2CWriteLength; + +uint32_t i; +uint8_t monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31}; + +static bool _isl12022mInitialised = false; + +/**************************************************************************/ +/*! + @brief Standard decimal to binary coded decimal +*/ +/**************************************************************************/ +uint8_t isl12022mDecToBCD(uint8_t val) +{ + return ( (val/10*16) + (val%10) ); +} + +/**************************************************************************/ +/*! + @brief Binary coded decimal to standard decimal +*/ +/**************************************************************************/ +uint8_t isl12022mBCDToDec(uint8_t val) +{ + return ( (val/16*10) + (val%16) ); +} + +/**************************************************************************/ +/*! + @brief Writes an 8 bit value +*/ +/**************************************************************************/ +isl12022mError_t isl12022mWrite8 (uint8_t address, uint8_t reg, uint32_t value) +{ + // Clear write buffers + for ( i = 0; i < I2C_BUFSIZE; i++ ) + { + I2CMasterBuffer[i] = 0x00; + } + + I2CWriteLength = 3; + I2CReadLength = 0; + I2CMasterBuffer[0] = address; + I2CMasterBuffer[1] = reg; // Command register + I2CMasterBuffer[2] = (value & 0xFF); // Value to write + i2cEngine(); + return ISL12022M_ERROR_OK; +} + +/**************************************************************************/ +/*! + @brief Reads x bytes into a buffer +*/ +/**************************************************************************/ +isl12022mError_t isl12022mReadBuffer(uint8_t address, uint8_t reg, uint8_t *buffer, uint32_t len) +{ + if (len > I2C_BUFSIZE) + return ISL12022M_ERROR_I2C_BUFFEROVERFLOW; + + // Clear write buffers + for ( i = 0; i < I2C_BUFSIZE; i++ ) + { + I2CMasterBuffer[i] = 0x00; + } + + I2CWriteLength = 2; + I2CReadLength = len; + I2CMasterBuffer[0] = address; + I2CMasterBuffer[1] = reg; // Command register + // Append address w/read bit + I2CMasterBuffer[2] = address | ISL12022M_READBIT; + i2cEngine(); + + // Push response into buffer + for ( i = 0; i < len; i++ ) + { + buffer[i] = I2CSlaveBuffer[i]; + } + + return ISL12022M_ERROR_OK; +} + +/**************************************************************************/ +/*! + @brief Initialises the I2C block +*/ +/**************************************************************************/ +isl12022mError_t isl12022mInit(void) +{ + isl12022mError_t error = ISL12022M_ERROR_OK; + uint8_t buffer[1]; + + // Initialise I2C + if (i2cInit(I2CMASTER) == false) + { + return ISL12022M_ERROR_I2C_INIT; /* Fatal error */ + } + + // Make sure write is enabled on the ISL12202M (factory default = disabled) + error = isl12022mReadBuffer(ISL12022M_RTC_ADDRESS, ISL12022M_REG_CSR_INT, buffer, sizeof(buffer)); + if (!error) + { + if (!(buffer[0] & ISL12022M_INT_WRITEENABLE)) + { + // Write is not enabled on the RTC ... enable it now + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_CSR_INT, buffer[0] | ISL12022M_INT_WRITEENABLE); + } + _isl12022mInitialised = true; + } + + return error; +} + +/**************************************************************************/ +/*! + @brief Gets the current date/time from the RTC + + @section EXAMPLE + + @code + #include "drivers/rtc/isl12022m.h" + ... + isl12022mInit(); + + // Set the time to 12 June 2011 @ 11:59:30 + isl12022mSetTime(0, 11, 6, 12, 11, 59, 30); + + // Wait 5 seconds + systickDelay(5000); + + // Display the current time + isl12022mTime_t time; + isl12022mGetTime(&time); + printf("DW:%d, Y:%d, M:%d, D:%d, H:%d, M:%d, S:%d\r\n", + time.dayofweek, + time.year, + time.month, + time.day, + time.hour, + time.minute, + time.second); + @endcode +*/ +/**************************************************************************/ +isl12022mError_t isl12022mGetTime(isl12022mTime_t *time) +{ + isl12022mError_t error = ISL12022M_ERROR_OK; + uint8_t buffer[9]; + + if (!_isl12022mInitialised) + { + error = isl12022mInit(); + if (error) return error; + } + + // Read 9 bytes at once into buffer + error = isl12022mReadBuffer(ISL12022M_RTC_ADDRESS, + ISL12022M_REG_RTC_SC, + buffer, sizeof(buffer)); + + if (!error) + { + // Check status register + if (buffer[7] & (ISL12022M_STATUS_LOWBATT85 | ISL12022M_STATUS_LOWBATT75)) + { + // Set low battery flag to indicate that the RTC value may not be accurate + error = ISL12022M_ERROR_RTC_LOWBATT; + } + + time->second = isl12022mBCDToDec(buffer[0]); + time->minute = isl12022mBCDToDec(buffer[1]); + time->hour = buffer[2] & 0x1F; // 0x3F; + time->day = buffer[3] & 0x3F; + time->month = buffer[4] & 0x1F; + time->year = buffer[5]; + time->dayofweek = buffer[6] & 0x07; + time->status = buffer[7]; + time->interrupt = buffer[8]; + } + + return error; +} + +/**************************************************************************/ +/*! + @brief Sets the current date/time from the RTC + + @section EXAMPLE + + @code + #include "drivers/rtc/isl12022m.h" + ... + isl12022mInit(); + + // Set the time to 12 June 2011 @ 11:59:30 + isl12022mSetTime(0, 11, 6, 12, 11, 59, 30); + + // Wait 5 seconds + systickDelay(5000); + + // Display the current time + isl12022mTime_t time; + isl12022mGetTime(&time); + printf("DW:%d, Y:%d, M:%d, D:%d, H:%d, M:%d, S:%d\r\n", + time.dayofweek, + time.year, + time.month, + time.day, + time.hour, + time.minute, + time.second); + @endcode +*/ +/**************************************************************************/ +isl12022mError_t isl12022mSetTime(uint8_t dayofweek, uint8_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) +{ + isl12022mError_t error = ISL12022M_ERROR_OK; + + if (!_isl12022mInitialised) + { + error = isl12022mInit(); + if (error) return error; + } + + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_RTC_SC, isl12022mDecToBCD(second)); + if (error) return error; + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_RTC_MN, isl12022mDecToBCD(minute)); + if (error) return error; + // Always append military flag to hour (24 hour only) + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_RTC_HR, hour & 0x3F) | ISL12022M_HR_MILITARY; + if (error) return error; + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_RTC_DT, day & 0x3F); + if (error) return error; + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_RTC_MO, month & 0x1F); + if (error) return error; + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_RTC_YR, year); + if (error) return error; + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_RTC_DW, dayofweek & 0x07); + if (error) return error; + + return error; +} + +/**************************************************************************/ +/*! + @brief Reads the current temperature from the ISL12022 + + @section EXAMPLE + + @code + #include "drivers/rtc/isl12022m.h" + ... + isl12022mInit(); + + uint32_t temperature; + isl12022mGetTemp(&temperature); + printf("Temperature: %u C\r\n", temperature); + + @endcode +*/ +/**************************************************************************/ +isl12022mError_t isl12022mGetTemp(uint8_t *celsius) +{ + isl12022mError_t error = ISL12022M_ERROR_OK; + uint8_t buffer[2]; + uint32_t temp; + + if (!_isl12022mInitialised) + { + error = isl12022mInit(); + if (error) return error; + } + + // Enable temperature sensing if required + error = isl12022mReadBuffer(ISL12022M_RTC_ADDRESS, ISL12022M_REG_CSR_BETA, buffer, 1); + if (!error) + { + if (!(buffer[0] & ISL12022M_BETA_TEMPENABLE)) + { + // Temp sensor is not enabled ... enable it now + error = isl12022mWrite8(ISL12022M_RTC_ADDRESS, ISL12022M_REG_CSR_BETA, buffer[0] | ISL12022M_BETA_TEMPENABLE); + if (error) + return error; + } + } + + // Wait 100ms for conversion to complete + systickDelay(100); + // Read low and high temp bytes (0x28 and 0x29) + error = isl12022mReadBuffer(ISL12022M_RTC_ADDRESS, ISL12022M_REG_TEMP_TKOL, buffer, 2); + if (error) + return error; + // Convert value to degrees celsius (value/2 - 273 = degrees C) + temp = ((buffer[0]) | (buffer[1] << 8)) / 2 - 273; + *celsius = (uint8_t)temp & 0xFF; + + return error; +} diff --git a/drivers/rtc/isl12022m/isl12022m.h b/drivers/rtc/isl12022m/isl12022m.h new file mode 100644 index 0000000..39595bd --- /dev/null +++ b/drivers/rtc/isl12022m/isl12022m.h @@ -0,0 +1,159 @@ +/**************************************************************************/ +/*! + @file isl12022m.h + @author K. Townsend (microBuilder.eu) + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2010, microBuilder SARL + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/**************************************************************************/ + +#ifndef _ISL12022M_H_ +#define _ISL12022M_H_ + +#include "projectconfig.h" +#include "core/i2c/i2c.h" + +#define ISL12022M_RTC_ADDRESS (0xDE) // 1101111 shifted left 1 bit = 0xDE +#define ISL12022M_SRAM_ADDRESS (0xAE) // 1010111 shifted left 1 bit = 0xAE +#define ISL12022M_READBIT (0x01) + +#define ISL12022M_HR_MILITARY (1<<7) // 1 = 24-Hour, 0 = 12-Hour +#define ISL12022M_HR_AMPM (1<<5) // If 24-hour time enabled, 0 = AM, 1 = PM + +#define ISL12022M_STATUS_BUSY (1<<7) +#define ISL12022M_STATUS_OSCFAIL (1<<6) +#define ISL12022M_STATUS_DSTADJUST (1<<5) +#define ISL12022M_STATUS_ALARM (1<<4) +#define ISL12022M_STATUS_LOWVDD (1<<3) +#define ISL12022M_STATUS_LOWBATT85 (1<<2) +#define ISL12022M_STATUS_LOWBATT75 (1<<1) +#define ISL12022M_STATUS_RTCFAIL (1<<0) + +#define ISL12022M_INT_AUTORESET (1<<7) +#define ISL12022M_INT_WRITEENABLE (1<<6) +#define ISL12022M_INT_INTALARM (1<<5) +#define ISL12022M_INT_FOBATB (1<<4) + +#define ISL12022M_BETA_TEMPENABLE (1<<7) // Temperature Sensor Enabled Bit + +enum +{ + // RTC Registers + ISL12022M_REG_RTC_SC = 0x00, + ISL12022M_REG_RTC_MN = 0x01, + ISL12022M_REG_RTC_HR = 0x02, + ISL12022M_REG_RTC_DT = 0x03, + ISL12022M_REG_RTC_MO = 0x04, + ISL12022M_REG_RTC_YR = 0x05, + ISL12022M_REG_RTC_DW = 0x06, + // Control and Status Registers + ISL12022M_REG_CSR_SR = 0x07, + ISL12022M_REG_CSR_INT = 0x08, + ISL12022M_REG_CSR_PWR_VDD = 0x09, + ISL12022M_REG_CSR_PWR_VBAT = 0x0A, + ISL12022M_REG_CSR_ITRO = 0x0B, + ISL12022M_REG_CSR_ALPHA = 0x0C, + ISL12022M_REG_CSR_BETA = 0x0D, + ISL12022M_REG_CSR_FATR = 0x0E, + ISL12022M_REG_CSR_FDTR = 0x0F, + // Alarm Registers + ISL12022M_REG_ALARM_SCA0 = 0x10, + ISL12022M_REG_ALARM_MNA0 = 0x11, + ISL12022M_REG_ALARM_HRA0 = 0x12, + ISL12022M_REG_ALARM_DTA0 = 0x13, + ISL12022M_REG_ALARM_MOA0 = 0x14, + ISL12022M_REG_ALARM_DWA0 = 0x15, + // + ISL12022M_REG_TSV2B_VSC = 0x16, + ISL12022M_REG_TSV2B_VMN = 0x17, + ISL12022M_REG_TSV2B_VHR = 0x18, + ISL12022M_REG_TSV2B_VDT = 0x19, + ISL12022M_REG_TSV2B_VMO = 0x1A, + ISL12022M_REG_TSV2B_TSB2V = 0x1B, + ISL12022M_REG_TSV2B_BMN = 0x1C, + ISL12022M_REG_TSV2B_BHR = 0x1D, + ISL12022M_REG_TSV2B_BDT = 0x1E, + ISL12022M_REG_TSV2B_BMO = 0x1F, + // DST Control Registers + ISL12022M_REG_DSTCR_DSTMOFD = 0x20, + ISL12022M_REG_DSTCR_DSTDWFD = 0x21, + ISL12022M_REG_DSTCR_DSTDTFD = 0x22, + ISL12022M_REG_DSTCR_DSTHRFD = 0x23, + ISL12022M_REG_DSTCR_DSTMORV = 0x24, + ISL12022M_REG_DSTCR_DSTDWRV = 0x25, + ISL12022M_REG_DSTCR_DSTDTRV = 0x26, + ISL12022M_REG_DSTCR_DSTHRRV = 0x27, + // Temperature Registers + ISL12022M_REG_TEMP_TKOL = 0x28, + ISL12022M_REG_TEMP_TKOM = 0x29, + // NPPM Registers + ISL12022M_REG_NPPM_NPPML = 0x2A, + ISL12022M_REG_NPPM_NPPMH = 0x2B, + // XTO Register + ISL12022M_REG_XT0_XT0 = 0x2C, + // Alpha Hot Register + ISL12022M_REG_ALPHAH_ALPHAH = 0x2D, + // General Purpose Memory (SRAM) Registers + ISL12022M_REG_GPM_GPM1 = 0x2E, + ISL12022M_REG_GPM_GPM2 = 0x2F +}; + +typedef enum +{ + ISL12022M_ERROR_OK = 0, // Everything executed normally + ISL12022M_ERROR_I2C_INIT, // Unable to initialise I2C + ISL12022M_ERROR_I2C_BUSY, // I2C already in use + ISL12022M_ERROR_I2C_BUFFEROVERFLOW, // I2C Buffer is too small + ISL12022M_ERROR_RTC_LOWBATT, // RTC battery low ... value may not be accurate + ISL12022M_ERROR_LAST +} +isl12022mError_t; + +// ISL12022M time + status placeholder +typedef struct +{ + uint8_t interrupt; + uint8_t status; + uint8_t dayofweek; + uint8_t year; + uint8_t month; + uint8_t day; + uint8_t hour; + uint8_t minute; + uint8_t second; +} +isl12022mTime_t; + +isl12022mError_t isl12022mInit(void); +isl12022mError_t isl12022mGetTime(isl12022mTime_t *time); +isl12022mError_t isl12022mSetTime(uint8_t dayofweek, uint8_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second); +isl12022mError_t isl12022mGetTemp(uint8_t *celsius); + +#endif diff --git a/lpc134x-vcom.inf b/lpc134x-vcom.inf deleted file mode 100644 index c5a5384..0000000 --- a/lpc134x-vcom.inf +++ /dev/null @@ -1,65 +0,0 @@ -; -; Keil - An ARM Company Comunication Device Class driver installation file -; (C)2007 Copyright -; - -[Version] -Signature="$Windows NT$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} -Provider=%Keil% -;LayoutFile=layout.inf -DriverVer=01/06/07 - -[Manufacturer] -%Keil%=DeviceList - -[DestinationDirs] -DefaultDestDir=12 - -[SourceDisksFiles] - -[SourceDisksNames] - -[DeviceList] -%DESCRIPTION%=LPC134xUSB, USB\VID_239A&PID_1002 - -;------------------------------------------------------------------------------ -; Windows 2000/XP Sections -;------------------------------------------------------------------------------ - -[LPC134xUSB.nt] -include=mdmcpq.inf -CopyFiles=DriverCopyFiles -AddReg=LPC134xUSB.nt.AddReg - -[DriverCopyFiles] -usbser.sys,,,0x20 - -[LPC134xUSB.nt.AddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,usbser.sys -HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" - -[LPC134xUSB.nt.Services] -include=mdmcpq.inf -AddService=usbser, 0x00000002, DriverService - - -[LPC134xUSB.nt.HW] -include=mdmcpq.inf - -[DriverService] -DisplayName=%DESCRIPTION% -ServiceType=1 -StartType=3 -ErrorControl=1 -ServiceBinary=%12%\usbser.sys - -;------------------------------------------------------------------------------ -; String Definitions -;------------------------------------------------------------------------------ - -[Strings] -NXP="NXP - Founded by Philips" -DESCRIPTION="LPC134x USB VCom Port" diff --git a/lpc134x-vcom_64.inf b/lpc134x-vcom_64.inf new file mode 100644 index 0000000..35c47e3 --- /dev/null +++ b/lpc134x-vcom_64.inf @@ -0,0 +1,127 @@ +;--------------------------------------------------------------------------------------- +; Windows USB CDC Driver Setup File for ATMEL AT91SAM products +; Improved by Pavel K, pasha_nik@mail.ru +;--------------------------------------------------------------------------------------- + +[Version] +Signature= "$Windows NT$"; Windows 200 and later versions +Class= Ports; This is a serial port driver +ClassGuid= {4D36E978-E325-11CE-BFC1-08002BE10318} +Provider= %Keil% +DriverVer= 09/25/2009,1.0.0.0; Driver version 1.0.0.0 published on 25 September 2009 + +[Manufacturer] +%DriverProvider%= DeviceList, NT, NTia64, NTamd64 + +[DestinationDirs] +DefaultDestDir= 12; Default install directory is \drivers or \IOSubSys + +[DeviceList.NT] +%Description%= DriverInstall,USB\VID_03EB&PID_6124 +%Description%= LPC134xUSB, USB\VID_239A&PID_1002 + +[DeviceList.NTia64] +%Description%= DriverInstall,USB\VID_03EB&PID_6124 +%Description%= LPC134xUSB, USB\VID_239A&PID_1002 + +[DeviceList.NTamd64] +%Description%= DriverInstall,USB\VID_03EB&PID_6124 +%Description%= LPC134xUSB, USB\VID_239A&PID_1002 + + +;--------------------------------------------------------------------------------------- +; 32 bit section for Windows 2000/2003/XP/Vista/7 +;--------------------------------------------------------------------------------------- + +[LPC134xUSB.nt] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles +AddReg=LPC134xUSB.nt.AddReg + +[DriverCopyFiles] +usbser.sys,,,0x20 + +[LPC134xUSB.nt.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,usbser.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[LPC134xUSB.nt.Services] +include=mdmcpq.inf +AddService=usbser, 0x00000002, DriverService + +[LPC134xUSB.nt.HW] +include=mdmcpq.inf + +[DriverService] +DisplayName=%DESCRIPTION% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\usbser.sys + + + +;--------------------------------------------------------------------------------------- +; 64 bit section for Intel Itanium based systems +;--------------------------------------------------------------------------------------- + +[DriverInstall.NTia64] +include= mdmcpq.inf +CopyFiles= DriverInstall.NTia64.Files +AddReg= DriverInstall.NTia64.AddReg + +[DriverInstall.NTia64.Files] +usbser.sys,,,0x20 + +[DriverInstall.NTia64.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,usbser.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.NTia64.Services] +AddService=usbser,0x00000002,usbser_sys_service + + +;--------------------------------------------------------------------------------------- +; 64 bit section for AMD64 and Intel EM64T based systems +;--------------------------------------------------------------------------------------- + +[DriverInstall.NTamd64] +include= mdmcpq.inf +CopyFiles= DriverInstall.NTamd64.Files +AddReg= DriverInstall.NTamd64.AddReg + +[DriverInstall.NTamd64.Files] +usbser.sys,,,0x20 + +[DriverInstall.NTamd64.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,usbser.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.NTamd64.Services] +AddService= usbser,0x00000002,usbser_sys_service + +;--------------------------------------------------------------------------------------- +; usbser.sys service +;--------------------------------------------------------------------------------------- + +[usbser_sys_service] +DisplayName= %ServiceDescription% +ServiceType= 1; SERVICE_KERNEL_DRIVER, Service kernel driver +StartType= 3; SERVICE_DEMAND_START, Driver is started by the PnP manager +ErrorControl= 1; SERVICE_ERROR_NORMAL, Warn about errors +ServiceBinary= %12%\usbser.sys +LoadOrderGroup = Base + +;--------------------------------------------------------------------------------------- +; strings +;--------------------------------------------------------------------------------------- + +[Strings] +DriverProvider= "Microsoft" +NXP="NXP - Founded by Philips" +DESCRIPTION="LPC134x USB VCom Port" + +;--------------------------------------------------------------------------------------- diff --git a/tools/testfirmware/LPC1343_LCDStandalone_UART.bin b/tools/testfirmware/LPC1343_LCDStandalone_UART_LF.bin similarity index 52% rename from tools/testfirmware/LPC1343_LCDStandalone_UART.bin rename to tools/testfirmware/LPC1343_LCDStandalone_UART_LF.bin index d309dc4bb9f6d348c245250851421a91e7c5bc71..c9fda0741830fe4d94efbc921856ba276dfb9fba 100644 GIT binary patch delta 6262 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 delta 5793 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