Commit Graph

2068 Commits (245a60b29caabb42eabdd19658eeac7c3f68313b)

Author SHA1 Message Date
ohagendorf 11c2a5b888 error correction rebas and build_travis extension
travis_build ok
all tests for nucleo_f0xx and nucleo_f3xx ok
2015-01-05 23:59:58 +01:00
ohagendorf f5c3b18d75 [NUCLEO_F091RC] adding exporter (gcc_arm, coide), enable rtos
- Adding exporter for CoIDE and GCC_ARM
- Adding target to RTOS lib
2015-01-05 22:55:18 +01:00
ohagendorf 5ebdb92e78 [NUCLEO_F072RB] adding target to rtos lib
Every test (DTCT_1, EXAMPLE_1, MBED_xx, RTOS_x) is OK.
2015-01-05 22:43:52 +01:00
Martin Kojtal 914dd37b11 Merge pull request #818 from ohagendorf/stm32l053_rtos
DISCO/NUCLEO_L053xx - adding to RTOS, corrections for all tests, [DISCO_L053] exporter to µVision
2015-01-05 08:08:00 +01:00
Martin Kojtal 47ac39b3fd Merge pull request #812 from perkristian/master
RTOS: Fix stack alignment
2015-01-05 08:01:09 +01:00
Martin Kojtal e1309e658a Merge pull request #811 from albert361/master
Add IAR toolchain support for DISCO_F429ZI
2015-01-05 07:57:36 +01:00
Martin Kojtal 3aef1389d5 Merge pull request #829 from Kazu-zamasu/LPC824-GCC_CR
Tools: LPC824 -  GCC_CR support
2015-01-05 07:55:21 +01:00
Martin Kojtal fdc60ac217 Merge pull request #827 from adamgreen/rtxNoStackCheckForMainThread
RTOS: Main thread should not write MAGIC_WORD to stack
2015-01-05 07:50:23 +01:00
Martin Kojtal 5748a9da69 Merge pull request #826 from adamgreen/rtxSupportStacksLargerThan64k
RTX: Support stacks larger than 64k
2015-01-05 07:48:32 +01:00
kazu-zamasu b066ebff90 Add to GCC_CR
New create GCC_CR LPCXPresso export.
2015-01-04 12:02:01 +09:00
Adam Green 461403989c RTX: Main thread should not write MAGIC_WORD to stack
This is a fix for issue #285.  This fix is similar to that proposed by
@oresths in the original issue.

There is code in rt_init_stack() which compares the task_id against the
value of 1 before writing MAGIC_WORD to the bottom of the stack.  This
is supposed to stop the write from occurring for the main thread but
svcThreadCreate() doesn't initialize the P_TCB's task_id field until
after rt_init_stack() is executed.  If any dynamic memory allocation
has occurred before the main thread is started (from the standard C
startup code) then this write could overwrite data in that allocation.

This change:
* moves the task_id initialization in svcThreadCreate() to happen
  before the call to rt_init_context() is made.
* cleans up some comments in svcThreadCreate() which appear to
  reference older versions of the code which would automatically
  allocate stack memory if size == 0.
* still keeps the call to rt_dispatch() occurring after the call to
  rt_init_context() so that the task is not dispatched to the
  scheduler until the task fields have been populated.

I stepped through the rt_init_stack() code on my mbedLPC1768 after this
change was made to make sure that the write of MAGIC_WORD is now
skipped.
-----------------------------------------------------------------------
(gdb) break HAL_CM.c:95
Breakpoint 1 at 0x482c: file ../../external/mbed/libraries/rtos/rtx/TARGET_CORTEX_M/HAL_CM.c, line 95.
(gdb) c
Continuing.
Note: automatically using hardware breakpoints for read-only addresses.

Breakpoint 1, rt_init_stack (p_TCB=0x10000774 <os_idle_TCB>, task_body=0x4899 <os_idle_demon>)
    at ../../external/mbed/libraries/rtos/rtx/TARGET_CORTEX_M/HAL_CM.c:95
