Repostiory containing DAPLink source code with Reset Pin workaround for HANI_IOT board.
Upstream: https://github.com/ARMmbed/DAPLink
Diff: source/target/target_board.h
- Revision:
- 0:01f31e923fe2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/source/target/target_board.h Tue Apr 07 12:55:42 2020 +0200 @@ -0,0 +1,114 @@ +/** + * @file target_board.h + * @brief + * + * DAPLink Interface Firmware + * Copyright (c) 2018-2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef TARGET_BOARD_H +#define TARGET_BOARD_H + +#include <stdint.h> +#include "target_config.h" +#include "target_family.h" +#include "virtual_fs.h" + +//! @brief Current board info version. +//! +//! - Version 1: Initial version. +enum _board_info_version { + kBoardInfoVersion = 1, //!< The current board info version. +}; + +//! @brief Flags for board_info +enum _board_info_flags { + kEnablePageErase = (1 << 0), /*!< Enable page programming and sector erase for drag and drop */ + kEnableUnderResetConnect = (1 << 1), /*!< Enable under reset connection when enabling debug mode */ +}; + +/*! + * @brief Board customization info. + * + * Each board must have a unique 4-character Board ID. For Mbed OS targets, the Board ID is the same + * as the Mbed Platform ID. These IDs are nominally allocated by Arm in order to guarantee there are + * no conflicts between boards. Please see the DAPLink documentation for more. + * + * The family_id member tells DAPLink which device family the on-board target belongs to. This then + * determines certain behaviours, such as how to reset the target. Family IDs are defined in the + * #family_id_t enumeration. + * + * The board initialization function pointers allow the board to override the routines defined + * by the device family. + */ +typedef struct __attribute__((__packed__)) board_info { + uint16_t info_version; /*!< Version number of the board info */ + uint16_t family_id; /*!< Use to select or identify target family from defined target family or custom ones */ + char board_id[5]; /*!< 4-char board ID plus null terminator */ + uint8_t _padding[3]; + uint32_t flags; /*!< Flags from #_board_info_flags */ + target_cfg_t *target_cfg; /*!< Specific chip configuration for the target and enables MSD when non-NULL */ + + //! @name MSD customization + //@{ + vfs_filename_t daplink_url_name; /*!< Customize the URL file name */ + vfs_filename_t daplink_drive_name; /*!< Customize the MSD DAPLink drive name */ + char daplink_target_url[64]; /*!< Customize the target url in DETAILS.TXT */ + //@} + + //! @name Board initialization customization + //@{ + void (*prerun_board_config)(void); /*!< Specific board debug/ID related initialization */ + void (*swd_set_target_reset)(uint8_t asserted); /*!< Boards can customize how to send reset to the target with precedence over target family */ + uint8_t (*target_set_state)(target_state_t state); /*!< Boards can customize target debug states with precedence over target family */ + uint32_t soft_reset_type; /*!< Boards can override software reset type to VECTRESET or SYSRESETREQ */ + //@} +} board_info_t; + +//! @brief Information describing the board on which DAPLink is running. +extern const board_info_t g_board_info; + +#ifdef __cplusplus +extern "C" { +#endif + +//! @brief Returns the 4-char ID of the board used by the running firmware. +//! +//! For firmware with no board, the board ID is "0000". +const char * get_board_id(void); + +//! @brief Returns the family ID for the target associated with the board. +//! +//! The family ID will be 0 if there is no board. +uint16_t get_family_id(void); + +//! @brief Whether the board has a valid flash algo. +uint8_t flash_algo_valid(void); + +//! @brief Returns the MSD HTML help filename or a default. +static inline const char * get_daplink_url_name ( void ) { return ((g_board_info.daplink_url_name[0] != 0) ? g_board_info.daplink_url_name : "MBED HTM"); } + +//! @brief Returns the MSD volume name or a default. +static inline const char * get_daplink_drive_name ( void ) { return ((g_board_info.daplink_drive_name[0] != 0) ? g_board_info.daplink_drive_name : "DAPLINK "); } + +//! @brief Returns the target information URL or a default. +static inline const char * get_daplink_target_url ( void ) { return ((g_board_info.daplink_target_url[0] != 0) ? g_board_info.daplink_target_url : "https://mbed.org/device/?code=@U?version=@V?target_id=@T"); } + +#ifdef __cplusplus +} +#endif + +#endif