Commit Graph

1325 Commits (d35532b11a7a9f970701a4ddefa33288609d672d)

Author SHA1 Message Date
bcostm 9ac335a095 [NUCLEO_L152RE] Typo corrections 2014-03-20 11:41:54 +01:00
bcostm daefeedf1a [NUCLEO_L152RE] Change the check of I2C clock frequency + update stop function + cleanup 2014-03-20 11:41:00 +01:00
bcostm a8236d872a [NUCLEO_L152RE] Add more ANALOG_IN, ANALOG_OUT, PWM, SERIAL and SPI pins 2014-03-20 11:32:29 +01:00
bcostm ad9f894f10 [NUCLEO_L152RE] Change system clock to 32MHz + restart PLL after deepsleep 2014-03-20 11:28:30 +01:00
Przemek Wirkus c0263fdf4d Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-03-19 19:57:29 +00:00
Przemek Wirkus d07ed138b2 Added us Timer proper host test automation 2014-03-19 19:57:02 +00:00
Bogdan Marinescu ed8481eb97 Updated library version 2014-03-19 18:08:26 +00:00
Emilio Monti 92d3e97e18 Merge pull request #219 from tkuyucu/master
Merge after reverting the python scripts to generating hex file with UICR
2014-03-19 17:01:43 +00:00
Bogdan Marinescu cf8fd1cf86 Merge branch 'master' of git://github.com/bcostm/mbed into bcostm-master
Conflicts:
	workspace_tools/targets.py
2014-03-19 15:58:10 +00:00
bcostm 87a83a8603 [NUCLEO_F401RE] Fix compilation error with error.h include file 2014-03-19 15:38:39 +01:00
tkuyucu d268bb0131 Merge remote-tracking branch 'upstream/master' 2014-03-19 15:17:09 +01:00
dinau 1683e9fba2 STM32VL-Discovery initial port 2014-03-19 21:39:01 +09:00
Emilio Monti ace35dfba3 Merge pull request #215 from bcostm/master
[NUCLEO_F302R8] Add cmsis and hal files + change F401RE clock to 84MHz
2014-03-19 10:06:36 +00:00
bcostm 64e19dd0ad [NUCLEO_F401RE] Typo corrections 2014-03-19 09:57:27 +01:00
bcostm 5610184f9f [NUCLEO_F401RE] Put back SERIAL_TX and SERIAL_RX pins
Even if it is a duplication of USB_TX/RX pins, it is better to have them
available.
2014-03-19 09:46:26 +01:00
bcostm a98c380cf9 [NUCLEO_F401RE] Add INTERRUPT_IN to all pins 2014-03-19 09:44:20 +01:00
bcostm 4e907a09fd [NUCLEO_F401RE] Add more ANALOG_IN, I2C and SPI pins 2014-03-19 09:42:33 +01:00
bcostm 9b8352d6db [NUCLEO_F401RE] Add more SERIAL and PWM pins 2014-03-19 09:40:29 +01:00
bcostm 5963a310e3 [NUCLEO_F401RE] Restart PLL after deepsleep 2014-03-19 09:34:30 +01:00
ban4jp e86d75f3f1 Merge remote-tracking branch 'upstream/master' 2014-03-19 10:01:30 +09:00
ban4jp f210d81b56 [KL46Z] Add mbed-rtos define for KL46Z 2014-03-19 03:56:17 +09:00
bcostm 75716e08c5 [NUCLEO_F302R8] Add hal files 2014-03-18 15:33:34 +01:00
bcostm e7262047a8 [NUCLEO_F302R8] Add cmsis files (last part) 2014-03-18 15:30:38 +01:00
bcostm cc53000db8 [NUCLEO_F302R8] Add cmsis files (2nd part) 2014-03-18 15:27:34 +01:00
bcostm 041839a2ba [NUCLEO_F302R8] Add cmsis files (first part) 2014-03-18 15:23:47 +01:00
bcostm 38c5c47000 Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-03-18 14:58:04 +01:00
Emilio Monti e2574ebaa5 Merge pull request #213 from dinau/gcc_arm_lpc11u35_stm32f407_mod
[GCC_ARM][LPC11U35][LPC1114][STMF407]: Modified build scripts
2014-03-18 13:24:49 +00:00
dinau 64df527fed Merge branch 'mbed.org/master'
Conflicts:
	workspace_tools/export/gccarm.py
2014-03-18 22:12:32 +09:00
bcostm e0bf1e3094 Merge branch 'master' of https://github.com/mbedmicro/mbed
Conflicts:
	libraries/mbed/targets/cmsis/TARGET_STM/TARGET_NUCLEO_F401RE/stm32f4xx_hal_conf.h
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/spi_api.c
2014-03-18 13:17:53 +01:00
Mihail Stoyanov 3e40310534 Rename Nordic soft-device folder. The mbed IDE rejects dots in folder names. 2014-03-18 12:15:16 +00:00
dinau 218ea3a4da [GCC_ARM][LPC11U35][LPC1114][STMF407]: Modified build scripts
1. Added to Makefile templates for LPC11U35 and STM32F407
2. Added output facility of HEX file, LIST file and MAP file
2014-03-18 20:32:53 +09:00
Bogdan Marinescu c013d6e6a9 Restore serial_api.c on LPC1768
Michael's GPIO fix changed this to a previous version, this commit restores
it to the last version.
2014-03-18 10:53:33 +00:00
Przemek Wirkus 6cb99d9bd7 Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-03-17 17:39:30 +00:00
Przemek Wirkus 47a8df4b51 TC and UDP client updates. Added automation information to test suite. Added new peripherial: 'ethernet' 2014-03-17 17:39:24 +00:00
Przemek Wirkus b345a189cf Added implementation for TCP and UDP client 2014-03-17 17:29:18 +00:00
dinau 2d4fc59956 [LPC11U35][GCC_ARM][GCC_CR]: Modificatins for build.
1. Added to the export table in export_test.py.
2. Added to the build table in build_release.py
3. Added the compilation directives to RTX os files.

Notice:
 It would be better to change WORDS_STACK_SIZE definition in libraries/rtos/rtx/cmsis_os.h
 from 512 to 128 for LPC11U35 and LPC1114 micros compiled by GCC toolchain with newlib-nano,
 but I don't know the good way at this moment.
2014-03-17 23:45:39 +09:00
Przemek Wirkus 34e19e31e5 Added automation tests' implementation for TCP_Server, UDP_Server and STDIO 2014-03-17 11:58:35 +00:00
dinau e82279b5d5 [LPC11U35][GCC_CR] Added export functionality 2014-03-16 22:16:05 +09:00
dinau 07db34211f Change folder structure 2014-03-15 15:24:07 +09:00
dinau bf12cc5d67 [LPC1114][GCC_CR] Added export functionality 2014-03-15 10:21:36 +09:00
Toyomasa Watarai 7640da9126 [LPC1549] Fixed initial value of stack pointer 2014-03-15 00:05:02 +09:00
Emilio Monti 7d88efe969 Merge pull request #208 from dreschpe/master
Add additional peripherie for ST Nucleo L152 board
2014-03-14 09:54:17 +00:00
dreschpe 71bbdb6f1f Add additional peripherie for ST Nucleo L152 board
Add code for . UART 3-5, SPI 2 + 3, I2C2
2014-03-13 23:38:09 +01:00
tkuyucu 1f962a16a4 Fixed syntactic bug in board.c 2014-03-13 12:37:09 +01:00
tkuyucu 4086fa09d9 merge with mbedmicro 2014-03-13 12:28:59 +01:00
tkuyucu 0f68519f85 Update after hex enabled firmware release
Removed SystemInit write to FWID.
Added DEVICE_ERROR_PATTERN for error signaling.
Exception for NRF added to board.c to keep irqs enabled since timer irq
is needed for the wait function.
Button pin names changed from BUTTON0 to BUTTON1 and from BUTTON1 to
BUTTON2.
2014-03-13 10:59:09 +01:00
Toyomasa Watarai 84a654d200 [LPC1549] Added AnalogOut API and PWM improvement
Added AnalogOut
I2C code cleanup
PWM now support 4ch
us_ticker now use RIT instead of SCT
2014-03-12 19:23:14 +09:00
Bogdan Marinescu bca4f4e0e4 Fix previous pull request compilation errors 2014-03-11 17:02:10 +00:00
Przemek Wirkus 9105963e2c Removed trailing spaces 2014-03-11 15:37:43 +00:00
Przemek Wirkus 02a0f4d321 Aligned USART RX/TX naming with ST NUCLEO board HAL 2014-03-11 15:36:53 +00:00
Przemek Wirkus dc1e190d9e Fixed pinology for ECHO test for NUCLEO boards: F103RB, L152RE, F401RE, F030R8 2014-03-11 15:01:03 +00:00
Przemek Wirkus 2bb462f5a3 InterruptIn test support added for NUCLEO boards: F103RB, L152RE, F401RE, F030R8 2014-03-11 11:58:33 +00:00
Bogdan Marinescu 5d2d302526 Merge pull request #206 from dreschpe/master
Fix SPI 16 Bit for ST Nucleo
2014-03-11 11:56:20 +00:00
dreschpe ad09a83642 NUCLEO R030R8 16Bit SPI read and write
add 16 bit read and write
2014-03-10 17:45:46 +01:00
dreschpe 3d72f3dcbf Revert "Add additional peripherie for ST Nucleo F401 board"
This reverts commit f973f4c1d7.
2014-03-10 16:53:40 +01:00
Bogdan Marinescu f34be80874 Fix compilation errors from GPIO pull request 2014-03-10 13:41:31 +00:00
Bogdan Marinescu 882ceb80ee Merge pull request #204 from fatih-asici/master
Fix checking of TARGET_* symbols
2014-03-10 11:37:08 +00:00
Bogdan Marinescu 423ddcb86e Merge pull request #198 from mazgch/gpio_api
proposed change of gpio_api (new update pull request)
2014-03-10 11:15:59 +00:00
bcostm bb57ddc0c3 NUCLEO_F401RE: Change system clock to 84 MHz using HSI + PLL
Update also HSE_VALUE and SPI prescaler value.
2014-03-10 11:40:27 +01:00
dreschpe f973f4c1d7 Add additional peripherie for ST Nucleo F401 board
Add UART  3
Add SPI 2 + 3
Add I2C 2 + 3
change external crystal value to 8MHz
patch SPI 16bit  write bug
2014-03-09 18:20:01 +01:00
dreschpe 142db468ae Add additional peripherie definitions for ST Nucleo F401RE bord
add UART 2 + 3
add SPI  2 + 3
add I2C  2 + 3

patch SPI 16 bit error
patch extenal cristal value to 8MHz
2014-03-09 18:15:47 +01:00
Fatih Aşıcı 4a0b7893ec Fix checking of TARGET_* symbols 2014-03-08 23:30:50 +02:00
Emilio Monti 50b949b631 Merge pull request #202 from donatieng/master
Protection against concurrent access to USBHost
2014-03-07 15:47:03 +00:00
Donatien Garnier 876134ec22 Protection against concurrent access to USBHost
Fixed regression: Protection against concurrent access to USBHost using
locking class
Use Lock class within USBHost
2014-03-07 15:01:57 +00:00
Toyomasa Watarai 855bafe8d5 Added PwmOut for LPC1549 target 2014-03-07 18:40:45 +09:00
Emilio Monti 955bd9a5c9 Update MBED_LIBRARY_VERSION to latest revision 2014-03-06 09:55:02 +00:00
mazgch 4e53124e70 fix more tabs to spaces 2014-03-04 15:07:30 +01:00
mazgch 8f5a2a580a fix indentation and make helpers static inline 2014-03-04 15:00:28 +01:00
mazgch c1d3cb5aa3 address concern from watarai-san about code size and performance by creating a set of common initialization functions 2014-03-04 14:09:41 +01:00
mazgch be8bca4aa0 proposed change of gpio_api 2014-03-04 11:27:30 +01:00
Emilio Monti 6d79406112 Merge pull request #196 from toyowata/master
Added LPC11U35_501 target support
2014-03-04 10:20:01 +00:00
Toyomasa Watarai 7216c36d0f Added LPC11U35_501 target support
Tested with CQ's LPC11U35/501 target board
2014-03-04 17:57:33 +09:00
mazgch db13fa3402 init enum 2014-03-03 15:04:55 +01:00
mazgch 7ec41d4923 Merge branch 'master' of https://github.com/mbedmicro/mbed
Conflicts:
	libraries/mbed/targets/hal/TARGET_NXP/TARGET_LPC176X/serial_api.c
2014-03-03 15:04:35 +01:00
mazgch 63f20534ca fix merge conflict 2014-03-03 12:14:44 +01:00
Emilio Monti 8431561fc7 Merge pull request #194 from Sissors/master
LPC1768 writeable fix + KL25Z/KL46Z RTC pin function
2014-03-03 11:05:07 +00:00
mazgch ca1d76687b adding back tx fifo, this also fixes the tx interrupts 2014-03-03 12:00:32 +01:00
mazgch f77045e9e7 Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-03-03 10:42:36 +01:00
mazgch 0acbc6440e at command if: improve warning reporting
link monitor: added api to get local phone number to link monitor
ubx modem: added network indication led
ubx modem: better handle different modems
2014-03-03 10:36:23 +01:00
Sissors 56ce1e7290 Fixed LPC1768 writable
Now if no flow control is used it will check if holding register is
empty, instead of complete UART is empty: The TxIrq uses the same
requirement.
Currently BufferedSerial (and everyone else trying something similar)
goes haywire because it doesn't just check if writable, but also if done
writing.

If flow control is enabled nothing is changed.
2014-03-01 16:58:01 +01:00
Sissors baa4003b95 Revert "Fixed writable for LPC1768"
This reverts commit 19ae097c62.
2014-03-01 16:46:48 +01:00
Sissors ace842b1f1 Fixed KL25Z/KL46Z RTC-IN pin function
It used to set it to alternate function 2, which is I2C, and still works
fine in all my tests. Not intended though, and might be giving others
issues. 1 is the RTC_CLKIN
2014-03-01 16:40:32 +01:00
Sissors 19ae097c62 Fixed writable for LPC1768
Bit 6 (0x40) is true if the peripheral is completely empty.
Bit 5 (0x20) is true if the transmit hold register is empty, which is
sufficient for it to be writable.

