This commit is contained in:
parent
1a721240c6
commit
fb377895e6
|
@ -0,0 +1,436 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
Copyright (C) 2015 Diego Ismirlian, TISA, (dismirlian (at) google's mail)
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef HAL_USBH_H_
|
||||
#define HAL_USBH_H_
|
||||
|
||||
#include "hal.h"
|
||||
|
||||
|
||||
#ifndef HAL_USBH_USE_FTDI
|
||||
#define HAL_USBH_USE_FTDI FALSE
|
||||
#endif
|
||||
|
||||
#ifndef HAL_USBH_USE_HUB
|
||||
#define HAL_USBH_USE_HUB FALSE
|
||||
#endif
|
||||
|
||||
#ifndef HAL_USBH_USE_MSD
|
||||
#define HAL_USBH_USE_MSD FALSE
|
||||
#endif
|
||||
|
||||
#ifndef HAL_USBH_USE_UVC
|
||||
#define HAL_USBH_USE_UVC FALSE
|
||||
#endif
|
||||
|
||||
#if (HAL_USE_USBH == TRUE) || defined(__DOXYGEN__)
|
||||
|
||||
#include "osal.h"
|
||||
#include "usbh/list.h"
|
||||
#include "usbh/defs.h"
|
||||
|
||||
/* TODO:
|
||||
*
|
||||
* - Integrate VBUS power switching functionality to the API.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if !HAL_USBH_USE_HUB
|
||||
#define USBH_MAX_ADDRESSES 1
|
||||
#else
|
||||
#define USBH_MAX_ADDRESSES (HAL_USBHHUB_MAX_PORTS + 1)
|
||||
#endif
|
||||
|
||||
enum usbh_status {
|
||||
USBH_STATUS_STOPPED = 0,
|
||||
USBH_STATUS_STARTED,
|
||||
USBH_STATUS_SUSPENDED,
|
||||
};
|
||||
|
||||
enum usbh_devstatus {
|
||||
USBH_DEVSTATUS_DISCONNECTED = 0,
|
||||
USBH_DEVSTATUS_ATTACHED,
|
||||
USBH_DEVSTATUS_CONNECTED,
|
||||
USBH_DEVSTATUS_DEFAULT,
|
||||
USBH_DEVSTATUS_ADDRESS,
|
||||
USBH_DEVSTATUS_CONFIGURED,
|
||||
};
|
||||
|
||||
enum usbh_devspeed {
|
||||
USBH_DEVSPEED_LOW = 0,
|
||||
USBH_DEVSPEED_FULL,
|
||||
USBH_DEVSPEED_HIGH,
|
||||
};
|
||||
|
||||
enum usbh_epdir {
|
||||
USBH_EPDIR_IN = 0x80,
|
||||
USBH_EPDIR_OUT = 0
|
||||
};
|
||||
|
||||
enum usbh_eptype {
|
||||
USBH_EPTYPE_CTRL = 0,
|
||||
USBH_EPTYPE_ISO = 1,
|
||||
USBH_EPTYPE_BULK = 2,
|
||||
USBH_EPTYPE_INT = 3,
|
||||
};
|
||||
|
||||
enum usbh_epstatus {
|
||||
USBH_EPSTATUS_UNINITIALIZED = 0,
|
||||
USBH_EPSTATUS_CLOSED,
|
||||
USBH_EPSTATUS_OPEN,
|
||||
USBH_EPSTATUS_HALTED,
|
||||
};
|
||||
|
||||
enum usbh_urbstatus {
|
||||
USBH_URBSTATUS_UNINITIALIZED = 0,
|
||||
USBH_URBSTATUS_INITIALIZED,
|
||||
USBH_URBSTATUS_PENDING,
|
||||
// USBH_URBSTATUS_QUEUED,
|
||||
USBH_URBSTATUS_ERROR,
|
||||
USBH_URBSTATUS_TIMEOUT,
|
||||
USBH_URBSTATUS_CANCELLED,
|
||||
USBH_URBSTATUS_STALL,
|
||||
USBH_URBSTATUS_DISCONNECTED,
|
||||
// USBH_URBSTATUS_EPCLOSED,
|
||||
USBH_URBSTATUS_OK,
|
||||
};
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/* forward declarations */
|
||||
typedef struct USBHDriver USBHDriver;
|
||||
typedef struct usbh_port usbh_port_t;
|
||||
typedef struct usbh_device usbh_device_t;
|
||||
typedef struct usbh_ep usbh_ep_t;
|
||||
typedef struct usbh_urb usbh_urb_t;
|
||||
typedef struct usbh_baseclassdriver usbh_baseclassdriver_t;
|
||||
typedef struct usbh_classdriverinfo usbh_classdriverinfo_t;
|
||||
#if HAL_USBH_USE_HUB
|
||||
typedef struct USBHHubDriver USBHHubDriver;
|
||||
#endif
|
||||
|
||||
/* typedefs */
|
||||
typedef enum usbh_status usbh_status_t;
|
||||
typedef enum usbh_devspeed usbh_devspeed_t;
|
||||
typedef enum usbh_devstatus usbh_devstatus_t;
|
||||
typedef enum usbh_epdir usbh_epdir_t;
|
||||
typedef enum usbh_eptype usbh_eptype_t;
|
||||
typedef enum usbh_epstatus usbh_epstatus_t;
|
||||
typedef enum usbh_urbstatus usbh_urbstatus_t;
|
||||
typedef uint16_t usbh_portstatus_t;
|
||||
typedef uint16_t usbh_portcstatus_t;
|
||||
typedef void (*usbh_completion_cb)(usbh_urb_t *);
|
||||
|
||||
/* include the low level driver; the required definitions are above */
|
||||
#include "hal_usbh_lld.h"
|
||||
|
||||
#define USBH_DEFINE_BUFFER(type, name) USBH_LLD_DEFINE_BUFFER(type, name)
|
||||
|
||||
struct usbh_urb {
|
||||
usbh_ep_t *ep;
|
||||
|
||||
void *userData;
|
||||
usbh_completion_cb callback;
|
||||
|
||||
const void *setup_buff;
|
||||
void *buff;
|
||||
uint32_t requestedLength;
|
||||
uint32_t actualLength;
|
||||
|
||||
usbh_urbstatus_t status;
|
||||
|
||||
thread_reference_t waitingThread;
|
||||
thread_reference_t abortingThread;
|
||||
|
||||
/* Low level part */
|
||||
_usbh_urb_ll_data
|
||||
};
|
||||
|
||||
struct usbh_ep {
|
||||
usbh_device_t *device;
|
||||
usbh_ep_t *next;
|
||||
|
||||
usbh_epstatus_t status;
|
||||
uint8_t address;
|
||||
bool in;
|
||||
usbh_eptype_t type;
|
||||
uint16_t wMaxPacketSize;
|
||||
uint8_t bInterval;
|
||||
|
||||
/* debug */
|
||||
const char *name;
|
||||
|
||||
/* Low-level part */
|
||||
_usbh_ep_ll_data
|
||||
};
|
||||
|
||||
struct usbh_device {
|
||||
USBHDriver *host; /* shortcut to host */
|
||||
|
||||
usbh_ep_t ctrl;
|
||||
usbh_ep_t *endpoints;
|
||||
|
||||
usbh_baseclassdriver_t *drivers;
|
||||
|
||||
uint16_t langID0;
|
||||
|
||||
usbh_devstatus_t status;
|
||||
usbh_devspeed_t speed;
|
||||
|
||||
USBH_DEFINE_BUFFER(usbh_device_descriptor_t, devDesc);
|
||||
unsigned char align_bytes[2];
|
||||
USBH_DEFINE_BUFFER(usbh_config_descriptor_t, basicConfigDesc);
|
||||
|
||||
uint8_t *fullConfigurationDescriptor;
|
||||
uint8_t keepFullCfgDesc;
|
||||
|
||||
uint8_t address;
|
||||
uint8_t bConfiguration;
|
||||
|
||||
/* Low level part */
|
||||
_usbh_device_ll_data
|
||||
};
|
||||
|
||||
|
||||
struct usbh_port {
|
||||
#if HAL_USBH_USE_HUB
|
||||
USBHHubDriver *hub;
|
||||
#endif
|
||||
|
||||
usbh_portstatus_t status;
|
||||
usbh_portcstatus_t c_status;
|
||||
|
||||
usbh_port_t *next;
|
||||
|
||||
uint8_t number;
|
||||
|
||||
usbh_device_t device;
|
||||
|
||||
/* Low level part */
|
||||
_usbh_port_ll_data
|
||||
};
|
||||
|
||||
struct USBHDriver {
|
||||
usbh_status_t status;
|
||||
uint8_t address_bitmap[(USBH_MAX_ADDRESSES + 7) / 8];
|
||||
|
||||
usbh_port_t rootport;
|
||||
|
||||
#if HAL_USBH_USE_HUB
|
||||
struct list_head hubs;
|
||||
#endif
|
||||
|
||||
/* Low level part */
|
||||
_usbhdriver_ll_data
|
||||
|
||||
#if USBH_DEBUG_ENABLE
|
||||
/* debug */
|
||||
uint8_t dbg_buff[USBH_DEBUG_BUFFER];
|
||||
THD_WORKING_AREA(waDebug, 512);
|
||||
input_queue_t iq;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if STM32_USBH_USE_OTG1
|
||||
extern USBHDriver USBHD1;
|
||||
#endif
|
||||
|
||||
#if STM32_USBH_USE_OTG2
|
||||
extern USBHDriver USBHD2;
|
||||
#endif
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Main driver API. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Main functions */
|
||||
void usbhObjectInit(USBHDriver *usbh);
|
||||
void usbhInit(void);
|
||||
void usbhStart(USBHDriver *usbh);
|
||||
void usbhStop(USBHDriver *usbh);
|
||||
void usbhSuspend(USBHDriver *usbh);
|
||||
void usbhResume(USBHDriver *usbh);
|
||||
|
||||
/* Device-related */
|
||||
#if USBH_DEBUG_ENABLE && USBH_DEBUG_ENABLE_INFO
|
||||
void usbhDevicePrintInfo(usbh_device_t *dev);
|
||||
void usbhDevicePrintConfiguration(const uint8_t *descriptor, uint16_t rem);
|
||||
#else
|
||||
# define usbhDevicePrintInfo(dev) do {} while(0)
|
||||
# define usbhDevicePrintConfiguration(descriptor, rem) do {} while(0)
|
||||
#endif
|
||||
bool usbhDeviceReadString(usbh_device_t *dev, char *dest, uint8_t size,
|
||||
uint8_t index, uint16_t langID);
|
||||
static inline usbh_port_t *usbhDeviceGetPort(usbh_device_t *dev) {
|
||||
return container_of(dev, usbh_port_t, device);
|
||||
}
|
||||
|
||||
/* Synchronous API */
|
||||
usbh_urbstatus_t usbhBulkTransfer(usbh_ep_t *ep,
|
||||
void *data,
|
||||
uint32_t len,
|
||||
uint32_t *actual_len,
|
||||
systime_t timeout);
|
||||
usbh_urbstatus_t usbhControlRequest(usbh_device_t *dev,
|
||||
uint8_t bmRequestType,
|
||||
uint8_t bRequest,
|
||||
uint16_t wValue,
|
||||
uint16_t wIndex,
|
||||
uint16_t wLength,
|
||||
uint8_t *buff);
|
||||
usbh_urbstatus_t usbhControlRequestExtended(usbh_device_t *dev,
|
||||
const usbh_control_request_t *req,
|
||||
uint8_t *buff,
|
||||
uint32_t *actual_len,
|
||||
systime_t timeout);
|
||||
|
||||
/* Standard request helpers */
|
||||
bool usbhStdReqGetDeviceDescriptor(usbh_device_t *dev,
|
||||
uint16_t wLength,
|
||||
uint8_t *buf);
|
||||
bool usbhStdReqGetConfigurationDescriptor(usbh_device_t *dev,
|
||||
uint8_t index,
|
||||
uint16_t wLength,
|
||||
uint8_t *buf);
|
||||
bool usbhStdReqGetStringDescriptor(usbh_device_t *dev,
|
||||
uint8_t index,
|
||||
uint16_t langID,
|
||||
uint16_t wLength,
|
||||
uint8_t *buf);
|
||||
bool usbhStdReqSetInterface(usbh_device_t *dev,
|
||||
uint8_t bInterfaceNumber,
|
||||
uint8_t bAlternateSetting);
|
||||
bool usbhStdReqGetInterface(usbh_device_t *dev,
|
||||
uint8_t bInterfaceNumber,
|
||||
uint8_t *bAlternateSetting);
|
||||
|
||||
/* Endpoint/pipe management */
|
||||
void usbhEPObjectInit(usbh_ep_t *ep, usbh_device_t *dev, const usbh_endpoint_descriptor_t *desc);
|
||||
static inline void usbhEPOpen(usbh_ep_t *ep) {
|
||||
osalDbgCheck(ep != 0);
|
||||
osalSysLock();
|
||||
osalDbgAssert(ep->status == USBH_EPSTATUS_CLOSED, "invalid state");
|
||||
usbh_lld_ep_open(ep);
|
||||
ep->next = ep->device->endpoints;
|
||||
ep->device->endpoints = ep;
|
||||
osalSysUnlock();
|
||||
}
|
||||
static inline void usbhEPCloseS(usbh_ep_t *ep) {
|
||||
osalDbgCheck(ep != 0);
|
||||
osalDbgCheckClassS();
|
||||
osalDbgAssert(ep->status != USBH_EPSTATUS_UNINITIALIZED, "invalid state");
|
||||
if (ep->status == USBH_EPSTATUS_CLOSED) {
|
||||
osalOsRescheduleS();
|
||||
return;
|
||||
}
|
||||
usbh_lld_ep_close(ep);
|
||||
}
|
||||
static inline void usbhEPClose(usbh_ep_t *ep) {
|
||||
osalSysLock();
|
||||
usbhEPCloseS(ep);
|
||||
osalSysUnlock();
|
||||
}
|
||||
static inline void usbhEPResetI(usbh_ep_t *ep) {
|
||||
osalDbgCheckClassI();
|
||||
osalDbgCheck(ep != NULL);
|
||||
usbh_lld_epreset(ep);
|
||||
}
|
||||
static inline bool usbhEPIsPeriodic(usbh_ep_t *ep) {
|
||||
osalDbgCheck(ep != NULL);
|
||||
return (ep->type & 1) != 0;
|
||||
}
|
||||
static inline bool usbhURBIsBusy(usbh_urb_t *urb) {
|
||||
osalDbgCheck(urb != NULL);
|
||||
return (urb->status == USBH_URBSTATUS_PENDING);
|
||||
}
|
||||
static inline void usbhEPSetName(usbh_ep_t *ep, const char *name) {
|
||||
ep->name = name;
|
||||
}
|
||||
|
||||
/* URB management */
|
||||
void usbhURBObjectInit(usbh_urb_t *urb, usbh_ep_t *ep, usbh_completion_cb callback,
|
||||
void *user, void *buff, uint32_t len);
|
||||
void usbhURBObjectResetI(usbh_urb_t *urb);
|
||||
void usbhURBSubmitI(usbh_urb_t *urb);
|
||||
bool usbhURBCancelI(usbh_urb_t *urb);
|
||||
msg_t usbhURBSubmitAndWaitS(usbh_urb_t *urb, systime_t timeout);
|
||||
void usbhURBCancelAndWaitS(usbh_urb_t *urb);
|
||||
msg_t usbhURBWaitTimeoutS(usbh_urb_t *urb, systime_t timeout);
|
||||
|
||||
/* Main loop */
|
||||
void usbhMainLoop(USBHDriver *usbh);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Class driver definitions and API. */
|
||||
/*===========================================================================*/
|
||||
|
||||
typedef struct usbh_classdriver_vmt usbh_classdriver_vmt_t;
|
||||
struct usbh_classdriver_vmt {
|
||||
usbh_baseclassdriver_t *(*load)(usbh_device_t *dev, const uint8_t *descriptor, uint16_t rem);
|
||||
void (*unload)(usbh_baseclassdriver_t *drv);
|
||||
};
|
||||
|
||||
struct usbh_classdriverinfo {
|
||||
int16_t class;
|
||||
int16_t subclass;
|
||||
int16_t protocol;
|
||||
const char *name;
|
||||
const usbh_classdriver_vmt_t *vmt;
|
||||
};
|
||||
|
||||
#define _usbh_base_classdriver_data \
|
||||
const usbh_classdriverinfo_t *info; \
|
||||
usbh_device_t *dev; \
|
||||
usbh_baseclassdriver_t *next;
|
||||
|
||||
struct usbh_baseclassdriver {
|
||||
_usbh_base_classdriver_data
|
||||
};
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Helper functions. */
|
||||
/*===========================================================================*/
|
||||
#include <usbh/desciter.h> /* descriptor iterators */
|
||||
#include <usbh/debug.h> /* debug */
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* HAL_USBH_H_ */
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
Copyright (C) 2015 Diego Ismirlian, TISA, (dismirlian (at) google's mail)
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef USBH_DEBUG_H_
|
||||
#define USBH_DEBUG_H_
|
||||
|
||||
#include "hal_usbh.h"
|
||||
|
||||
#if HAL_USE_USBH
|
||||
|
||||
//TODO: Debug is only for USBHD1, make it generic.
|
||||
|
||||
#if USBH_DEBUG_ENABLE
|
||||
void usbDbgPrintf(const char *fmt, ...);
|
||||
void usbDbgPuts(const char *s);
|
||||
void usbDbgInit(USBHDriver *host);
|
||||
void usbDbgReset(void);
|
||||
void usbDbgSystemHalted(void);
|
||||
#else
|
||||
#define usbDbgPrintf(fmt, ...) do {} while(0)
|
||||
#define usbDbgPuts(s) do {} while(0)
|
||||
#define usbDbgInit(host) do {} while(0)
|
||||
#define usbDbgReset() do {} while(0)
|
||||
#define usbDbgSystemHalted() do {} while(0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* USBH_DEBUG_H_ */
|
|
@ -0,0 +1,41 @@
|
|||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "osal.h"
|
||||
|
||||
#include "syscalls_cpp.hpp"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void _exit(int status){
|
||||
(void) status;
|
||||
osalSysHalt("Unrealized");
|
||||
while(TRUE){}
|
||||
}
|
||||
|
||||
pid_t _getpid(void){
|
||||
return 1;
|
||||
}
|
||||
|
||||
#undef errno
|
||||
extern int errno;
|
||||
int _kill(int pid, int sig) {
|
||||
(void)pid;
|
||||
(void)sig;
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
void _open_r(void){
|
||||
return;
|
||||
}
|
||||
|
||||
void __cxa_pure_virtual() {
|
||||
osalSysHalt("Pure virtual function call.");
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef SYSCALLS_CPP_HPP_
|
||||
#define SYSCALLS_CPP_HPP_
|
||||
|
||||
/* The ABI requires a 32-bit type.*/
|
||||
typedef int __guard;
|
||||
|
||||
int __cxa_guard_acquire(__guard *);
|
||||
void __cxa_guard_release (__guard *);
|
||||
void __cxa_guard_abort (__guard *);
|
||||
|
||||
void *__dso_handle = NULL;
|
||||
|
||||
#endif /* SYSCALLS_CPP_HPP_ */
|
|
@ -0,0 +1,310 @@
|
|||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file lcd3310.c
|
||||
* @brief Nokia 3310 LCD interface module through SPI code.
|
||||
*
|
||||
* @addtogroup lcd3310
|
||||
* @{
|
||||
*/
|
||||
|
||||
#include "ch.h"
|
||||
#include "hal.h"
|
||||
#include "lcd3310.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local definitions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported variables. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local variables and types. */
|
||||
/*===========================================================================*/
|
||||
|
||||
const uint8_t Fonts8x5 [][LCD3310_FONT_X_SIZE] =
|
||||
{
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, /* space */
|
||||
{ 0x00, 0x00, 0x2f, 0x00, 0x00 }, /* ! */
|
||||
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, /* " */
|
||||
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, /* # */
|
||||
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, /* $ */
|
||||
{ 0xc4, 0xc8, 0x10, 0x26, 0x46 }, /* % */
|
||||
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, /* & */
|
||||
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, /* ' */
|
||||
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, /* ( */
|
||||
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, /* ) */
|
||||
{ 0x14, 0x08, 0x3E, 0x08, 0x14 }, /* * */
|
||||
{ 0x08, 0x08, 0x3E, 0x08, 0x08 }, /* + */
|
||||
{ 0x00, 0x00, 0x50, 0x30, 0x00 }, /* , */
|
||||
{ 0x10, 0x10, 0x10, 0x10, 0x10 }, /* - */
|
||||
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, /* . */
|
||||
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, /* / */
|
||||
{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, /* 0 */
|
||||
{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, /* 1 */
|
||||
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 2 */
|
||||
{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, /* 3 */
|
||||
{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, /* 4 */
|
||||
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 5 */
|
||||
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, /* 6 */
|
||||
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, /* 7 */
|
||||
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 8 */
|
||||
{ 0x06, 0x49, 0x49, 0x29, 0x1E }, /* 9 */
|
||||
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, /* : */
|
||||
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, /* ; */
|
||||
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, /* < */
|
||||
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, /* = */
|
||||
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, /* > */
|
||||
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, /* ? */
|
||||
{ 0x32, 0x49, 0x59, 0x51, 0x3E }, /* @ */
|
||||
{ 0x7E, 0x11, 0x11, 0x11, 0x7E }, /* A */
|
||||
{ 0x7F, 0x49, 0x49, 0x49, 0x36 }, /* B */
|
||||
{ 0x3E, 0x41, 0x41, 0x41, 0x22 }, /* C */
|
||||
{ 0x7F, 0x41, 0x41, 0x22, 0x1C }, /* D */
|
||||
{ 0x7F, 0x49, 0x49, 0x49, 0x41 }, /* E */
|
||||
{ 0x7F, 0x09, 0x09, 0x09, 0x01 }, /* F */
|
||||
{ 0x3E, 0x41, 0x49, 0x49, 0x7A }, /* G */
|
||||
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, /* H */
|
||||
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, /* I */
|
||||
{ 0x20, 0x40, 0x41, 0x3F, 0x01 }, /* J */
|
||||
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, /* K */
|
||||
{ 0x7F, 0x40, 0x40, 0x40, 0x40 }, /* L */
|
||||
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F }, /* M */
|
||||
{ 0x7F, 0x04, 0x08, 0x10, 0x7F }, /* N */
|
||||
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, /* O */
|
||||
{ 0x7F, 0x09, 0x09, 0x09, 0x06 }, /* P */
|
||||
{ 0x3E, 0x41, 0x51, 0x21, 0x5E }, /* Q */
|
||||
{ 0x7F, 0x09, 0x19, 0x29, 0x46 }, /* R */
|
||||
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, /* S */
|
||||
{ 0x01, 0x01, 0x7F, 0x01, 0x01 }, /* T */
|
||||
{ 0x3F, 0x40, 0x40, 0x40, 0x3F }, /* U */
|
||||
{ 0x1F, 0x20, 0x40, 0x20, 0x1F }, /* V */
|
||||
{ 0x3F, 0x40, 0x38, 0x40, 0x3F }, /* W */
|
||||
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, /* X */
|
||||
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, /* Y */
|
||||
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, /* Z */
|
||||
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, /* [ */
|
||||
{ 0x55, 0x2A, 0x55, 0x2A, 0x55 }, /* \ */
|
||||
{ 0x00, 0x41, 0x41, 0x7F, 0x00 }, /* ] */
|
||||
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, /* ^ */
|
||||
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, /* _ */
|
||||
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, /* ' */
|
||||
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, /* a */
|
||||
{ 0x7F, 0x48, 0x44, 0x44, 0x38 }, /* b */
|
||||
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, /* c */
|
||||
{ 0x38, 0x44, 0x44, 0x48, 0x7F }, /* d */
|
||||
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, /* e */
|
||||
{ 0x08, 0x7E, 0x09, 0x01, 0x02 }, /* f */
|
||||
{ 0x0C, 0x52, 0x52, 0x52, 0x3E }, /* g */
|
||||
{ 0x7F, 0x08, 0x04, 0x04, 0x78 }, /* h */
|
||||
{ 0x00, 0x44, 0x7D, 0x40, 0x00 }, /* i */
|
||||
{ 0x20, 0x40, 0x44, 0x3D, 0x00 }, /* j */
|
||||
{ 0x7F, 0x10, 0x28, 0x44, 0x00 }, /* k */
|
||||
{ 0x00, 0x41, 0x7F, 0x40, 0x00 }, /* l */
|
||||
{ 0x7C, 0x04, 0x18, 0x04, 0x78 }, /* m */
|
||||
{ 0x7C, 0x08, 0x04, 0x04, 0x78 }, /* n */
|
||||
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, /* o */
|
||||
{ 0x7C, 0x14, 0x14, 0x14, 0x08 }, /* p */
|
||||
{ 0x08, 0x14, 0x14, 0x18, 0x7C }, /* q */
|
||||
{ 0x7C, 0x08, 0x04, 0x04, 0x08 }, /* r */
|
||||
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, /* s */
|
||||
{ 0x04, 0x3F, 0x44, 0x40, 0x20 }, /* t */
|
||||
{ 0x3C, 0x40, 0x40, 0x20, 0x7C }, /* u */
|
||||
{ 0x1C, 0x20, 0x40, 0x20, 0x1C }, /* v */
|
||||
{ 0x3C, 0x40, 0x30, 0x40, 0x3C }, /* w */
|
||||
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, /* x */
|
||||
{ 0x0C, 0x50, 0x50, 0x50, 0x3C }, /* y */
|
||||
{ 0x44, 0x64, 0x54, 0x4C, 0x44 }, /* z */
|
||||
{ 0x00, 0x08, 0x36, 0x41, 0x00 }, /* { */
|
||||
{ 0x00, 0x00, 0x7F, 0x00, 0x00 }, /* | */
|
||||
{ 0x00, 0x41, 0x36, 0x08, 0x00 }, /* } */
|
||||
};
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver local functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/**
|
||||
* @brief LCD driver initialization.
|
||||
* @pre The SPI interface must be initialized and the driver started.
|
||||
*
|
||||
* @param[in] spip pointer to the SPI interface
|
||||
*
|
||||
*/
|
||||
void lcd3310Init(SPIDriver *spip) {
|
||||
|
||||
/* Reset LCD */
|
||||
palClearPad(LCD3310_RES_PORT, LCD3310_RES_PIN);
|
||||
chThdSleepMilliseconds(15);
|
||||
palSetPad(LCD3310_RES_PORT, LCD3310_RES_PIN);
|
||||
chThdSleepMilliseconds(15);
|
||||
|
||||
/* Send configuration commands to LCD */
|
||||
lcd3310WriteByte(spip, 0x21, LCD3310_SEND_CMD); /* LCD extended commands */
|
||||
lcd3310WriteByte(spip, 0xC8, LCD3310_SEND_CMD); /* Set LCD Vop (Contrast) */
|
||||
lcd3310WriteByte(spip, 0x05, LCD3310_SEND_CMD); /* Set start line S6 to 1 TLS8204 */
|
||||
lcd3310WriteByte(spip, 0x40, LCD3310_SEND_CMD); /* Set start line S[5:0] to 0x00 TLS8204 */
|
||||
lcd3310WriteByte(spip, 0x12, LCD3310_SEND_CMD); /* LCD bias mode 1:68. */
|
||||
lcd3310WriteByte(spip, 0x20, LCD3310_SEND_CMD); /* LCD standard Commands, horizontal addressing mode. */
|
||||
lcd3310WriteByte(spip, 0x08, LCD3310_SEND_CMD); /* LCD blank */
|
||||
lcd3310WriteByte(spip, 0x0C, LCD3310_SEND_CMD); /* LCD in normal mode. */
|
||||
|
||||
lcd3310Clear(spip); /* Clear LCD */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Write byte to LCD driver.
|
||||
* @pre The LCD driver must be initialized.
|
||||
*
|
||||
* @param[in] spip pointer to the SPI interface
|
||||
* @param[in] data data to write
|
||||
* @param[in] cd select between command or data
|
||||
*/
|
||||
void lcd3310WriteByte(SPIDriver *spip, uint8_t data, uint8_t cd) {
|
||||
|
||||
spiSelect(spip);
|
||||
|
||||
if(cd == LCD3310_SEND_DATA) {
|
||||
palSetPad(LCD3310_DC_PORT, LCD3310_DC_PIN);
|
||||
}
|
||||
else {
|
||||
palClearPad(LCD3310_DC_PORT, LCD3310_DC_PIN);
|
||||
}
|
||||
|
||||
spiSend(spip, 1, &data); // change to normal spi send
|
||||
spiUnselect(spip);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Clear LCD
|
||||
* @pre The LCD driver must be initialized.
|
||||
*
|
||||
* @param[in] spip pointer to the SPI interface
|
||||
*/
|
||||
void lcd3310Clear(SPIDriver *spip) { // ok
|
||||
|
||||
uint32_t i, j;
|
||||
|
||||
for (i = 0; i < LCD3310_Y_RES/LCD3310_FONT_Y_SIZE; i++) {
|
||||
lcd3310SetPosXY(spip, 0, i);
|
||||
for (j = 0; j < LCD3310_X_RES; j++)
|
||||
lcd3310WriteByte(spip, 0x00, LCD3310_SEND_DATA);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set position
|
||||
* @pre The LCD driver must be initialized.
|
||||
*
|
||||
* @param[in] spip pointer to the SPI interface
|
||||
* @param[in] x column address in LCD DDRAM, 0 to 83
|
||||
* @param[in] y page address in LCD DDRAM, 0 to 5
|
||||
*/
|
||||
void lcd3310SetPosXY(SPIDriver *spip, uint8_t x, uint8_t y) {
|
||||
|
||||
if (y > LCD3310_Y_RES/LCD3310_FONT_Y_SIZE) return;
|
||||
if (x > LCD3310_X_RES) return;
|
||||
|
||||
lcd3310WriteByte(spip, 0x80 | x, LCD3310_SEND_CMD); /* Set x position */
|
||||
lcd3310WriteByte(spip, 0x40 | y, LCD3310_SEND_CMD); /* Set y position */
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Write char
|
||||
* @pre The LCD driver must be initialized.
|
||||
*
|
||||
* @param[in] spip pointer to the SPI interface
|
||||
* @param[in] ch char
|
||||
*/
|
||||
void lcd3310WriteChar(SPIDriver *spip, uint8_t ch) {
|
||||
|
||||
uint8_t i;
|
||||
|
||||
for ( i = 0; i < LCD3310_FONT_X_SIZE; i++ ){
|
||||
lcd3310WriteByte(spip, Fonts8x5[ch - 32][i], LCD3310_SEND_DATA);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set LCD contrast.
|
||||
* @pre The LCD driver must be initialized.
|
||||
*
|
||||
* @param[in] spip pointer to the SPI interface
|
||||
* @param[in] contrast LCD contrast value
|
||||
*/
|
||||
void lcd3310Contrast (SPIDriver *spip, uint8_t contrast) {
|
||||
|
||||
lcd3310WriteByte(spip, 0x21, LCD3310_SEND_CMD); /* LCD Extended Commands */
|
||||
lcd3310WriteByte(spip, 0x80 | contrast, LCD3310_SEND_CMD); /* Set LCD Vop (Contrast) */
|
||||
lcd3310WriteByte(spip, 0x20, LCD3310_SEND_CMD); /* LCD Standard Commands, horizontal addressing mode */
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Write text
|
||||
* @pre The LCD driver must be initialized.
|
||||
*
|
||||
* @param[in] spip pointer to the SPI interface
|
||||
* @param[in] strp pointer to text
|
||||
*/
|
||||
void lcd3310WriteText(SPIDriver *spip, const uint8_t * strp) {
|
||||
|
||||
while ( *strp ) {
|
||||
lcd3310WriteChar(spip, *strp);
|
||||
strp++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Rotate text
|
||||
* @pre The LCD driver must be initialized.
|
||||
*
|
||||
* @param[in] spip pointer to the SPI interface
|
||||
* @param[in] strp pointer to text
|
||||
* @param[in] offset text offset
|
||||
*/
|
||||
void lcd3310RotateText(SPIDriver *spip, const uint8_t * strp, uint8_t offset) {
|
||||
|
||||
uint8_t i;
|
||||
uint8_t n;
|
||||
uint8_t m;
|
||||
|
||||
for(n = 0; strp[n] != '\0'; n++); /* Count number of char */
|
||||
|
||||
if (offset >= n)
|
||||
return;
|
||||
|
||||
for (i = 0; i < LCD3310_X_RES/LCD3310_FONT_X_SIZE; i++) {
|
||||
m = i + offset;
|
||||
if ( m < n)
|
||||
lcd3310WriteChar(spip, strp[m]);
|
||||
else
|
||||
lcd3310WriteChar(spip, strp[m - n]);
|
||||
}
|
||||
}
|
||||
|
||||
/** @} */
|
|
@ -0,0 +1,54 @@
|
|||
# List of the required lwIP files.
|
||||
LWIP = ${CHIBIOS}/ext/lwip
|
||||
|
||||
LWBINDSRC = \
|
||||
$(CHIBIOS)/os/various/lwip_bindings/lwipthread.c \
|
||||
$(CHIBIOS)/os/various/lwip_bindings/arch/sys_arch.c
|
||||
|
||||
LWNETIFSRC = \
|
||||
${LWIP}/src/netif/etharp.c
|
||||
|
||||
LWCORESRC = \
|
||||
${LWIP}/src/core/dhcp.c \
|
||||
${LWIP}/src/core/dns.c \
|
||||
${LWIP}/src/core/init.c \
|
||||
${LWIP}/src/core/mem.c \
|
||||
${LWIP}/src/core/memp.c \
|
||||
${LWIP}/src/core/netif.c \
|
||||
${LWIP}/src/core/pbuf.c \
|
||||
${LWIP}/src/core/raw.c \
|
||||
${LWIP}/src/core/stats.c \
|
||||
${LWIP}/src/core/sys.c \
|
||||
${LWIP}/src/core/tcp.c \
|
||||
${LWIP}/src/core/tcp_in.c \
|
||||
${LWIP}/src/core/tcp_out.c \
|
||||
${LWIP}/src/core/udp.c
|
||||
|
||||
LWIPV4SRC = \
|
||||
${LWIP}/src/core/ipv4/autoip.c \
|
||||
${LWIP}/src/core/ipv4/icmp.c \
|
||||
${LWIP}/src/core/ipv4/igmp.c \
|
||||
${LWIP}/src/core/ipv4/inet.c \
|
||||
${LWIP}/src/core/ipv4/inet_chksum.c \
|
||||
${LWIP}/src/core/ipv4/ip.c \
|
||||
${LWIP}/src/core/ipv4/ip_addr.c \
|
||||
${LWIP}/src/core/ipv4/ip_frag.c \
|
||||
${LWIP}/src/core/def.c \
|
||||
${LWIP}/src/core/timers.c
|
||||
|
||||
LWAPISRC = \
|
||||
${LWIP}/src/api/api_lib.c \
|
||||
${LWIP}/src/api/api_msg.c \
|
||||
${LWIP}/src/api/err.c \
|
||||
${LWIP}/src/api/netbuf.c \
|
||||
${LWIP}/src/api/netdb.c \
|
||||
${LWIP}/src/api/netifapi.c \
|
||||
${LWIP}/src/api/sockets.c \
|
||||
${LWIP}/src/api/tcpip.c
|
||||
|
||||
LWSRC = $(LWBINDSRC) $(LWNETIFSRC) $(LWCORESRC) $(LWIPV4SRC) $(LWAPISRC)
|
||||
|
||||
LWINC = \
|
||||
$(CHIBIOS)/os/various/lwip_bindings \
|
||||
${LWIP}/src/include \
|
||||
${LWIP}/src/include/ipv4
|
|
@ -0,0 +1,489 @@
|
|||
*****************************************************************************
|
||||
*** Files Organization ***
|
||||
*****************************************************************************
|
||||
|
||||
--{root} - ChibiOS/RT directory.
|
||||
+--readme.txt - This file.
|
||||
+--documentation.html - Shortcut to the web documentation page.
|
||||
+--license.txt - GPL license text.
|
||||
+--demos/ - Demo projects, one directory per platform.
|
||||
+--docs/ - Documentation.
|
||||
| +--common/ - Documentation common build resources.
|
||||
| +--hal/ - Builders for HAL.
|
||||
| | +--Doxyfile_* - Doxygen project files (required for rebuild).
|
||||
| | +--html/ - Local HTML documentation (after rebuild).
|
||||
| | +--reports/ - Test reports.
|
||||
| | +--rsc/ - Documentation resource files (required for rebuild).
|
||||
| | +--src/ - Documentation source files (required for rebuild).
|
||||
| | +--Doxyfile_* - Doxygen project files (required for rebuild).
|
||||
| | +--index.html - Local documentation access (after rebuild).
|
||||
| +--nil/ - Builders for NIL.
|
||||
| | +--Doxyfile_* - Doxygen project files (required for rebuild).
|
||||
| | +--html/ - Local HTML documentation (after rebuild).
|
||||
| | +--reports/ - Test reports.
|
||||
| | +--rsc/ - Documentation resource files (required for rebuild).
|
||||
| | +--src/ - Documentation source files (required for rebuild).
|
||||
| | +--Doxyfile_* - Doxygen project files (required for rebuild).
|
||||
| | +--index.html - Local documentation access (after rebuild).
|
||||
| +--rt/ - Builders for RT.
|
||||
| | +--html/ - Local HTML documentation (after rebuild).
|
||||
| | +--reports/ - Test reports.
|
||||
| | +--rsc/ - Documentation resource files (required for rebuild).
|
||||
| | +--src/ - Documentation source files (required for rebuild).
|
||||
| | +--Doxyfile_* - Doxygen project files (required for rebuild).
|
||||
| | +--index.html - Local documentation access (after rebuild).
|
||||
+--ext/ - External libraries, not part of ChibiOS/RT.
|
||||
+--os/ - ChibiOS components.
|
||||
| +--hal/ - HAL component.
|
||||
| | +--boards/ - HAL board support files.
|
||||
| | +--dox/ - HAL documentation resources.
|
||||
| | +--include/ - HAL high level headers.
|
||||
| | +--lib/ - HAL libraries.
|
||||
| | +--osal/ - HAL OSAL implementations.
|
||||
| | +--src/ - HAL high level source.
|
||||
| | +--ports/ - HAL ports.
|
||||
| | +--templates/ - HAL driver template files.
|
||||
| | +--osal/ - HAL OSAL templates.
|
||||
| +--nil/ - NIL RTOS component.
|
||||
| | +--dox/ - NIL documentation resources.
|
||||
| | +--include/ - NIL high level headers.
|
||||
| | +--src/ - NIL high level source.
|
||||
| | +--ports/ - NIL ports.
|
||||
| | +--templates/ - NIL port template files.
|
||||
| +--rt/ - RT RTOS component.
|
||||
| | +--dox/ - RT documentation resources.
|
||||
| | +--include/ - RT high level headers.
|
||||
| | +--src/ - RT high level source.
|
||||
| | +--ports/ - RT ports.
|
||||
| | +--templates/ - RT port template files.
|
||||
| +--various/ - Various portable support files.
|
||||
+--test/ - Kernel test suite source code.
|
||||
| +--lib/ - Portable test engine.
|
||||
| +--hal/ - HAL test suites.
|
||||
| | +--testbuild/ - HAL build test and MISRA check.
|
||||
| +--nil/ - NIL test suites.
|
||||
| | +--testbuild/ - NIL build test and MISRA check.
|
||||
| +--rt/ - RT test suites.
|
||||
| | +--testbuild/ - RT build test and MISRA check.
|
||||
| | +--coverage/ - RT code coverage project.
|
||||
+--testhal/ - HAL integration test demos.
|
||||
|
||||
*****************************************************************************
|
||||
*** Releases and Change Log ***
|
||||
*****************************************************************************
|
||||
|
||||
*** 16.1.7 ***
|
||||
- VAR: Fixed BYTE_ORDER redefined in lwip_bindings/arch/cc.h (bug #814).
|
||||
- HAL: Fixed setting alternate mode in STM32 GPIOv3 and GPIOv3 drivers can fail
|
||||
(bug #813).
|
||||
- HAL: Fixed incorrect handling of shared ISRs in STM32 DMAv1 driver
|
||||
(bug #812).
|
||||
- HAL: Fixed protocol violation in usbDisableEndpointsI() API (bug #811).
|
||||
- HAL: Fixed incorrect constants STM32_DAC1_CHx_DMA_CHN for STM32F7 (bug #810).
|
||||
- HAL: Fixed redefined TIM in STM32F030 registry (bug #809).
|
||||
- HAL: Fixed clock init in STM32F0x port which doesn't take in account
|
||||
PLL_XTPRE and PREDIV_0 are hard-wired (bug #808).
|
||||
|
||||
*** 16.1.6 ***
|
||||
- HAL: Fixed wrong initialization in ADC lld v3 (bug #807).
|
||||
- HAL: Fixed wrong clock init in STM32F0 port ad added more error checks
|
||||
(bug #806).
|
||||
- HAL: Fixed misplaced else in STM32F0 port (bug #805).
|
||||
- HAL: Fixed flash waiting state misconfiguration in STM32L4 port (bug #804).
|
||||
- HAL: Added CR field to DAC configuration in STM32 port (bug #803).
|
||||
- HAL: Fixed wrong initialization for DACD4 in STM32 port (bug #802).
|
||||
- HAL: Fixed tab instead of space in DAC driver (bug #801).
|
||||
- HAL: Fixed missing GPT and DAC in STM32F07/?9x mcuconf (bug #800).
|
||||
- HAL: Fixed STM32 RTCv2 driver does not handle the DST bit (bug #799).
|
||||
- HAL: Fixed MAC driver broken on STM32F107 (bug #798).
|
||||
- VAR: Fixed missing const qualifier in local shell commands array (bug #797).
|
||||
- VAR: Fixed compilation error in cmsis_os.h (bug #796).
|
||||
- HAL: Fixed double empty lines in HAL (bug #794).
|
||||
- RT: Fixed double empty lines in RT (bug #793).
|
||||
- HAL: Fixed wrong entries in STM32L4 registry (bug #792).
|
||||
- HAL: Fixed missing ARPE bit in CR1 initialization on STM32 GPT driver
|
||||
(bug #791).
|
||||
- HAL: Fixed wrong DMA definition for STM32F303x8 ADC (bug #790).
|
||||
- VAR: Fixed GCC garbage collector discards code in syscalls.c (bug #789).
|
||||
- HAL: Fixed Makefile dependencies not generated for .S files (bug #787).
|
||||
- HAL: Fixed OTGv1 driver not functional on STM32L4 (bug #786).
|
||||
- HAL: Fixed wrong bit offset in STM32F37x ADC_CR2_EXTSEL_SRC() macro
|
||||
(bug #785).
|
||||
- RT: Fixed tick-less mode can fail in RT for very large delays (bug #784).
|
||||
- HAL: Fixed STM32L0xx CCIPR initialization (bug #783).
|
||||
- HAL: Fixed STM32F105 port not compiling (bug #782).
|
||||
- HAL: Fixed wrong registry for STM32F205xx and STM32F215xx port
|
||||
(bug #780).
|
||||
- HAL: Fixed wrong HSE checks and PLL2 enable switch in STM32F105 and
|
||||
STM32F107 port (bug #779).
|
||||
- HAL: Fixed wrong SRAM2_BASE in STM32F7xx port (bug #778)
|
||||
(backported to 16.1.6).
|
||||
- HAL: Added DAC configs in RT-STM32F051-DISCOVERY\mcuconf.h (bug #777).
|
||||
- HAL: Fixed DAC driver not compiling on STM32F051 and some bitmasks related
|
||||
to DAC disabling (bug #776).
|
||||
- HAL: Fixed addition semicolon in cpp wrapper (bug #774).
|
||||
- HAL: Fixed function gpt_lld_polled_delay() is broken on STM32 (bug #775).
|
||||
- HAL: Fixed invalid output initialization for STM32 DACx channels 2
|
||||
(bug #773).
|
||||
- HAL: Fixed CAN inclusion path missing for STM32F107 (bug #772).
|
||||
- HAL: Fixed extra brackets in STM32F0 registry (bug #771).
|
||||
- HAL: Fixed STM32 CAN filters initialization problem (bug #770).
|
||||
- HAL: Fixed wrong bit mask in STM32L0xx port (bug #769).
|
||||
- HAL: Fixed potential wait states problem in STM32L4 initialization code
|
||||
(bug #768).
|
||||
- HAL: Fixed SDIO driver not compiling on STM32F446 devices (bug #767).
|
||||
- HAL: Fixed error in STM32L4xx ST headers (bug #766).
|
||||
- HAL: Fixed wrong check in win32 simulator serial driver (bug #765).
|
||||
- HAL: Fixed dependency on RT in hal_usb.c (bug #764).
|
||||
- HAL: Fixed wrong backup domain reset in STM32L4xx\hal_lld (bug #763).
|
||||
|
||||
*** 16.1.5 ***
|
||||
- NEW: Added support for more Nucleo and Discovery boards.
|
||||
- HAL: Board files regenerated using the latest version of the generator
|
||||
plugin.
|
||||
- HAL: Fixed wrong PWR configurations in STM32L4xx\hal_lld (bug #761).
|
||||
- HAL: Fixed wrong comment in STM32L4xx\hal_lld (bug #760).
|
||||
- HAL: Fixed wrong MSIRANGE management for STM32L4xx in function
|
||||
stm32_clock_init() (bug #759).
|
||||
- HAL: Fixed problem in USB driver when changing configuration (bug #757).
|
||||
- HAL: Fixed bug in function usbDisableEndpointsI() (bug #756).
|
||||
- HAL: Fixed wrong info in readme of LWIP related demos (bug #755).
|
||||
- HAL: Fixed misconfiguration in STM32L4 Discovery board files
|
||||
(bug #754).
|
||||
- HAL: Fixed errors in documentation related to OTG peripheral switches
|
||||
(bug #753).
|
||||
- HAL: Fixed CMSIS function osThreadGetPriority() does not return correct
|
||||
priority (bug #752).
|
||||
- HAL: Fixed wrong conditional branches in _adc_isr_error_code (bug #751).
|
||||
- HAL: Fixed bug in STM32/ADCv3 (bug #750).
|
||||
- HAL: Fixed OPT settings and added board folder in STM32F4xx-USB_CDC demo
|
||||
(bug #749).
|
||||
- HAL: Fixed wrong comments in STM32F4xx GPT demo (bug #748).
|
||||
- HAL: Fixed wrong comments and indents in STM32F7xx-GPT-ADC and
|
||||
STM32L4-GPT-ADC demos (bug #747).
|
||||
- HAL: Fixed wrong comments and indent in STM32F4xx and STM32F7xx
|
||||
hal_lld.h (bug #746).
|
||||
- HAL: Removed wrong SAI masks in STM32F4xx hal_lld.h (bug #745).
|
||||
- HAL: Fixed wrong mask placement in STM32F4xx hal_lld.h (bug #744).
|
||||
- HAL: Fixed wrong indent in STM32F4xx hal_lld.h (bug #743).
|
||||
- HAL: Removed unused macros in STM32F7xx and STM32F4xx hal_lld.h (bug #742).
|
||||
- HAL: Fixed Doxygen related macros in STM32F7xx, STM32L0xx and STM32L4xx
|
||||
lld files (bug #741).
|
||||
- HAL: Fixed bug in VREF enable/disable functions in ADCv3 driver
|
||||
(bug #740).
|
||||
- HAL: Fixed DAC driver not enabled for STM32F4x7 and STM32F4x9 devices
|
||||
(bug #739).
|
||||
- HAL: Fixed bug in interrupt handlers in STM32F4xx EXT driver (bug #738).
|
||||
- HAL: Fixed clock enabling in STM32 ADCv3 (bug #737).
|
||||
- HAL: Fixed missing SDC initialization in RT-STM32F103-OLIMEX_STM32_P103 demo
|
||||
(bug #735).
|
||||
- HAL: Fixed STM32 dac bug when using only channel 2 in direct mode (bug #734).
|
||||
- HAL: Fixed PAL lines support not working for STM32 GPIOv1 (bug #730).
|
||||
- RT: Fixed bug in chSchPreemption() function (bug #728).
|
||||
- HAL: Fixed prescaler not initialized in STM32 ADCv1 (bug #725).
|
||||
- HAL: Fixed missing DAC section in STM32F072 mcuconf.h files (bug #724).
|
||||
|
||||
*** 16.1.4 ***
|
||||
- ALL: Startup files relicensed under Apache 2.0.
|
||||
- RT: Added RT-STM32L476-DISCOVERY demo.
|
||||
- HAL: Added more STM32L4xx testhal demos.
|
||||
- HAL: Updated all STM32F476 mcuconf.h files.
|
||||
- VAR: Fixed palSetMode glitching outputs (bug #723).
|
||||
- VAR: Fixed error in STM32 PWM driver regarding channels 4 and 5 (bug #722).
|
||||
- VAR: Fixed GCC 5.2 crashes while compiling ChibiOS (bug #718).
|
||||
- HAL: Fixed wrong definition in STM32L4 ext_lld_isr.h (bug #717).
|
||||
- HAL: Fixed wrong definitions in STM32F746 mcuconf.h files (bug #716)
|
||||
- RT: Fixed wrong SysTick initialization in generic demos (bug #715).
|
||||
- NIL: Fixed wrong SysTick initialization in generic demos (bug #715).
|
||||
- HAL: Fixed usbStop does not resume threads suspended in synchronous calls
|
||||
to usbTransmit (bug #714).
|
||||
- VAR: Fixed state check in lwIP when SYS_LIGHTWEIGHT_PROT is disabled
|
||||
(bug #713).
|
||||
- RT: Fixed race condition in RT registry (bug #712).
|
||||
- HAL: Fixed IAR warnings in ext_lld_isr.c (bug #711).
|
||||
- HAL: Fixed build error caused by STM32 SPIv1 driver (bug #710).
|
||||
- HAL: Fixed shift of signed constant causes warnings with IAR compiler
|
||||
(bug #709).
|
||||
- HAL: Fixed wrong RTCv2 settings for STM32L4 (bug #708).
|
||||
- HAL: Fixed missing OTGv1 support for STM32L4 (bug #707).
|
||||
- NIL: Fixed ARM errata 752419 (bug #706).
|
||||
- RT: Fixed ARM errata 752419 (bug #706).
|
||||
|
||||
*** 16.1.3 ***
|
||||
- HAL: Fixed unused variable in STM32 SPIv2 driver (bug #705).
|
||||
- HAL: Fixed chDbgAssert() still called from STM32 SPIv1 driver (bug #704).
|
||||
- HAL: Fixed broken demo for STM32F429 (bug #703).
|
||||
- HAL: Fixed wrong macro definition for palWriteLine (bug #702).
|
||||
- HAL: Fixed error is buffer queues (bug #701).
|
||||
- HAL: Fixed typos in STM32F0 RCC enable/disable macros (bug #698).
|
||||
- RT: Fixed useless call to chTMStartMeasurementX() in _thread_init()
|
||||
(bug #697).
|
||||
- VAR: Fixed missing time conversion in lwIP arch module (bug #696, again).
|
||||
|
||||
*** 16.1.2 ***
|
||||
- VAR: Fixed missing time conversion in lwIP arch module (bug #696).
|
||||
- HAL: Fixed incorrect handling of TIME_IMMEDIATE in the HAL buffer queues
|
||||
(bug #695).
|
||||
|
||||
*** 16.1.1 ***
|
||||
- NIL: NIL_CFG_USE_EVENTS not properly checked in NIL (bug #694).
|
||||
- RT: Fixed ISR statistics are not updated from a critical zone in RT
|
||||
(bug #693).
|
||||
- NIL: Fixed NIL test suite calls I and S functions outside critical zone
|
||||
(bug #692).
|
||||
- NIL: Fixed protocol violation in NIL OSAL (bug #691).
|
||||
- HAL: Fixed error in HAL buffer queues (bug #689).
|
||||
- RT: Fixed tm_stop - best case bug (bug #688).
|
||||
- RT: Several minor documentation/formatting-related fixes.
|
||||
|
||||
*** 16.1.0 ***
|
||||
- RT: Added CodeWarrior compiler support to the e200 port.
|
||||
- HAL: Added support for STM32F446.
|
||||
- HAL: Introduced preliminary support for STM32F7xx devices.
|
||||
- HAL: Introduced preliminary support for STM32L4xx devices.
|
||||
- HAL: Introduced preliminary support for STM32L0xx devices.
|
||||
- HAL: Increased performance of USBv1 and OTGv1 driver thanks to better
|
||||
data copying code.
|
||||
- HAL: Enhanced Serial-USB driver using the new buffers queues object.
|
||||
- HAL: Simplified USB driver, queued API has been removed.
|
||||
- HAL: Enhanced the CAN driver with I-class functions. Now it is possible
|
||||
to exchange frames from ISRs.
|
||||
- HAL: Added watchdog driver model (WDG) and STM32 implementation on IWDG.
|
||||
- HAL: Added synchronous API and mutual exclusion to the UART driver.
|
||||
- HAL: Added PAL driver for STM32L4xx GPIOv3 peripheral.
|
||||
- HAL: Added I2S driver for STM32 SPIv2 peripheral.
|
||||
- HAL: Added demos an- d board files for ST's Nucleo32 boards (F031, F042, F303).
|
||||
- HAL: Added "lines" handling to PAL driver, lines are identifiers of both
|
||||
ports and pins encoded in a single value. Added a set of macros
|
||||
operating on lines.
|
||||
- HAL: Merged the latest STM32F3xx CMSIS headers.
|
||||
- HAL: Merged the latest STM32F2xx CMSIS headers and fixed the support
|
||||
broken in 3.0.x.
|
||||
- RT: Added new function chVTGetTimersStateI() returning the state of the
|
||||
timers list.
|
||||
- HAL: Now STM32 USARTv2 driver initializes the ISR vectors statically on
|
||||
initialization. Disabling them was not necessary and added to
|
||||
the code size.
|
||||
- HAL: Added DMA channel selection on STM32F030xC devices.
|
||||
- HAL: Added serial driver support for USART 3..6 on STM32F030xC devices.
|
||||
- HAL: Merged the newest ST header files for STM32F1xx.
|
||||
- HAL: Added support for differential mode to the STM32F3xx ADC driver.
|
||||
- HAL: Experimental isochronous capability added to STM32 OTGv1 driver.
|
||||
- HAL: Modified the serial-USB driver to reject write/read attempts if the
|
||||
underlying USB is not in active state. In case of disconnection the
|
||||
SDU driver broadcasts a CHN_DISCONNECTED event.
|
||||
- HAL: Modified the USB driver to have a separate USB_SUSPENDED state, this
|
||||
allows the application to detect if the USB is communicating or if
|
||||
it is disconnected or powered down.
|
||||
- HAL: Added wake-up and suspend events to the STM32 OTGv1 driver.
|
||||
- HAL: STM32 USB/OTG buffers and queues do not more require to be aligned in
|
||||
position and size.
|
||||
- VAR: Improved GCC rules.ld, now it is possible to assign the heap to any
|
||||
of the available RAM regions.
|
||||
- HAL: STM32 GPT, ICU and PWM driver enhancements. Now it is possible to
|
||||
suppress default ISRs by defining STM32_TIMx_SUPPRESS_ISR.
|
||||
The application is now able to define custom handlers if required
|
||||
or simply save space if the driver callbacks are not used.
|
||||
Now the functions xxx_lld_serve_interrupts() have global scope, this
|
||||
way custom ISRs can call them from outside the driver module.
|
||||
- HAL: Added TIM units use cross-check in STM32 GPT, ICU, PWM and ST drivers,
|
||||
now use collisions are explicitly reported.
|
||||
- NIL: Added polled delays required to fix bug #629.
|
||||
- HAL: Added support for I2C3 and I2C4 to the STM32 I2Cv2 I2C driver.
|
||||
- HAL: Added support for SPI4...SPI6 to the STM32 SPIv2 SPI driver.
|
||||
- HAL: Added support for UART4...UART8 to the STM32 UARTv2 UART driver.
|
||||
- HAL: Added support for UART7 and UART8,LPUART1 to the STM32 UARTv2 serial
|
||||
driver.
|
||||
- HAL: STM32F3xx and STM32L4xx devices now share the same ADCv3 driver.
|
||||
- HAL: STM32F2xx, STM32F4xx and STM32F7xx devices now share the same ADCv2
|
||||
and DMAv2 drivers.
|
||||
- HAL: STM32F0xx and STM32L0xx devices now share the same ADCv1 driver.
|
||||
- HAL: STM32F0xx, STM32F1xx, STM32F3xx, STM32F37x, STM32L0xx and STM32L1xx
|
||||
devices now share the same DMAv1 driver.
|
||||
- HAL: New STM32 shared DMAv2 driver supporting channel selection and
|
||||
data cache invalidation (F2, F4, F7).
|
||||
- HAL: New STM32 shared DMAv1 driver supporting channel selection and fixing
|
||||
the behavior with shared IRQs (F0, L0).
|
||||
- HAL: New STM32 ADCv3 driver supporting middle STM32 devices (F3, L4).
|
||||
- HAL: New STM32 ADCv2 driver supporting large STM32 devices (F2, F4, F7).
|
||||
- HAL: New STM32 ADCv1 driver supporting small STM32 devices (F0, L0).
|
||||
- HAL: Introduced support for TIM21 and TIM22 in STM32 ST driver.
|
||||
- HAL: Updated STM32F0xx headers to STM32CubeF0 version 1.3.0. Added support
|
||||
for STM32F030xC, STM32F070x6, STM32F070xB, STM32F091xC,
|
||||
STM32F098xx devices.
|
||||
- RT: Fixed ARM port enforcing THUMB mode (bug #687)(backported to 3.0.5).
|
||||
- HAL: Fixed HAL drivers still calling RT functions (bug #686)(backported
|
||||
to 3.0.5).
|
||||
- HAL: Fixed chprintf() still calling RT functions (bug #684)(backported
|
||||
to 3.0.5).
|
||||
- HAL: Fixed STM32 ICU driver uses chSysLock and chSysUnlock (bug #681)
|
||||
(backported to 3.0.4).
|
||||
- HAL: Fixed wrong DMA priority assigned to STM32F3 ADC3&4 (bug #680)
|
||||
(backported to 3.0.4 and 2.6.10).
|
||||
- HAL: Fixed invalid DMA settings in STM32 DACv1 driver in dual mode
|
||||
(bug #677)(backported to 3.0.4).
|
||||
- HAL: Fixed usbStop() hangs in STM32 OTGv1 driver (bug #674)(backported
|
||||
to 3.0.4 and 2.6.10).
|
||||
- HAL: Fixed STM32 I2Cv2 driver fails on transfers greater than 255 bytes
|
||||
(bug #673)(backported to 3.0.4).
|
||||
- HAL: Fixed STM32 I2Cv2 DMA conflict (bug #671)(backported to 3.0.4).
|
||||
- HAL: Fixed I2S clock selection not working in STM32F4xx HAL (bug #667)
|
||||
(backported to 3.0.4 and 2.6.10).
|
||||
- HAL: Fixed differences in STM32F3 ADC macro definitions (bug #665)
|
||||
(backported to 3.0.3).
|
||||
- HAL: Fixed RTC module loses day of week when converting (bug #664)
|
||||
(backported to 3.0.3).
|
||||
- HAL: Fixed STM32 USBv1 broken isochronous endpoints (bug #662)
|
||||
(backported to 3.0.4).
|
||||
- HAL: Fixed STM32 USBv1 wrong multiplier when calculating descriptor address
|
||||
in BTABLE (bug #661)(backported to 3.0.4 and 2.6.10).
|
||||
- HAL: Fixed STM32 USBv1 does not make use of BTABLE_ADDR define (bug #660)
|
||||
(backported to 3.0.4 and 2.6.10).
|
||||
- HAL: Fixed invalid class type for sdPutWouldBlock() and sdGetWouldBlock()
|
||||
functions (bug #659)(backported to 3.0.3 and 2.6.10).
|
||||
- HAL: Fixed STM32F0xx HAL missing MCOPRE support (bug #658).
|
||||
- HAL: Fixed STM32L1xx HAL errors in comments (bug #657)(backported
|
||||
to 3.0.3 and 2.6.10).
|
||||
- HAL: Fixed STM32 USBv1 wrong buffer alignment (bug #656)(backported
|
||||
to 3.0.3 and 2.6.10).
|
||||
- HAL: Fixed wrong vector name for STM32F3xx EXTI33 (bug #655)(backported
|
||||
to 3.0.3 and 2.6.10).
|
||||
- HAL: Fixed nvicEnableVector broken for Cortex-M0 (bug #654)(backported
|
||||
to 3.0.3).
|
||||
- HAL: Fixed no demo for nucleo STM32F072RB board (bug #652).
|
||||
- HAL: Fixed missing RCC and ISR definitions for STM32F0xx timers (bug #651)
|
||||
(backported to 3.0.3 and 2.6.10).
|
||||
- HAL: Fixed incorrect compiler check in STM32 RTCv1 driver (bug #650)
|
||||
(backported to 3.0.3).
|
||||
- HAL: Fixed incorrect case in path (bug #649).
|
||||
- HAL: Fixed STM32F3xx HAL checking for non-existing macros (bug #648)
|
||||
(backported to 3.0.3 and 2.6.10).
|
||||
- HAL: Fixed error in STM32F030 EXT driver (bug #647)(backported to 3.0.3).
|
||||
- RT: Fixed problem with chVTIsTimeWithinX() (bug #646)(backported to
|
||||
3.0.3 and 2.6.10).
|
||||
- VAR: Fixed _sbrk_r with incr == 0 should be valid (bug #645)(backported to
|
||||
3.0.3 and 2.6.10).
|
||||
- RT: Fixed issues in CMSIS RTOS interface (bug #644)(backported to 3.0.3).
|
||||
- HAL: Fixed RT dependency in STM32 SDCv1 driver (bug #643)(backported
|
||||
to 3.0.2).
|
||||
- VAR: Fixed incorrect working area size in LwIP creation in demos (bug #642)
|
||||
(backported to 3.0.2 and 2.6.10).
|
||||
- HAL: Fixed error in hal_lld_f100.h checks (bug #641)(backported to 3.0.2
|
||||
and 2.6.10).
|
||||
- HAL: Fixed volatile variable issue in I/O queues, both RT and HAL (bug #640)
|
||||
(backported to 3.0.2).
|
||||
- HAL: Fixed wrong DMA assignment for I2C1 in STM32F302xC registry (bug #637)
|
||||
(backported to 3.0.2).
|
||||
- HAL: Fixed missing timers 5, 6, 7, 10 & 11 from STM32L1 HAL port (bug #636)
|
||||
(backported to 3.0.2).
|
||||
- VAR: Fixed CRT0_CALL_DESTRUCTORS not utilized in crt0_v7m.s (bug #635)
|
||||
(backported to 3.0.2).
|
||||
- HAL: Fixed wrong ld file in STM32F072xB USB CDC demo (bug #634)(backported
|
||||
to 3.0.2).
|
||||
- NIL: Fixed Wrong assertion in NIL chSemResetI() and NIL OSAL
|
||||
osalThreadDequeueAllI() (bug #633)(backported to 3.0.2).
|
||||
- RT: Fixed problem with RT mutexes involving priority inheritance (bug #632)
|
||||
(backported to 3.0.2 and 2.6.10).
|
||||
- HAL: Fixed HAL to RT dependency in STM32 DAC driver (bug #631)(backported
|
||||
to 3.0.2).
|
||||
- HAL: Fixed problem with STM32 I2S driver restart (bug #630)(backported
|
||||
to 3.0.2).
|
||||
- HAL: Fixed STM32F3xx ADC driver uses US2RTC directly (bug #629)(backported
|
||||
to 3.0.2).
|
||||
- HAL: Fixed CEC clock cannot be disabled on STM32F0xx (bug #628)
|
||||
(backported to 3.0.1).
|
||||
- VAR: Fixed lwIP arch code breaks with a 16-bit systick timer (bug #627)
|
||||
(backported to 3.0.1).
|
||||
- HAL: Fixed broken MAC driver for STM32F107 (bug #626)(backported to 3.0.1).
|
||||
- NIL: Fixed missing configuration options from NIL PPC port (bug #625)
|
||||
(backported to 3.0.1).
|
||||
- HAL: Fixed wrong offset in STM32 DAC driver (bug #624)(backported to 3.0.1).
|
||||
- HAL: Fixed crash on STM32F030x4/6 devices (bug #623)(backported to 3.0.1).
|
||||
- HAL: Fixed duplicated doxygen tag in STM32F4xx hal_lld.h file (bug #621)
|
||||
(backported to 3.0.1 and 2.6.9).
|
||||
- HAL: Fixed STM32F042 registry error (bug #620)(backported to 3.0.1).
|
||||
- HAL: Fixed wrong check in canReceive() (bug #619)(backported to 3.0.1
|
||||
and 2.6.9).
|
||||
- HAL: Fixed wrong EXTI[18] vector number on STM32F373 (bug #618)(backported
|
||||
to 3.0.1 and 2.6.9).
|
||||
- HAL: Fixed wrong check on STM32_LSE_ENABLED definition in STM32L1xx HAL port
|
||||
(bug #617)(backported to 3.0.1 and 2.6.9).
|
||||
- HAL: Fixed rtcConvertDateTimeToFAT() incorrect conversion (bug #615)
|
||||
(backported to 3.0.1).
|
||||
- HAL: Fixed missing UART7 and UART8 support on STM32F4xx family (bug #612).
|
||||
- HAL: Fixed outdated CMSIS headers for STM32F1xx devices (bug #609).
|
||||
- HAL: Fixed CAN errors (bug #387).
|
||||
- HAL: Fixed USB HS ULPI Support (except board files because patch originally
|
||||
targeted version 2.6.x)(bug #377).
|
||||
|
||||
*** 3.0.0 ***
|
||||
- NEW: Added an initialization function to the lwIP bindings, now it is
|
||||
sufficient to call lwipInit(NULL); in order to start the subsystem.
|
||||
Demo updated.
|
||||
- RT: Fixed compilation error in RT when registry is disabled (bug #614).
|
||||
- NIL: Fixed OSAL_ST_MODE not defined in AVR port (bug #613).
|
||||
- NIL: Fixed nilrtos redefinition of systime_t (bug #611).
|
||||
- HAL: Fixed TIM2 wrongly classified as 32bits in STM32F1xx devices
|
||||
(bug #610).
|
||||
|
||||
*** 3.0.0p6 ***
|
||||
- HAL: Removed call to localtime_r() function for non-GNU compilers in
|
||||
STM32F1xx RTC driver.
|
||||
- DEM: Fixed the FatFS demo timeout, now it is expressed in milliseconds.
|
||||
- DEM: Added -Wundef to all the demos and test programs in order to find
|
||||
common error cases.
|
||||
- NIL: Added INTC priorities check to the e200z port.
|
||||
- RT: Added INTC priorities check to the e200z port.
|
||||
- HAL: Added support for CAN in STM32F042/72 devices.
|
||||
- HAL: Added support for extra DMA channels in STM32F072 devices.
|
||||
- HAL: Modified the STM32 CAN driver to support unified IRQs.
|
||||
- RT: SPE-related issue in e200z ports (bug #607).
|
||||
- NIL: SPE-related issue in e200z ports (bug #607).
|
||||
- HAL: Fixed dependency between STM32 MAC driver and RT (bug #606).
|
||||
- HAL: Fixed wrong macro names in STM32F0xx HAL driver (bug #605).
|
||||
- HAL: Fixed wrong check on ADC3 in STM32F3xx ADC driver (bug #604).
|
||||
- HAL: Fixed wrong macro names in STM32F3xx HAL driver (bug #603).
|
||||
- HAL: Fixed errors in STM32 OTGv1 driver (bug #601).
|
||||
- DEM: Fixed missing paths in e200z demos (bug #600).
|
||||
- HAL: Fixed error in platform_f105_f107.mk file (bug #599).
|
||||
- HAL: Fixed issue in DMA drivers when channels share ISRs (bug #597).
|
||||
|
||||
*** 3.0.0p5 ***
|
||||
- HAL: Added no-DMA mode to the STM32 I2Cv2 driver.
|
||||
- HAL: Added DAC support to all STM32 sub-platforms, added another demo for
|
||||
the STM32F3xx.
|
||||
- HAL: Fixed STM32 USARTv1: incorrect txend2_cb callback behavior (bug #596).
|
||||
- DEM: Fixed wrong comment in ARMCM4-STM32F401RE-NUCLEO demo (bug #595).
|
||||
- HAL: Fixed STM32 SDC LLD driver initialization with Asserts disabled
|
||||
(bug #594).
|
||||
|
||||
*** 3.0.0p4 ***
|
||||
- NEW: Added no-DMA mode to STM32 I2Cv2 driver.
|
||||
- BLD: New "smart build" mode added to makefiles, now only used files are
|
||||
compiled.
|
||||
- HAL: Change to the Serial_USB driver, now the INT endpoint is no more
|
||||
mandatory.
|
||||
- HAL: New DAC driver implementation for STM32F4xx.
|
||||
- HAL: Fixed SDC STM32 driver broken in 50MHz mode (bug #592).
|
||||
- HAL: Fixed STM32 RTC SSR Register Counts Down (bug #591).
|
||||
- HAL: Fixed STM32 RTC PRER Register not being set in init (bug #590).
|
||||
- HAL: Fixed STM32F334 does not have an EXT18 interrupt (bug #588).
|
||||
- HAL: Fixed STM32L1xx USB is missing disconnect/connect macros (bug #587).
|
||||
- HAL: Fixed wrong vector number for STM32L1xx USB (bug #586).
|
||||
- HAL: Fixed spurious TC interrupt in STM32 UART (v1 and v2) driver (bug #584).
|
||||
- HAL: Fixed invalid checks on STM32L1xx LSI and LSE clocks (bug #583).
|
||||
- HAL: Fixed RCC CAN2 macros missing in STM32F1xx platform (bug #582).
|
||||
- HAL: Fixed STM32 I2Cv2 driver issue (bug 581).
|
||||
- BLD: Fixed ules.mk: adding "PRE_MAKE_ALL_RULE_HOOK" (bug #580).
|
||||
- BLD: Fixed rules.mk should not explicitly depend on $(BUILDDIR) (bug #579).
|
||||
|
||||
*** 3.0.0p3 ***
|
||||
- RT: Fixed tickless mode instability in RT (bug 577).
|
||||
|
||||
*** 3.0.0p2 ***
|
||||
- HAL: Fixed instances of RT API in HAL drivers (bug 574).
|
||||
- RT: Fixed system time overflow issue in tickless mode (bug 573).
|
||||
- RT: Improvements to the IRQ_STORM applications.
|
||||
|
||||
*** 3.0.0p1 ***
|
||||
- First 3.0.0 release, see release note 3.0.0.
|
Loading…
Reference in New Issue