diff --git a/demos/ARMCM3-STM32L152-DISCOVERY/keil/ch.uvproj b/demos/ARMCM3-STM32L152-DISCOVERY/keil/ch.uvproj
index 1e43a6c18..dcdb0cfb9 100644
--- a/demos/ARMCM3-STM32L152-DISCOVERY/keil/ch.uvproj
+++ b/demos/ARMCM3-STM32L152-DISCOVERY/keil/ch.uvproj
@@ -346,7 +346,7 @@
__heap_base__=Image$$RW_IRAM1$$ZI$$Limit __heap_end__=Image$$RW_IRAM2$$Base
- ..\;..\..\..\os\kernel\include;..\..\..\os\ports\RVCT\ARMCMx;..\..\..\os\ports\RVCT\ARMCMx\STM32L1xx;..\..\..\os\hal\include;..\..\..\os\hal\platforms\STM32;..\..\..\os\hal\platforms\STM32\GPIOv2;..\..\..\os\hal\platforms\STM32L1xx;..\..\..\boards\ST_STM32L_DISCOVERY;..\..\..\test
+ ..\;..\..\..\os\kernel\include;..\..\..\os\ports\common\ARMCMx;..\..\..\os\ports\common\ARMCMx\CMSIS\include;..\..\..\os\ports\RVCT\ARMCMx;..\..\..\os\ports\RVCT\ARMCMx\STM32L1xx;..\..\..\os\hal\include;..\..\..\os\hal\platforms\STM32;..\..\..\os\hal\platforms\STM32\GPIOv2;..\..\..\os\hal\platforms\STM32L1xx;..\..\..\boards\ST_STM32L_DISCOVERY;..\..\..\test
@@ -421,11 +421,6 @@
1
..\..\..\os\ports\RVCT\ARMCMx\chcore_v7m.c
-
- nvic.c
- 1
- ..\..\..\os\ports\RVCT\ARMCMx\nvic.c
-
chcore.h
5
@@ -441,11 +436,6 @@
5
..\..\..\os\ports\RVCT\ARMCMx\chtypes.h
-
- nvic.h
- 5
- ..\..\..\os\ports\RVCT\ARMCMx\nvic.h
-
cmparams.h
5
@@ -456,6 +446,16 @@
2
..\..\..\os\ports\RVCT\ARMCMx\STM32L1xx\vectors.s
+
+ nvic.c
+ 1
+ ..\..\..\os\ports\common\ARMCMx\nvic.c
+
+
+ nvic.h
+ 5
+ ..\..\..\os\ports\common\ARMCMx\nvic.h
+
@@ -676,16 +676,56 @@
hal
+
+ usb.c
+ 1
+ ..\..\..\os\hal\src\usb.c
+
adc.c
1
..\..\..\os\hal\src\adc.c
+
+ can.c
+ 1
+ ..\..\..\os\hal\src\can.c
+
+
+ ext.c
+ 1
+ ..\..\..\os\hal\src\ext.c
+
+
+ gpt.c
+ 1
+ ..\..\..\os\hal\src\gpt.c
+
hal.c
1
..\..\..\os\hal\src\hal.c
+
+ i2c.c
+ 1
+ ..\..\..\os\hal\src\i2c.c
+
+
+ icu.c
+ 1
+ ..\..\..\os\hal\src\icu.c
+
+
+ mac.c
+ 1
+ ..\..\..\os\hal\src\mac.c
+
+
+ mmc_spi.c
+ 1
+ ..\..\..\os\hal\src\mmc_spi.c
+
pal.c
1
@@ -696,80 +736,85 @@
1
..\..\..\os\hal\src\pwm.c
+
+ rtc.c
+ 1
+ ..\..\..\os\hal\src\rtc.c
+
+
+ sdc.c
+ 1
+ ..\..\..\os\hal\src\sdc.c
+
serial.c
1
..\..\..\os\hal\src\serial.c
+
+ serial_usb.c
+ 1
+ ..\..\..\os\hal\src\serial_usb.c
+
spi.c
1
..\..\..\os\hal\src\spi.c
- adc.h
- 5
- ..\..\..\os\hal\include\adc.h
+ tm.c
+ 1
+ ..\..\..\os\hal\src\tm.c
- hal.h
- 5
- ..\..\..\os\hal\include\hal.h
-
-
- pal.h
- 5
- ..\..\..\os\hal\include\pal.h
-
-
- pwm.h
- 5
- ..\..\..\os\hal\include\pwm.h
-
-
- serial.h
- 5
- ..\..\..\os\hal\include\serial.h
-
-
- spi.h
- 5
- ..\..\..\os\hal\include\spi.h
+ uart.c
+ 1
+ ..\..\..\os\hal\src\uart.c
platform
-
- adc_lld.c
- 1
- ..\..\..\os\hal\platforms\STM32L1xx\adc_lld.c
-
-
- adc_lld.h
- 5
- ..\..\..\os\hal\platforms\STM32L1xx\adc_lld.h
-
-
- hal_lld.c
- 1
- ..\..\..\os\hal\platforms\STM32L1xx\hal_lld.c
-
-
- hal_lld.h
- 5
- ..\..\..\os\hal\platforms\STM32L1xx\hal_lld.h
-
pal_lld.c
1
..\..\..\os\hal\platforms\STM32\GPIOv2\pal_lld.c
- pal_lld.h
- 5
- ..\..\..\os\hal\platforms\STM32\GPIOv2\pal_lld.h
+ uart_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32\uart_lld.c
+
+
+ can_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32\can_lld.c
+
+
+ ext_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32\ext_lld.c
+
+
+ gpt_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32\gpt_lld.c
+
+
+ i2c_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32\i2c_lld.c
+
+
+ icu_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32\icu_lld.c
+
+
+ mac_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32\mac_lld.c
pwm_lld.c
@@ -777,49 +822,34 @@
..\..\..\os\hal\platforms\STM32\pwm_lld.c
- pwm_lld.h
- 5
- ..\..\..\os\hal\platforms\STM32\pwm_lld.h
+ sdc_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32\sdc_lld.c
serial_lld.c
1
..\..\..\os\hal\platforms\STM32\serial_lld.c
-
- spi_lld.h
- 5
- ..\..\..\os\hal\platforms\STM32\spi_lld.h
-
spi_lld.c
1
..\..\..\os\hal\platforms\STM32\spi_lld.c
-
- serial_lld.h
- 5
- ..\..\..\os\hal\platforms\STM32\serial_lld.h
-
stm32_dma.c
1
..\..\..\os\hal\platforms\STM32L1xx\stm32_dma.c
- stm32_dma.h
- 5
- ..\..\..\os\hal\platforms\STM32L1xx\stm32_dma.h
+ adc_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32L1xx\adc_lld.c
- stm32_rcc.h
- 5
- ..\..\..\os\hal\platforms\STM32L1xx\stm32_rcc.h
-
-
- stm32l1xx.h
- 5
- ..\..\..\os\hal\platforms\STM32L1xx\stm32l1xx.h
+ hal_lld.c
+ 1
+ ..\..\..\os\hal\platforms\STM32L1xx\hal_lld.c