The TxIrq uses the same requirement, so now it works together and
BufferedSerial doesn't go haywire on LPC1768
2014-03-01 16:38:03 +01:00
Emilio Monti 6b57b52374 Merge pull request #190 from xiongyihui/master
add D0-D13 and A0-A5 for Arch V1.1 and Arch Pro
2014-02-27 09:39:57 +00:00
0xc0170 6d786761c7 KL46Z and K20D5M targets addition
- sharing KL25Z implementation (same USB peripheral)
2014-02-26 20:11:39 +01:00
Yihui Xiong 891b63a14e add D0-D13 and A0-A5 for Arch V1.1 and Arch Pro 2014-02-26 21:15:06 +08:00
bcostm f285e44f05 [NUCLEO_L152RE] Update license 2/2 2014-02-26 10:28:09 +01:00
bcostm fe19c62f95 [NUCLEO_L152RE] Update license (1/2) 2014-02-26 10:24:48 +01:00
bcostm 512de10b66 [NUCLEO_F030R8] Update license 2014-02-26 10:08:51 +01:00
bcostm 41b6de2d08 Revert "[NUCLEO_xxx] Update license"
This reverts commit 4197942906.
2014-02-26 10:04:42 +01:00
bcostm 4197942906 [NUCLEO_xxx] Update license 2014-02-26 10:04:14 +01:00
bcostm e1facae89f [NUCLEO_F401RE] Update STM32CubeF4 driver V1.0.0 (part 4/4) 2014-02-26 09:29:20 +01:00
bcostm 5a4e51ad4e [NUCLEO_F401RE] Update STM32CubeF4 driver V1.0.0 (part 3/4) 2014-02-26 09:25:54 +01:00
bcostm 3a37a058c5 [NUCLEO_F401RE] Update STM32CubeF4 driver V1.0.0 (part 2/4) 2014-02-26 09:22:52 +01:00
bcostm bb9983c4f8 Merge branch 'master' of https://github.com/mbedmicro/mbed
Conflicts:
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/PinNames.h
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/PinNames.h
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F401RE/PinNames.h
	libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/PinNames.h
2014-02-25 18:12:12 +01:00
bcostm 3a74e3f9e3 [NUCLEO_F401RE] Update STM32CubeF4 driver V1.0.0 (part 1/4) 2014-02-25 16:44:12 +01:00
Przemek Wirkus c74365cb83 LED test completion notification changed. Now if board do not have LED4, target will only blink LED1 to indicate test success. If test fails LED1 will not blink. This behaviour will be changed in the future. Now it is mainly removing compilation error (LED4 not defined). 2014-02-24 15:34:35 +00:00
0xc0170 97b1598698 TSI electrodes uses regular pinNames 2014-02-23 21:42:16 +01:00
bcostm 330d1a96b0 [NUCLEO_xxx] Add missing USBTX/USBRX pins definition 2014-02-23 16:50:40 +01:00
0xc0170 f28afaedfc PinNames addition, KL05Z uARM online toolchain
- FRDM - TSI elec symbols
	- Nucleo - SERIAL_TX pinName to USBTX , same for RX
	- KL05Z - uARM set as online toolchain
2014-02-23 11:19:30 +01:00
Emilio Monti 3279edf10e Add first BLE API test 2014-02-21 15:05:21 +00:00
tkuyucu 2dfdee5fe4 Merge remote-tracking branch 'upstream/master' 2014-02-21 12:54:53 +01:00
tkuyucu edc9095e7d SoftDevice added. 2014-02-21 12:53:58 +01:00
Olivier Martin 2251b0267d libraries/fs: Added logic to transparently sync written file
fflush() does not do anything in mbed library. The only time the file
was flushed was when it was closed.
For some applications (eg: data logger), files are never closed. It
means when the power went off all the written data were lost.
Actually, they were not lost; they were written into the non-volatile
storage. But the file header was not aware of these new data (its
file information such as file size were not updated).

There is no easy way to retarget fflush() for mbed. So, the workaround
is to fflush (eg: 'sync' in the ChaN terminology) periodically
while writting new data.

The frequency can be changed by the user into ffconf.h.
By default, the updated file will be synced for every new sector (generally
for every 512 bytes). Another available option is to sync for every
new cluster (in my use case, the cluster was 8 sectors long).
2014-02-21 09:57:23 +00:00
sg- 5a64111465 Merge branch 'nxp_merge'
Conflicts:
	workspace_tools/export/uvision4.py
2014-02-20 16:30:38 -06:00
Emilio Monti 65f5457fff Merge pull request #181 from Sissors/master
Enable sleep for KL05Z
2014-02-20 18:48:15 +00:00
Sissors 26f4773c60 Enable sleep for KL05Z 2014-02-20 19:15:27 +01:00
tkuyucu 8920003345 Merge remote-tracking branch 'upstream/master' 2014-02-20 12:43:26 +01:00
tkuyucu 2ec518a249 Added checks on compilation flags. 2014-02-20 12:43:06 +01:00
Emilio Monti 8719388932 Merge pull request #180 from oliviermartin/om/usb-serial-non-blocking
libraries/USBSerial: Allow the USB connection to be non-blocking
2014-02-20 11:06:52 +00:00
Emilio Monti 96dbf718f7 Merge pull request #178 from sg-/FRDM-fix
add arduino I2C naming to PinNames.h
2014-02-20 11:05:56 +00:00
Olivier Martin 29f71517d4 libraries/USBSerial: Allow to create an instance without the USB cable being plugged in
Prior to this change the connection was waiting for a USB cable to be plugged in.
2014-02-20 00:37:21 +00:00
sg- 48739cc5e4 add arduino I2C naming to PinNames.h 2014-02-19 15:02:03 -06:00
Emilio Monti 32764eb5d5 Merge pull request #177 from bcostm/master
Change us_ticker timer (32-bit) on Nucleo L152RE and F401RE
2014-02-19 17:01:04 +00:00
bcostm de4e1be4ef [NUCLEO_F401RE] Change us_ticker timer (32-bit one)
Remove also the disable/enable timer update IT in sleep (no more
necessary).
2014-02-19 17:51:22 +01:00
tkuyucu 3b702158ae Writing FWID to UICR in SystemInit 2014-02-19 17:26:59 +01:00
bcostm ae97da7b56 [NUCLEO_L152RE] Change us_ticker timer (32-bit one) 2014-02-19 16:29:09 +01:00
bcostm fe63154f89 [NUCLEO_F401RE] Remove PB_11 pin. 2014-02-19 13:01:41 +01:00
tkuyucu ec220d9996 Merge remote-tracking branch 'upstream/master' 2014-02-19 12:45:10 +01:00
tkuyucu befaefcdb8 Updated copyright headers
commented out unused variable in cmsis_nvic.c
2014-02-19 12:43:56 +01:00
Toyomasa Watarai ca527e4dd9 Corrected wrong pin names 2014-02-19 19:25:20 +09:00
0xc0170 cd46fa2a73 CMSIS system for KL05Z update
- clocking from external 32kHz is set by default
2014-02-19 08:52:59 +01:00
sg- be8cccd16f Tabs to spaces... 2014-02-18 14:16:46 -06:00
sg- a09c1a724f Added some PinNames for Arduino compatibility and cleaned up white spaces 2014-02-18 14:12:40 -06:00
sg- 1f50bfc7c5 Update peripheral pin mapping and pin names 2014-02-18 12:08:11 -06:00
Emilio Monti 8583716513 Merge pull request #174 from Sissors/master
Properly round non integer bus-frequencies in MHz
2014-02-18 17:48:06 +00:00
Sissors 65d66455c0 Properly round non integer bus-frequencies in MHz
PIT prescaler now rounds to nearest instead of down. Since when FLL is
used (default on KL05Z, but also possible on others), the bus
frequencies is 23.986MHz, rounding down is bad.
2014-02-18 18:40:33 +01:00
bcostm fd0754864e [NUCLEO_xxx] Fix issue with ticker + add volatile 2014-02-18 16:40:54 +01:00
Emilio Monti a8f17f5426 Fix DAC initialization# 2014-02-18 13:59:58 +00:00
Emilio Monti 10297b352c Merge pull request #172 from bcostm/master
[NUCLEO_xxx] Fix us_ticker and analog_out issues when -O3/-Otime options are used
2014-02-18 11:02:46 +00:00
Emilio Monti 3c8f1c0c59 Merge pull request #169 from oliviermartin/om/usb-device-connect-non-blocking
Allow USBDevice::connect() to be non-blocking
2014-02-18 10:51:54 +00:00
Emilio Monti 4d6bf98d64 Merge pull request #168 from oliviermartin/om/sd-fix-when-no-card-present
libraries/sd: Fixed SDFileSystem when no card present
2014-02-18 10:47:11 +00:00
Emilio Monti 7d21ccaf0d Merge pull request #167 from oliviermartin/om/sd-change-default-clock-settings
libraries/sd: Allow changing the default clock settings for the initialization and transfer states.
2014-02-18 10:45:22 +00:00
Emilio Monti 18bc485181 Merge pull request #170 from sg-/kl05_uarm
Added uARM support for KL05Z and added target to build_release.py. Also ...
2014-02-18 10:20:59 +00:00
Emilio Monti a2a5490f5d Merge pull request #171 from Sissors/master
Fixed LPC1114 InterruptIn for Port1 (and higher)
2014-02-18 10:19:35 +00:00
bcostm c482ad79a1 [NUCLEO_L152RE] Fix issue with analog_out and -O3/Otime options 2014-02-18 10:56:16 +01:00
bcostm 1c2bc03f99 [NUCLEO_xxx] Fix us_ticker issue 2014-02-18 09:34:32 +01:00
bcostm 636114b4d1 Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-02-18 08:19:31 +01:00
Sissors 8da53457ab Fixed LPC1114 InterruptIn for Port1 (and higher)
Channel was only calculated using bits set, port number was ignored.
2014-02-18 07:58:25 +01:00
sg- bded790c9b Added uARM support for KL05Z and added target to build_release.py. Also updated uvision4.py to UBLOX_C027 from previous name C027 2014-02-17 22:12:16 -06:00
Olivier Martin f19f0b27c1 Allow USBDevice::connect() to be non-blocking.
It is required if USB is not the primary use of the device (eg: use
of USB mass storage to transfer pictures from the camera (the
device) to the host once in a while).
2014-02-17 23:55:46 +00:00
Olivier Martin 1e548aba02 libraries/sd: Allow changing the default clock settings for the initialization and transfer states. 2014-02-17 23:49:33 +00:00
Olivier Martin cd2b7de281 libraries/sd: Fixed SDFileSystem when no card present (or failed its initialization). 2014-02-17 23:44:12 +00:00
Emilio Monti b87dac9fce fix us_ticker issue for Nucleo boards 2014-02-17 16:13:40 +00:00
tkuyucu 4d767c0dc8 Updated Sleep
using WFE for nordic sleep
Removed systemoff call from deepleep since it does not retain program
state.
2014-02-17 15:54:39 +01:00
tkuyucu cfb9b992c3 Merge remote-tracking branch 'upstream/master' 2014-02-17 11:25:54 +01:00
tkuyucu 4f6b0b6443 nordic_global.h file now included 2014-02-17 10:31:20 +01:00
bcostm 19b70d8833 [NUCLEO_xxx] Add other #pragma O0/Ospace for ticker 2014-02-17 09:10:14 +01:00
Toyomasa Watarai 01cfe17b3d [LPC1549] Added InterruptIn support 2014-02-16 22:38:09 +09:00
bcostm e9ff16fa11 [NUCLEO_xxx] Change code optimization for us_ticker_read()
Fix issue when the hal is compiled with -O3 -Otime
2014-02-16 12:13:42 +01:00
ytsuboi a2f2f44258 [LPC1549] Added I2C master support 2014-02-15 18:23:06 +09:00
Toyomasa Watarai 95f4057499 [LPC1549] Added AnalogIn support 2014-02-15 15:18:35 +09:00
tkuyucu d7dae24aaa Removed UICR edit. 2014-02-14 12:32:04 +01:00
Toyomasa Watarai e2a47d9daa [LPC1549] Corrected wrong pin name 2014-02-14 19:14:05 +09:00
Toyomasa Watarai 5fbea95fe2 [LPC1549] Added Arduino Shield Receptacles Names 2014-02-14 16:18:48 +09:00
Emilio Monti 725053636a Merge pull request #165 from bcostm/master
[NUCLEO_xxx] Fix issue with attach_us function
2014-02-13 18:04:15 +00:00
bcostm fda11bae82 [NUCLEO_xxx] Fix issue with attach_us function 2014-02-13 14:11:01 +01:00
Toyomasa Watarai 1c2e2ce572 [LPC1549] Fixed us_ticker problem 2014-02-13 17:00:25 +09:00
Toyomasa Watarai 07706f0821 [LPC1549] Added SPI support 2014-02-13 16:52:38 +09:00
ytsuboi 78d4c7345b [LPC1549] Added UART support 2014-02-12 23:43:27 +09:00
ytsuboi 5f1f6c7417 [LPC1549] put PINASSIGN0-15 to PINASSIGN[] on LPC15xx.h
and fixed typo on system_LPC15xx.c
2014-02-12 16:13:00 +09:00
Emilio Monti 0466e90b2a Merge pull request #163 from bcostm/master
Add uvision exporters for NUCLEO_L152RE/F030R8/F401RE
2014-02-11 23:01:21 +00:00
bcostm 156be94791 [NUCLEO_F401RE] Add uvision exporter + remove compilation warning 2014-02-11 21:08:36 +01:00
Emilio Monti b213992ac0 Optimize for speed 2014-02-11 17:07:29 +00:00
bcostm 90c261a513 Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-02-11 16:50:40 +01:00
bcostm e9394fc5f5 Add exporters for NUCLEO_L152RE and F030R8 2014-02-11 16:38:37 +01:00
Emilio Monti 17499c34d2 Remove stm32f4xx_hal_msp template 2014-02-11 14:51:18 +00:00
Toyomasa Watarai 741bfc22b1 [LPC1549] Fixed GPIO
Clean-up PinNames.h and GPIOrelated functions.
2014-02-11 23:18:59 +09:00
ytsuboi e06e842221 [LPC1549] initial commit 2014-02-11 15:54:38 +09:00
bcostm ddce5e741d [NUCLEO_F103RB] Correction in SPI clock setting. 2014-02-10 16:33:45 +01:00
bcostm adab2d9fbc [NUCLEO_F401RE] Correction in GPIO setting (wrong macro used). 2014-02-10 15:17:46 +01:00
Emilio Monti 9272cdeb45 Merge pull request #161 from bcostm/master
Add NUCLEO_F401RE, improvements
2014-02-08 19:33:17 +00:00
bcostm 3a64c7f9d5 [NUCLEO_F401RE] Add toolchain_arm_micro files 2014-02-08 19:12:37 +01:00
sg- fad5c27038 Add default interrupt handler for Freescale NMI_b pins. 2014-02-07 18:20:45 -06:00
sg- 7ef411e7fb Clean up tabs to spaces 2014-02-07 18:13:02 -06:00
sg- 5237b766e6 Updated PinMap PinMap_PWM for KL05Z, KL25Z and KL46Z targets. Should support all MCU pins 2014-02-07 18:07:11 -06:00
tkuyucu 026b6610a8 Merge remote-tracking branch 'upstream/master'
Conflicts:
	libraries/tests/mbed/portinout/main.cpp
	libraries/tests/mbed/portout_portin/main.cpp
	libraries/tests/mbed/sd/main.cpp
	libraries/tests/mbed/spi_slave/main.cpp
	workspace_tools/targets.py
	workspace_tools/toolchains/arm.py
	workspace_tools/toolchains/gcc.py
	workspace_tools/toolchains/iar.py
