1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

OP-21/Flight Bootloader Changed packet size to 64byte

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1398 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
zedamota 2010-08-24 18:26:44 +00:00 committed by zedamota
parent 12e447f010
commit 6da48dcc1a
3 changed files with 29 additions and 12 deletions

View File

@ -60,7 +60,7 @@ const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC] =
/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC] =
{
0x09, /* bLength: Configuation Descriptor size */
0x09, /* bLength: Configuration Descriptor size */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
CUSTOMHID_SIZ_CONFIG_DESC,
/* wTotalLength: Bytes returned */
@ -131,16 +131,16 @@ const uint8_t CustomHID_ReportDescriptor[CUSTOMHID_SIZ_REPORT_DESC] =
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x25, 0xff, /* LOGICAL_MAXIMUM (1) */
0x75, 0x08, /* REPORT_SIZE (8) */
0x95, 9, /* REPORT_COUNT (1) */
0x95, 63, /* REPORT_COUNT (1) */
0x81, 0x83, /* FEATURE (Data,Var,Abs,Vol) */
/* Led 2 */
0x85, 0x02, /* REPORT_ID 2 */
0x09, 0x03, /* USAGE (LED 2) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x25, 0xff, /* LOGICAL_MAXIMUM (1) */
0x75, 0x08, /* REPORT_SIZE (8) */
0x95, 9, /* REPORT_COUNT (1) */
0x95, 63, /* REPORT_COUNT (1) */
0x91, 0x82, /* FEATURE (Data,Var,Abs,Vol) */

View File

@ -27,14 +27,15 @@
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
uint8_t Receive_Buffer[10];
uint8_t Buffer[10];
uint8_t Receive_Buffer[64];
uint8_t Buffer[64];
uint8_t Command=0;
uint8_t EchoReqFlag=0;
uint8_t EchoAnsFlag=0;
uint8_t StartFlag=0;
uint32_t Aditionals=0;
uint32_t SizeOfTransfer=0;
uint8_t SizeOfLastPacket=0;
uint32_t Next_Packet=0;
uint8_t TransferType;
uint32_t Count=0;
@ -43,7 +44,8 @@ uint8_t Data0;
uint8_t Data1;
uint8_t Data2;
uint8_t Data3;
uint8_t offset=0;
uint32_t aux;
//Download vars
volatile uint32_t downPacketCurrent=0;
uint32_t downPacketTotal=0;
@ -74,7 +76,7 @@ void FLASH_Download() {
Buffer[7] = *FLASH_If_Read(MemLocations[downType] + 1+downPacketCurrent*4, 0);
Buffer[8] = *FLASH_If_Read(MemLocations[downType] + 2+downPacketCurrent*4, 0);
Buffer[9] = *FLASH_If_Read(MemLocations[downType] + 3+downPacketCurrent*4, 0);
USB_SIL_Write(EP1_IN, (uint8_t*) Buffer, 10);
USB_SIL_Write(EP1_IN, (uint8_t*) Buffer, 64);
downPacketCurrent=downPacketCurrent+1;
if(downPacketCurrent>downPacketTotal)
{
@ -141,6 +143,7 @@ void EP1_OUT_Callback(void)
SizeOfTransfer=Count;
Next_Packet=1;
DeviceState=uploading;
SizeOfLastPacket=Data1;
}
@ -149,7 +152,21 @@ void EP1_OUT_Callback(void)
// STM_EVAL_LEDOn(LED2);
if(Count==Next_Packet-1)
{
FLASH_ProgramWord(MemLocations[TransferType]+Count*4,Data);
uint8_t numberOfWords=14;
if(Count==SizeOfTransfer)//is this the last packet?
{
numberOfWords=SizeOfLastPacket;
}
for(uint8_t x=0;x<numberOfWords;++x)
{
offset=4*x;
Data=Receive_Buffer[6+offset]<<24;
Data+=Receive_Buffer[7+offset]<<16;
Data+=Receive_Buffer[8+offset]<<8;
Data+=Receive_Buffer[9+offset];
aux=MemLocations[TransferType]+(uint32_t)(Count*14*4+x*4);
FLASH_ProgramWord(aux,Data);
}
++Next_Packet;
}
else
@ -236,7 +253,7 @@ void EP1_OUT_Callback(void)
Buffer[8]=0;
Buffer[9]=0;
USB_SIL_Write(EP1_IN, (uint8_t*)Buffer,10);
USB_SIL_Write(EP1_IN, (uint8_t*)Buffer,64);
SetEPTxValid(ENDP1);
if(DeviceState==Last_operation_Success)
{

View File

@ -167,8 +167,8 @@ void CustomHID_Reset(void)
SetEPType(ENDP1, EP_INTERRUPT);
SetEPTxAddr(ENDP1, ENDP1_TXADDR);
SetEPRxAddr(ENDP1, ENDP1_RXADDR);
SetEPTxCount(ENDP1, 11);
SetEPRxCount(ENDP1, 11);
SetEPTxCount(ENDP1, 64);
SetEPRxCount(ENDP1, 64);
SetEPRxStatus(ENDP1, EP_RX_VALID);
SetEPTxStatus(ENDP1, EP_TX_NAK);