Compare commits
12 Commits
v0.7.0-rc1
...
v0.7.0-rc2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be46b9821e | ||
|
|
d9ba56c295 | ||
|
|
b7d2cdc0d4 | ||
|
|
564a5eb537 | ||
|
|
67607fb64c | ||
|
|
392fe70927 | ||
|
|
ece2892701 | ||
|
|
37299b2b58 | ||
|
|
da2e40bcd3 | ||
|
|
992059b898 | ||
|
|
e12989a84b | ||
|
|
4a590e0b56 |
14
NEWS
14
NEWS
@@ -4,16 +4,30 @@ repository history for details about what changed, including
|
|||||||
bugfixes and other issues not mentioned here.
|
bugfixes and other issues not mentioned here.
|
||||||
|
|
||||||
JTAG Layer:
|
JTAG Layer:
|
||||||
|
New TI ICDI adapter support.
|
||||||
|
Support Latest OSBDM firmware.
|
||||||
|
Improved MIPS EJTAG Support.
|
||||||
|
|
||||||
Boundary Scan:
|
Boundary Scan:
|
||||||
|
|
||||||
Target Layer:
|
Target Layer:
|
||||||
|
New ARMv7R and Cortex-R4 support.
|
||||||
|
Added ChibiOS/RT support.
|
||||||
|
|
||||||
Flash Layer:
|
Flash Layer:
|
||||||
|
New NXP LPC1850 support.
|
||||||
|
New NXP LPC4300 support.
|
||||||
|
New NXP SPIFI support.
|
||||||
|
New Energy Micro EFM32 support.
|
||||||
|
New ST STM32W support.
|
||||||
|
New ST STM32f2 write protection and lock/unlock support.
|
||||||
|
Ability to override STM32 flash bank size.
|
||||||
|
|
||||||
Board, Target, and Interface Configuration Scripts:
|
Board, Target, and Interface Configuration Scripts:
|
||||||
|
Support Freescale i.MX6 series targets.
|
||||||
|
|
||||||
Documentation:
|
Documentation:
|
||||||
|
New MIPS debugging info.
|
||||||
|
|
||||||
Build and Release:
|
Build and Release:
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
AC_PREREQ(2.60)
|
AC_PREREQ(2.60)
|
||||||
AC_INIT([openocd], [0.7.0-rc1],
|
AC_INIT([openocd], [0.7.0-rc2],
|
||||||
[OpenOCD Mailing List <openocd-devel@lists.sourceforge.net>])
|
[OpenOCD Mailing List <openocd-devel@lists.sourceforge.net>])
|
||||||
AC_CONFIG_SRCDIR([src/openocd.c])
|
AC_CONFIG_SRCDIR([src/openocd.c])
|
||||||
|
|
||||||
@@ -961,7 +961,7 @@ if test $build_ft2232_ftd2xx = yes -o $build_presto_ftd2xx = yes -o $build_usb_b
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
LDFLAGS="${LDFLAGS} ${FTD2XX_LDFLAGS}"
|
LDFLAGS="${LDFLAGS} ${FTD2XX_LDFLAGS}"
|
||||||
LIBS="${LIBS} ${FTD2XX_LIB}"
|
LIBS="${FTD2XX_LIB} ${LIBS}"
|
||||||
AC_MSG_RESULT([${FTD2XX_LDFLAGS} ${FTD2XX_LIB}])
|
AC_MSG_RESULT([${FTD2XX_LDFLAGS} ${FTD2XX_LIB}])
|
||||||
else
|
else
|
||||||
AC_CHECK_HEADER([ftd2xx.h],[],[
|
AC_CHECK_HEADER([ftd2xx.h],[],[
|
||||||
|
|||||||
@@ -161,9 +161,9 @@ debugged via the GDB protocol.
|
|||||||
|
|
||||||
@b{Flash Programing:} Flash writing is supported for external CFI
|
@b{Flash Programing:} Flash writing is supported for external CFI
|
||||||
compatible NOR flashes (Intel and AMD/Spansion command set) and several
|
compatible NOR flashes (Intel and AMD/Spansion command set) and several
|
||||||
internal flashes (LPC1700, LPC2000, AT91SAM7, AT91SAM3U, STR7x, STR9x, LM3,
|
internal flashes (LPC1700, LPC1800, LPC2000, LPC4300, AT91SAM7, AT91SAM3U,
|
||||||
STM32x and EFM32). Preliminary support for various NAND flash controllers
|
STR7x, STR9x, LM3, STM32x and EFM32). Preliminary support for various NAND flash
|
||||||
(LPC3180, Orion, S3C24xx, more) controller is included.
|
controllers (LPC3180, Orion, S3C24xx, more) controller is included.
|
||||||
|
|
||||||
@section OpenOCD Web Site
|
@section OpenOCD Web Site
|
||||||
|
|
||||||
@@ -986,7 +986,7 @@ that the @code{reset-init} event handler does.
|
|||||||
Likewise, the @command{arm9 vector_catch} command (or
|
Likewise, the @command{arm9 vector_catch} command (or
|
||||||
@cindex vector_catch
|
@cindex vector_catch
|
||||||
its siblings @command{xscale vector_catch}
|
its siblings @command{xscale vector_catch}
|
||||||
and @command{cortex_m3 vector_catch}) can be a timesaver
|
and @command{cortex_m vector_catch}) can be a timesaver
|
||||||
during some debug sessions, but don't make everyone use that either.
|
during some debug sessions, but don't make everyone use that either.
|
||||||
Keep those kinds of debugging aids in your user config file,
|
Keep those kinds of debugging aids in your user config file,
|
||||||
along with messaging and tracing setup.
|
along with messaging and tracing setup.
|
||||||
@@ -1878,14 +1878,14 @@ After setting targets, you can define a list of targets working in SMP.
|
|||||||
@example
|
@example
|
||||||
set _TARGETNAME_1 $_CHIPNAME.cpu1
|
set _TARGETNAME_1 $_CHIPNAME.cpu1
|
||||||
set _TARGETNAME_2 $_CHIPNAME.cpu2
|
set _TARGETNAME_2 $_CHIPNAME.cpu2
|
||||||
target create $_TARGETNAME_1 cortex_a8 -chain-position $_CHIPNAME.dap \
|
target create $_TARGETNAME_1 cortex_a -chain-position $_CHIPNAME.dap \
|
||||||
-coreid 0 -dbgbase $_DAP_DBG1
|
-coreid 0 -dbgbase $_DAP_DBG1
|
||||||
target create $_TARGETNAME_2 cortex_a8 -chain-position $_CHIPNAME.dap \
|
target create $_TARGETNAME_2 cortex_a -chain-position $_CHIPNAME.dap \
|
||||||
-coreid 1 -dbgbase $_DAP_DBG2
|
-coreid 1 -dbgbase $_DAP_DBG2
|
||||||
#define 2 targets working in smp.
|
#define 2 targets working in smp.
|
||||||
target smp $_CHIPNAME.cpu2 $_CHIPNAME.cpu1
|
target smp $_CHIPNAME.cpu2 $_CHIPNAME.cpu1
|
||||||
@end example
|
@end example
|
||||||
In the above example on cortex_a8, 2 cpus are working in SMP.
|
In the above example on cortex_a, 2 cpus are working in SMP.
|
||||||
In SMP only one GDB instance is created and :
|
In SMP only one GDB instance is created and :
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item a set of hardware breakpoint sets the same breakpoint on all targets in the list.
|
@item a set of hardware breakpoint sets the same breakpoint on all targets in the list.
|
||||||
@@ -1896,32 +1896,32 @@ In SMP only one GDB instance is created and :
|
|||||||
displayed by the GDB session @pxref{usingopenocdsmpwithgdb,,Using OpenOCD SMP with GDB}.
|
displayed by the GDB session @pxref{usingopenocdsmpwithgdb,,Using OpenOCD SMP with GDB}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
The SMP behaviour can be disabled/enabled dynamically. On cortex_a8 following
|
The SMP behaviour can be disabled/enabled dynamically. On cortex_a following
|
||||||
command have been implemented.
|
command have been implemented.
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item cortex_a8 smp_on : enable SMP mode, behaviour is as described above.
|
@item cortex_a smp_on : enable SMP mode, behaviour is as described above.
|
||||||
@item cortex_a8 smp_off : disable SMP mode, the current target is the one
|
@item cortex_a smp_off : disable SMP mode, the current target is the one
|
||||||
displayed in the GDB session, only this target is now controlled by GDB
|
displayed in the GDB session, only this target is now controlled by GDB
|
||||||
session. This behaviour is useful during system boot up.
|
session. This behaviour is useful during system boot up.
|
||||||
@item cortex_a8 smp_gdb : display/fix the core id displayed in GDB session see
|
@item cortex_a smp_gdb : display/fix the core id displayed in GDB session see
|
||||||
following example.
|
following example.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@example
|
@example
|
||||||
>cortex_a8 smp_gdb
|
>cortex_a smp_gdb
|
||||||
gdb coreid 0 -> -1
|
gdb coreid 0 -> -1
|
||||||
#0 : coreid 0 is displayed to GDB ,
|
#0 : coreid 0 is displayed to GDB ,
|
||||||
#-> -1 : next resume triggers a real resume
|
#-> -1 : next resume triggers a real resume
|
||||||
> cortex_a8 smp_gdb 1
|
> cortex_a smp_gdb 1
|
||||||
gdb coreid 0 -> 1
|
gdb coreid 0 -> 1
|
||||||
#0 :coreid 0 is displayed to GDB ,
|
#0 :coreid 0 is displayed to GDB ,
|
||||||
#->1 : next resume displays coreid 1 to GDB
|
#->1 : next resume displays coreid 1 to GDB
|
||||||
> resume
|
> resume
|
||||||
> cortex_a8 smp_gdb
|
> cortex_a smp_gdb
|
||||||
gdb coreid 1 -> 1
|
gdb coreid 1 -> 1
|
||||||
#1 :coreid 1 is displayed to GDB ,
|
#1 :coreid 1 is displayed to GDB ,
|
||||||
#->1 : next resume displays coreid 1 to GDB
|
#->1 : next resume displays coreid 1 to GDB
|
||||||
> cortex_a8 smp_gdb -1
|
> cortex_a smp_gdb -1
|
||||||
gdb coreid 1 -> -1
|
gdb coreid 1 -> -1
|
||||||
#1 :coreid 1 is displayed to GDB,
|
#1 :coreid 1 is displayed to GDB,
|
||||||
#->-1 : next resume triggers a real resume
|
#->-1 : next resume triggers a real resume
|
||||||
@@ -1948,7 +1948,7 @@ don't want to reset all targets at once.
|
|||||||
Such a handler might write to chip registers to force a reset,
|
Such a handler might write to chip registers to force a reset,
|
||||||
use a JRC to do that (preferable -- the target may be wedged!),
|
use a JRC to do that (preferable -- the target may be wedged!),
|
||||||
or force a watchdog timer to trigger.
|
or force a watchdog timer to trigger.
|
||||||
(For Cortex-M3 targets, this is not necessary. The target
|
(For Cortex-M targets, this is not necessary. The target
|
||||||
driver knows how to use trigger an NVIC reset when SRST is
|
driver knows how to use trigger an NVIC reset when SRST is
|
||||||
not available.)
|
not available.)
|
||||||
|
|
||||||
@@ -3953,7 +3953,7 @@ look like with more than one:
|
|||||||
TargetName Type Endian TapName State
|
TargetName Type Endian TapName State
|
||||||
-- ------------------ ---------- ------ ------------------ ------------
|
-- ------------------ ---------- ------ ------------------ ------------
|
||||||
0* at91rm9200.cpu arm920t little at91rm9200.cpu running
|
0* at91rm9200.cpu arm920t little at91rm9200.cpu running
|
||||||
1 MyTarget cortex_m3 little mychip.foo tap-disabled
|
1 MyTarget cortex_m little mychip.foo tap-disabled
|
||||||
@end verbatim
|
@end verbatim
|
||||||
|
|
||||||
One member of that list is the @dfn{current target}, which
|
One member of that list is the @dfn{current target}, which
|
||||||
@@ -4064,8 +4064,8 @@ At this writing, the supported CPU types and variants are:
|
|||||||
@item @code{arm9tdmi} -- this is an ARMv4 core
|
@item @code{arm9tdmi} -- this is an ARMv4 core
|
||||||
@item @code{avr} -- implements Atmel's 8-bit AVR instruction set.
|
@item @code{avr} -- implements Atmel's 8-bit AVR instruction set.
|
||||||
(Support for this is preliminary and incomplete.)
|
(Support for this is preliminary and incomplete.)
|
||||||
@item @code{cortex_a8} -- this is an ARMv7 core with an MMU
|
@item @code{cortex_a} -- this is an ARMv7 core with an MMU
|
||||||
@item @code{cortex_m3} -- this is an ARMv7 core, supporting only the
|
@item @code{cortex_m} -- this is an ARMv7 core, supporting only the
|
||||||
compact Thumb2 instruction set.
|
compact Thumb2 instruction set.
|
||||||
@item @code{dragonite} -- resembles arm966e
|
@item @code{dragonite} -- resembles arm966e
|
||||||
@item @code{dsp563xx} -- implements Freescale's 24-bit DSP.
|
@item @code{dsp563xx} -- implements Freescale's 24-bit DSP.
|
||||||
@@ -4119,7 +4119,7 @@ to be much more board-specific.
|
|||||||
The key steps you use might look something like this
|
The key steps you use might look something like this
|
||||||
|
|
||||||
@example
|
@example
|
||||||
target create MyTarget cortex_m3 -chain-position mychip.cpu
|
target create MyTarget cortex_m -chain-position mychip.cpu
|
||||||
$MyTarget configure -work-area-phys 0x08000 -work-area-size 8096
|
$MyTarget configure -work-area-phys 0x08000 -work-area-size 8096
|
||||||
$MyTarget configure -event reset-deassert-pre @{ jtag_rclk 5 @}
|
$MyTarget configure -event reset-deassert-pre @{ jtag_rclk 5 @}
|
||||||
$MyTarget configure -event reset-init @{ myboard_reinit @}
|
$MyTarget configure -event reset-init @{ myboard_reinit @}
|
||||||
@@ -5014,8 +5014,9 @@ supported.}
|
|||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Flash Driver} lpc2000
|
@deffn {Flash Driver} lpc2000
|
||||||
Most members of the LPC1700 and LPC2000 microcontroller families from NXP
|
Most members of the LPC1700, LPC1800, LPC2000 and LPC4300 microcontroller
|
||||||
include internal flash and use Cortex-M3 (LPC1700) or ARM7TDMI (LPC2000) cores.
|
families from NXP include internal flash and use Cortex-M3 (LPC1700, LPC1800),
|
||||||
|
Cortex-M4 (LPC4300) or ARM7TDMI (LPC2000) cores.
|
||||||
|
|
||||||
@quotation Note
|
@quotation Note
|
||||||
There are LPC2000 devices which are not supported by the @var{lpc2000}
|
There are LPC2000 devices which are not supported by the @var{lpc2000}
|
||||||
@@ -5031,7 +5032,9 @@ which must appear in the following order:
|
|||||||
@item @var{variant} ... required, may be
|
@item @var{variant} ... required, may be
|
||||||
@option{lpc2000_v1} (older LPC21xx and LPC22xx)
|
@option{lpc2000_v1} (older LPC21xx and LPC22xx)
|
||||||
@option{lpc2000_v2} (LPC213x, LPC214x, LPC210[123], LPC23xx and LPC24xx)
|
@option{lpc2000_v2} (LPC213x, LPC214x, LPC210[123], LPC23xx and LPC24xx)
|
||||||
or @option{lpc1700} (LPC175x and LPC176x)
|
@option{lpc1700} (LPC175x and LPC176x)
|
||||||
|
or @option{lpc4300} - available also as @option{lpc1800} alias (LPC18x[2357] and
|
||||||
|
LPC43x[2357])
|
||||||
@item @var{clock_kHz} ... the frequency, in kiloHertz,
|
@item @var{clock_kHz} ... the frequency, in kiloHertz,
|
||||||
at which the core is running
|
at which the core is running
|
||||||
@item @option{calc_checksum} ... optional (but you probably want to provide this!),
|
@item @option{calc_checksum} ... optional (but you probably want to provide this!),
|
||||||
@@ -7297,7 +7300,7 @@ cores @emph{except the ARM1176} use the same six bits.
|
|||||||
@cindex Debug Access Port
|
@cindex Debug Access Port
|
||||||
@cindex DAP
|
@cindex DAP
|
||||||
These commands are specific to ARM architecture v7 Debug Access Port (DAP),
|
These commands are specific to ARM architecture v7 Debug Access Port (DAP),
|
||||||
included on Cortex-M3 and Cortex-A8 systems.
|
included on Cortex-M and Cortex-A systems.
|
||||||
They are available in addition to other core-specific commands that may be available.
|
They are available in addition to other core-specific commands that may be available.
|
||||||
|
|
||||||
@deffn Command {dap apid} [num]
|
@deffn Command {dap apid} [num]
|
||||||
@@ -7330,10 +7333,10 @@ fix CSW_SPROT from register AP_REG_CSW on selected dap.
|
|||||||
Defaulting to 0.
|
Defaulting to 0.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@subsection Cortex-M3 specific commands
|
@subsection Cortex-M specific commands
|
||||||
@cindex Cortex-M3
|
@cindex Cortex-M
|
||||||
|
|
||||||
@deffn Command {cortex_m3 maskisr} (@option{auto}|@option{on}|@option{off})
|
@deffn Command {cortex_m maskisr} (@option{auto}|@option{on}|@option{off})
|
||||||
Control masking (disabling) interrupts during target step/resume.
|
Control masking (disabling) interrupts during target step/resume.
|
||||||
|
|
||||||
The @option{auto} option handles interrupts during stepping a way they get
|
The @option{auto} option handles interrupts during stepping a way they get
|
||||||
@@ -7350,7 +7353,7 @@ with interrupts enabled, i.e. the same way the @option{off} option does.
|
|||||||
Default is @option{auto}.
|
Default is @option{auto}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn Command {cortex_m3 vector_catch} [@option{all}|@option{none}|list]
|
@deffn Command {cortex_m vector_catch} [@option{all}|@option{none}|list]
|
||||||
@cindex vector_catch
|
@cindex vector_catch
|
||||||
Vector Catch hardware provides dedicated breakpoints
|
Vector Catch hardware provides dedicated breakpoints
|
||||||
for certain hardware events.
|
for certain hardware events.
|
||||||
@@ -7377,7 +7380,7 @@ must also be explicitly enabled.
|
|||||||
This finishes by listing the current vector catch configuration.
|
This finishes by listing the current vector catch configuration.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn Command {cortex_m3 reset_config} (@option{srst}|@option{sysresetreq}|@option{vectreset})
|
@deffn Command {cortex_m reset_config} (@option{srst}|@option{sysresetreq}|@option{vectreset})
|
||||||
Control reset handling. The default @option{srst} is to use srst if fitted,
|
Control reset handling. The default @option{srst} is to use srst if fitted,
|
||||||
otherwise fallback to @option{vectreset}.
|
otherwise fallback to @option{vectreset}.
|
||||||
@itemize @minus
|
@itemize @minus
|
||||||
@@ -7385,7 +7388,7 @@ otherwise fallback to @option{vectreset}.
|
|||||||
@item @option{sysresetreq} use NVIC SYSRESETREQ to reset system.
|
@item @option{sysresetreq} use NVIC SYSRESETREQ to reset system.
|
||||||
@item @option{vectreset} use NVIC VECTRESET to reset system.
|
@item @option{vectreset} use NVIC VECTRESET to reset system.
|
||||||
@end itemize
|
@end itemize
|
||||||
Using @option{vectreset} is a safe option for all current Cortex-M3 cores.
|
Using @option{vectreset} is a safe option for all current Cortex-M cores.
|
||||||
This however has the disadvantage of only resetting the core, all peripherals
|
This however has the disadvantage of only resetting the core, all peripherals
|
||||||
are uneffected. A solution would be to use a @code{reset-init} event handler to manually reset
|
are uneffected. A solution would be to use a @code{reset-init} event handler to manually reset
|
||||||
the peripherals.
|
the peripherals.
|
||||||
@@ -7404,7 +7407,7 @@ The most powerful mechanism is semihosting, but there is also
|
|||||||
a lighter weight mechanism using only the DCC channel.
|
a lighter weight mechanism using only the DCC channel.
|
||||||
|
|
||||||
Currently @command{target_request debugmsgs}
|
Currently @command{target_request debugmsgs}
|
||||||
is supported only for @option{arm7_9} and @option{cortex_m3} cores.
|
is supported only for @option{arm7_9} and @option{cortex_m} cores.
|
||||||
These messages are received as part of target polling, so
|
These messages are received as part of target polling, so
|
||||||
you need to have @command{poll on} active to receive them.
|
you need to have @command{poll on} active to receive them.
|
||||||
They are intrusive in that they will affect program execution
|
They are intrusive in that they will affect program execution
|
||||||
@@ -7910,10 +7913,10 @@ and an RTOS until he told GDB to disable the IRQs while stepping:
|
|||||||
|
|
||||||
@example
|
@example
|
||||||
define hook-step
|
define hook-step
|
||||||
mon cortex_m3 maskisr on
|
mon cortex_m maskisr on
|
||||||
end
|
end
|
||||||
define hookpost-step
|
define hookpost-step
|
||||||
mon cortex_m3 maskisr off
|
mon cortex_m maskisr off
|
||||||
end
|
end
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
|||||||
@@ -365,23 +365,27 @@ static int kinetis_write(struct flash_bank *bank, uint8_t *buffer,
|
|||||||
|
|
||||||
/* program section command */
|
/* program section command */
|
||||||
if (fallback == 0) {
|
if (fallback == 0) {
|
||||||
unsigned prog_section_bytes = kinfo->sector_size >> 8;
|
/*
|
||||||
for (i = 0; i < count; i += kinfo->sector_size) {
|
* Kinetis uses different terms for the granularity of
|
||||||
/*
|
* sector writes, e.g. "phrase" or "128 bits". We use
|
||||||
* The largest possible Kinetis "section" is
|
* the generic term "chunk". The largest possible
|
||||||
* 16 bytes. A full Kinetis sector is always
|
* Kinetis "chunk" is 16 bytes (128 bits).
|
||||||
* 256 "section"s.
|
*/
|
||||||
*/
|
unsigned prog_section_chunk_bytes = kinfo->sector_size >> 8;
|
||||||
|
/* assume the NVM sector size is half the FlexRAM size */
|
||||||
|
unsigned prog_size_bytes = MIN(kinfo->sector_size,
|
||||||
|
kinetis_flash_params[kinfo->granularity].nvm_sector_size_bytes);
|
||||||
|
for (i = 0; i < count; i += prog_size_bytes) {
|
||||||
uint8_t residual_buffer[16];
|
uint8_t residual_buffer[16];
|
||||||
uint8_t ftfx_fstat;
|
uint8_t ftfx_fstat;
|
||||||
uint32_t section_count = 256;
|
uint32_t section_count = prog_size_bytes / prog_section_chunk_bytes;
|
||||||
uint32_t residual_wc = 0;
|
uint32_t residual_wc = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Assume the word count covers an entire
|
* Assume the word count covers an entire
|
||||||
* sector.
|
* sector.
|
||||||
*/
|
*/
|
||||||
wc = kinfo->sector_size / 4;
|
wc = prog_size_bytes / 4;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If bytes to be programmed are less than the
|
* If bytes to be programmed are less than the
|
||||||
@@ -390,21 +394,21 @@ static int kinetis_write(struct flash_bank *bank, uint8_t *buffer,
|
|||||||
* residual buffer so that a full "section"
|
* residual buffer so that a full "section"
|
||||||
* may always be programmed.
|
* may always be programmed.
|
||||||
*/
|
*/
|
||||||
if ((count - i) < kinfo->sector_size) {
|
if ((count - i) < prog_size_bytes) {
|
||||||
/* number of bytes to program beyond full section */
|
/* number of bytes to program beyond full section */
|
||||||
unsigned residual_bc = (count-i) % prog_section_bytes;
|
unsigned residual_bc = (count-i) % prog_section_chunk_bytes;
|
||||||
|
|
||||||
/* number of complete words to copy directly from buffer */
|
/* number of complete words to copy directly from buffer */
|
||||||
wc = (count - i) / 4;
|
wc = (count - i) / 4;
|
||||||
|
|
||||||
/* number of total sections to write, including residual */
|
/* number of total sections to write, including residual */
|
||||||
section_count = DIV_ROUND_UP((count-i), prog_section_bytes);
|
section_count = DIV_ROUND_UP((count-i), prog_section_chunk_bytes);
|
||||||
|
|
||||||
/* any residual bytes delivers a whole residual section */
|
/* any residual bytes delivers a whole residual section */
|
||||||
residual_wc = (residual_bc ? prog_section_bytes : 0)/4;
|
residual_wc = (residual_bc ? prog_section_chunk_bytes : 0)/4;
|
||||||
|
|
||||||
/* clear residual buffer then populate residual bytes */
|
/* clear residual buffer then populate residual bytes */
|
||||||
(void) memset(residual_buffer, 0xff, prog_section_bytes);
|
(void) memset(residual_buffer, 0xff, prog_section_chunk_bytes);
|
||||||
(void) memcpy(residual_buffer, &buffer[i+4*wc], residual_bc);
|
(void) memcpy(residual_buffer, &buffer[i+4*wc], residual_bc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -770,7 +774,7 @@ static int kinetis_blank_check(struct flash_bank *bank)
|
|||||||
for (i = 0; i < bank->num_sectors; i++) {
|
for (i = 0; i < bank->num_sectors; i++) {
|
||||||
/* normal margin */
|
/* normal margin */
|
||||||
result = kinetis_ftfx_command(bank, FTFx_CMD_SECTSTAT, bank->base + bank->sectors[i].offset,
|
result = kinetis_ftfx_command(bank, FTFx_CMD_SECTSTAT, bank->base + bank->sectors[i].offset,
|
||||||
0, 0, 0, 1, 0, 0, 0, 0, &ftfx_fstat);
|
1, 0, 0, 0, 0, 0, 0, 0, &ftfx_fstat);
|
||||||
|
|
||||||
if (result == ERROR_OK) {
|
if (result == ERROR_OK) {
|
||||||
bank->sectors[i].is_erased = !(ftfx_fstat & 0x01);
|
bank->sectors[i].is_erased = !(ftfx_fstat & 0x01);
|
||||||
|
|||||||
@@ -3141,9 +3141,8 @@ static void flossjtag_blink(void)
|
|||||||
static int ft2232_quit(void)
|
static int ft2232_quit(void)
|
||||||
{
|
{
|
||||||
#if BUILD_FT2232_FTD2XX == 1
|
#if BUILD_FT2232_FTD2XX == 1
|
||||||
FT_STATUS status;
|
|
||||||
|
|
||||||
status = FT_Close(ftdih);
|
FT_Close(ftdih);
|
||||||
#elif BUILD_FT2232_LIBFTDI == 1
|
#elif BUILD_FT2232_LIBFTDI == 1
|
||||||
ftdi_usb_close(&ftdic);
|
ftdi_usb_close(&ftdic);
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ struct ChibiOS_params {
|
|||||||
|
|
||||||
struct ChibiOS_params ChibiOS_params_list[] = {
|
struct ChibiOS_params ChibiOS_params_list[] = {
|
||||||
{
|
{
|
||||||
"cortex_m3", /* target_name */
|
"cortex_m", /* target_name */
|
||||||
0,
|
0,
|
||||||
NULL, /* stacking_info */
|
NULL, /* stacking_info */
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ struct FreeRTOS_params {
|
|||||||
|
|
||||||
const struct FreeRTOS_params FreeRTOS_params_list[] = {
|
const struct FreeRTOS_params FreeRTOS_params_list[] = {
|
||||||
{
|
{
|
||||||
"cortex_m3", /* target_name */
|
"cortex_m", /* target_name */
|
||||||
4, /* thread_count_width; */
|
4, /* thread_count_width; */
|
||||||
4, /* pointer_width; */
|
4, /* pointer_width; */
|
||||||
16, /* list_next_offset; */
|
16, /* list_next_offset; */
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ struct ThreadX_params {
|
|||||||
|
|
||||||
const struct ThreadX_params ThreadX_params_list[] = {
|
const struct ThreadX_params ThreadX_params_list[] = {
|
||||||
{
|
{
|
||||||
"cortex_m3", /* target_name */
|
"cortex_m", /* target_name */
|
||||||
4, /* pointer_width; */
|
4, /* pointer_width; */
|
||||||
8, /* thread_stack_offset; */
|
8, /* thread_stack_offset; */
|
||||||
40, /* thread_name_offset; */
|
40, /* thread_name_offset; */
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ struct eCos_params {
|
|||||||
|
|
||||||
const struct eCos_params eCos_params_list[] = {
|
const struct eCos_params eCos_params_list[] = {
|
||||||
{
|
{
|
||||||
"cortex_m3", /* target_name */
|
"cortex_m", /* target_name */
|
||||||
4, /* pointer_width; */
|
4, /* pointer_width; */
|
||||||
0x0c, /* thread_stack_offset; */
|
0x0c, /* thread_stack_offset; */
|
||||||
0x9c, /* thread_name_offset; */
|
0x9c, /* thread_name_offset; */
|
||||||
|
|||||||
@@ -1259,7 +1259,7 @@ static int gdb_write_memory_packet(struct connection *connection,
|
|||||||
|
|
||||||
LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
|
LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
|
||||||
|
|
||||||
if (unhexify((char *)buffer, separator + 2, len) != (int)len)
|
if (unhexify((char *)buffer, separator, len) != (int)len)
|
||||||
LOG_ERROR("unable to decode memory packet");
|
LOG_ERROR("unable to decode memory packet");
|
||||||
|
|
||||||
retval = target_write_buffer(target, addr, len, buffer);
|
retval = target_write_buffer(target, addr, len, buffer);
|
||||||
|
|||||||
@@ -1094,6 +1094,7 @@ static int arm11_target_create(struct target *target, Jim_Interp *interp)
|
|||||||
if (!arm11)
|
if (!arm11)
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
|
||||||
|
arm11->arm.core_type = ARM_MODE_ANY;
|
||||||
arm_init_arch_info(target, &arm11->arm);
|
arm_init_arch_info(target, &arm11->arm);
|
||||||
|
|
||||||
arm11->jtag_info.tap = target->tap;
|
arm11->jtag_info.tap = target->tap;
|
||||||
|
|||||||
@@ -2806,6 +2806,7 @@ int arm7_9_init_arch_info(struct target *target, struct arm7_9_common *arm7_9)
|
|||||||
arm7_9->dcc_downloads = false;
|
arm7_9->dcc_downloads = false;
|
||||||
|
|
||||||
arm->arch_info = arm7_9;
|
arm->arch_info = arm7_9;
|
||||||
|
arm->core_type = ARM_MODE_ANY;
|
||||||
arm->read_core_reg = arm7_9_read_core_reg;
|
arm->read_core_reg = arm7_9_read_core_reg;
|
||||||
arm->write_core_reg = arm7_9_write_core_reg;
|
arm->write_core_reg = arm7_9_write_core_reg;
|
||||||
arm->full_context = arm7_9_full_context;
|
arm->full_context = arm7_9_full_context;
|
||||||
|
|||||||
@@ -2746,9 +2746,9 @@ static const struct command_registration cortex_a8_command_handlers[] = {
|
|||||||
.chain = armv7a_command_handlers,
|
.chain = armv7a_command_handlers,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "cortex_a8",
|
.name = "cortex_a",
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "Cortex-A8 command group",
|
.help = "Cortex-A command group",
|
||||||
.usage = "",
|
.usage = "",
|
||||||
.chain = cortex_a8_exec_command_handlers,
|
.chain = cortex_a8_exec_command_handlers,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1796,6 +1796,9 @@ fail1:
|
|||||||
for (j = 0; j < 3; j++, reg++)
|
for (j = 0; j < 3; j++, reg++)
|
||||||
cortex_m3_dwt_addreg(target, cache->reg_list + reg,
|
cortex_m3_dwt_addreg(target, cache->reg_list + reg,
|
||||||
dwt_comp + 3 * i + j);
|
dwt_comp + 3 * i + j);
|
||||||
|
|
||||||
|
/* make sure we clear any watchpoints enabled on the target */
|
||||||
|
target_write_u32(target, comparator->dwt_comparator_address + 8, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
*register_get_last_cache_p(&target->reg_cache) = cache;
|
*register_get_last_cache_p(&target->reg_cache) = cache;
|
||||||
@@ -1887,6 +1890,9 @@ int cortex_m3_examine(struct target *target)
|
|||||||
cortex_m3->fp_comparator_list[i].type =
|
cortex_m3->fp_comparator_list[i].type =
|
||||||
(i < cortex_m3->fp_num_code) ? FPCR_CODE : FPCR_LITERAL;
|
(i < cortex_m3->fp_num_code) ? FPCR_CODE : FPCR_LITERAL;
|
||||||
cortex_m3->fp_comparator_list[i].fpcr_address = FP_COMP0 + 4 * i;
|
cortex_m3->fp_comparator_list[i].fpcr_address = FP_COMP0 + 4 * i;
|
||||||
|
|
||||||
|
/* make sure we clear any breakpoints enabled on the target */
|
||||||
|
target_write_u32(target, cortex_m3->fp_comparator_list[i].fpcr_address, 0);
|
||||||
}
|
}
|
||||||
LOG_DEBUG("FPB fpcr 0x%" PRIx32 ", numcode %i, numlit %i",
|
LOG_DEBUG("FPB fpcr 0x%" PRIx32 ", numcode %i, numlit %i",
|
||||||
fpcr,
|
fpcr,
|
||||||
@@ -2250,9 +2256,9 @@ static const struct command_registration cortex_m3_command_handlers[] = {
|
|||||||
.chain = armv7m_command_handlers,
|
.chain = armv7m_command_handlers,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "cortex_m3",
|
.name = "cortex_m",
|
||||||
.mode = COMMAND_EXEC,
|
.mode = COMMAND_EXEC,
|
||||||
.help = "Cortex-M3 command group",
|
.help = "Cortex-M command group",
|
||||||
.usage = "",
|
.usage = "",
|
||||||
.chain = cortex_m3_exec_command_handlers,
|
.chain = cortex_m3_exec_command_handlers,
|
||||||
},
|
},
|
||||||
@@ -2260,7 +2266,8 @@ static const struct command_registration cortex_m3_command_handlers[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct target_type cortexm3_target = {
|
struct target_type cortexm3_target = {
|
||||||
.name = "cortex_m3",
|
.name = "cortex_m",
|
||||||
|
.deprecated_name = "cortex_m3",
|
||||||
|
|
||||||
.poll = cortex_m3_poll,
|
.poll = cortex_m3_poll,
|
||||||
.arch_state = armv7m_arch_state,
|
.arch_state = armv7m_arch_state,
|
||||||
|
|||||||
@@ -167,3 +167,14 @@ proc init_targets {} {
|
|||||||
# Additionally board config scripts can define a procedure init_board that will be executed after init and init_targets
|
# Additionally board config scripts can define a procedure init_board that will be executed after init and init_targets
|
||||||
proc init_board {} {
|
proc init_board {} {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# deprecated target name cmds
|
||||||
|
proc cortex_m3 args {
|
||||||
|
echo "DEPRECATED! use 'cortex_m' not 'cortex_m3'"
|
||||||
|
eval cortex_m $args
|
||||||
|
}
|
||||||
|
|
||||||
|
proc cortex_a8 args {
|
||||||
|
echo "DEPRECATED! use 'cortex_a' not 'cortex_a8'"
|
||||||
|
eval cortex_a $args
|
||||||
|
}
|
||||||
|
|||||||
@@ -2997,6 +2997,7 @@ static int xscale_init_arch_info(struct target *target,
|
|||||||
|
|
||||||
/* prepare ARMv4/5 specific information */
|
/* prepare ARMv4/5 specific information */
|
||||||
arm->arch_info = xscale;
|
arm->arch_info = xscale;
|
||||||
|
arm->core_type = ARM_MODE_ANY;
|
||||||
arm->read_core_reg = xscale_read_core_reg;
|
arm->read_core_reg = xscale_read_core_reg;
|
||||||
arm->write_core_reg = xscale_write_core_reg;
|
arm->write_core_reg = xscale_write_core_reg;
|
||||||
arm->full_context = xscale_full_context;
|
arm->full_context = xscale_full_context;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ adapter_khz 3000
|
|||||||
|
|
||||||
$_TARGETNAME configure -event "reset-assert" {
|
$_TARGETNAME configure -event "reset-assert" {
|
||||||
echo "Reseting ...."
|
echo "Reseting ...."
|
||||||
#cortex_a8 dbginit
|
#cortex_a dbginit
|
||||||
}
|
}
|
||||||
|
|
||||||
$_TARGETNAME configure -event reset-init { sodimm_init }
|
$_TARGETNAME configure -event reset-init { sodimm_init }
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ adapter_khz 3000
|
|||||||
|
|
||||||
$_TARGETNAME configure -event "reset-assert" {
|
$_TARGETNAME configure -event "reset-assert" {
|
||||||
echo "Reseting ...."
|
echo "Reseting ...."
|
||||||
#cortex_a8 dbginit
|
#cortex_a dbginit
|
||||||
}
|
}
|
||||||
|
|
||||||
$_TARGETNAME configure -event reset-init { loco_init }
|
$_TARGETNAME configure -event reset-init { loco_init }
|
||||||
|
|||||||
@@ -64,13 +64,13 @@ jtag configure $_CHIPNAME.jrc -event post-reset "runtest 100"
|
|||||||
# Cortex A8 target
|
# Cortex A8 target
|
||||||
#
|
#
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_a8 -chain-position $_CHIPNAME.dap -dbgbase 0x80001000
|
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.dap -dbgbase 0x80001000
|
||||||
|
|
||||||
# SRAM: 64K at 0x4030.0000; use the first 16K
|
# SRAM: 64K at 0x4030.0000; use the first 16K
|
||||||
$_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x4000
|
$_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x4000
|
||||||
|
|
||||||
$_TARGETNAME configure -event gdb-attach {
|
$_TARGETNAME configure -event gdb-attach {
|
||||||
cortex_a8 dbginit
|
cortex_a dbginit
|
||||||
halt
|
halt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ jtag configure $_CHIPNAME.jrc -event setup "jtag tapenable $_CHIPNAME.dap"
|
|||||||
|
|
||||||
# Create the CPU target to be used with GDB: Cortex-A8, using DAP
|
# Create the CPU target to be used with GDB: Cortex-A8, using DAP
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_a8 -chain-position $_CHIPNAME.dap
|
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.dap
|
||||||
|
|
||||||
# The DM37x has 64K of SRAM starting at address 0x4020_0000. Allow the first
|
# The DM37x has 64K of SRAM starting at address 0x4020_0000. Allow the first
|
||||||
# 16K to be used as a scratchpad for OpenOCD.
|
# 16K to be used as a scratchpad for OpenOCD.
|
||||||
@@ -200,7 +200,7 @@ $_TARGETNAME configure -event gdb-attach {
|
|||||||
# reset sequence.
|
# reset sequence.
|
||||||
proc amdm37x_dbginit {target} {
|
proc amdm37x_dbginit {target} {
|
||||||
# General Cortex A8 debug initialisation
|
# General Cortex A8 debug initialisation
|
||||||
cortex_a8 dbginit
|
cortex_a dbginit
|
||||||
|
|
||||||
# Enable DBGEN signal. This signal is described in the ARM v7 TRM, but
|
# Enable DBGEN signal. This signal is described in the ARM v7 TRM, but
|
||||||
# access to the signal appears to be implementation specific. TI does not
|
# access to the signal appears to be implementation specific. TI does not
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ if { [info exists CPUTAPID] } {
|
|||||||
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
# 16K is plenty, the smallest chip has this much
|
# 16K is plenty, the smallest chip has this much
|
||||||
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 16384 -work-area-backup 0
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 16384 -work-area-backup 0
|
||||||
@@ -69,4 +69,4 @@ $_TARGETNAME configure -event gdb-flash-erase-start {
|
|||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -18,12 +18,12 @@ if { [info exists CPUTAPID] } {
|
|||||||
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian little -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian little -chain-position $_TARGETNAME
|
||||||
|
|
||||||
set _FLASHNAME $_CHIPNAME.flash
|
set _FLASHNAME $_CHIPNAME.flash
|
||||||
flash bank flash0 at91sam3 0x00400000 0 0 0 $_TARGETNAME
|
flash bank flash0 at91sam3 0x00400000 0 0 0 $_TARGETNAME
|
||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ if { [info exists CPUTAPID] } {
|
|||||||
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
# 16K is plenty, the smallest chip has this much
|
# 16K is plenty, the smallest chip has this much
|
||||||
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 16384 -work-area-backup 0
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 16384 -work-area-backup 0
|
||||||
@@ -46,4 +46,4 @@ $_TARGETNAME configure -event gdb-flash-erase-start {
|
|||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ reset_config trst_only
|
|||||||
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
# MB9BF506 has 64kB of SRAM on its main system bus
|
# MB9BF506 has 64kB of SRAM on its main system bus
|
||||||
$_TARGETNAME configure -work-area-phys 0x1FFF8000 -work-area-size 0x10000 -work-area-backup 0
|
$_TARGETNAME configure -work-area-phys 0x1FFF8000 -work-area-size 0x10000 -work-area-backup 0
|
||||||
@@ -44,4 +44,4 @@ adapter_khz 500
|
|||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ jtag newtap $_CHIPNAME SJC -irlen 5 -ircapture 0x1 -irmask 0x1f \
|
|||||||
|
|
||||||
# GDB target: Cortex-A8, using DAP
|
# GDB target: Cortex-A8, using DAP
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_a8 -chain-position $_CHIPNAME.DAP
|
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.DAP
|
||||||
|
|
||||||
# some TCK tycles are required to activate the DEBUG power domain
|
# some TCK tycles are required to activate the DEBUG power domain
|
||||||
jtag configure $_CHIPNAME.SJC -event post-reset "runtest 100"
|
jtag configure $_CHIPNAME.SJC -event post-reset "runtest 100"
|
||||||
@@ -41,7 +41,7 @@ jtag configure $_CHIPNAME.SJC -event setup "jtag tapenable $_CHIPNAME.DAP"
|
|||||||
|
|
||||||
proc imx51_dbginit {target} {
|
proc imx51_dbginit {target} {
|
||||||
# General Cortex A8 debug initialisation
|
# General Cortex A8 debug initialisation
|
||||||
cortex_a8 dbginit
|
cortex_a dbginit
|
||||||
}
|
}
|
||||||
|
|
||||||
# Slow speed to be sure it will work
|
# Slow speed to be sure it will work
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ jtag newtap $_CHIPNAME SJC -irlen 5 -ircapture 0x1 -irmask 0x1f \
|
|||||||
|
|
||||||
# GDB target: Cortex-A8, using DAP
|
# GDB target: Cortex-A8, using DAP
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_a8 -chain-position $_CHIPNAME.DAP
|
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.DAP
|
||||||
|
|
||||||
# some TCK tycles are required to activate the DEBUG power domain
|
# some TCK tycles are required to activate the DEBUG power domain
|
||||||
jtag configure $_CHIPNAME.SJC -event post-reset "runtest 100"
|
jtag configure $_CHIPNAME.SJC -event post-reset "runtest 100"
|
||||||
@@ -41,7 +41,7 @@ jtag configure $_CHIPNAME.SJC -event setup "jtag tapenable $_CHIPNAME.DAP"
|
|||||||
|
|
||||||
proc imx53_dbginit {target} {
|
proc imx53_dbginit {target} {
|
||||||
# General Cortex A8 debug initialisation
|
# General Cortex A8 debug initialisation
|
||||||
cortex_a8 dbginit
|
cortex_a dbginit
|
||||||
}
|
}
|
||||||
|
|
||||||
# Slow speed to be sure it will work
|
# Slow speed to be sure it will work
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ set _TARGETNAME $_CHIPNAME.cpu
|
|||||||
|
|
||||||
swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
||||||
|
|
||||||
target create $_TARGETNAME cortex_m3 -chain-position $_CHIPNAME.cpu
|
target create $_TARGETNAME cortex_m -chain-position $_CHIPNAME.cpu
|
||||||
|
|
||||||
$_CHIPNAME.cpu configure -event examine-start { puts "START..." ; }
|
$_CHIPNAME.cpu configure -event examine-start { puts "START..." ; }
|
||||||
$_CHIPNAME.cpu configure -event examine-end { puts "END..." ; }
|
$_CHIPNAME.cpu configure -event examine-end { puts "END..." ; }
|
||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ set _TARGETNAME $_CHIPNAME.cpu
|
|||||||
|
|
||||||
swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
|
||||||
|
|
||||||
target create $_TARGETNAME cortex_m3 -chain-position $_CHIPNAME.cpu
|
target create $_TARGETNAME cortex_m -chain-position $_CHIPNAME.cpu
|
||||||
|
|
||||||
$_CHIPNAME.cpu configure -event examine-start { puts "START..." ; }
|
$_CHIPNAME.cpu configure -event examine-start { puts "START..." ; }
|
||||||
$_CHIPNAME.cpu configure -event examine-end { puts "END..." ; }
|
$_CHIPNAME.cpu configure -event examine-end { puts "END..." ; }
|
||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -17,4 +17,4 @@ set CCLK 12000
|
|||||||
source [find target/lpc17xx.cfg];
|
source [find target/lpc17xx.cfg];
|
||||||
|
|
||||||
# if srst is not fitted, use SYSRESETREQ to perform a soft reset
|
# if srst is not fitted, use SYSRESETREQ to perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ jtag_ntrst_delay 200
|
|||||||
swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
|
swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -chain-position $_TARGETNAME
|
||||||
|
|
||||||
# The LPC17xx devices have 8/16/32kB of SRAM In the ARMv7-M "Code" area (at 0x10000000)
|
# The LPC17xx devices have 8/16/32kB of SRAM In the ARMv7-M "Code" area (at 0x10000000)
|
||||||
$_TARGETNAME configure -work-area-phys 0x10000000 -work-area-size $_CPURAMSIZE
|
$_TARGETNAME configure -work-area-phys 0x10000000 -work-area-size $_CPURAMSIZE
|
||||||
@@ -94,4 +94,4 @@ $_TARGETNAME configure -event reset-init {
|
|||||||
|
|
||||||
# if srst is not fitted use VECTRESET to
|
# if srst is not fitted use VECTRESET to
|
||||||
# perform a soft reset - SYSRESETREQ is not supported
|
# perform a soft reset - SYSRESETREQ is not supported
|
||||||
cortex_m3 reset_config vectreset
|
cortex_m reset_config vectreset
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ if { [info exists M3_JTAG_TAPID] } {
|
|||||||
jtag newtap $_CHIPNAME m3 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M3_JTAG_TAPID
|
jtag newtap $_CHIPNAME m3 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M3_JTAG_TAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.m3
|
set _TARGETNAME $_CHIPNAME.m3
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -40,12 +40,12 @@ jtag newtap $_CHIPNAME m4 -irlen 4 -ircapture 0x1 -irmask 0xf \
|
|||||||
jtag newtap $_CHIPNAME m0 -irlen 4 -ircapture 0x1 -irmask 0xf \
|
jtag newtap $_CHIPNAME m0 -irlen 4 -ircapture 0x1 -irmask 0xf \
|
||||||
-expected-id $_M0_JTAG_TAPID
|
-expected-id $_M0_JTAG_TAPID
|
||||||
|
|
||||||
target create $_CHIPNAME.m4 cortex_m3 -chain-position $_CHIPNAME.m4
|
target create $_CHIPNAME.m4 cortex_m -chain-position $_CHIPNAME.m4
|
||||||
target create $_CHIPNAME.m0 cortex_m3 -chain-position $_CHIPNAME.m0
|
target create $_CHIPNAME.m0 cortex_m -chain-position $_CHIPNAME.m0
|
||||||
|
|
||||||
# on this CPU we should use VECTRESET to perform a soft reset and
|
# on this CPU we should use VECTRESET to perform a soft reset and
|
||||||
# manually reset the periphery
|
# manually reset the periphery
|
||||||
# SRST or SYSRESETREQ disable the debug interface for the time of
|
# SRST or SYSRESETREQ disable the debug interface for the time of
|
||||||
# the reset and will not fit our requirements for a consistent debug
|
# the reset and will not fit our requirements for a consistent debug
|
||||||
# session
|
# session
|
||||||
cortex_m3 reset_config vectreset
|
cortex_m reset_config vectreset
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ jtag newtap $_CHIPNAME jrc -irlen 6 -ircapture 0x1 -irmask 0x3f \
|
|||||||
|
|
||||||
# GDB target: Cortex-A8, using DAP
|
# GDB target: Cortex-A8, using DAP
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_a8 -chain-position $_CHIPNAME.dap
|
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.dap
|
||||||
|
|
||||||
# SRAM: 64K at 0x4020.0000; use the first 16K
|
# SRAM: 64K at 0x4020.0000; use the first 16K
|
||||||
$_TARGETNAME configure -work-area-phys 0x40200000 -work-area-size 0x4000
|
$_TARGETNAME configure -work-area-phys 0x40200000 -work-area-size 0x4000
|
||||||
@@ -54,7 +54,7 @@ jtag configure $_CHIPNAME.jrc -event setup "jtag tapenable $_CHIPNAME.dap"
|
|||||||
|
|
||||||
proc omap3_dbginit {target} {
|
proc omap3_dbginit {target} {
|
||||||
# General Cortex A8 debug initialisation
|
# General Cortex A8 debug initialisation
|
||||||
cortex_a8 dbginit
|
cortex_a dbginit
|
||||||
# Enable DBGU signal for OMAP353x
|
# Enable DBGU signal for OMAP353x
|
||||||
$target mww phys 0x5401d030 0x00002000
|
$target mww phys 0x5401d030 0x00002000
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ set _coreid 0
|
|||||||
set _dbgbase [expr 0x80000000 | ($_coreid << 13)]
|
set _dbgbase [expr 0x80000000 | ($_coreid << 13)]
|
||||||
echo "Using dbgbase = [format 0x%x $_dbgbase]"
|
echo "Using dbgbase = [format 0x%x $_dbgbase]"
|
||||||
|
|
||||||
target create $_TARGETNAME cortex_a8 -chain-position $_CHIPNAME.dap \
|
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.dap \
|
||||||
-coreid 0 -dbgbase $_dbgbase
|
-coreid 0 -dbgbase $_dbgbase
|
||||||
|
|
||||||
# SRAM: 56KiB at 0x4030.0000
|
# SRAM: 56KiB at 0x4030.0000
|
||||||
@@ -104,8 +104,8 @@ $_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x1000
|
|||||||
#
|
#
|
||||||
# M3 targets, separate TAP/DAP for each core
|
# M3 targets, separate TAP/DAP for each core
|
||||||
#
|
#
|
||||||
target create $_CHIPNAME.m30 cortex_m3 -chain-position $_CHIPNAME.m30_dap
|
target create $_CHIPNAME.m30 cortex_m -chain-position $_CHIPNAME.m30_dap
|
||||||
target create $_CHIPNAME.m31 cortex_m3 -chain-position $_CHIPNAME.m31_dap
|
target create $_CHIPNAME.m31 cortex_m -chain-position $_CHIPNAME.m31_dap
|
||||||
|
|
||||||
|
|
||||||
# Once the JRC is up, enable our TAPs
|
# Once the JRC is up, enable our TAPs
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ set _coreid 0
|
|||||||
set _dbgbase [expr 0x80000000 | ($_coreid << 13)]
|
set _dbgbase [expr 0x80000000 | ($_coreid << 13)]
|
||||||
echo "Using dbgbase = [format 0x%x $_dbgbase]"
|
echo "Using dbgbase = [format 0x%x $_dbgbase]"
|
||||||
|
|
||||||
target create $_TARGETNAME cortex_a8 -chain-position $_CHIPNAME.dap \
|
target create $_TARGETNAME cortex_a -chain-position $_CHIPNAME.dap \
|
||||||
-coreid 0 -dbgbase $_dbgbase
|
-coreid 0 -dbgbase $_dbgbase
|
||||||
|
|
||||||
# SRAM: 56KiB at 0x4030.0000
|
# SRAM: 56KiB at 0x4030.0000
|
||||||
@@ -104,8 +104,8 @@ $_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x1000
|
|||||||
#
|
#
|
||||||
# M3 targets, separate TAP/DAP for each core
|
# M3 targets, separate TAP/DAP for each core
|
||||||
#
|
#
|
||||||
target create $_CHIPNAME.m30 cortex_m3 -chain-position $_CHIPNAME.m30_dap
|
target create $_CHIPNAME.m30 cortex_m -chain-position $_CHIPNAME.m30_dap
|
||||||
target create $_CHIPNAME.m31 cortex_m3 -chain-position $_CHIPNAME.m31_dap
|
target create $_CHIPNAME.m31 cortex_m -chain-position $_CHIPNAME.m31_dap
|
||||||
|
|
||||||
|
|
||||||
# Once the JRC is up, enable our TAPs
|
# Once the JRC is up, enable our TAPs
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ if { [info exists WORKAREASIZE] } {
|
|||||||
}
|
}
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -chain-position $_CHIPNAME.cpu
|
target create $_TARGETNAME cortex_m -chain-position $_CHIPNAME.cpu
|
||||||
|
|
||||||
# 8K working area at base of ram, not backed up
|
# 8K working area at base of ram, not backed up
|
||||||
#
|
#
|
||||||
@@ -157,11 +157,11 @@ $_TARGETNAME configure -event reset-start {
|
|||||||
if {$device_class == 0 || $device_class == 1 ||
|
if {$device_class == 0 || $device_class == 1 ||
|
||||||
$device_class == 3 || $device_class == 5} {
|
$device_class == 3 || $device_class == 5} {
|
||||||
# Sandstorm, Fury, DustDevil and Blizzard are able to use NVIC SYSRESETREQ
|
# Sandstorm, Fury, DustDevil and Blizzard are able to use NVIC SYSRESETREQ
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
} else {
|
} else {
|
||||||
# Tempest and Firestorm default to using NVIC VECTRESET
|
# Tempest and Firestorm default to using NVIC VECTRESET
|
||||||
# peripherals will need reseting manually, see proc reset_peripherals
|
# peripherals will need reseting manually, see proc reset_peripherals
|
||||||
cortex_m3 reset_config vectreset
|
cortex_m reset_config vectreset
|
||||||
|
|
||||||
# reset peripherals, based on code in
|
# reset peripherals, based on code in
|
||||||
# http://www.ti.com/lit/er/spmz573a/spmz573a.pdf
|
# http://www.ti.com/lit/er/spmz573a/spmz573a.pdf
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID1 \
|
|||||||
-expected-id $_BSTAPID8 -expected-id $_BSTAPID9
|
-expected-id $_BSTAPID8 -expected-id $_BSTAPID9
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
||||||
|
|
||||||
@@ -78,4 +78,4 @@ flash bank $_FLASHNAME stm32f1x 0x08000000 0 0 0 $_TARGETNAME
|
|||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ if { [info exists BSTAPID] } {
|
|||||||
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID
|
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
||||||
|
|
||||||
@@ -61,4 +61,4 @@ flash bank $_FLASHNAME stm32f2x 0 0 0 0 $_TARGETNAME
|
|||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ if { [info exists BSTAPID] } {
|
|||||||
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID1 -expected-id $_BSTAPID2
|
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID1 -expected-id $_BSTAPID2
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
||||||
|
|
||||||
@@ -61,4 +61,4 @@ flash bank $_FLASHNAME stm32f1x 0 0 0 0 $_TARGETNAME
|
|||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ if { [info exists BSTAPID] } {
|
|||||||
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID
|
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
||||||
|
|
||||||
@@ -60,4 +60,4 @@ flash bank $_FLASHNAME stm32f2x 0 0 0 0 $_TARGETNAME
|
|||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ if { [info exists BSTAPID] } {
|
|||||||
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID
|
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID
|
||||||
|
|
||||||
set _TARGETNAME $_CHIPNAME.cpu
|
set _TARGETNAME $_CHIPNAME.cpu
|
||||||
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME
|
target create $_TARGETNAME cortex_m -endian $_ENDIAN -chain-position $_TARGETNAME
|
||||||
|
|
||||||
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ flash bank $_FLASHNAME stm32lx 0x08000000 0 0 0 $_TARGETNAME
|
|||||||
|
|
||||||
# if srst is not fitted use SYSRESETREQ to
|
# if srst is not fitted use SYSRESETREQ to
|
||||||
# perform a soft reset
|
# perform a soft reset
|
||||||
cortex_m3 reset_config sysresetreq
|
cortex_m reset_config sysresetreq
|
||||||
|
|
||||||
proc stm32l_enable_HSI {} {
|
proc stm32l_enable_HSI {} {
|
||||||
# Enable HSI as clock source
|
# Enable HSI as clock source
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ proc ocd_gdb_restart {target_id} {
|
|||||||
global _SMP
|
global _SMP
|
||||||
targets $_TARGETNAME_1
|
targets $_TARGETNAME_1
|
||||||
if { [expr ($_SMP == 1)] } {
|
if { [expr ($_SMP == 1)] } {
|
||||||
cortex_a8 smp_off
|
cortex_a smp_off
|
||||||
}
|
}
|
||||||
rst_run
|
rst_run
|
||||||
halt
|
halt
|
||||||
if { [expr ($_SMP == 1)]} {
|
if { [expr ($_SMP == 1)]} {
|
||||||
cortex_a8 smp_on
|
cortex_a smp_on
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,7 +202,7 @@ if { [info exists DAP_DBG2] } {
|
|||||||
set _DAP_DBG2 0x801AA000
|
set _DAP_DBG2 0x801AA000
|
||||||
}
|
}
|
||||||
|
|
||||||
target create $_TARGETNAME_1 cortex_a8 -chain-position $_CHIPNAME.dap -dbgbase $_DAP_DBG1 -coreid 0 -rtos linux
|
target create $_TARGETNAME_1 cortex_a -chain-position $_CHIPNAME.dap -dbgbase $_DAP_DBG1 -coreid 0 -rtos linux
|
||||||
|
|
||||||
$_TARGETNAME_1 configure -event gdb-attach {
|
$_TARGETNAME_1 configure -event gdb-attach {
|
||||||
halt
|
halt
|
||||||
@@ -217,7 +217,7 @@ global _TARGETNAME_2
|
|||||||
set _TARGETNAME_2 $TARGETNAME_2
|
set _TARGETNAME_2 $TARGETNAME_2
|
||||||
}
|
}
|
||||||
|
|
||||||
target create $_TARGETNAME_2 cortex_a8 -chain-position $_CHIPNAME.dap -dbgbase $_DAP_DBG2 -coreid 1 -rtos linux
|
target create $_TARGETNAME_2 cortex_a -chain-position $_CHIPNAME.dap -dbgbase $_DAP_DBG2 -coreid 1 -rtos linux
|
||||||
|
|
||||||
$_TARGETNAME_2 configure -event gdb-attach {
|
$_TARGETNAME_2 configure -event gdb-attach {
|
||||||
halt
|
halt
|
||||||
|
|||||||
Reference in New Issue
Block a user