2014-02-07 11:04:50 +01:00
tkuyucu 9b701f6a49 No Ports reduced to 1
Licensing headers replaced with mbed Apache.
SPI/SPIS pin configuration is done via PIN_CNF
2014-02-07 10:28:34 +01:00
bcostm e69063a971 [NUCLEO_F401RE] Add Cube F4 driver V1.0.0RC2 2014-02-07 09:40:12 +01:00
bcostm c08d507168 [NUCLEO_F401RE] Many corrections on pinmap, RTC, ... 2014-02-07 09:36:31 +01:00
bcostm 4ee89986b7 [NUCLEO_F103RB] Update mapping file.
Solve compilation error with flash.
2014-02-07 09:33:15 +01:00
bcostm a3d0a9bd96 [NUCLEO_F401RE] Add cmsis files 2014-02-05 18:08:43 +01:00
bcostm 99b0820eb3 [NUCLEO_F401RE] Add hal files 2014-02-05 17:58:01 +01:00
tkuyucu 43fe5a4e44 Hardcoded location for FWID is used. 2014-02-04 15:03:44 +01:00
bcostm 01fc443ef8 Add missing interrupt enable 2014-02-04 13:03:00 +01:00
tkuyucu b77d61416f UICR values are written by the SystemInit, if missing. 2014-02-04 10:20:40 +01:00
tkuyucu 1eba6888b4 debug comments removed 2014-02-04 08:33:54 +01:00
tkuyucu 08c145aaa6 files and folders renamed to remove case sensitivity 2014-02-04 08:32:34 +01:00
tkuyucu 84b2255ce2 Reformatting 2014-02-03 16:36:23 +01:00
tkuyucu 804188a6f7 Clean up and Reformatting
Unused header files are removed from the cmsis dir.
Tab characters replaced by 4 spaces.
Brackets and parenthesis formatted.
Spi slave functions updated for faster response.
2014-02-03 10:33:34 +01:00
bcostm 4ad143ae95 Typo corrections 2014-02-01 22:05:45 +01:00
bcostm ae20d141c5 [NUCLEO_F030R8] Remove timer update interrupt in sleep 2014-02-01 19:15:23 +01:00
bcostm 2663367dc5 [NUCLEO_L152RE] Remove timer update interrupt in sleep
Otherwise the first update interruption will wake-up the MCU.
2014-02-01 19:05:03 +01:00
bcostm 3fba65b769 [NUCLEO_F103RB] Update to std periph driver V3.6.1 2014-02-01 18:48:55 +01:00
bcostm b275fc579a [NUCLEO_F103RB] Change ticker to use one timer...
and add another pwm output.
2014-02-01 13:27:56 +01:00
bcostm 0110c3eec4 [NUCLEO_L152RE] Add PWM output, ticker with one timer
The us_ticker uses now only one timer instead of two. Another PWM output
on TIM4 has been added.
2014-01-31 18:14:31 +01:00
bcostm e9fe1394a5 Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-01-31 11:41:14 +01:00
Bogdan Marinescu 82ff30dd43 Merge pull request #157 from mazgch/master
fix debug output filter
2014-01-31 02:20:39 -08:00
mazgch 627c9d788a fix debug output filter 2014-01-31 11:12:55 +01:00
Bogdan Marinescu 2665d5bac4 Modified call-before-main mechanism
Added a new function (mbed_sdk_init) that can be used by the SDK itself to
do initializations before main() is called.
2014-01-31 11:58:18 +02:00
Bogdan Marinescu 74409cbd59 Re-apply 178f881566 on top of the new changes 2014-01-31 11:50:35 +02:00
Bogdan Marinescu f2e1518220 Merge branch 'master' of git://github.com/Sissors/mbed into Sissors-master
Conflicts:
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL05Z/analogin_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL05Z/analogout_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL05Z/gpio_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL05Z/i2c_api.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL05Z/pinmap.c
	libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KL05Z/pwmout_api.c
2014-01-31 11:46:22 +02:00
bcostm a865de928b [NUCLEO_F030R8] Add pwmout api 2014-01-31 10:32:11 +01:00
Bogdan Marinescu 2a782f5067 Merge pull request #149 from cobrid/master
Remove unnecessary semicolons.
2014-01-31 00:55:41 -08:00
Bogdan Marinescu 6c4dc5cd33 Merge pull request #155 from sg-/c027_lpc1768_refactor
Forgot to add this file...
2014-01-31 00:54:56 -08:00
bcostm 6a30215feb [NUCLEO_F030R8] Modify us_ticker to use only one timer 2014-01-31 08:27:46 +01:00
Sissors fb3fe6003a Put PeripheralPin constant values in .c files, definitions in .h 2014-01-30 18:19:34 +01:00
sg- 1db40f89a7 Forgot to add this file... 2014-01-30 09:55:50 -06:00
bcostm 77bb1560ba [NUCLEO_L152RE] Change SPI frequency setting 2014-01-30 15:30:33 +01:00
bcostm ca173a1867 [NUCLEO_F030R8] Add SPI api, corrections in I2C 2014-01-30 15:29:07 +01:00
Bogdan Marinescu dba523f83f Merge pull request #154 from bcostm/master
Update of I2C, SPI, SLEEP for NUCLEO_F103RB and L152RE
2014-01-30 04:02:04 -08:00
bcostm 08941aaba1 [NUCLEO_L152RE] Add sleep api 2014-01-30 11:14:59 +01:00
Bogdan Marinescu 6e82b54538 Merge branch 'c027_lpc1768_refactor' of git://github.com/sg-/mbed into sg--c027_lpc1768_refactor
Conflicts:
	workspace_tools/export/uvision4.py
2014-01-30 11:31:56 +02:00
bcostm 90f7a2b80d [NUCLEO_L152RE] Change AF setting before GPIO setting 2014-01-30 10:13:59 +01:00
bcostm f712477c36 [NUCLEO_F103RB] Change AF setting before GPIO setting 2014-01-30 10:13:35 +01:00
bcostm 3ace84aece [NUCLEO_F030R8] Change AF setting before GPIO setting 2014-01-30 10:13:16 +01:00
bcostm 955223fd2c [NUCLEO_L152RE] Update std periph driver to V1.3.0 2014-01-30 09:53:14 +01:00
bcostm 6f06f6ecd2 [NUCLEO_L152RE] Correction on I2C gpio configuration + code cleanup 2014-01-30 09:49:51 +01:00
bcostm 740f801bb5 [NUCLEO_F103RB] Correction on I2C gpio configuration 2014-01-30 09:48:57 +01:00
tkuyucu 05d6525285 Pwm timer interrupt priority set to 1.
When timer interrupt priority is at 3, the pwm functionality can be
disturbed by an active ble connection.
2014-01-30 09:24:53 +01:00
bcostm 139f4fb16f [NUCLEO_L152RE] Add SPI api 2014-01-30 07:56:35 +01:00
sg- 28f0cf71b3 Update to macro test in board.c, remove C027.cpp(h), set default IO in mbed_main and fixed copy paste error in MBED_LPC1768 reserved_pins.h 2014-01-29 22:33:41 -06:00
bcostm 3c54df796f [NUCLEO_F103RB] Minor corrections on I2C master api 2014-01-29 15:17:10 +01:00
Sissors 67972d03af Replaced tabs by spaces
Now Martin is happy :)
2014-01-29 14:43:26 +01:00
sg- f1fa9a0c25 Added support for C027. Small re-factor to LPC1768 to accommodate this. 2014-01-28 20:44:32 -06:00
Sissors 2c2bf35a77 Refactored KLXX code
See description. Everything HAL wise went into KLXX, with target
specific in subfolders. Only interrupt and spi are in target specific
since they are target specific.

Also you cannot set the uart anymore for 9 or 10 databits (the code
supported it to set it like that, but the actually read/write only did
8-bits)
2014-01-28 18:57:07 +01:00
bcostm 015887091d [NUCLEO_F030R8] Add I2C master api 2014-01-28 16:17:18 +01:00
0xc0170 178f881566 KL05Z/LPC1768 coide tmpl, KL05Z GCC warnings fixed
- LPC1768 - coide has issues with CMSIS-DAP debugging, already reported.
	  Added this template but not enabled yet.
	- KL05Z export for coide
	- KL05Z - supressed warnings in HAL
2014-01-27 20:37:58 +01:00
Bogdan Marinescu 887fc11980 Merge pull request #151 from bcostm/master
[NUCLEO_F030R8] Fix vectors remap in RAM issue and more...
2014-01-27 07:25:03 -08:00
bcostm 6866978792 [NUCLEO_F030R8] Fix vectors remap in RAM issue and more...
Improve gpio api, add gpio_irq, add sleep.
2014-01-27 15:53:00 +01:00
Bogdan Marinescu a31ec9c5f7 Merge pull request #150 from bcostm/master
Add NUCLEO_L152RE
2014-01-27 06:22:13 -08:00
bcostm 1ccef1a441 [NUCLEO_L152RE] Improvements of gpio and gpio_irq api 2014-01-27 10:02:15 +01:00
bcostm d14992dcfd [NUCLEO_F103RB] Improvement of gpio and gpio_irq api 2014-01-27 09:59:07 +01:00
Chiel de Roest 8b3cdc0067 Remove unnecessary semicolons.
Remove unnecessary colon that was placed in all SPI drivers for NXP
targets.
2014-01-24 22:49:09 +01:00
neilt6 8e346fc498 Fixed sleep and disabled semihosting on LPC11U35
I created 3 separate device.h headers for the three LPC11UXX targets,
and disabled the features that the LPC11U35 board doesn't have like
Semihosting and LocalFileSystem. I also made the call to
mbed_interface_disconnect() require DEVICE_SEMIHOSTING, which prevents
calls to sleep() from hanging the system on an LPC11U35.
2014-01-24 10:51:48 -07:00
bcostm a088e343a6 Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-01-24 15:02:24 +01:00
bcostm 4afc4e4a3b [NUCLEO_F030R8] Add rtc api 2014-01-24 14:52:13 +01:00
bcostm c9bd30590f [NUCLEO_L152RE] Add rtc api 2014-01-24 14:51:43 +01:00
bcostm 3adc6b41df [NUCLEO_F030R8] Add analogin api 2014-01-24 12:17:15 +01:00
neilt6 e4d4963a60 LPC11U35 support for USBDevice and mbed-rtos
Added support for the EA LPC11U35 QuickStart Board to USBDevice an
mbed-rtos. Also fixed several string-related bugs in USBDevice.
2014-01-23 09:37:26 -07:00
bcostm 81482e6d92 [NUCLEO_L152RE] Add gpio_irq api 2014-01-22 18:36:35 +01:00
bcostm 486ebece6b [NUCLEO_F030R8] Add serial api 2014-01-22 17:59:04 +01:00
bcostm a5726b883b [NUCLEO_F030R8] Add gpio, port, ticker api, cmsis files 2014-01-22 17:53:54 +01:00
tkuyucu 689a484d23 Stack and heap initialization is removed from the startup file. This solves the mbed runtime problems with the SoftDevice enabled. 2014-01-22 13:58:30 +01:00
bcostm e577faef66 [NUCLEO_L152RE] Add analog out api
and add macros for GPIOs, change master timer for ticker.
2014-01-22 08:22:01 +01:00
bcostm e3e5180256 [NUCLEO_F103RB] Cleanup code
Add STM_PIN and STM_PORT macros for GPIOs.
2014-01-22 07:48:10 +01:00
bcostm 0af4419c74 Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-01-20 18:09:48 +01:00
bcostm f27e93cf3f [NUCLEO_L152RE] Add analog out api 2014-01-20 17:45:35 +01:00
bcostm 23e383be36 [NUCLEO_L152RE] Add pwmout api 2014-01-17 17:14:29 +01:00
bcostm a2efcd2c92 [NUCLEO_L152RE] analog_in improvement 2014-01-16 13:25:43 +01:00
bcostm e5b641777a [NUCLEO_L152RE] Add analogin api 2014-01-16 13:16:35 +01:00
Bogdan Marinescu 8ef99f8562 Merge pull request #145 from Sissors/master
Added MCGPLLFLL clock function, squished some 'bugs'
2014-01-14 14:12:48 -08:00
Sissors 153a9ddb49 Added MCGPLLFLL clock function, squished some 'bugs'
PWM bug mentioned here:
https://mbed.org/questions/2315/BUG-Exporting-to-ARM-GCC-does-not-work-n/

Fast internal osc prescaler wasn't taken into account at us_ticker
interrupt clock source, now it is.
2014-01-14 22:57:43 +01:00
0xc0170 937430a130 clk freq header file
- HAL clock improvement
2014-01-14 17:51:09 +01:00
0xc0170 4e5993e7ee Merge branch 'master' into dev_k20d5m_testing 2014-01-14 15:47:22 +01:00
bcostm ffb7f13018 [NUCLEO_F152RE] Correction in pinmap 2014-01-14 10:14:08 +01:00
bcostm ba5866b35e [NUCLEO_L152RE] Fix bugs with gpio and serial 2014-01-13 14:20:27 +01:00
Bogdan Marinescu f1904ba15c Merge pull request #140 from Sissors/master
KL46Z: Added Sleep, LED3 and LED4 definitions, switches
2014-01-13 02:37:11 -08:00
bcostm cbfdc4e26d [NUCLEO_L152RE] Cleanup in available ports/pins 2014-01-13 10:27:47 +01:00
bcostm bef6fdf339 [NUCLEO_F103RB] Code cleanup, correction in pins definition 2014-01-13 09:24:31 +01:00
Sissors aa0f7a7026 Added clk_freqs.h for clock related functions
Serial now also works when PLL/FLL is disabled and extosc is available.

