Commit Graph

3313 Commits (1ffa1baf8a01d32e43fd5e8daa90dff11fb595a4)

Author SHA1 Message Date
Sissors 1ffa1baf8a Modified some comments 2015-03-09 18:07:21 +01:00
Sissors 095ebd03e3 [HAL] K20DXX PWM fix
The old code for the K20 PWM had an issue where calling for example
pwm.period and pwm.write after each other resulted in the pwm.write
function setting the pulsewidth with the value of the old pwm period.
This makes sure it waits until the latest pwm period is written before
it will do so.
2015-03-07 22:06:01 +01:00
Sissors ac0504da13 [EXPORT][TEENSY3_1] Added uVision Teensy3.1 exporter
Copy paste of K20D50M code, pretty sure I modified the most important
bits.
2015-01-16 22:28:13 +01:00
Paul Staron e21c65041d New platform - Teensy 3.1 2015-01-15 19:18:01 +00:00
Martin Kojtal 36015c68a8 Merge pull request #842 from bcostm/master
NUCLEO_F303RE - Correct ADC initialization
2015-01-14 09:15:35 +00:00
bcostm fb2ed14768 [NUCLEO_F303RE] Correct ADC initialization
Same as #809
2015-01-12 16:30:05 +01:00
Przemek Wirkus 0c3caf8d75 Refactored SD card basic test
Included return value check from fopen() functions in read/write testcases
2015-01-12 08:39:34 +00:00
Martin Kojtal 7a3d2b4423 Merge pull request #837 from bcostm/master
NUCLEO_F070RB - Update tests
2015-01-12 08:14:44 +00:00
Martin Kojtal 47725f9123 Merge pull request #835 from masaohamanaka/master
RZ_A1H - Fix some bugs about InterruptIn, SPI, I2C and modify some settings.
2015-01-12 08:14:02 +00:00
bcostm 321f012f06 [NUCLEO_F070RB] Add missing line (same as F072RB) 2015-01-09 11:32:49 +01:00
bcostm e0e18f54d6 [NUCLEO_F070RB] Update tests with this target 2015-01-09 11:21:15 +01:00
Masao Hamanaka 596d0e9b78 Commit upstream changes.
Commit upstream changes that is "Merge pull request #833"
2015-01-09 13:54:55 +09:00
Masao Hamanaka 4004624a1f Add comments.
Add comments to provide details about this code.
2015-01-09 13:50:41 +09:00
Przemek Wirkus 3ec2247713 K22F: added peripheral pin definitions to SD card tests and I2C EEPROM tests 2015-01-08 14:06:39 +00:00
Martin Kojtal 2acefb66eb Merge pull request #809 from bcostm/master
NUCLEO_F334R8 - Fix issue with multiple ADC initialization
2015-01-08 11:57:52 +00:00
Martin Kojtal bef46907fc Merge pull request #831 from ohagendorf/stm32f4xx_reorg_hal
STM32F4xx reorganisation of hal folder
2015-01-08 11:53:03 +00:00
Martin Kojtal 4f7fdf3ee4 Merge pull request #836 from ohagendorf/build_release
Tools: Add GCC_ARM toolchain to some Nucleo targets to build release script
2015-01-08 07:20:56 +00:00
Olaf Hagendorf 148a62ef81 [build_release.py]
Adding missing GCC_ARM toolchain to some Nucleo targets
2015-01-07 17:56:05 +01:00
Masao Hamanaka 90cf47ffdf Fix some bugs about IntreruptIn.
Bugs are as below.
- Add terminal setting of IRQ4 and IRQ6 that leaked.
- When set the interrupt function by rise()/fall(), the interrupt disable state will be released by disable_irq().
- Interrupt will be continued to occur when execute disable_irq() after rise(NULL)/fall(NULL) set.
- Fix the setting timing of PMC register.
2015-01-07 19:11:14 +09:00
Masao Hamanaka f119a368e5 Fix the bug that a noise will occur in SPI.
A noise will occur when execute frequency() after set the "mode" to 3 by format().
2015-01-07 19:10:49 +09:00
Masao Hamanaka b13b047a76 Implement a stop condition transmission setting function of I2C.
User can specify the sending of STOP condition by this implement.
2015-01-07 19:10:26 +09:00
Masao Hamanaka d469fdf79e Increase STACK size of thread. 2015-01-07 19:09:50 +09:00
Masao Hamanaka 808c3b4d7c Take measures about optimization problems of web compiler. 2015-01-07 19:09:22 +09:00
Martin Kojtal b6a514c8b2 Merge pull request #833 from ohagendorf/disco_f401_rtos
DISCO_F401VC - adding target to RTOS
2015-01-07 09:09:29 +00:00
Masao Hamanaka 0ed93c1953 Update scatter file to increase usable RAM area.
Remove a usable RAM area limit of RW and ZI area.
2015-01-07 13:04:49 +09:00
ohagendorf 24d7e37e21 all RTOS_x tests are OK 2015-01-06 20:48:37 +01:00
Martin Kojtal 245a60b29c Merge pull request #820 from ohagendorf/stm32f0xx_rtos
NUCLEO_F072RB/F091RC - adding target to rtos lib and exporter for coide and gcc_arm
2015-01-06 07:41:37 +01:00
ohagendorf 716c51d232 Deleting doubled files 2015-01-06 00:35:57 +01:00
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
bcostm f2a6eeca8d [NUCLEO_F334R8] Correct the code used during initialization 2015-01-05 14:47:38 +01:00
bcostm ad9b6a7119 Merge branch 'master' of https://github.com/mbedmicro/mbed 2015-01-05 14:14:41 +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
Martin Kojtal ba69445765 Merge pull request #825 from ohagendorf/disco_f401
DISCO_F401VC - New target incl. exporter to gcc_arm and coide
2015-01-05 07:34:57 +01:00
ohagendorf f98dd149b9 [MTS_MDOT_F405RG] reorg hal folder
- reorganisation of this target needed some extension of serial_api.c
used by all F4xx tagets.
- add arch_max to travis_build
2015-01-04 14:15:16 +01:00
ohagendorf 0498e2619b [STMF4xx] reorg hal folder
- some minor error correction
- add pin definition for 3 tests (MBED_A5,6,7)
- add new target disco_f401vc to travis_build

travis_build and all test are OK except missing STM32F4 target
MTS_MDOT_F405RG
2015-01-04 14:14:52 +01:00
ohagendorf 3d886a94dc [MTS_DRAGONFLY_F411RE] reorg hal folder 2015-01-04 14:11:32 +01:00
ohagendorf 41975149c2 [DISCO_F407/ARCH_MAX] reorg hal folder 2015-01-04 14:11:03 +01:00
ohagendorf 3a2ec50d0e [DISCO_F429ZI] reorg hal folder 2015-01-04 14:10:34 +01:00
ohagendorf cf8c8689e6 [NUCLEO_F411][MTS_MDOT_F411] reorg of hal folder 2015-01-04 14:07:43 +01:00
ohagendorf 484d9359ba [DISCO/NUCLEO_F401xx] reorg of hal folder 2015-01-04 14:06:51 +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