95	  if (p_TCB->task_id != 0x01)
(gdb) p *p_TCB
$1 = {
  cb_type = 0 '\000',
  state = 1 '\001',
  prio = 0 '\000',
  task_id = 255 '\377',
  p_lnk = 0x0 <_reclaim_reent>,
  p_rlnk = 0x0 <_reclaim_reent>,
  p_dlnk = 0x0 <_reclaim_reent>,
  p_blnk = 0x0 <_reclaim_reent>,
  delta_time = 0,
  interval_time = 0,
  events = 0,
  waits = 0,
  msg = 0x0 <_reclaim_reent>,
  stack_frame = 0 '\000',
  reserved = 0 '\000',
  priv_stack = 128,
  tsk_stack = 268437480,
  stack = 0x100007a8 <idle_task_stack>,
  ptask = 0x4899 <os_idle_demon>
}
(gdb) c
Continuing.

Breakpoint 1, rt_init_stack (p_TCB=0x10000120 <os_thread_def_main+16>, task_body=0x620d <__wrap_main()>)
    at ../../external/mbed/libraries/rtos/rtx/TARGET_CORTEX_M/HAL_CM.c:95
95	  if (p_TCB->task_id != 0x01)
(gdb) p *p_TCB
$2 = {
  cb_type = 0 '\000',
  state = 1 '\001',
  prio = 4 '\004',
  task_id = 1 '\001',
  p_lnk = 0x0 <_reclaim_reent>,
  p_rlnk = 0x0 <_reclaim_reent>,
  p_dlnk = 0x0 <_reclaim_reent>,
  p_blnk = 0x0 <_reclaim_reent>,
  delta_time = 0,
  interval_time = 0,
  events = 0,
  waits = 0,
  msg = 0x0 <_reclaim_reent>,
  stack_frame = 0 '\000',
  reserved = 0 '\000',
  priv_stack = 26968,
  tsk_stack = 268467136,
  stack = 0x100012a8,
  ptask = 0x620d <__wrap_main()>
}
(gdb) n
97	}

When the p_TCB for ptask==__wrap_main() is encountered, the task_id
now has a value of 1 and the write of MAGIC_WORD on line 96 is
skipped.
2015-01-02 17:24:48 -08:00
Adam Green d587474778 RTX: Support stacks larger than 64k
This issue was originally reported on the mbed site:
 http://developer.mbed.org/questions/5570/mbed-rtos-memory-utilization/

The cause of the 64k limitation is that even though the user can set a
stack size larger than 64k in the osThreadDef_t::stacksize 32-bit
field, this size is truncated to 16-bit when it is copied to
the priv_stack field in the OS_TCB structure.

This commit corrects that problem by making the OS_TCB::priv_stack
field 32-bit.  Due to word alignment, this introduces another 2 bytes
of padding in the structure which I have made explicit with the
addition of the reserved2 field.

The tsk_stack field which follows priv_stack is referenced directly by
assembly language code responsible for context switching.  This context
switching code used a fixed byte offset, TCB_TSTACK, to access this
tsk_stack field.  I had to update the TCB_TSTACK definition in various
locations from 36 to 40 to account for the extra alignment padding and
increased size of the priv_stack field.

TESTING
* GCC_ARM - mbedLPC1768 and mbedLPC11U24
* Online mbed Compiler - mbedLPC1768 and mbedLPC11U24

NOTES: I had to change assembly language code that was specific to IAR
       but I don't have that toolchain so those changes aren't tested.
       They do however follow the same pattern as the tested GCC
       modifications.