us_ticker tries to divide extosc to 1MHz, otherwise use fast internal
oscillator
2014-01-11 19:10:36 +01:00
Sissors ebdbf53ba1 Updat PWM prescaler correctly 2014-01-11 09:40:10 +01:00
Sissors eedce209c5 Removed hardcoded frequencies, replaced by automatically calculated
ADC frequency 1.5MHz -> 6MHz (if possible, otherwise it tries as close
to, but less than 6MHz)
pwm tries to get its clock as close as possible to 1MHz, but not lower
than 1MHz
2014-01-10 21:45:26 +01:00
bcostm 7d145c8dc4 [NUCLEO_L152RE] Add first files (gpio, pinmap, us_ticker) 2014-01-10 17:46:18 +01:00
tkuyucu fdb41b0ccb serial will choose the nearest lower baudrate if an unsupported value is chosen. 2014-01-10 15:53:43 +01:00
tkuyucu 29560a3195 SPI and I2C will accept unsupported frequencies and match them with the closest available frequency instead of generating an error.
Sleep is now implemented (deepsleep will cause nrf to work in System OFF mode).
2014-01-10 14:21:43 +01:00
tkuyucu c7eabcd977 Interrupt priorities set to low application level (3) in order to ensure no conflict with the SD. 2014-01-09 14:03:20 +01:00
Andreas Rebert e8b09cbc2d [LPC4088] Corrected an invalid header file dependecy. 2014-01-09 09:10:10 +01:00
Andreas Rebert 1448b871c1 [LPC4088] Making it possible to reserve stack space by weak function. 2014-01-09 08:52:33 +01:00
Andreas Rebert 3157d5afb2 [LPC4088] Making it possible to reserve stack space by weak function. 2014-01-09 08:51:30 +01:00
Sissors 7df2622a76 SPI clock fix for KL05Z and KL46Z 2014-01-09 07:57:45 +01:00
Andreas Rebert a1a2fec259 [LPC4088]: Corrected RAM size in linker script (ARM_GCC) 2014-01-09 07:44:15 +01:00
Sissors ed7954f5ac Fixed KL25Z SPI clock
https://mbed.org/questions/2309/spifrequency-for-KL25Z/
2014-01-08 21:00:40 +01:00
0xc0170 4732796ab4 PWM channels definition update, serial uses external global variable system clock 2014-01-08 17:32:28 +01:00
0xc0170 ffac7e6d6a PWM - pwmload removed from the objects header file 2014-01-08 12:05:11 +01:00
tkuyucu 694f9c726c fixes and updates after the mbed unit tests have been carried out. 2014-01-08 11:14:19 +01:00
0xc0170 889952790f PWM - mux addition 2014-01-08 10:58:51 +01:00
0xc0170 a6e45b7d38 spi - disable rx/tx fifo, write/readable flags change 2014-01-07 20:23:54 +01:00
Sissors e5f13c047c Added Sleep, LED3 and LED4 definitions, switches
Sleep = KL25Z sleep (verified to work correctly)
LED3 = LED1, LED4 = LED2 (for compatibility, similar to LED3 = LED4 in
KL25Z code)
SW1 and SW3 for the two switches (SW2 is reset switch)
2014-01-07 18:35:41 +01:00
0xc0170 5d95041620 PWM - legacy mode, LOAD use for updating 2014-01-06 18:43:17 +01:00
bcostm dace8653e6 [NUCLEO_F103RB] Remove HSE re-configuration in sleep code. 2014-01-06 15:07:49 +01:00
bcostm 989c66165c Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-01-06 11:22:35 +01:00
Bogdan Marinescu b311c56b44 Merge pull request #138 from ytsuboi/master
[LPC812] Add SPISlave function
2013-12-31 07:25:41 -08:00
ytsuboi 4fbf286ee3 [LPC812] change ssp_busy() to check RXOV 2013-12-31 20:24:46 +09:00
0xc0170 aa501c003b Shared PORT interrupt - check improved
- clocks must be enabled and also interrupt detected, otherwise
	  interrupt handler is not invoked.
2013-12-31 08:34:12 +01:00
0xc0170 a384d1d875 pwm channel 7 correction, enhanced mode 2013-12-30 18:12:01 +01:00
0xc0170 dc19dcbb94 fix - KL46Z cmsis header (v2.2), shared interrupt PORTCD
- Ports C and D sharing same interrupt vectors
	- KL46Z CMSIS header update
	- InterruptIn methods irq_disable/enable comment update
2013-12-30 12:19:24 +01:00
0xc0170 8d7c3da179 i2c clock from global clock value, syntax corrections 2013-12-30 11:39:36 +01:00
ytsuboi 0a11767877 [LPC812] enable SPISlave 2013-12-29 19:18:50 +09:00
0xc0170 ee7c33d055 K20D5M default irq handler 2013-12-26 12:11:32 +01:00
0xc0170 15e246fc9f Merge branch 'master' into K20D50 2013-12-26 09:05:11 +01:00
0xc0170 63526032d9 K20D5M flash algo for template 2013-12-26 09:03:19 +01:00
0xc0170 78140c4aa1 LPTMR timer - OSCEN set, GCC startup vectors add 2013-12-25 20:02:56 +01:00
Bogdan Marinescu 82aa7b7f2b Enable RTOS with GCC_CR
1. Provide the required __end__ symbol
2. Call software_init_hook() if present, which in turn starts the RTOS

The fix was applied for all targets with a TOOLCHAIN_GCC_CR folder,
but it only works with LPC1768 and LPC4088 because of incomplete or
missing support for GCC_CR and/or the RTOS for the other targets.
Tested by running RTOS_1, RTOS_2 and RTOS_3 with LPC1768 and LPC4088.
2013-12-24 23:13:50 +02:00
0xc0170 b73b57db26 I2C, pullup 2013-12-23 20:56:48 +01:00
0xc0170 c9a029ce6f Merge branch 'master' into K20D50 2013-12-23 20:01:05 +01:00
0xc0170 366221524a SPI, RTC, Serial changes
- SPI - implementation
	- RTC - there's 32.768kHz crystal, use that as a source
	- Serial - 10bit transfer
2013-12-23 19:57:10 +01:00
tkuyucu eb5fd7d6e0 timer overflow sync issue fixed. 2013-12-20 16:37:28 +01:00
Bogdan Marinescu 728084c52f Merge pull request #134 from Joey-Ye/master
Clean up GCC_ARM startup code
2013-12-20 06:53:16 -08:00
Joey Ye feacef8f3a Clean up GCC_ARM startup code 2013-12-20 15:08:20 +08:00
Bogdan Marinescu 425e197ba6 Fix missing case in flow control code 2013-12-19 17:59:24 +02:00
tkuyucu 4756fb3a51 timer interrupts implemented correctly. TimeOut and Ticker classes should work. 2013-12-19 15:53:11 +01:00
tkuyucu f0994c710b SoftDevice is now enabled by the startup code by calling EnableSoftDevice (defined in system_nRF51822). 2013-12-19 15:09:09 +01:00
Bogdan Marinescu 4b4b986cdb Changed flow control test pin assignments 2013-12-19 15:05:36 +02:00
Bogdan Marinescu 5f62a399db Added preliminary printf() support to RawSerial 2013-12-19 15:05:17 +02:00
bcostm 28120ffb19 [NUCLEO_F103RB] Change license text in ALL target files 2013-12-19 11:44:15 +01:00
tkuyucu 76d25ffb25 16-bit timer with sw overflow is used instead of the 32-bit timer. 2013-12-19 10:41:16 +01:00
Bogdan Marinescu 34a43eaa41 Merge branch 'flow_control'
Conflicts:
	workspace_tools/tests.py
2013-12-19 11:36:45 +02:00
Bogdan Marinescu bb8ed20a47 LPC1768 flow control fixes
- Disable TX buffer, this isn't compatible with the software CTS implementation
- Properly set hardware RTS/CTS pins when possible
- Modified test to use hardware CTS and software RTS
2013-12-19 11:31:23 +02:00
Yihui Xiong 6501b16213 Merge remote-tracking branch 'upstream/master' 2013-12-19 12:38:04 +08:00
Yihui Xiong a3465b5eac fix 16bit timer pwm output 2013-12-19 12:31:31 +08:00
Joey Ye 9213137011 Discard \r change as pull request rejected 2013-12-19 09:30:18 +08:00
tkuyucu 3c2258956b AnalogIn, Interrupts, and I2C are added. 2013-12-18 15:04:16 +01:00
0xc0170 988894e837 Merge branch 'master' into K20D50 2013-12-17 16:13:27 +01:00
Bogdan Marinescu 8ec31ead80 Merge pull request #132 from mazgch/master
Detection of modem when using serial port, CDMA version of linkmonitor
2013-12-17 06:24:12 -08:00
mazgch 6b9f2079f1 Add detection of LISA-C to select CDMA protocol when using serial port.
Make link monitor compatible with CDMA (no AT+COPS).
2013-12-17 11:35:23 +01:00
bcostm 9702a131d4 Merge branch 'master' of https://github.com/mbedmicro/mbed 2013-12-17 11:10:12 +01:00
Bogdan Marinescu c560db3233 Merge branch 'KL46_DEV' of git://github.com/sg-/mbed into sg--KL46_DEV
Conflicts:
	README.md
2013-12-17 12:06:12 +02:00
bcostm c84b8f9193 [NUCLEO_F103RB] Use HSI/LSI instead of HSE/LSE
Due to Nucleo board revision C requirements.
2013-12-17 11:04:28 +01:00
Bogdan Marinescu 572b22395f Merge pull request #129 from bcostm/master
[NUCLEO_F103RB] InterruptIn, Sleep, RTC added
2013-12-17 00:41:36 -08:00
Bogdan Marinescu 2fb9de927c Merge pull request #127 from 0xc0170/dev_KL05Z_exporters
Dev kl05 z exporters
2013-12-17 00:40:49 -08:00
sg- 33ae2fe364 Updates to comments and README.md to add new target links 2013-12-16 18:41:39 -06:00
sg- 4445a11673 Add pulldown support to PinMode enum and fix pullup value to match register definition 2013-12-16 13:05:13 -06:00
bcostm adce27f269 [NUCLEO_F103RB] Add RTC 2013-12-16 14:33:58 +01:00
bcostm f8ecc9be46 [NUCLEO_F103RB] Allow ACK polling with I2C (again)
Go back to the last modification made by Bogdan.
2013-12-16 10:13:31 +01:00
mazgch 5dea203d16 Fix for USBHost build issue 2013-12-16 11:10:10 +02:00
Bogdan Marinescu ed106b7ba6 Merge branch 'master' of github.com:mbedmicro/mbed 2013-12-16 11:02:51 +02:00
bcostm b42dacb13d Merge branch 'master' of https://github.com/mbedmicro/mbed 2013-12-16 10:00:20 +01:00
bcostm 967509de53 [NUCLEO_F103RB] Add sleep 2013-12-16 09:56:00 +01:00
Bogdan Marinescu 170ac6562b Merge pull request #121 from mazgch/master
improve USB host library and cellular modem stack
2013-12-16 00:52:14 -08:00
0xc0170 5747a4502d One section for vectors and flash protection bits. The unused space is filled with 0xff 2013-12-15 23:30:03 +01:00
0xc0170 f7cee14193 KL05Z GCC support, exporters for arm_gcc, uvision 2013-12-15 11:54:44 +01:00
bcostm 956064b4bc [NUCLEO_F103RB] Add InterruptIn 2013-12-14 18:53:57 +01:00
Bogdan Marinescu bb3d95e9e5 Merge branch 'master' of github.com:mbedmicro/mbed 2013-12-13 13:37:50 +02:00
Bogdan Marinescu 1ae5a1d340 Added pin definitions for LPC11U35 quick stard board 2013-12-13 13:35:19 +02:00
Bogdan Marinescu da605b82a5 Merge pull request #126 from bcostm/master
[NUCLEO_F103RB] Update PWM IOs used + I2C cleanup
2013-12-13 01:29:29 -08:00
Bogdan Marinescu f5e1f7037f Ported more tests to NUCLEO_F103RB 2013-12-12 20:00:56 +02:00
Bogdan Marinescu a164c6f498 [NUCLEO_F103RB] Allow ACK polling with I2C 2013-12-12 20:00:02 +02:00
Bogdan Marinescu 7d1c888204 Added LED PWM test 2013-12-12 19:59:31 +02:00
bcostm 18136e3f09 [NUCLEO_F103RB] Update PWM IOs used + I2C cleanup 2013-12-12 15:44:21 +01:00
Bogdan Marinescu bd51e4eb73 Merge pull request #123 from bcostm/master
[NUCLEO_F103RB] Add I2C master, code cleanup, ...
2013-12-12 02:34:48 -08:00
Anders Lindvall 0c774294fb LPC4088 target fixes
- changed scatter file to keep all the code in the internal flash
- added tests for SPIFI memory usage
2013-12-12 12:29:00 +02:00
bcostm 2310b4c031 [NUCLEO_F103RB] Code cleanup 2013-12-12 10:35:04 +01:00
bcostm a129b8f8fa [NUCLEO_F103RB] Add more generic signal names for the examples. 2013-12-11 18:38:35 +01:00
Bogdan Marinescu 8ee4396f01 Ported 'sd' test to the Nucleo board 2013-12-11 18:50:35 +02:00
Bogdan Marinescu c3d4d3079f Added DEVICE_SERIAL_FC as an indicator for the flow control implementation 2013-12-11 10:26:18 +02:00
bcostm 37b8acad68 [NUCLEO_F103RB] Code cleanup 2013-12-10 16:46:15 +01:00
0xc0170 5e9e53f934 PWM - changes to start the channel 2013-12-10 15:57:43 +01:00
mazgch 6a9083527e CDMA currently only uses one CDC 2013-12-10 15:25:08 +01:00
bcostm 5ebce384b5 [NUCLEO_F103RB] Align startup files with other targets 2013-12-10 11:14:56 +01:00
bcostm d44996c26c Merge branch 'master' of https://github.com/mbedmicro/mbed 2013-12-10 10:35:26 +01:00
mazgch 20776dbaa5 fixed the comparison 2013-12-09 23:43:51 +01:00
mazgch 44c2e02e51 - add support for MultiPort Serial Devices
- allow to configure the debug level of the USB stack
2013-12-09 22:04:21 +01:00
mazgch ad65dfff5a Merge branch 'master' of https://github.com/mbedmicro/mbed 2013-12-09 21:55:00 +01:00
mazgch d5da332367 only use one port with CDMA at the moment. 2013-12-09 21:48:01 +01:00
mazgch ea42c3b726 typo 2013-12-09 21:28:56 +01:00
mazgch d0d4476659 adding support for serial port 2013-12-09 21:22:02 +01:00
Bogdan Marinescu 28b16e995d Merge pull request #120 from arebert/lpc4088
[LPC4088]: Networking was broking when splitting peripheral RAM into two...
2013-12-09 07:07:45 -08:00
Bogdan Marinescu 7a7c14e050 [NUCLEO_F103RB] Test porting
Ported GPIO and UART tests, verified as working.
2013-12-09 15:36:51 +02:00
Bogdan Marinescu faee2bf073 [NUCLEO_F103RB] Serial interrupt fixes
- use TC flag instead of TXE for TX interrupt
- clear interrupt flags to prevent possible interrupt storm
2013-12-09 13:01:39 +02:00
Bogdan Marinescu 2b8e05e002 [NUCLEO_F103RB] Timer fixes
- the timer data structures were not properly initialized
- changed slave timer mode to external clock 1 (section 15.3.15 of the manual)
- avoid a possible race condition when concatenating the values of the
  two 16-bit timers
