![]()
![]()
#include "config.h"
![]()
![]()
#include "jtag/interface.h"
![]()
![]()
#include "imp.h"
![]()
![]()
#include <helper/binarybuffer.h>
![]()
![]()
#include <helper/time_support.h>
![]()
![]()
#include <target/target_type.h>
![]()
![]()
#include <target/algorithm.h>
![]()
![]()
#include <target/arm_adi_v5.h>
![]()
![]()
#include <target/armv7m.h>
![]()
![]()
#include <target/cortex_m.h>
![]()
![]()
#define FCF_ADDRESS
![]()
![]()
#define FCF_FPROT
![]()
![]()
#define FCF_FSEC
![]()
![]()
#define FCF_FOPT
![]()
![]()
#define FCF_FDPROT
![]()
![]()
#define FCF_SIZE
![]()
![]()
#define FLEXRAM
![]()
![]()
#define MSCM_OCMDR0
![]()
![]()
#define MSCM_OCMDR1
![]()
![]()
#define FMC_PFB01CR
![]()
![]()
#define FTFX_FSTAT
![]()
![]()
#define FTFX_FCNFG
![]()
![]()
#define FTFX_FCCOB3
![]()
![]()
#define FTFX_FPROT3
![]()
![]()
#define FTFX_FDPROT
![]()
![]()
#define SIM_BASE
![]()
![]()
#define SIM_BASE_KL28
![]()
![]()
#define SIM_COPC
![]()
![]()
#define WDOG_BASE
![]()
![]()
#define WDOG32_KE1X
![]()
![]()
#define WDOG32_KL28
![]()
![]()
#define SMC_PMCTRL
![]()
![]()
#define SMC_PMSTAT
![]()
![]()
#define SMC32_PMCTRL
![]()
![]()
#define SMC32_PMSTAT
![]()
![]()
#define PMC_REGSC
![]()
![]()
#define MC_PMCTRL
![]()
![]()
#define MCM_PLACR
![]()
![]()
#define SIM_SOPT1_OFFSET
![]()
![]()
#define SIM_SDID_OFFSET
![]()
![]()
#define SIM_FCFG1_OFFSET
![]()
![]()
#define SIM_FCFG2_OFFSET
![]()
![]()
#define WDOG_STCTRLH_OFFSET
![]()
![]()
#define WDOG32_CS_OFFSET
![]()
![]()
#define PM_STAT_RUN
![]()
![]()
#define PM_STAT_VLPR
![]()
![]()
#define PM_CTRL_RUNM_RUN
![]()
![]()
#define FTFX_CMD_BLOCKSTAT
![]()
![]()
#define FTFX_CMD_SECTSTAT
![]()
![]()
#define FTFX_CMD_LWORDPROG
![]()
![]()
#define FTFX_CMD_SECTERASE
![]()
![]()
#define FTFX_CMD_SECTWRITE
![]()
![]()
#define FTFX_CMD_MASSERASE
![]()
![]()
#define FTFX_CMD_PGMPART
![]()
![]()
#define FTFX_CMD_SETFLEXRAM
![]()
![]()
#define KINETIS_SOPT1_RAMSIZE_MASK
![]()
![]()
#define KINETIS_SOPT1_RAMSIZE_K24FN1M
![]()
![]()
#define KINETIS_SDID_K_SERIES_MASK
![]()
![]()
#define KINETIS_SDID_DIEID_MASK
![]()
![]()
#define KINETIS_SDID_DIEID_K22FN128
![]()
![]()
#define KINETIS_SDID_DIEID_K22FN256
![]()
![]()
#define KINETIS_SDID_DIEID_K22FN512
![]()
![]()
#define KINETIS_SDID_DIEID_K24FN256
![]()
![]()
#define KINETIS_SDID_DIEID_K24FN1M
![]()
![]()
#define KINETIS_K_SDID_TYPE_MASK
![]()
![]()
#define KINETIS_K_SDID_K10_M50
![]()
![]()
#define KINETIS_K_SDID_K10_M72
![]()
![]()
#define KINETIS_K_SDID_K10_M100
![]()
![]()
#define KINETIS_K_SDID_K10_M120
![]()
![]()
#define KINETIS_K_SDID_K11
![]()
![]()
#define KINETIS_K_SDID_K12
![]()
![]()
#define KINETIS_K_SDID_K20_M50
![]()
![]()
#define KINETIS_K_SDID_K20_M72
![]()
![]()
#define KINETIS_K_SDID_K20_M100
![]()
![]()
#define KINETIS_K_SDID_K20_M120
![]()
![]()
#define KINETIS_K_SDID_K21_M50
![]()
![]()
#define KINETIS_K_SDID_K21_M120
![]()
![]()
#define KINETIS_K_SDID_K22_M50
![]()
![]()
#define KINETIS_K_SDID_K22_M120
![]()
![]()
#define KINETIS_K_SDID_K30_M72
![]()
![]()
#define KINETIS_K_SDID_K30_M100
![]()
![]()
#define KINETIS_K_SDID_K40_M72
![]()
![]()
#define KINETIS_K_SDID_K40_M100
![]()
![]()
#define KINETIS_K_SDID_K50_M72
![]()
![]()
#define KINETIS_K_SDID_K51_M72
![]()
![]()
#define KINETIS_K_SDID_K53
![]()
![]()
#define KINETIS_K_SDID_K60_M100
![]()
![]()
#define KINETIS_K_SDID_K60_M150
![]()
![]()
#define KINETIS_K_SDID_K70_M150
![]()
![]()
#define KINETIS_K_REVID_MASK
![]()
![]()
#define KINETIS_K_REVID_SHIFT
![]()
![]()
#define KINETIS_SDID_SERIESID_MASK
![]()
![]()
#define KINETIS_SDID_SERIESID_K
![]()
![]()
#define KINETIS_SDID_SERIESID_KL
![]()
![]()
#define KINETIS_SDID_SERIESID_KE
![]()
![]()
#define KINETIS_SDID_SERIESID_KW
![]()
![]()
#define KINETIS_SDID_SERIESID_KV
![]()
![]()
#define KINETIS_SDID_SUBFAMID_SHIFT
![]()
![]()
#define KINETIS_SDID_SUBFAMID_MASK
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX0
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX1
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX2
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX3
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX4
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX5
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX6
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX7
![]()
![]()
#define KINETIS_SDID_SUBFAMID_KX8
![]()
![]()
#define KINETIS_SDID_FAMILYID_SHIFT
![]()
![]()
#define KINETIS_SDID_FAMILYID_MASK
![]()
![]()
#define KINETIS_SDID_FAMILYID_K0X
![]()
![]()
#define KINETIS_SDID_FAMILYID_K1X
![]()
![]()
#define KINETIS_SDID_FAMILYID_K2X
![]()
![]()
#define KINETIS_SDID_FAMILYID_K3X
![]()
![]()
#define KINETIS_SDID_FAMILYID_K4X
![]()
![]()
#define KINETIS_SDID_FAMILYID_K5X
![]()
![]()
#define KINETIS_SDID_FAMILYID_K6X
![]()
![]()
#define KINETIS_SDID_FAMILYID_K7X
![]()
![]()
#define KINETIS_SDID_FAMILYID_K8X
![]()
![]()
#define KINETIS_SDID_FAMILYID_KL8X
![]()
![]()
#define KINETIS_SDID_PROJECTID_MASK
![]()
![]()
#define KINETIS_SDID_PROJECTID_KE1XF
![]()
![]()
#define KINETIS_SDID_PROJECTID_KE1XZ
![]()
![]()
#define KINETIS_SDID_S32K_SERIES_MASK
![]()
![]()
#define KINETIS_SDID_S32K_SERIES_K11X
![]()
![]()
#define KINETIS_SDID_S32K_SERIES_K14X
![]()
![]()
#define KINETIS_SDID_S32K_DERIVATE_MASK
![]()
![]()
#define KINETIS_SDID_S32K_DERIVATE_KXX2
![]()
![]()
#define KINETIS_SDID_S32K_DERIVATE_KXX3
![]()
![]()
#define KINETIS_SDID_S32K_DERIVATE_KXX4
![]()
![]()
#define KINETIS_SDID_S32K_DERIVATE_KXX5
![]()
![]()
#define KINETIS_SDID_S32K_DERIVATE_KXX6
![]()
![]()
#define KINETIS_SDID_S32K_DERIVATE_KXX8
![]()
![]()
kinetis_flash_bank
![]()
![]()
kinetis_chip
![]()
![]()
k_chip
![]()
![]()
probed
![]()
![]()
bank_number
![]()
![]()
bank
![]()
![]()
sector_size
![]()
![]()
protection_size
![]()
![]()
prog_base
![]()
![]()
protection_block
![]()
![]()
<anonymous enum>
![]()
![]()
FC_AUTO
![]()
![]()
FC_PFLASH
![]()
![]()
FC_FLEX_NVM
![]()
![]()
FC_FLEX_RAM
![]()
![]()
flash_class
![]()
![]()
#define KINETIS_MAX_BANKS
![]()
![]()
kinetis_chip
![]()
![]()
target
![]()
![]()
probed
![]()
![]()
sim_sdid
![]()
![]()
sim_fcfg1
![]()
![]()
sim_fcfg2
![]()
![]()
fcfg2_maxaddr0_shifted
![]()
![]()
fcfg2_maxaddr1_shifted
![]()
![]()
num_pflash_blocks
![]()
![]()
num_nvm_blocks
![]()
![]()
pflash_sector_size
![]()
![]()
nvm_sector_size
![]()
![]()
max_flash_prog_size
![]()
![]()
pflash_base
![]()
![]()
pflash_size
![]()
![]()
nvm_base
![]()
![]()
nvm_size
![]()
![]()
dflash_size
![]()
![]()
progr_accel_ram
![]()
![]()
sim_base
![]()
![]()
<anonymous enum>
![]()
![]()
CT_KINETIS
![]()
![]()
CT_S32K
![]()
![]()
chip_type
![]()
![]()
<anonymous enum>
![]()
![]()
FS_PROGRAM_SECTOR
![]()
![]()
FS_PROGRAM_LONGWORD
![]()
![]()
FS_PROGRAM_PHRASE
![]()
![]()
FS_NO_CMD_BLOCKSTAT
![]()
![]()
FS_WIDTH_256BIT
![]()
![]()
FS_ECC
![]()
![]()
flash_support
![]()
![]()
<anonymous enum>
![]()
![]()
KINETIS_CACHE_NONE
![]()
![]()
KINETIS_CACHE_K
![]()
![]()
KINETIS_CACHE_L
![]()
![]()
KINETIS_CACHE_MSCM
![]()
![]()
KINETIS_CACHE_MSCM2
![]()
![]()
cache_type
![]()
![]()
<anonymous enum>
![]()
![]()
KINETIS_WDOG_NONE
![]()
![]()
KINETIS_WDOG_K
![]()
![]()
KINETIS_WDOG_COP
![]()
![]()
KINETIS_WDOG32_KE1X
![]()
![]()
KINETIS_WDOG32_KL28
![]()
![]()
watchdog_type
![]()
![]()
<anonymous enum>
![]()
![]()
KINETIS_SMC
![]()
![]()
KINETIS_SMC32
![]()
![]()
KINETIS_MC
![]()
![]()
sysmodectrlr_type
![]()
![]()
name
![]()
![]()
num_banks
![]()
![]()
banks
![]()
![]()
kinetis_type
![]()
![]()
sdid
![]()
![]()
name
![]()
![]()
kinetis_types_old
![]()
![]()
#define MDM_AP
![]()
![]()
#define MDM_REG_STAT
![]()
![]()
#define MDM_REG_CTRL
![]()
![]()
#define MDM_REG_ID
![]()
![]()
#define MDM_STAT_FMEACK
![]()
![]()
#define MDM_STAT_FREADY
![]()
![]()
#define MDM_STAT_SYSSEC
![]()
![]()
#define MDM_STAT_SYSRES
![]()
![]()
#define MDM_STAT_FMEEN
![]()
![]()
#define MDM_STAT_BACKDOOREN
![]()
![]()
#define MDM_STAT_LPEN
![]()
![]()
#define MDM_STAT_VLPEN
![]()
![]()
#define MDM_STAT_LLSMODEXIT
![]()
![]()
#define MDM_STAT_VLLSXMODEXIT
![]()
![]()
#define MDM_STAT_CORE_HALTED
![]()
![]()
#define MDM_STAT_CORE_SLEEPDEEP
![]()
![]()
#define MDM_STAT_CORESLEEPING
![]()
![]()
#define MDM_CTRL_FMEIP
![]()
![]()
#define MDM_CTRL_DBG_DIS
![]()
![]()
#define MDM_CTRL_DBG_REQ
![]()
![]()
#define MDM_CTRL_SYS_RES_REQ
![]()
![]()
#define MDM_CTRL_CORE_HOLD_RES
![]()
![]()
#define MDM_CTRL_VLLSX_DBG_REQ
![]()
![]()
#define MDM_CTRL_VLLSX_DBG_ACK
![]()
![]()
#define MDM_CTRL_VLLSX_STAT_ACK
![]()
![]()
#define MDM_ACCESS_TIMEOUT
![]()
![]()
allow_fcf_writes
![]()
![]()
fcf_fopt
![]()
![]()
create_banks
![]()
![]()
kinetis_flash
![]()
![]()
kinetis_mdm_write_register(struct adiv5_dap *, unsigned int, uint32_t)
![]()
![]()
if
(!ap)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
kinetis_mdm_read_register(struct adiv5_dap *, unsigned int, uint32_t *)
![]()
![]()
if
(!ap)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
kinetis_mdm_poll_register(struct adiv5_dap *, unsigned int, uint32_t, uint32_t, uint32_t)
![]()
![]()
kinetis_mdm_halt(struct command_invocation *)
![]()
![]()
if
(!dap)
![]()
![]()
while
(true)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
if
(timeval_ms() >= ms_timeout)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
kinetis_mdm_reset(struct command_invocation *)
![]()
![]()
if
(!dap)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
kinetis_mdm_mass_erase(struct command_invocation *)
![]()
![]()
if
(!dap)
![]()
![]()
if
(retval != ERROR_OK && !has_srst)
![]()
![]()
if
(!man_reset_requested && ms_elapsed > 100)
![]()
![]()
if
(ms_elapsed > 3000)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
if
(!(stat & MDM_STAT_FMEEN))
![]()
![]()
if
(cnt_mass_erase_disabled > 10)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
kinetis_known_mdm_ids
![]()
![]()
kinetis_check_flash_security_status(struct command_invocation *)
![]()
![]()
if
(!dap)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
for
(size_t i = 0; i < ARRAY_SIZE(kinetis_known_mdm_ids); i++)
![]()
![]()
if
(val == kinetis_known_mdm_ids[i])
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
if
((val & (MDM_STAT_SYSSEC | MDM_STAT_FREADY)) != MDM_STAT_FREADY)
![]()
![]()
if
(!ap)
![]()
![]()
for
(unsigned int i = 0; i < 32; i++)
![]()
![]()
if
(retval != ERROR_OK)
![]()
![]()
for
(unsigned int i = 0; i < 32; i++)
![]()
![]()
if
(flash_not_ready_score <= 8 && secured_score > 24)
![]()
![]()
else if
(flash_not_ready_score > 24)
![]()
![]()
else
![]()
![]()
kinetis_get_chip(struct target *)
![]()
![]()
for
(bank_iter = flash_bank_list(); bank_iter; bank_iter = bank_iter->next)
![]()
![]()
kinetis_chip_options(struct kinetis_chip *, int, const char **)
![]()
![]()
for
(int i = 0; i < argc; i++)
![]()
![]()
if
(strcmp(argv[i], "-sim-base") == 0)
![]()
![]()
else if
(strcmp(argv[i], "-s32k") == 0)
![]()
![]()
kinetis_flash_bank_command(struct command_invocation *, struct flash_bank *)
![]()
![]()
if
(!k_chip)
![]()
![]()
if
(!k_chip)
![]()
![]()
if
(k_chip->num_banks >= KINETIS_MAX_BANKS)
![]()
![]()
kinetis_free_driver_priv(struct flash_bank *)
![]()
![]()
kinetis_create_missing_banks(struct kinetis_chip *)
![]()
![]()
if
(num_blocks > KINETIS_MAX_BANKS)
![]()
![]()
if
(bank && bank->name)
![]()
![]()
if
(p)
![]()
![]()
if
(k_chip->num_pflash_blocks > 1)
![]()
![]()
else
![]()
![]()
for
(unsigned int bank_idx = 1; bank_idx < num_blocks; bank_idx++)
![]()
![]()
if
(bank_idx < k_chip->num_pflash_blocks)
![]()
![]()
else
![]()
![]()
kinetis_disable_wdog_algo(struct target *, size_t, const uint8_t *, uint32_t)
![]()
![]()
if
(target->state != TARGET_HALTED)
![]()
![]()
if
(retval == ERROR_OK)
![]()
![]()
kinetis_disable_wdog_kx(struct target *)
![]()
![]()
if
((wdog & 0x1) == 0)
![]()
![]()
kinetis_disable_wdog32(struct target *, uint32_t)
![]()
![]()
kinetis_disable_wdog(struct kinetis_chip *)
![]()
![]()
if
(!k_chip->probed)
![]()
![]()
switch
(k_chip->chip_type)
![]()
![]()
case
CT_S32K:
![]()
![]()
default
![]()
![]()
switch
(k_chip->watchdog_type)
![]()
![]()
case
KINETIS_WDOG_K:
![]()
![]()
case
KINETIS_WDOG_COP:
![]()
![]()
case
KINETIS_WDOG32_KE1X:
![]()
![]()
case
KINETIS_WDOG32_KL28:
![]()
![]()
default
![]()
![]()
kinetis_disable_wdog_handler(struct command_invocation *)
![]()
![]()
kinetis_ftfx_decode_error(uint8_t)
![]()
![]()
if
(fstat & 0x20)
![]()
![]()
kinetis_ftfx_clear_error(struct target *)
![]()
![]()
kinetis_ftfx_prepare(struct target *)
![]()
![]()
for
(unsigned int i = 0; i < 50; i++)
![]()
![]()
if
((fstat & 0x80) == 0)
![]()
![]()
if
(fstat != 0x80)
![]()
![]()
kinetis_flash_write_code
![]()
![]()
#include "../../../contrib/loaders/flash/kinetis/kinetis_flash.inc"
![]()
![]()
kinetis_write_block(struct flash_bank *, const uint8_t *, uint32_t, uint32_t)
![]()
![]()
if
(target_alloc_working_area(target, sizeof(kinetis_flash_write_code), &write_algorithm) != ERROR_OK)
![]()
![]()
if
(buffer_size < 256)
![]()
![]()
else if
(buffer_size > 16384)
![]()
![]()
if
(target_alloc_working_area(target, buffer_size, &source) != ERROR_OK)
![]()
![]()
if
(retval == ERROR_FLASH_OPERATION_FAILED)
![]()
![]()
if
(retval == ERROR_OK)
![]()
![]()
kinetis_protect(struct flash_bank *, int, unsigned int, unsigned int)
![]()
![]()
if
(allow_fcf_writes)
![]()
![]()
if
(!bank->prot_blocks || bank->num_prot_blocks == 0)
![]()
![]()
kinetis_protect_check(struct flash_bank *)
![]()
![]()
if
(k_bank->flash_class == FC_PFLASH)
![]()
![]()
else if
(k_bank->flash_class == FC_FLEX_NVM)
![]()
![]()
else
![]()
![]()
for
(unsigned int i = 0; i < bank->num_prot_blocks; i++)
![]()
![]()
kinetis_fill_fcf(struct flash_bank *, uint8_t *)
![]()
![]()
for
(unsigned int bank_idx = 0; bank_idx < num_blocks; bank_idx++)
![]()
![]()
if
(!bank_iter)
![]()
![]()
if
(k_bank->flash_class == FC_PFLASH)
![]()
![]()
for
(unsigned int i = 0; i < bank_iter->num_prot_blocks; i++)
![]()
![]()
else if
(k_bank->flash_class == FC_FLEX_NVM)
![]()
![]()
for
(unsigned int i = 0; i < bank_iter->num_prot_blocks; i++)
![]()
![]()
kinetis_ftfx_command(struct target *, uint8_t, uint32_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t *)
![]()
![]()
if
((fstat & 0xf0) != 0x80)
![]()
![]()
kinetis_read_pmstat(struct kinetis_chip *, uint8_t *)
![]()
![]()
switch
(k_chip->sysmodectrlr_type)
![]()
![]()
case
KINETIS_SMC:
![]()
![]()
case
KINETIS_SMC32:
![]()
![]()
case
KINETIS_MC:
![]()
![]()
if
(result == ERROR_OK)
![]()
![]()
kinetis_check_run_mode(struct kinetis_chip *)
![]()
![]()
if
(!k_chip)
![]()
![]()
if
(target->state != TARGET_HALTED)
![]()
![]()
if
(pmstat == PM_STAT_VLPR)
![]()
![]()
switch
(k_chip->sysmodectrlr_type)
![]()
![]()
case
KINETIS_SMC:
![]()
![]()
case
KINETIS_SMC32:
![]()
![]()
case
KINETIS_MC:
![]()
![]()
for
(unsigned int i = 100; i > 0; i--)
![]()
![]()
kinetis_invalidate_flash_cache(struct kinetis_chip *)
![]()
![]()
switch
(k_chip->cache_type)
![]()
![]()
case
KINETIS_CACHE_K:
![]()
![]()
case
KINETIS_CACHE_L:
![]()
![]()
case
KINETIS_CACHE_MSCM:
![]()
![]()
case
KINETIS_CACHE_MSCM2:
![]()
![]()
default
![]()
![]()
kinetis_erase(struct flash_bank *, unsigned int, unsigned int)
![]()
![]()
for
(unsigned int i = first; i <= last; i++)
![]()
![]()
if
(result != ERROR_OK)
![]()
![]()
if
(k_bank->prog_base == 0 && bank->sectors[i].offset <= FCF_ADDRESS && bank->sectors[i].offset + bank->sectors[i].size > FCF_ADDRESS + FCF_SIZE)
![]()
![]()
if
(allow_fcf_writes)
![]()
![]()
else
![]()
![]()
kinetis_make_ram_ready(struct target *)
![]()
![]()
kinetis_write_sections(struct flash_bank *, const uint8_t *, uint32_t, uint32_t)
![]()
![]()
while
(count > 0)
![]()
![]()
if
(size != size_aligned)
![]()
![]()
if
(result != ERROR_OK)
![]()
![]()
if
(result != ERROR_OK)
![]()
![]()
if
(ftfx_fstat & 0x01)
![]()
![]()
if
(k_bank->prog_base == 0 && offset == FCF_ADDRESS + FCF_SIZE && (k_chip->flash_support & FS_WIDTH_256BIT))
![]()
![]()
kinetis_write_inner(struct flash_bank *, const uint8_t *, uint32_t, uint32_t)
![]()
![]()
if
(!(k_chip->flash_support & FS_PROGRAM_SECTOR))
![]()
![]()
else
![]()
![]()
if
(result != ERROR_OK)
![]()
![]()
if
(!fallback)
![]()
![]()
else if
(k_chip->flash_support & FS_PROGRAM_LONGWORD)
![]()
![]()
if
(offset & 0x3)
![]()
![]()
if
(count & 0x3)
![]()
![]()
if
(!new_buffer)
![]()
![]()
if
(result == ERROR_TARGET_RESOURCE_NOT_AVAILABLE)
![]()
![]()
while
(words_remaining)
![]()
![]()
if
(result != ERROR_OK)
![]()
![]()
else
![]()
![]()
kinetis_write(struct flash_bank *, const uint8_t *, uint32_t, uint32_t)
![]()
![]()
if
(k_bank->prog_base == 0 && !allow_fcf_writes)
![]()
![]()
if
(set_fcf)
![]()
![]()
if
(fcf_in_data_valid)
![]()
![]()
if
(memcmp(fcf_in_data, fcf_buffer, 8))
![]()
![]()
if
(memcmp(fcf_in_data + FCF_FPROT, fcf_buffer + FCF_FPROT, 4))
![]()
![]()
if
(fcf_in_data[FCF_FDPROT] != fcf_buffer[FCF_FDPROT])
![]()
![]()
if
((fcf_in_data[FCF_FSEC] & 3) != 2)
![]()
![]()
else if
(fcf_in_data[FCF_FSEC] != fcf_buffer[FCF_FSEC])
![]()
![]()
if
(fcf_in_data[FCF_FOPT] != fcf_buffer[FCF_FOPT])
![]()
![]()
if
(fcf_differs)
![]()
![]()
if
(k_chip->flash_support & FS_ECC)
![]()
![]()
else
![]()
![]()
if
(set_fcf && !fcf_in_data_valid)
![]()
![]()
if
(offset < FCF_ADDRESS)
![]()
![]()
if
(set_fcf)
![]()
![]()
if
(offset + count > FCF_ADDRESS + FCF_SIZE)
![]()
![]()
else
![]()
![]()
kinetis_probe_chip_s32k(struct kinetis_chip *)
![]()
![]()
switch
(k_chip->sim_sdid & KINETIS_SDID_S32K_SERIES_MASK)
![]()
![]()
case
KINETIS_SDID_S32K_SERIES_K11X:
![]()
![]()
switch
(k_chip->sim_sdid & KINETIS_SDID_S32K_DERIVATE_MASK)
![]()
![]()
case
KINETIS_SDID_S32K_DERIVATE_KXX6:
![]()
![]()
case
KINETIS_SDID_S32K_DERIVATE_KXX8:
![]()
![]()
case
KINETIS_SDID_S32K_SERIES_K14X:
![]()
![]()
switch
(k_chip->sim_sdid & KINETIS_SDID_S32K_DERIVATE_MASK)
![]()
![]()
case
KINETIS_SDID_S32K_DERIVATE_KXX2:
![]()
![]()
case
KINETIS_SDID_S32K_DERIVATE_KXX3:
![]()
![]()
case
KINETIS_SDID_S32K_DERIVATE_KXX4:
![]()
![]()
case
KINETIS_SDID_S32K_DERIVATE_KXX5:
![]()
![]()
case
KINETIS_SDID_S32K_DERIVATE_KXX6:
![]()
![]()
case
KINETIS_SDID_S32K_DERIVATE_KXX8:
![]()
![]()
default
![]()
![]()
if
(k_chip->pflash_sector_size == 0)
![]()
![]()
if
((fcfg1_depart & 0x8) == 0)
![]()
![]()
else
![]()
![]()
if
(k_chip->num_nvm_blocks)
![]()
![]()
kinetis_probe_chip(struct kinetis_chip *)
![]()
![]()
else
![]()
![]()
else
![]()
![]()
if
((k_chip->sim_sdid & (~KINETIS_SDID_K_SERIES_MASK)) == 0)
![]()
![]()
switch
(mcu_type)
![]()
![]()
case
KINETIS_K_SDID_K10_M50:
![]()
![]()
case
KINETIS_K_SDID_K20_M50:
![]()
![]()
case
KINETIS_K_SDID_K10_M72:
![]()
![]()
case
KINETIS_K_SDID_K20_M72:
![]()
![]()
case
KINETIS_K_SDID_K30_M72:
![]()
![]()
case
KINETIS_K_SDID_K30_M100:
![]()
![]()
case
KINETIS_K_SDID_K40_M72:
![]()
![]()
case
KINETIS_K_SDID_K40_M100:
![]()
![]()
case
KINETIS_K_SDID_K50_M72:
![]()
![]()
case
KINETIS_K_SDID_K10_M100:
![]()
![]()
case
KINETIS_K_SDID_K20_M100:
![]()
![]()
case
KINETIS_K_SDID_K11:
![]()
![]()
case
KINETIS_K_SDID_K12:
![]()
![]()
case
KINETIS_K_SDID_K21_M50:
![]()
![]()
case
KINETIS_K_SDID_K22_M50:
![]()
![]()
case
KINETIS_K_SDID_K51_M72:
![]()
![]()
case
KINETIS_K_SDID_K53:
![]()
![]()
case
KINETIS_K_SDID_K60_M100:
![]()
![]()
case
KINETIS_K_SDID_K21_M120:
![]()
![]()
case
KINETIS_K_SDID_K22_M120:
![]()
![]()
case
KINETIS_K_SDID_K10_M120:
![]()
![]()
case
KINETIS_K_SDID_K20_M120:
![]()
![]()
case
KINETIS_K_SDID_K60_M150:
![]()
![]()
case
KINETIS_K_SDID_K70_M150:
![]()
![]()
default
![]()
![]()
for
(size_t idx = 0; idx < ARRAY_SIZE(kinetis_types_old); idx++)
![]()
![]()
if
(kinetis_types_old[idx].sdid == mcu_type)
![]()
![]()
switch
(mcu_type)
![]()
![]()
case
KINETIS_K_SDID_K10_M100:
![]()
![]()
case
KINETIS_K_SDID_K20_M100:
![]()
![]()
case
KINETIS_K_SDID_K30_M100:
![]()
![]()
case
KINETIS_K_SDID_K40_M100:
![]()
![]()
case
KINETIS_K_SDID_K60_M100:
![]()
![]()
if
(revid <= 7)
![]()
![]()
else
![]()
![]()
switch
(k_chip->sim_sdid & KINETIS_SDID_SERIESID_MASK)
![]()
![]()
case
KINETIS_SDID_SERIESID_K:
![]()
![]()
switch
(k_chip->sim_sdid & (KINETIS_SDID_FAMILYID_MASK | KINETIS_SDID_SUBFAMID_MASK))
![]()
![]()
case
KINETIS_SDID_FAMILYID_K0X | KINETIS_SDID_SUBFAMID_KX2:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX2:
![]()
![]()
if
(((k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K24FN1M) && ((sopt1 & KINETIS_SOPT1_RAMSIZE_MASK) == KINETIS_SOPT1_RAMSIZE_K24FN1M))
![]()
![]()
if
((k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K22FN128 || (k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K22FN256 || (k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K22FN512)
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX4:
![]()
![]()
if
((k_chip->sim_sdid & (KINETIS_SDID_DIEID_MASK)) == KINETIS_SDID_DIEID_K24FN256)
![]()
![]()
case
KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX1:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX2:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX3:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX4:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX6:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K6X | KINETIS_SDID_SUBFAMID_KX6:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX7:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX8:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K8X | KINETIS_SDID_SUBFAMID_KX0:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K8X | KINETIS_SDID_SUBFAMID_KX1:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K8X | KINETIS_SDID_SUBFAMID_KX2:
![]()
![]()
case
KINETIS_SDID_FAMILYID_KL8X | KINETIS_SDID_SUBFAMID_KX1:
![]()
![]()
case
KINETIS_SDID_FAMILYID_KL8X | KINETIS_SDID_SUBFAMID_KX2:
![]()
![]()
default
![]()
![]()
case
KINETIS_SDID_SERIESID_KL:
![]()
![]()
switch
(k_chip->sim_sdid & (KINETIS_SDID_FAMILYID_MASK | KINETIS_SDID_SUBFAMID_MASK))
![]()
![]()
case
KINETIS_SDID_FAMILYID_K1X | KINETIS_SDID_SUBFAMID_KX3:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX3:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX8:
![]()
![]()
case
KINETIS_SDID_SERIESID_KW:
![]()
![]()
switch
(k_chip->sim_sdid & (KINETIS_SDID_FAMILYID_MASK | KINETIS_SDID_SUBFAMID_MASK))
![]()
![]()
case
KINETIS_SDID_FAMILYID_K4X | KINETIS_SDID_SUBFAMID_KX0:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K3X | KINETIS_SDID_SUBFAMID_KX0:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX0:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K4X | KINETIS_SDID_SUBFAMID_KX1:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K3X | KINETIS_SDID_SUBFAMID_KX1:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K2X | KINETIS_SDID_SUBFAMID_KX1:
![]()
![]()
default
![]()
![]()
case
KINETIS_SDID_SERIESID_KV:
![]()
![]()
switch
(k_chip->sim_sdid & (KINETIS_SDID_FAMILYID_MASK | KINETIS_SDID_SUBFAMID_MASK))
![]()
![]()
case
KINETIS_SDID_FAMILYID_K1X | KINETIS_SDID_SUBFAMID_KX0:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K1X | KINETIS_SDID_SUBFAMID_KX1:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K3X | KINETIS_SDID_SUBFAMID_KX0:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K3X | KINETIS_SDID_SUBFAMID_KX1:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K4X | KINETIS_SDID_SUBFAMID_KX2:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K4X | KINETIS_SDID_SUBFAMID_KX4:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K4X | KINETIS_SDID_SUBFAMID_KX6:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K5X | KINETIS_SDID_SUBFAMID_KX6:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K5X | KINETIS_SDID_SUBFAMID_KX8:
![]()
![]()
default
![]()
![]()
case
KINETIS_SDID_SERIESID_KE:
![]()
![]()
switch
(k_chip->sim_sdid & (KINETIS_SDID_FAMILYID_MASK | KINETIS_SDID_SUBFAMID_MASK | KINETIS_SDID_PROJECTID_MASK))
![]()
![]()
case
KINETIS_SDID_FAMILYID_K1X | KINETIS_SDID_SUBFAMID_KX4 | KINETIS_SDID_PROJECTID_KE1XZ:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K1X | KINETIS_SDID_SUBFAMID_KX5 | KINETIS_SDID_PROJECTID_KE1XZ:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K1X | KINETIS_SDID_SUBFAMID_KX4 | KINETIS_SDID_PROJECTID_KE1XF:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K1X | KINETIS_SDID_SUBFAMID_KX6 | KINETIS_SDID_PROJECTID_KE1XF:
![]()
![]()
case
KINETIS_SDID_FAMILYID_K1X | KINETIS_SDID_SUBFAMID_KX8 | KINETIS_SDID_PROJECTID_KE1XF:
![]()
![]()
default
![]()
![]()
default
![]()
![]()
if
(k_chip->pflash_sector_size == 0)
![]()
![]()
else if
(k_chip->fcfg2_maxaddr1_shifted == 0 && num_blocks >= 2 && fcfg2_pflsh)
![]()
![]()
else if
(k_chip->fcfg2_maxaddr1_shifted != 0 && num_blocks == 1)
![]()
![]()
if
(!fcfg2_pflsh)
![]()
![]()
switch
(fcfg1_nvmsize)
![]()
![]()
case
0x03:
![]()
![]()
case
0x05:
![]()
![]()
case
0x07:
![]()
![]()
case
0x09:
![]()
![]()
case
0x0b:
![]()
![]()
case
0x0f:
![]()
![]()
default
![]()
![]()
switch
(fcfg1_eesize)
![]()
![]()
case
0x00:
![]()
![]()
case
0x01:
![]()
![]()
case
0x02:
![]()
![]()
case
0x03:
![]()
![]()
case
0x04:
![]()
![]()
case
0x05:
![]()
![]()
case
0x06:
![]()
![]()
case
0x07:
![]()
![]()
case
0x08:
![]()
![]()
case
0x09:
![]()
![]()
default
![]()
![]()
switch
(fcfg1_depart)
![]()
![]()
case
0x01:
![]()
![]()
case
0x02:
![]()
![]()
case
0x03:
![]()
![]()
case
0x04:
![]()
![]()
case
0x05:
![]()
![]()
case
0x06:
![]()
![]()
case
0x07:
![]()
![]()
case
0x08:
![]()
![]()
case
0x09:
![]()
![]()
case
0x0a:
![]()
![]()
case
0x0b:
![]()
![]()
case
0x0c:
![]()
![]()
case
0x0d:
![]()
![]()
default
![]()
![]()
switch
(fcfg1_pfsize)
![]()
![]()
case
0x00:
![]()
![]()
case
0x01:
![]()
![]()
case
0x03:
![]()
![]()
case
0x05:
![]()
![]()
case
0x07:
![]()
![]()
case
0x09:
![]()
![]()
case
0x0b:
![]()
![]()
case
0x0d:
![]()
![]()
case
0x0f:
![]()
![]()
default
![]()
![]()
if
(k_chip->flash_support & FS_PROGRAM_SECTOR && k_chip->max_flash_prog_size == 0)
![]()
![]()
if
(fcfg2_pflsh)
![]()
![]()
else
![]()
![]()
if
(use_nvm_marking)
![]()
![]()
if
(k_chip->num_nvm_blocks)
![]()
![]()
kinetis_probe(struct flash_bank *)
![]()
![]()
if
(!k_chip->probed)
![]()
![]()
switch
(k_chip->chip_type)
![]()
![]()
case
CT_S32K:
![]()
![]()
default
![]()
![]()
if
(k_bank->bank_number < k_chip->num_pflash_blocks)
![]()
![]()
else if
(k_bank->bank_number < num_blocks)
![]()
![]()
if
(k_chip->dflash_size == 0)
![]()
![]()
else
![]()
![]()
if
(bank->size > limit)
![]()
![]()
else
![]()
![]()
if
(k_chip->chip_type != CT_S32K)
![]()
![]()
if
(fcfg2_pflsh)
![]()
![]()
else
![]()
![]()
if
(k_bank->sector_size == 0)
![]()
![]()
if
(bank->num_sectors > 0)
![]()
![]()
else
![]()
![]()
kinetis_auto_probe(struct flash_bank *)
![]()
![]()
kinetis_info(struct flash_bank *, struct command_invocation *)
![]()
![]()
kinetis_blank_check(struct flash_bank *)
![]()
![]()
if
(k_bank->flash_class == FC_PFLASH || k_bank->flash_class == FC_FLEX_NVM)
![]()
![]()
if
(use_block_cmd && k_bank->flash_class == FC_FLEX_NVM)
![]()
![]()
if
(use_block_cmd)
![]()
![]()
if
(block_dirty)
![]()
![]()
for
(unsigned int i = 0; i < bank->num_sectors; i++)
![]()
![]()
if
(result == ERROR_OK)
![]()
![]()
else
![]()
![]()
else
![]()
![]()
else
![]()
![]()
kinetis_nvm_partition(struct command_invocation *)
![]()
![]()
if
(k_chip->chip_type == CT_S32K)
![]()
![]()
if
(CMD_ARGC >= 2)
![]()
![]()
switch
(sz_type)
![]()
![]()
case
SHOW_INFO:
![]()
![]()
if
(!k_chip)
![]()
![]()
switch
(flex_nvm_partition_code)
![]()
![]()
case
0:
![]()
![]()
case
1:
![]()
![]()
case
2:
![]()
![]()
case
3:
![]()
![]()
case
4:
![]()
![]()
case
5:
![]()
![]()
case
6:
![]()
![]()
case
8:
![]()
![]()
case
0x9:
![]()
![]()
case
0xA:
![]()
![]()
case
0xB:
![]()
![]()
case
0xC:
![]()
![]()
case
0xD:
![]()
![]()
case
0xE:
![]()
![]()
case
0xf:
![]()
![]()
default
![]()
![]()
case
DF_SIZE:
![]()
![]()
case
EEBKP_SIZE:
![]()
![]()
if
(CMD_ARGC == 3)
![]()
![]()
else if
(CMD_ARGC >= 4)
![]()
![]()
if
(enable)
![]()
![]()
for
(log2 = 2; ; log2++)
![]()
![]()
if
(ee1 + ee2 > (16u << 10) >> log2 || log2 >= 9)
![]()
![]()
else if
(ee1 != ee2)
![]()
![]()
if
(k_chip)
![]()
![]()
kinetis_fcf_source_handler(struct command_invocation *)
![]()
![]()
if
(CMD_ARGC == 1)
![]()
![]()
if
(allow_fcf_writes)
![]()
![]()
else
![]()
![]()
kinetis_fopt_handler(struct command_invocation *)
![]()
![]()
if
(CMD_ARGC == 1)
![]()
![]()
else
![]()
![]()
kinetis_create_banks_handler(struct command_invocation *)
![]()
![]()
kinetis_security_command_handlers
![]()
![]()
kinetis_exec_command_handlers
![]()
![]()
kinetis_command_handler
![]()
![]()
kinetis_flash