2015-01-02 13:14:40 -08:00
ohagendorf 43e6502f00 [DISCO_F401VC] new target incl. exporter to gcc_arm and coide 2015-01-02 19:09:41 +01:00
ohagendorf b9bef6b06e [DISCO/NUCLEO_L053xx] adding to RTOS - part3
Reverting the DEFAULT_STACK_SIZE changes in cmsis.oh.h and adding
changes to RTOS_x tests, to create threads with the neccessary reduced
stack sizes for these targets.
2015-01-02 14:52:39 +01:00
ohagendorf ad6e208c7e [DISCO_L053xx] RTC LSE/LSI problem
The mcu STM32L053C8 seems to have a problem in the RCC - LSE hardware
block. The Disco_L053 don't have a 32kHz crystal connected to LSE port
pins in contrast to NUCLEO_L053.
During initialization the HAL tests if it can start the LSE oscillator.
The Flag LSERDY in RCC_CSR is set to 1 by RCC clock control when the
oscillator runs stable. Without a crystal the flag shouldn't be set and
the HAL trys to start the internal LSI oscillator.
But the flag is always set to 1 also without a crystal. That's why the
RTC doesn't start.
2015-01-02 12:17:35 +01:00
ohagendorf 32f5b97aa7 [DISCO_L053xx] wrong STDIO UART
Correction of a wrong stdio uart - some tests failed because of this.
2015-01-02 12:17:35 +01:00
ohagendorf 6fa0730f47 [DISCO/NUCLEO_L053xx] adding to RTOS - part2
Stack sizes has to be reduced because of the limited 8K RAM.
2015-01-02 12:17:34 +01:00
ohagendorf 0ac123d488 [DISCO/NUCLEO_L053xx] adding to RTOS 2015-01-02 12:13:44 +01:00
Per Kristian Gjermshus c59b34f22a Fix stack aligment.
Stack should be 8 byte aligned on ARM.
Fix the automatic correction of the alignment in rt_init_stack,
and make sure that all stacks are aligned by the compiler.
2015-01-02 10:20:36 +01:00
Martin Kojtal d198fba547 Merge pull request #821 from ohagendorf/exporter_coide_gccarm
NUCLEO/DISCO L053,F103,F100,F051 -  adding exporter to gcc_arm and coide
2015-01-02 09:04:06 +01:00
Martin Kojtal 7234182bfd Merge pull request #817 from masaohamanaka/master
RZ_A1H - Modify frequency setting processing of SPI
2015-01-02 08:26:57 +01:00
Martin Kojtal 77d645476d Merge pull request #810 from ohagendorf/STM32F3xx_rtos
DISCO/NUCLEO_F3xx - solving RTOS problem
2015-01-02 07:48:54 +01:00
0xc0170 9af828a11f Merge branch 'master' of https://github.com/mfiore02/mbed into mfiore02-master
Conflicts:
	workspace_tools/build_travis.py
2015-01-02 07:12:11 +01:00
ohagendorf aaede9c070 [DISCO_F051R8] exporter to coide and a naming correction
In PeripheralNames.h the PWM timer name was wrong. Changed from TIMxx to
PWMxx.
2014-12-31 17:46:32 +01:00
albert361 020faf70e6 Fix icf settings for head and stack size 2014-12-30 22:55:11 +08:00
ohagendorf 62a1b8d103 [DISCO/NUCLEO_F334] solving RTOS Problem
Decreasing OS_SCHEDULERSTKSIZE to 112 bytes solves the problem of the
failed test RTOS_3 (Semaphore resource lock).
The test itself was successfull but the final printf failed.
With the reduced stacksize now every test is OK.
2014-12-29 01:34:57 +01:00
ohagendorf 5df957e0d8 [NUCLEO_F302R8]
There exists an inconsistency between official STM schematic of Nucleo
boards and the existing hardware. Each board should have an 8MHz
external clock source. That is not the case. At some boards the solder
jumper is existing and with that the external clock source. At some
other boards the solder jumper is not available. The Nucleo_F302 should
run with 72MHz but that is only possible with an external clock source.
Because of a missing solder jumper it runs only with the internal clock
source, and that's why only with 64MHz.
2014-12-28 22:54:46 +01:00
Masao Hamanaka 6126cb7b41 Modify frequency setting processing of SPI
In case of off-line compiler, there is no problem about the frequency setting processing.
But in case of online compiler, the frequency setting processing will be error.
So, modify frequency setting processing of SPI to pass in online compiler.
2014-12-26 17:40:42 +09:00
Martin Kojtal 2f63fa7d78 Merge pull request #815 from toyowata/master
Targets: LPC4337 - Fix RTC clock setting issue
2014-12-25 19:35:15 +01:00
Toyomasa Watarai 7b62e7d5d6 [LPC4337] Remove init variable for RTC
- Remove static variable for initialization check
- Add enabled flag check for RTC control register
2014-12-25 09:41:33 +09:00
Toyomasa Watarai 44c66b1062 [LPC4337] Fix RTC clock setting issue
- Fixed missing RTC clock intialization code
- Confirm to pass RTC test case (MBED_16)
2014-12-24 18:09:47 +09:00
albert361 21b2445fad Fix typo.
1AB -> 1AF
2014-12-24 11:18:35 +08:00
albert361 3fdeca703c Fix NVIC memory region and rtos verified
1. Add NVIC region in icf file.
2. Increase STACK and HEAP size.
3. mBed rtos is verified.
2014-12-24 11:16:26 +08:00
Adam Green a1653f2708 Fix KL05Z GCC_ARM linker script
Issue originally reported on mbed site here:
https://developer.mbed.org/questions/5695/FRDM-KL05z-hardfault-when-compiled-with-/