2013-12-07 14:26:54 +02:00
Andreas Rebert f5511ff82a [LPC4088]: elif should have been else 2013-12-07 12:29:06 +01:00
Andreas Rebert 4109fb7d07 [LPC4088]: Networking was broking when splitting peripheral RAM into two sections 2013-12-06 15:36:37 +01:00
tkuyucu 3faaff74ee PwmOut working. 2013-12-06 15:30:58 +01:00
Joey Ye b747181e0d Add \r in retarget 2013-12-06 18:06:11 +08:00
tkuyucu 105c31bcb3 SPISlave works. 2013-12-06 10:01:28 +01:00
tkuyucu 4ba79b77b4 SPISlave works. pwm_out works but needs more work to properly implement 0 pulse and 100% pulse. 2013-12-06 09:59:40 +01:00
Bogdan Marinescu 53cd64775d Hardware flow control implementation for LPC81X 2013-12-05 17:33:16 +02:00
Bogdan Marinescu d0b2fb6c66 Added flow control test
Since this requires a separate serial port connection, added this as a
new attribute of the MUTs.
2013-12-04 19:46:51 +02:00
Bogdan Marinescu 2ac6c4c531 Fixed RTS/CTS bit-banging on LPC1768 2013-12-04 19:46:12 +02:00
Bogdan Marinescu fbeb52d613 Added RTS/CTS flow control
Currently implemented only for LPC1768. On this platform, when hardware
flow control is not directly supported, it will be emulated.
Also added "not_implemented.c" as a placeholder for various HAL functions
that might not be implemented on all platforms (in this particular case,
serial_set_flow_control). These are weak implementations that default to a
"not implemented" error message.
2013-12-04 19:42:11 +02:00
bcostm 0aa8b93e26 NUCLEO_F103RB: Add I2C master api 2013-12-04 11:17:10 +01:00
Joe Turner 0438e70bd9 Revert accidental deletion 2013-12-03 16:02:29 +00:00
Joe Turner 4a66961d79 Merge branch 'master' into USBDevice-STM32F4 2013-12-03 15:58:11 +00:00
Joe Turner f56a13410b Remove magic number. 2013-12-03 15:44:35 +00:00
Joe Turner 8d36ce12cb Clean up STM32 USB HAL 2013-12-03 14:25:33 +00:00
Joe Turner 1ad15e4ef7 More changes to bring STM32 USB HAL to a pretty much working state. 2013-12-03 12:52:08 +00:00
Bogdan Marinescu 3f82e7fa6f Use correct scatter file for LPC4088 2013-12-03 11:04:37 +02:00
tkuyucu 685274563e Port, Buffer, DigitalInOut, and Spi (master) works. 2013-12-02 16:33:08 +01:00
Bogdan Marinescu 49df530ae7 Merge pull request #118 from bcostm/master
Add STMicroelectronics NUCLEO_F103RB target
2013-12-02 03:15:58 -08:00
Bogdan Marinescu 6aaa134516 Merge pull request #117 from Sissors/master
Added (deep)sleep to KL25Z
2013-12-02 01:55:33 -08:00
bcostm 3bcf77e4f7 NUCLEO_F103RB: minor changes 2013-12-02 09:22:28 +01:00
Sissors 9f89a4d218 Added (deep)sleep to KL25Z
Sleep is wait mode

Deepsleep is very low power stop mode

During the interrupt that removes it from deepsleep it will run at low
speed until the PLL is automatically re-enabled after the interrupt.
2013-11-30 19:28:00 +01:00
0xc0170 d8d526f656 Merge branch 'master' into K20D50 2013-11-28 17:24:57 +01:00
Michael Moon a249e39826 Improved baudrate calculation function.
Uses 100% integer math, delivers more accurate results with fewer iterations in less time.

Since it seems most of the NXP chips use identical math, I have also altered the other targets in this commit.

If there are non-NXP chips which use a similar serial block, consider porting to those as well

Comparison:

         BAUD   DL MUL DIV  CPU_CLOCK
      -------  --- --- --- ----------
new: {   9600, 625,  1,  0,  96000000},	// Actual baud:    9600, error =0.00%,    1 iterations
old: {   9600, 625,  1,  0,  96000000},	// Actual baud:    9600, error =0.00%,    0 iterations

new: {  38400, 125,  4,  1,  96000000},	// Actual baud:   38400, error =0.00%,    8 iterations
old: {  38400,  81, 14, 13,  96000000},	// Actual baud:   38409, error +0.02%,  420 iterations

new: {  57600,  81,  7,  2,  96000000},	// Actual baud:   57613, error +0.02%,  120 iterations
old: {  57600,  54, 14, 13,  96000000},	// Actual baud:   57613, error +0.02%,  315 iterations

new: { 115200,  27, 14, 13,  96000000},	// Actual baud:  115226, error +0.02%,  120 iterations
old: { 115200,  27, 14, 13,  96000000},	// Actual baud:  115226, error +0.02%,  210 iterations

new: { 230400,  23, 15,  2,  96000000},	// Actual baud:  230179, error -0.10%,  120 iterations
old: { 230400,  17, 15,  8,  96000000},	// Actual baud:  230179, error -0.10%,  525 iterations

new: { 250000,  24,  1,  0,  96000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  24,  1,  0,  96000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   6,  1,  0,  96000000},	// Actual baud: 1000000, error =0.00%,    1 iterations
old: {1000000,   6,  1,  0,  96000000},	// Actual baud: 1000000, error =0.00%,    0 iterations

new: {2000000,   3,  1,  0,  96000000},	// Actual baud: 2000000, error =0.00%,    1 iterations
old: {2000000,   3,  1,  0,  96000000},	// Actual baud: 2000000, error =0.00%,    0 iterations

new: {   9600, 514, 15,  4, 100000000},	// Actual baud:    9600, error =0.00%,  110 iterations
old: {   9600, 337, 15, 14, 100000000},	// Actual baud:    9593, error -0.07%, 1365 iterations

new: {  38400,  93,  4,  3, 100000000},	// Actual baud:   38402, error +0.01%,  120 iterations
old: {  38400,  85, 12, 11, 100000000},	// Actual baud:   38363, error -0.10%,  525 iterations

new: {  57600,  62,  4,  3, 100000000},	// Actual baud:   57604, error +0.01%,  120 iterations
old: {  57600,  61,  9,  7, 100000000},	// Actual baud:   57633, error +0.06%,  840 iterations

new: { 115200,  31,  4,  3, 100000000},	// Actual baud:  115207, error +0.01%,  120 iterations
old: { 115200,  31,  4,  3, 100000000},	// Actual baud:  115207, error +0.01%,  525 iterations

new: { 230400,  19,  7,  3, 100000000},	// Actual baud:  230263, error -0.06%,  120 iterations
old: { 230400,  19,  7,  3, 100000000},	// Actual baud:  230263, error -0.06%,  735 iterations

new: { 250000,  25,  1,  0, 100000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  25,  1,  0, 100000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   5,  4,  1, 100000000},	// Actual baud: 1000000, error =0.00%,    8 iterations
old: {1000000,   5,  4,  1, 100000000},	// Actual baud: 1000000, error =0.00%,  315 iterations

new: {2000000,   2,  9,  5, 100000000},	// Actual baud: 2008929, error +0.45%,  120 iterations
old: {2000000,   2,  9,  5, 100000000},	// Actual baud: 2008929, error +0.45%,  315 iterations

new: {   9600, 625,  4,  1, 120000000},	// Actual baud:    9600, error =0.00%,    8 iterations
old: {   9600, 404, 15, 14, 120000000},	// Actual baud:    9602, error +0.02%, 1575 iterations

new: {  38400, 179, 11,  1, 120000000},	// Actual baud:   38408, error +0.02%,  120 iterations
old: {  38400, 101, 15, 14, 120000000},	// Actual baud:   38409, error +0.02%,  525 iterations

new: {  57600,  93,  5,  2, 120000000},	// Actual baud:   57604, error +0.01%,  120 iterations
old: {  57600,  68, 12, 11, 120000000},	// Actual baud:   57545, error -0.10%,  420 iterations

new: { 115200,  47, 13,  5, 120000000},	// Actual baud:  115248, error +0.04%,  120 iterations
old: { 115200,  34, 12, 11, 120000000},	// Actual baud:  115090, error -0.10%,  315 iterations

new: { 230400,  19,  7,  5, 120000000},	// Actual baud:  230263, error -0.06%,  120 iterations
old: { 230400,  17, 12, 11, 120000000},	// Actual baud:  230179, error -0.10%,  210 iterations

new: { 250000,  30,  1,  0, 120000000},	// Actual baud:  250000, error =0.00%,    1 iterations
old: { 250000,  30,  1,  0, 120000000},	// Actual baud:  250000, error =0.00%,    0 iterations

new: {1000000,   5,  2,  1, 120000000},	// Actual baud: 1000000, error =0.00%,    3 iterations
old: {1000000,   4,  8,  7, 120000000},	// Actual baud: 1000000, error =0.00%,  210 iterations

new: {2000000,   3,  4,  1, 120000000},	// Actual baud: 2000000, error =0.00%,    8 iterations
old: {2000000,   2,  8,  7, 120000000},	// Actual baud: 2000000, error =0.00%,  210 iterations
2013-11-29 02:44:14 +11:00
tkuyucu 820e0473f6 Bogdan's startup fix added. 2013-11-28 13:21:21 +01:00
Joe Turner 089c1bb549 Add start to STM32 USB device driver. 2013-11-28 11:19:12 +00:00
0xc0170 c5a2e6ed0e pwm, spi - pin definition, dac removed 2013-11-27 18:46:30 +01:00
bcostm 1159845529 NUCLEO_F103RB: update channels management in analogin api 2013-11-27 15:39:57 +01:00
tkuyucu 511e24ecc9 nRF51822 mbed SDK with working GPIO, RawSerial, and timer 2013-11-27 13:16:11 +01:00
0xc0170 0e99a7c9bd Analog API - pins, analog pins (arduino) correction, irq
- ADC - pins, mux
	- analog pins - Ax
	- irq - port A - E
2013-11-26 20:08:13 +01:00
Bogdan Marinescu 256f70fffc Merge remote-tracking branch 'origin/master' 2013-11-26 17:14:46 +02:00
Bogdan Marinescu 3c0a8b633f Provide generic pinout defines
This commit adds generic peripheral names to various mbed enabled
boards, to make it easier to write portable code amongst various
mbed boards.
2013-11-26 17:12:36 +02:00
bcostm dd292a7e71 NUCLEO_F103RB: Add pwmout api + change timers for ticker 2013-11-26 09:26:08 +01:00
bcostm c33dbfd63d Enable STDIO messages used by the test firmwares 2013-11-25 10:20:39 +01:00
0xc0170 3dc97b20c0 startup ARM - stack pointer, serial functional
- stack pointer correction
	- startup for ARM - clean up
	- GCC ARM linker - RAM size correction
	- NVIC - RAM address
2013-11-22 21:21:01 +01:00
bcostm c47bc1780a Add UseMicroLIB option for exported project 2013-11-22 11:41:07 +01:00
Bogdan Marinescu f6c9c8db5e Fixed initial SP value 2013-11-21 19:07:52 +02:00
Emilio Monti 64952d4f7e Merge pull request #114 from mazgch/master
Avoid hardfault when CAN object is destructed.
2013-11-21 08:40:43 -08:00
mazgch a3a16b3683 Avoid hardfault when CAN object is destructed.
interrupts have to be disabled(can_irq_free) before we turn off(can_free) the peripheral
2013-11-21 17:31:17 +01:00
Emilio Monti 5278dd43f2 Merge pull request #113 from mazgch/master
fix the documentation to ethernet api to match implementation
2013-11-21 02:32:05 -08:00
mazgch 2b7d2bb343 fix the documentation to match implementation 2013-11-21 11:24:58 +01:00
Emilio Monti 6a5335a40e Merge pull request #112 from Sissors/master
Added sleep to LPC81x
2013-11-21 01:58:28 -08:00
Sissors 585e05ca6a Added sleep to LPC81x
http://mbed.org/users/mbed_official/code/mbed-src/pull-request/6
2013-11-21 08:19:44 +01:00
hototogi 03b79b5920 support GCC_ARM for LPC4330_M4
- Linker script is based on LPC1768
     number of NVIC is 16 (CORE) + 53 (M4 in LPC43xx) = 69,
    therefor, reserve at the top of RAM0 (address:0x10000000)
    to relocate NVIC vector table
 - startup file is based on startup_ARMCM4.S in CMSIS V3.20
     change NVIC name for cortex-M4 of LPC43xx
 - add GCC_ARM for LPC4330_M4 in python scripts
 - add some descriptions for GCC_ARM
2013-11-20 17:03:59 +09:00
0xc0170 4e09b52a71 K20 uVision files, ld NVIC offset
- K20 KEIL files
	- clock set to 1 (48MHz)
	- offset in GCC ld for vectors in RAM
	- us ticker - PIT timer interrupt implementation