The RAM base address was incorrectly set to the beginning of RAM
instead of at a 0xC0 byte offset to reserve room for the interrupt
vectors. Without this fix, the global variables and the interrupt
vectors were occupying the same space in RAM once the user enabled the
timer interrupt.

The user who originally reported the issue on the mbed site has tested
this fix and verified that it corrected the hard fault issue that they
were encountering.
2014-12-23 19:03:09 -08:00
albert361 282c31f57e Add IAR toolchain support for DISCO_F429ZI 2014-12-23 14:41:20 +08:00
ohagendorf e48aabed4c [DISCO/NUCLEO_F3xx] solving RTOS Problem
- add targets (except DISCO_F303VC) to tests.py - RTOS_x tests
- a minor bug fix for DISCO_F334: had wrong STDIO_UART_TX/RX pin
settings
2014-12-22 16:58:42 +01:00
bcostm 4dd46fd82a Merge branch 'master' of https://github.com/mbedmicro/mbed 2014-12-22 08:40:08 +01:00
bcostm 03f49ea8ef [NUCLEO_F0] Align registers and system files with latest CMSIS files
Same as in new NUCLEO_F070RB target
2014-12-19 14:13:54 +01:00
Martin Kojtal bd803e5944 Merge pull request #805 from molejar/dev-freescale-kl43z
Targets: KL43Z - Fix some issues in serial, usb device and pins names
2014-12-19 11:10:08 +00:00
Martin Olejar 1eb8d7cab4 Added serial_get_src_clock() function into serial_api.c and fastirc_frequency() function into clk_freqs.h for better portability. 2014-12-19 10:55:37 +01:00
Martin Kojtal 79ec104b3c Merge pull request #801 from bcostm/master
Add new target - NUCLEO_F070RB
2014-12-19 09:48:14 +00:00
Martin Kojtal 078c36b1c5 Merge pull request #802 from masaohamanaka/master
Targets: RZ_A1H - Fix some drivers bugs and modify some settings of OS and
2014-12-19 08:53:10 +00:00
Martin Kojtal e8f8f5ef6b Merge pull request #803 from mazgch/master
fix HAL_NULL, add more GPIO_CLK macros
2014-12-19 08:32:48 +00:00
Martin Olejar bb969921ec Fixed baudrate calculation issue in serial_api.c, arduino compatible pins name and USB device for Freescale KL43Z Target 2014-12-18 22:37:11 +01:00
mazgch 992afded5c fix HAL_NULL, add more GPIO_CLK macros 2014-12-18 16:11:40 +01:00
Masao Hamanaka 0279c2a2ee Modify some settings of OS and Ether
- Change default setting of CMSIS-RTOS RTX for Cortex-A9 to align with Cortex-M.
 - Change the interrupt priority of Ether driver to align with other drivers.
2014-12-18 18:41:33 +09:00
Masao Hamanaka e91e953a60 Fix some drivers bugs.
Changes as below.

-I2C
 Change communication wait time and Frequency accuracy improvement of I2C.
  - Frequency accuracy improvement
  - Changed the wait time between one communication completed and the next communication start.
    The wait time will be Low clock width by this changing.

-PWM
 Modify processing of pulsewidth() of PWM
  - Modify processing of pulsewidth() to match the specifications of the RZ_A1H.

-SPI
 Fixed a bug that SPI driver is not able to communicate when transfer bit length is 16bit or 32bit.
  - Frequency accuracy improvement
  - Modify transfer processing when transfer bit length is 16bit or 32bit.

-Serial
 Change the reference register macro of Serial
  - Change the reference register macro to align with other driver codes.
2014-12-18 18:40:44 +09:00
bcostm 6234082237 [NUCLEO_F070RB] Add new target - part 2 hal 2014-12-18 09:29:13 +01:00
bcostm 796482d826 [NUCLEO_F070RB] Add new target - part 1 cmsis 2014-12-18 09:28:22 +01:00
bcostm 97089befb4 [STM32F0] Update STM32Cube driver to support new devices 2014-12-18 09:26:02 +01:00