2013-11-19 20:06:26 +01:00
Adam Green 10126e0b2f Increase available RAM for RTX on LPC11U24
The INITIAL_SP value used by RTX was originally at the 4k limit instead
of at the 8k limit.  The HEAP_START macro was defined to __HeapLimit
but the heap really starts at __end__.  __HeapLimit is just used for
some link time sanity checks to verify that the heap and stack can
grow a bit without colliding.
2013-11-19 00:38:12 -08:00
bcostm 415ac34b56 Add analogin, serial and spi support for NUCLEO_F103RB 2013-11-19 09:11:31 +01:00
0xc0170 8ca8014c00 Merge branch 'master' into K20D50 2013-11-18 20:34:45 +01:00
bcostm 70dd0d891e Add STM32F10x standard periph driver 2013-11-14 11:33:29 +01:00
bcostm 6d9b523185 Update workspace_tools files 2013-11-14 11:07:01 +01:00
bcostm beb779b3d6 Rename target 2013-11-13 09:29:29 +01:00
Bogdan Marinescu 5b6faea448 Removed redundant label TARGET_LPC81X_COMMON 2013-11-11 13:28:18 +02:00
Joris Aerts 76ffc4935e Fix bug in gpio_set not setting reserved pins correctly
Loop going over reserved pins was not going over all entries as result of incorrect sizeof
2013-11-08 13:39:00 -08:00
Bogdan Marinescu e69956aba2 Updated DSP library + build system changes
Updated CMSIS DSP to latest version (CMSIS-SP-00300-r3p2-00rel1.zip)
Build system changes to be able to preprocess assembler sources before compiling them:

- GCC: use gcc '-x assembler-with-cpp'
- ARM: preprocess first, then assemble (two separate commands)
- IAR: added macro definitions and include directories to the assembler command line

Removed CORTEX_ARM_SUPPORT restriction for the DSP libraries.
Tested: LPC1768 with ARM, GCC_ARM and IAR, LPC11U24 with ARM.
2013-11-08 15:38:23 +02:00
bcostm b8ddfce3d0 Change folder name to TARGET_NUCLEO-F103RB 2013-11-08 11:19:09 +01:00
bcostm 96a96f2cb6 Add STM32F10X cmsis files 2013-11-07 14:16:01 +01:00
bcostm c0d5675480 Add STM NUCLEO64 STM32F10X basic files 2013-11-07 11:32:01 +01:00
0xc0170 f4591dbbab Merge branch 'upstream_master' into dev_kl46z 2013-11-05 22:08:07 +01:00
Bogdan Marinescu cf71d0831b Merge pull request #99 from xiongyihui/master
add readable(), writeable() and settings changed callback to USBSerial
2013-11-05 01:37:35 -08:00
Bogdan Marinescu bb04bf917a Merge branch 'lpc4088' of git://github.com/arebert/mbed into arebert-lpc4088
Conflicts:
	workspace_tools/export/gccarm.py
2013-11-04 12:19:29 +02:00
Yihui Xiong d3ca818905 add readable(), writeable() and settings changed callback to USBSerial 2013-11-01 12:38:27 +08:00
Andreas Rebert 09cf4ef128 Support for exporting to GCC_ARM 2013-10-31 13:28:05 +01:00
Adam Green 64620e2e78 lwip: Stop dropping long TCP segments
If lwIP placed more than 2 pbufs in a TCP segment, the ethernet driver
would fail to send it as it didn't have enough Tx descriptors.  The
maximum number of pbufs outstanding for transmit that lwIP keeps is
defined by the TCP_SND_QUEUELEN macro.  I modifed the value of
LPC_NUM_BUFF_TXDESCS to take advantage of this lwIP value.  The +1
takes into account that LPC_EMAC->TxProduceIndex ==
LPC->TxConsumeIndex is reserved for indicating that the queue is empty
so a full queue uses one less than the maximum count.
2013-10-29 23:41:21 -07:00
Adam Green 692cbd11f6 lwip: Fix invalid checksum bug
tcp_write() would incorrectly byte swap the checksum 1 too many times
when concatenating a pbuf to an existing TCP segment if the number of
bytes in the concatenated data was odd.  I hit this issue when I tried
to reproduce a lost segment issue reported by a mbed user in this forum
thread: http://mbed.org/forum/mbed/topic/4354/?page=2#comment-22657
2013-10-29 23:41:21 -07:00
pbrier b1d88905a9 fixed can_filter() prototype (prevents build of LPC1768) 2013-10-26 17:02:29 +02:00
Emilio Monti 317a1f66d2 Merge pull request #91 from jorisa/master
Add CAN api filter support and LPC11CXX CAN implementation
2013-10-25 06:58:05 -07:00
Bogdan Marinescu 9d881770c9 Merge remote-tracking branch 'github/master' 2013-10-25 15:43:01 +03:00
Adam Green 969733ae8f serial_putc() to make better use of Tx FIFO
If don't know if this is an issue that anyone cares about.  I am also
not sure what the best way to solve it is either.  I just thought I
would issue a pull request with this commit to bring the issue to light
and show a possible solution that I have tested on my mbed-1768 device.

Previously the serial_putc() API didn't make any use of the Tx FIFO
since the serial_writable() API it utilizes only returns true when the
FIFO is completely empty.  This is due to the fact that the THRE bit of
the UART's LSR (Line Status Register) only goes high when the whole
FIFO is empty.

I noticed this when doing some performance testing with the network
stack.  I went from calling printf() to output 3 bytes every 10 seconds
(with packet drop stats) to instead output 4 bytes every 10 seconds.
I thought these should easily fit in the 16 byte FIFO but outputting
one extra byte caused an additional three 550 byte UDP packets to be
dropped.  This should only happen if the additional character being
sent to the UART was taking away extra CPU cycles from the network
stack.

My solution is to keep track of the number of bytes that have been
placed in the Tx FIFO since it was last detected as being completely
empty (via the THRE bit).  Only once this count hits 16 does the code
then block, waiting for the THRE bit to go high.  Each time the THRE
bit does go high, the count is reset to 0 again and it is incremented
for each byte that is loaded into the THR.
2013-10-25 15:17:06 +03:00
Joe Turner 6ae1e9e360 Merge branch 'master' of git://github.com/mbedmicro/mbed into bugfix-STM32-vectors 2013-10-25 13:11:25 +01:00
Joe Turner 0ef4905728 Fix relocation of vector on STM32. 2013-10-25 13:09:06 +01:00
Bogdan Marinescu 544ac9e728 Disable DEVICE_STDIO_MESSAGES for LPC81X
Because the LPC81X HAL implementation calls error(), which in turn calls
fprintf(), quite a bit of code is added to the image, which is not a good
idea on such resource constrained targets.
2013-10-25 14:51:01 +03:00
Bogdan Marinescu 5742abe6d9 Added the new RawSerial.h in mbed.h 2013-10-23 17:28:05 +03:00
Bogdan Marinescu 2404dc0092 Added new serial class, remove interrupt chaining
The new RawSerial class is a simple wrapper over the serial HAL that can
be safely used from an interrupt handler.
Interrupt chaining code was removed from InterruptIn, Serial and Ticker
because it caused lots of issues with the RTOS. Interrupt chaining is
still possible using the InterruptManager class.
2013-10-23 16:08:34 +03:00
Joris Aerts 739f2a6375 Add can_api hal implementation to LPC11CXX target
Most of the functionality works, interrupts might need a little more work.
2013-10-22 11:02:10 -07:00
Joris Aerts 08c1483eb3 Add bitfields definition to LPC11XX target
Generated from UM10398
2013-10-22 11:00:17 -07:00
Joris Aerts 067e446ae2 Add CAN->filter to API and add placeholders to hal's
Add filter function and modify CAN->read definition to allow reading specific messages.
2013-10-22 10:57:28 -07:00
Bogdan Marinescu fe7021d433 Renamed ubloxusbgsm in main to ubloxusb
Since the tests are now generic (both GSM and CDMA), rename the directory
to reflect this.
2013-10-22 12:41:01 +03:00
Bogdan Marinescu ae0bc41693 Added support for CDMA modem in SMSTest
Also remove unnecessary thread from main
2013-10-22 12:27:18 +03:00
Bogdan Marinescu 7f35fc4b76 Added support for CMDA modem in HTTPClientTest
Also remove unnecessary thread from main
2013-10-22 11:59:11 +03:00
Bogdan Marinescu dfb472ceaf fixed invalid include name 2013-10-21 14:43:46 +03:00
Bogdan Marinescu 8557b24b61 Merge remote-tracking branch 'github/master' 2013-10-21 14:23:04 +03:00
Bogdan Marinescu 8aaa1b76a6 Added auto synchronization for the u-blox GSM modem test
Also changed the test to look more like the original VodafoneUSBModem SMS
test (added another thread).
2013-10-21 14:21:42 +03:00
0xc0170 5129cd05f3 Merge branch 'upstream_master' into dev_gpio_irq_endis 2013-10-21 12:29:43 +02:00
0xc0170 b0537af763 gpio irq enable/disable
- InterruptIn disable_irq/enable_irq
2013-10-19 22:28:29 +02:00
Bogdan Marinescu 5e6262a91a Fixed macro definitions in u-blox test 2013-10-19 14:39:50 +03:00
Bogdan Marinescu ea9ba23ff5 Changed u-blox modem test
The test is not automated now, so it can be synced with the official
repository.
Also changed it to look more like the original VodafoneUSBModem test by
adding another thread in the code.
2013-10-19 00:54:32 +03:00
0xc0170 d9ed7aba77 CMSIS KL46 files (were KL25 renamed) 2013-10-17 19:32:40 +02:00
Bogdan Marinescu bdf5d03ba1 Updated tests
- Vodafone tests are gone for now
- Added u-blox TCP test (UB_1) and SMS test (UB_2).
- tests can now have more than a single source directory
2013-10-17 18:57:02 +03:00
Bogdan Marinescu a34945661d Added CellularModem as an abstract base class for modem implementations
Now both UbloxUSBGSMModem and UbloxUSBCDMAModem inherit from
CellularModem.
2013-10-17 15:40:46 +03:00
Bogdan Marinescu 87fbaa5507 Added missing constructor for CDMA modem initializer 2013-10-17 13:52:34 +03:00
Bogdan Marinescu 7585a23e6c Added CellularModem library, removed old VodafoneUSBModem library 2013-10-17 12:01:55 +03:00
Bogdan Marinescu 6a5d7c654d Modifications for compatibility with GCC 2013-10-17 10:34:07 +03:00
Bogdan Marinescu 2f26d09606 Changed debugging macros in WANDongle and WANDongleSerialPort
Now they use "dbg.h" which is a part of USBHost, thus eliminating the
dependency on code from CellularModem.
2013-10-16 23:59:32 +03:00
Bogdan Marinescu aa209e3002 Remove USBSerialStream from USBHost
The code from USBSerialStream depends on some headers from CellularModem,
so remove it from USBHost.
2013-10-16 23:57:09 +03:00
Bogdan Marinescu d8c3822c4c Changed USBHostConf.h to better match the previous USBHost configuration. 2013-10-16 16:00:49 +03:00
Bogdan Marinescu 26ac4e5288 Remove "debugging LED" from USBHost.cpp 2013-10-16 15:55:04 +03:00
Bogdan Marinescu 1c088eed13 Moved USBSerialStream from the CellularModem library to USBHost
This removes any dependency on USB code from CellularModem.
2013-10-16 15:53:58 +03:00
Bogdan Marinescu 864d3ef195 Renamed USB3GModule to USBHost3GModule to keep the naming convention 2013-10-16 15:52:47 +03:00
Bogdan Marinescu a4da762016 Removed references to specific initializers from the code 2013-10-16 15:47:46 +03:00
Bogdan Marinescu ae2e7c3051 Refactored dongle initialization code
The code for dongle initialization (WANDongleInitializer.cpp) was removed from
this class, it will be added by each modem as needed.
2013-10-16 15:46:26 +03:00
Bogdan Marinescu a0d9973cab Initial import of USB3GModem in the USBHost library
In the future, USBHostConf.h should really reside in the project that
imports USBHost, not inside the USBHost library itself. Doing that now
though might break compatibility with projects that currently import
USBHost, so we need to figure out a better solution.
2013-10-16 15:45:25 +03:00
Andreas Rebert a0a6cbe1d3 Merge branch 'master' into lpc4088 2013-10-11 14:02:59 +02:00
Andreas Rebert a574fd73b3 Bugfixes for I2C and port impl 2013-10-11 14:01:49 +02:00
Michael Ammann 330e59fb85 make buffer big enough 2013-10-09 15:12:53 +03:00
Dave Van Wagner d3963de05d Added methods to retrieve gateway and netmask from DHCP assignment 2013-10-09 13:47:41 +03:00
0xc0170 122f24b83f Update: Merge branch 'master' into freedomKL46Z
Conflicts:
	workspace_tools/targets.py
2013-10-06 18:55:32 +02:00
0xc0170 44bb8e00e5 First passed tests for KL46
- spi is failing, need to fix it
2013-10-01 20:18:39 +02:00
Joris Aerts 7ed6acb08a Move pwmout_api.c/PeripheralNames.h to LPC11XX_11CXX common
Because CT32B1 (P1_1, P1_2 and P1_3) is used by us_ticker.c for wait and ticker function. Since wait/ticker is commonly used by mbed code and I decided CT32B1 of LPC11XX should only be used for this function, not for PwmOut.
P1_6 and P1_7 are used by UART (USBTX/USBRX) and I think they should not be assigned to other function.
2013-09-30 08:11:56 -07:00
Joris Aerts 4d0c864b16 Move adc_pinmap.h to LPC11XX_11CXX common
Merge back into analog_api.c. P1_3/ADC0_4 (SWDIO) now disabled for both targets
2013-09-30 08:07:26 -07:00
0xc0170 8df14cadc9 scatter file - 32kb RAM, startup - removed heap, stack init
- clock set to 1 (external crystal)
2013-09-29 22:36:50 +02:00
0xc0170 5dcd8ea10e ARM (KEIL) files for KL46Z 2013-09-29 20:40:06 +02:00
0xc0170 b83fd7fb3b MUX corrections, Arduino Analog signals
- added new MUX options to all drivers
  - removal of LED which are not there
  - analog arduino R3 signals were switched
2013-09-29 20:04:56 +02:00
0xc0170 2ca3195b17 NVIC offset and address in RAM correction 2013-09-29 18:53:57 +02:00
Joris Aerts e1967755a5 Move spi_pinmap.h to LPC11XX_11CXX common
Merge back into spi_api.c. P0_10/SPI_0 (SWCLK) now disabled for both targets
2013-09-27 19:10:08 -07:00
Joris Aerts e9f5c8d3ca Move README.md to LPC11XX_11CXX common 2013-09-27 18:56:11 -07:00
Joris Aerts 3fe31ad50e Move objects.h to LPC11XX_11CXX common
Use #if DEVICE_CAN for can_s definition
2013-09-27 18:53:19 -07:00
Bogdan Marinescu f580c008b1 Merge pull request #78 from mconners/master
Added KL46Z support
2013-09-25 03:18:49 -07:00
Bogdan Marinescu 8f57c1e847 Merge remote-tracking branch 'github/master' 2013-09-25 10:27:17 +01:00
Bogdan Marinescu 1e224c5152 Fix RAM size for LPC11C24 in ARM/uARM linker command files 2013-09-25 10:18:43 +01:00
Bogdan Marinescu 30907d7772 Refactor LPC1114 and LPC11C24 code
Since most of the code for LPC1114 and LPC11C24 is similar, refactor the
code structure to avoid duplication of the common code.
2013-09-25 10:17:19 +01:00
Michael Conners 5bd25ac046 Added K20D5M support 2013-09-24 10:36:04 -04:00
Michael Conners afcc79ad27 Added KL46Z support 2013-09-24 10:01:06 -04:00
Andreas Rebert bb35d16521 Merged bugfixes and improvments for LPC1768 target to LPC4088 target 2013-09-23 11:39:52 +02:00
Bogdan Marinescu f2f7b213cd Merge pull request #75 from jorisa/master
Keep LPC11CXX in sync with LPC11XX
2013-09-20 01:53:40 -07:00
Emilio Monti 38ed9eb6a0 Merge pull request #72 from jorisa/master
Split uVision project source files in groups mbed/hal/src
2013-09-19 01:46:53 -07:00
Bogdan Marinescu 81b372d362 Merge pull request #73 from ytsuboi/master
Fixed LPC1114 ADC offset problem
2013-09-19 01:35:42 -07:00
Toyomasa Watarai 866858a816 Fixed LPC1114 ADC offset problem 2013-09-19 16:19:04 +09:00
Toyomasa Watarai f4bfe5aedb Revert "Fixed ADC offset problem"
This reverts commit 399acd1d6f.
2013-09-19 16:16:52 +09:00
Toyomasa Watarai 399acd1d6f Fixed ADC offset problem 2013-09-19 16:16:05 +09:00
Joris Aerts a4badc7dd2 Keep LPC11CXX in sync with LPC11XX
Only differences in CMSIS now are:
* Top of RAM (0x10001000 vs 0x10002000)
* Clock configuration (IRC/System PLL vs System Oscillator/IRC)
2013-09-18 18:54:53 -07:00
Joris Aerts 979bba6864 Don't call mbed_interface_disconnect when DEVICE_SEMIHOST is disabled 2013-09-18 14:10:29 -07:00
Joris Aerts c275ef3b3d Replace #ifdef with #if DEVICE_STDIO_MESSAGES
DEVICE_STDIO_MESSAGES is the only #define in device.h that is being used in the library as #ifdef rather than #if. This is misleading since setting it to 0 will not disable including the <stdio.h> libraries.
2013-09-17 18:19:22 -07:00
Adam Green 5eb976a088 Fix _sbrk() implementation for Cortex-M parts.
A recent commit, 43acaa4166, to get _sbrk() to build successfully for
LPC2368 broke the Cortex-M implementation.  __get_MSP() isn't ever
defined as a macro, it is an inline function.  This means that the
code would always be compiled to use SP instead of MSP on Cortex-M
parts.  I switched the code to instead use the TARGET_ARM7 define
to choose which stack pointer to utilize.

I tested this fix by making sure that the LPC2368 version of the mbed
SDK would still build successfully with the Python scripts and that the
NET1 test still built and ran successfully on my mbed-LPC1768 device.
2013-09-17 04:29:35 -07:00
Emilio Monti 96ea3db1b3 Merge pull request #66 from dinau/lpc2368_mod
LPC2368 mod
2013-09-16 08:00:20 -07:00
Emilio Monti 061259c07c Merge pull request #67 from adamgreen/gccFixUSBHost
Get USBHost to build and run with GCC_ARM
2013-09-16 07:12:43 -07:00
dinau efbc52465d LPC2368 [GCC_ARM]: Silence some warnings. 2013-09-13 22:01:21 +09:00
dinau 43acaa4166 LPC2368 [GCC_ARM]: Fixed: Compilation and link errors in case "SD" example. 2013-09-13 22:01:19 +09:00
Emilio Monti 2481fbe2a2 Merge pull request #62 from arebert/lpc4088
LPC4088: PIN mode fix, export to external tools and MAC address retrieval
2013-09-13 05:59:14 -07:00
Bogdan Marinescu b9d52bda50 Merge remote-tracking branch 'github/master' 2013-09-12 16:38:13 +03:00
Erik Olieman c255ca2959 USBDevice memory leaks fixes
Fixes memory leaks in USBMSD, USBSerial (CircBuffer) and the KL25Z USB
HAL.
Original author: Erik Olieman, a few changes by Bogdan Marinescu.
2013-09-12 16:35:52 +03:00
Bogdan Marinescu 6eec86cbbf Merge pull request #64 from ytsuboi/master
[LPC812] Added RTOS support
2013-09-11 12:10:17 -07:00
Erik Olieman 94ff741989 LPC1768 InterruptIn speedup
Use __CLZ to speed up GPIO interrupt processing.
2013-09-11 18:46:18 +03:00
ytsuboi a693ad6d06 Merge branch 'master' of https://github.com/ytsuboi/mbed 2013-09-11 02:30:33 +09:00
ytsuboi f79b9d3430 [LPC812] Added RTOS support 2013-09-11 02:30:27 +09:00
Bogdan Marinescu 171dda705c Merge pull request #63 from jorisa/master
Fix hardfault when attaching callback to CAN2 when CAN1 is not defined
2013-09-10 03:22:55 -07:00
Joris Aerts efd3d8d8e0 Fix hardfault when attaching callback to CAN2 when CAN1 is not defined
Fault is triggered by trying to read LPC_CAN1->IER when the peripheral is powered off. Fixed by checking the power control register before checking the IER register.
2013-09-09 09:06:04 -07:00
Bogdan Marinescu cfa6a1d912 Merge pull request #61 from ytsuboi/master
Fixed problem in PWMOUT mapping table
2013-09-09 08:22:11 -07:00
Andreas Rebert 00cfdbad2a Merge remote-tracking branch 'upstream/master' into lpc4088 2013-09-09 14:13:08 +02:00
unknown 0e36bdd457 Bugfix: PIN Modes was not set correctly
Added: Export to uVision and Code Red toolchains
2013-09-09 14:10:11 +02:00
Bogdan Marinescu 1f243a900c Merge remote-tracking branch 'github/master' 2013-09-09 12:31:42 +03:00
Bogdan Marinescu fded46b459 [LPC1768] Fix serial_clear
serial_clear() erroneously disabled the UART FIFOs.
Reported by Adam Green.
2013-09-09 12:28:11 +03:00
Toyomasa Watarai d0d2df3ce5 Fixed problem in PWMOUT mapping table
Fixed problem in PWMOUT output issue.
Startup code cean-up (correced exception names).
Corrected test cases.
2013-09-09 18:15:51 +09:00
Bogdan Marinescu d51411294f Merge pull request #57 from adamgreen/serialTxDropsRx
serial_putc() can cause rx bytes to be dropped
2013-09-09 01:19:29 -07:00
Joris Aerts 743e178455 Fix MASKED_ACCESS bug in gpio_init, now same as LPC11xx (Also use PIN_SHIFT instead of magic number 8 in gpio_set) 2013-09-08 18:57:40 -07:00
Adam Green 5d27f98c7b serial_putc() can cause rx bytes to be dropped
While fixing this issue in the various LPC* ports, I noticed a comment
pointing to this mbed forum post which summarizes this bug quite well:
  https://mbed.org/forum/bugs-suggestions/topic/4473/

This bug was introduced in the following commit:
2662e105c4

The following code was added to serial_putc() as part of this commit:
    uint32_t lsr = obj->uart->LSR;
    lsr = lsr;
    uint32_t thr = obj->uart->THR;
    thr = thr;

As the forum post indicates, this causes the serial_putc() routine to
actually eat an inbound received byte if it exists since reading THR is
really reading the RBR, the Receiver Buffer Register.  This code looks
like code that was probably added so that the developer could take a
snapshot of these registers and look at them in the debugger.  It
probably got committed in error.
2013-09-07 00:44:44 -07:00
Bogdan Marinescu e03e337af6 Fix USBDevice compilation on LPC11U24_301 and LPC11U35_401
Reported by Frank Buss <fb@frank-buss.de>
2013-09-06 12:21:38 +03:00
Bogdan Marinescu 423f1abd63 Fix startup files for various versions of LPC11Uxx
LPC11U24/LPC11U24_301/LPC11U35_401 shared the same startup file for ARM
and uARM toolchains, which is wrong, because the initial SP value is
different for LPC11U24_301. This commit fixes this issue by giving each
target its own startup file.
2013-09-06 11:50:52 +03:00
Bogdan Marinescu 95f6826196 Refactor code for LPC810/LPC812
There were lots of overlaps in the code for LPC810 and LPC812, including
duplicated source files. This commit adds a TARGET_LPC81X_COMMON folder in
both HAL and CMSIS, this folder keeps common code for the targets.
2013-09-05 19:00:19 +03:00
Bogdan Marinescu 233979e88f Merge pull request #54 from ytsuboi/master
Added LPC810 support
2013-09-05 07:00:17 -07:00
Bogdan Marinescu ae16d3efa8 Fix NULL pointer indirection in FilePath
If the FileBase::lookup operation in the constructor of FilePath returns
NULL, subsequent operations (such as isFile()/isFileSystem()) will call
methods on a NULL 'fb' pointer. This commit fixes this issue by adding
explicit NULL checks and a new method in FilePath (exists()).
2013-09-05 14:09:27 +03:00
ytsuboi 46003d4c3c Merge remote-tracking branch 'upstream/master' 2013-09-05 13:01:12 +09:00
Abe Karplus 96101aed32 Added complete PwmOut mappings for KL25Z 2013-09-04 15:52:58 +03:00
Bogdan Marinescu 45565cb055 Merge pull request #48 from adamgreen/gccRetargetSbrk
gcc: Provide _sbrk implementation compatible with RTX
2013-09-04 01:12:31 -07:00
ytsuboi 0718c7671a Merge remote-tracking branch 'upstream/master' 2013-09-03 19:38:34 +09:00
Bogdan Marinescu 42e27e70b9 Merge pull request #51 from adamgreen/netMorePerformanceWork
Asm versions of netstack memcpy() and lwip_standard_chksum()

[Note] I'm generally a bit reluctant when including optimizations like this (from an architectural standpoint), because they tend to be a bit too specific (for example, this one works only with lwIP+GCC+Cortex-M3 or M4), but for now it looks as this is the right place for them, although the optimized memcpy should ideally be in libc (or even better replaced with a DMA transfer in this particular case). But this will be both a nice optimization and a reminder of what we need to implement/change in the future.
2013-09-02 04:05:56 -07:00
Adam Green 2056ad025e usbhost: USBHost::fileControlBuf() handle alignment and endianness
Based on great feedback from Martin Kojtal on my previous commit, I
have modified my USBHost::fileControlBuf() change to be more portable.
    ddb3fbe826 (commitcomment-3988044)

The code now fills in the setupPacket byte array a byte at a time,
using bit shifts to extract lower and upper bytes from the 16-bit
values so that the code should work on big endian or little endian
machines.  I also removed the 2-byte alignment attribute from the
setupPacket array as it is no longer required.
2013-09-01 12:19:59 -07:00
dinau 8503ccb7a3 LPC2368 [GCC_ARM, GCC_CR]:
1. Added: GCC_CR toolchain ID for LPC2368. (targets.py)
2. Modified: Startup codes for GCC_ARM and GCC_CR toolchain.
3. Verified: "ticker" and "basic" test program work well, so far.
(Fixed typo.)
2013-08-31 16:00:40 +09:00
dinau 7bcdf0b980 LPC2368 [GCC_ARM, GCC_CR]:
1. Added: GCC_CR toolchain ID for LPC2368. (targets.py)
2. Modified: Startup codes for GCC_ARM and GCC_CR toolchain.
3. Verified: "ticker" and "basic" test program works well, so far.
2013-08-31 13:33:34 +09:00
Adam Green 9e6d1683b8 gcc: Provide _sbrk implementation compatible with RTX
I verified that the hang issue I was seeing when building and running
the mbed official networking tests with GCC_ARM was related to this
issue reported on the mbed forums:
    http://mbed.org/forum/mbed/topic/3803/?page=1#comment-18934

If you are using the 4.7 2013q1 update of GCC_ARM or newer then it
will have a _sbrk() implementation which checks the new top of heap
pointer against the current thread SP, stack pointer.
See this GCC_ARM related thread for more information:
    https://answers.launchpad.net/gcc-arm-embedded/+question/218972
When using RTX RTOS threads, the thread's stack pointer can easily
point to an address which is below the current top of heap so this
check will incorrectly fail the allocation.

I have added a _sbrk() implementation to the mbed SDK which checks the
heap pointer against the MSP instead of the current thread SP.  I have
only enabled this for TOOLCHAIN_GCC_ARM as this is the only GCC based
toolchain that I am sure requires this.
2013-08-30 18:15:25 -07:00
Adam Green 7dddd9e578 Asm versions of netstack memcpy() and lwip_standard_chksum()
For tests such as TCPEchoServer
(http://mbed.org/users/emilmont/notebook/networking-libraries-benchmark/)
this change showed a 28% improvement (14Mbps to 18Mbps) when the echo
test was modified to instead use 1K data buffers.

I targetted these two functions based on manual profiling samples which
showed that a great deal of time was being spent in these two functions
when the network stack was being slammed with UDP packets.
2013-08-30 06:09:16 -07:00
Bogdan Marinescu e23be8a1b3 Merge pull request #46 from adamgreen/netAssertDisableAndCrashFixes2
Robustness fixes for netstack
2013-08-30 04:47:15 -07:00
Bogdan Marinescu 1798920cf4 Merge remote-tracking branch 'github/master' 2013-08-30 12:26:37 +03:00
Bogdan Marinescu e870a90ff2 Added toolchain hooks and support for LPC4088_EA binary generation
A new hooks mechanism (hooks.py) allows various targets to customize
part(s) of the build process. This was implemented to allow generation of
custom binary images for the EA LPC4088 target, but it should be generic
enough to allow other such customizations in the future. For now, only the
'binary' step is hooked in toolchains/arm.py.
2013-08-30 12:19:08 +03:00
Adam Green c0d7c3fb39 USBHost: Silence narrowing warning in USBHostMSD::inquiry
I changed the following initialization from:
    uint8_t cmd[6] = {0x12, (lun << 5) | evpd, page_code, 0, 36, 0};
to:
    uint8_t cmd[6] = {0x12, uint8_t((lun << 5) | evpd), page_code, 0, 36, 0};
This makes it clear to the compiler that we are Ok with the 32-bit
integer result from the shift and logical OR operation (after integral
promotions) being truncated down to a 8-bit unsigned value.  This is
safe as long as lun only has a value of 7 or lower.
2013-08-29 21:16:45 -07:00
Adam Green fb769b1566 USBHost: Don't pass NULL in for uint32_t parameters.
USBHostHub.cpp made a few calls to the USBHALHost::deviceDisconnected()
virtual method passing in NULL for the addr parameter which is actually
declared as uint32_t and not a pointer type.  Switching these calls
to pass in a 0 for this parameter silences GCC warnings about
incompatible types.
2013-08-29 21:12:12 -07:00
Adam Green 8281836df3 USBHost: Silence unused variable warnings.
I removed the initialization of some variables which were never used to
silence GCC warnings.

One of them had me removing the following line from
USBHostMouse::rxHandler():
    int len = int_in->getLengthTransferred();
The variable len is never used again in this method and it doesn't
appear that the int_in->getLengthTransferred() call has any side
effects which would require this extraneous call to remain in the code.
2013-08-29 21:07:43 -07:00
Adam Green ddb3fbe826 USBHost: Silence GCC warnings in USBHost.cpp
There are a few warnings thrown by GCC for this source file that I have
attempted to correct.  I would definitely appreciate feedback from
others on these changes:
* USBHost::usb_process() would attempt to write past the end of the
  deviceInited[] array in the following code snippet:
    if (i == MAX_DEVICE_CONNECTED) {
        USB_ERR("Too many device connected!!\r\n");
        deviceInited[i] = false;
  The i variable is guaranteed to index 1 item past then end of this
  array since it only contains MAX_DEVICE_CONNECTED elements.  I have
  removed the line which sets deviceInited[i] to false.  Two questions
  result though:
    1) What was the intent of this line of code and is it Ok that I
       just removed it or should it be replaced with something else?
    2) I see no where else that elements in the deviceInited array are
       set to false except when all are set to false in the usbThread()
       method.  Should there be code in DEVICE_DISCONNECTED_EVENT to
       do this as well?
* USBHost::transferCompleted(volatile uint32_t addr) was comparing addr
  to NULL, which is of pointer type.  GCC issues a warning on this
  since the types are different (void* being compared to uint32_t).  I
  switched it to just compare with 0 instead.
* There is a switch statement in USBHost::unqueueEndpoint() which
  is conditional on a ENDPOINT_TYPE enumeration but doesn't contain
  cases for all values in the enumeration.  I just added a default
  case to simply break on other values to silence this GCC warning and
  allow the code to continue working as it did before.  Is it Ok that
  this particular piece of code only handles these two particular
  cases?
* USBHost::fillControlBuf() was generating a warning about possible
  alignment issues when accessing the setupPacket byte array as 16-bit
  half words instead.  I changed the casting to silence the warnings
  and modified the declaration of the setupPacket field to make sure
  that it is at least 2-byte aligned for these 16-bit accesses.
2013-08-29 19:22:36 -07:00
Adam Green bfafd8a014 USBHost: Calling memcpy() instead of memset()?
The two following memcpy() calls in USBEndpoint::init() are passing in
a NULL pointer as the copy source location.

    memcpy(td_list_[0], 0, sizeof(HCTD));
    memcpy(td_list_[1], 0, sizeof(HCTD));

I suspect that these were meant to be memset() calls instead so I
switched them.  In one of the places that I found where this method is
called, USBHost::newEndpoint(), its passes in an array of HCTD objects
which have already been cleared with similar memset() calls.  I am
therefore pretty certain that these were meant to be memset() calls but
if all callers already guarantee that they are zeroed out then maybe
the memset()s can be removed from USBEndpoint::init() anyway.
2013-08-29 18:22:22 -07:00
Adam Green 8a6d5ebc34 USBHost: Updates to allow compilation with GCC_ARM
I updated a few things in the USBHost source code to get it to compile
with GCC:
* In USBHALHost.cpp, the usb_buf global variable was defined with two
  different aligmnent specifiers:
    static volatile __align(256) uint8_t usb_buf[TOTAL_SIZE] __attribute((section("AHBSRAM1"),aligned));  //256 bytes aligned!
  The first one was not accepted by GCC.  I removed the duplicate
  alignment specifier and updated the one in the existing __attribute
  property to force the desired 256 byte alignment.
* Removed the explicit use of the __packed property from structures
  and instead used the PACKED macro defined in the mbed SDK's
  toolchain.h header file.  This macro does the right thing for the
  various compilers supported by the mbed team.
* Updated USB_* message macros in dbg.h to place spaces around
  references to the 'x' macro parameter.  Without this, C++ 11
  compilation thought the x character was a string literal operator but
  it wasn't one it recognized.  Adding the spaces makes it easier to
  see the use of the parameter, fixes this compile time error, and
  doesn't add any extra space to the final output string since the
  compiler only concatenates the contents within the double quotes of
  the strings.

By the way, I build with the gnu++11 standard since I have had requests
for its support from gcc4mbed.  Some of the items fixed here might not
be errors when using older standards with GCC.

I built and tested a USBHostMSD sample with these updates using both
GCC and the online compiler.  I will test more of the host interfaces
before issuing a pull request containing this commit.
2013-08-29 12:48:20 -07:00
dinau 841ce1d719 Fixed: The issue of interrupt vector remapping for GCC_ARM LPC1114 2013-08-29 21:40:57 +09:00
dinau 97d92789ec Fixed: The issue of interrupt vector remapping for GCC_ARM LPC1114 2013-08-28 23:29:16 +09:00
Adam Green b0c0f47c7d Changed leading whitespace back to tab.
The leading whitespace preceeding the fields in the lpc_enetdata
structure definition were originally a tab and I used 4 spaces when
I added RxThread.
2013-08-27 23:57:24 -07:00
Adam Green 8cf3e658d1 Don't use semaphore from ENET_IRQHandler to packet_rx
I now use a signal to communicate when a packet has been received by
the ethernet hardware and should be processed by the packet_rx thread.
Previously the change to make the lwIP stack thread safe introduced
enough delay in packet_rx that the semaphore count could lag behind
the processed packets and overflow its maximum token count.  Now the
ISR uses the signal to indicate that >= 1 packet has been received
since the last time packet_rx() was awaken.

Previously the ethernet driver used generic sys_arch* APIs exposed from
lwIP to manipulate the semaphores.  I now call CMSIS RTOS APIs
directly when using the signals.  I think this is acceptable since that
same driver source file already contains similar os* calls that talk
directly to the RTOS.
2013-08-27 23:38:42 -07:00
Adam Green 2bed996462 Revert "net: Only process 1 packet per ethernet RX interrupt"
This reverts commit acb35785c9.

It turns out that this commit actually causes problems if an ethernet
interrupt is dropped because a higher privilege task is running, such
as LocalFileSystem accesses.  If this happens, the semaphore count isn't
incremented enough times and the packet_rx() thread will fall behind and
end up running as though it had only one ethernet receive buffer.  This
causes even more lost packets.

I plan to fix this by switching the semaphore to be a signal so that
the syncronization object is more boolean.  It simply indicates if an
interrupt has arrived since the last time packet_rx() was awaken to
process inbound packets.
2013-08-27 22:24:47 -07:00
Adam Green de8161fde1 net: Reset pbuf length when re-queueing on error.
I recently pulled a NXP crash fix for their ethernet driver which will
requeue a pbuf to the ethernet driver rather than sending it to the
lwip stack if it can't allocate a new pbuf to keep the ethernet
hardware primed with available packet buffers.  While recently
reviewing this code I noticed that the full size of the pbuf wasn't
used on this re-queueing operation but the size of the last received
packet.  I now reset the pbuf size back to its originally allocated
size before doing this requeue operation.
2013-08-27 22:24:03 -07:00
Adam Green acb35785c9 net: Only process 1 packet per ethernet RX interrupt
Previously the packet_rx() function would wait on the RxSem and when
signalled it would process all available inbound packets.  This used to
cause no problem but once the thread synchronization was turned
on via SYS_LIGHTWEIGHT_PROT, the semaphore actually started to overflow
its maximum token count of 65535.  This caused the mbed_die() flashing
LEDs of death.  The old code was really breaking the producer/consumer
pattern that I typically see with a semaphore since the consumer was
written to consume more than 1 produced object per semaphore wait.
Before the thread synchronization was enabled, the packet_rx() thread
could use a single time slice to process all of these packets and then
loop back around a few more times to decrement the semaphore count
while skipping the packet processing since it had all been done.
Now the packet processing code would cause the thread to give up its
time slice as it hit newly enabled critical sections.  In the end it
was possible for the code to leak 2 semaphore signals for every 1 by
which the thread was awaken.  After about 10 seconds of load, this
would cause a leak of 65535 signals.

NOTE: Two potential issues with this change:
1) The LPC_EMAC->RxConsumeIndex != LPC_EMAC->RxProduceIndex check was
   removed from packet_rx().  I believe that this is Ok since the same
   condition is later checked in lpc_low_level_input() anyway so it
   won't now try to process more packets than what exist.
2) What if ENET_IRQHandler(void) ends up not signalling the RxSem for
   every packet received?  When would that happen?  I could see it
   happening if the ethernet hardware would try to pend more than 1
   interrupt when the priority was too elevated to process the
   pending requests.  Putting the consumer loop back in packet_rx()
   and using a Signal instead of a Semaphore might be a better
   solution?
2013-08-27 22:24:03 -07:00
Adam Green f5ec5d3ab2 net: Enable SYS_LIGHTWEIGHT_PROT
This option actually enables the use of the lwip_sys_mutex for
protecting concurrent access to such important lwIP resources as:
  select_cb_list (this is the one which orig flagged problem)
  sockets array
  mem stats (if enabled)
  heap (if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT was non-zero)
  memp pool allocs/frees
  netif->loop_last pbuf linked list
  pbuf reference counts
  ...

I first noticed this issue when I hit a crash while slamming the net
stack with a large number of TCP packets (I was actually sending 1k
data buffers from the TCPEchoServer mbed sample.)  It crashed in the
last line of this code snippet from event_callback:
  for (scb = select_cb_list; scb != NULL; scb = scb->next) {
    if (scb->sem_signalled == 0) {

It was crashing because scb had an invalid address so it generated a
bus fault.  I figured that memory was either corrupted or there was
some kind of concurrency issue.  In trying to determine which, I wanted
to walk through the select_cb_list linked list and see where it was
corrupted:
    (gdb) p scb
    $1 = (struct lwip_select_cb *) 0x85100080
    (gdb) p select_cb_list
    $2 = (struct lwip_select_cb *) 0x0

That was interesting, the head of the linked list was now NULL but it
must have had a non-NULL value when this loop started running or we
would have never gotten to the point where we hit this crash.

This was starting to look like a concurrency issue since the linked
list was modified out from underneath this thread.  Looking through the
source code for this function, I saw use of macros like
SYS_ARCH_PROTECT and SYS_ARCH_UNPROTECT which looked like they should
be providing the thead synchronization.  I disassembled the
event_callback() function in the debugger and saw no signs of the
usage of synchronizition APIs that I expected.  A search
through the code for the definition of these SYS_ARCH_UN/PROTECT
macros led me to discovering that they were actually ignored unless an
implementation defined them itself (the mbed version doesn't do so) or
the SYS_LIGHTWEIGHT_PROT macro is set to non-zero (the mbed version
didn't do this either).  Flipping the SYS_LIGHTWEIGHT_PROT macro on in
lwipopts.h fixed the crash I kept hitting, increased the size of the
code a bit, and unfortunately slows things down a bit since it now
actually serializes access to these data structures by making calls
to the RTOS sync APIs.
2013-08-27 22:24:03 -07:00
Adam Green fa392423c8 Silence GCC unused variable warning.
After making my previous commit to completely disable LWIP_ASSERT
macro invocations, I ended up with a warning in pbuf.c where an
err variable was set but only checked for success in an assert.  I
added a "(void)err;" reference to silence this warning.
2013-08-27 22:24:03 -07:00
Adam Green 4603d729f9 net: Fully disable LWIP_ASSERTs
I was doing some debugging that had me looking at the disassembly of
lpc_rx_queue() from within the debugger.  I was looking for the call to
pbuf_alloc() that we see in the following code snippet:
		p = pbuf_alloc(PBUF_RAW, (u16_t) EMAC_ETH_MAX_FLEN, PBUF_RAM);
		if (p == NULL) {
			LWIP_DEBUGF(UDP_LPC_EMAC | LWIP_DBG_TRACE,
				("lpc_rx_queue: could not allocate RX pbuf (free desc=%d)\n",
				lpc_enetif->rx_free_descs));
			return queued;
		}

		/* pbufs allocated from the RAM pool should be non-chained. */
		LWIP_ASSERT("lpc_rx_queue: pbuf is not contiguous (chained)",
			pbuf_clen(p) <= 1);

When I was looking through the disassembly for this code I noticed a
call to pbuf_clen() in the actual machine code.
=> 0x0000bab0 <+24>:	bl	0x44c0 <pbuf_clen>
   0x0000bab4 <+28>:	ldr	r3, [r4, #112]	; 0x70
   0x0000bab6 <+30>:	ldrh.w	r12, [r5, #10]
   0x0000baba <+34>:	add.w	r2, r3, #9
   0x0000babe <+38>:	add.w	r0, r12, #4294967295	; 0xffffffff

The only call to pbuf_clean made from this function is made from
within the LWIP_ASSERT.  When I looked more closely at how this macro
was defined, I saw that the mbed version of the stack had disabled the
LWIP_PLATFORM_ASSERT macro when LWIP_DEBUG was false which means that
no action will be taken if the assert is false but it still allows the
LWIP_ASSERT macro to potentially evaluate the assert expression.
Defining the LWIP_NOASSERT macro will fully disable the LWIP_ASSERT
macro.

I saw one of my TCP/IP samples shrink about 0.5K when I made this
change.
2013-08-27 22:24:03 -07:00