Repostiory containing DAPLink source code with Reset Pin workaround for HANI_IOT board.

Upstream: https://github.com/ARMmbed/DAPLink

Committer:
Pawel Zarembski
Date:
Tue Apr 07 12:55:42 2020 +0200
Revision:
0:01f31e923fe2
hani: DAPLink with reset workaround

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pawel Zarembski 0:01f31e923fe2 1 /* CMSIS-DAP Interface Firmware
Pawel Zarembski 0:01f31e923fe2 2 * Copyright (c) 2015-2019 Realtek Semiconductor Corp.
Pawel Zarembski 0:01f31e923fe2 3 *
Pawel Zarembski 0:01f31e923fe2 4 * Licensed under the Apache License, Version 2.0 (the "License");
Pawel Zarembski 0:01f31e923fe2 5 * you may not use this file except in compliance with the License.
Pawel Zarembski 0:01f31e923fe2 6 * You may obtain a copy of the License at
Pawel Zarembski 0:01f31e923fe2 7 *
Pawel Zarembski 0:01f31e923fe2 8 * http://www.apache.org/licenses/LICENSE-2.0
Pawel Zarembski 0:01f31e923fe2 9 *
Pawel Zarembski 0:01f31e923fe2 10 * Unless required by applicable law or agreed to in writing, software
Pawel Zarembski 0:01f31e923fe2 11 * distributed under the License is distributed on an "AS IS" BASIS,
Pawel Zarembski 0:01f31e923fe2 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Pawel Zarembski 0:01f31e923fe2 13 * See the License for the specific language governing permissions and
Pawel Zarembski 0:01f31e923fe2 14 * limitations under the License.
Pawel Zarembski 0:01f31e923fe2 15 */
Pawel Zarembski 0:01f31e923fe2 16 #include <string.h>
Pawel Zarembski 0:01f31e923fe2 17 #include "swd_host.h"
Pawel Zarembski 0:01f31e923fe2 18 #include "DAP_config.h"
Pawel Zarembski 0:01f31e923fe2 19 #include "target_family.h"
Pawel Zarembski 0:01f31e923fe2 20
Pawel Zarembski 0:01f31e923fe2 21 static void swd_set_target_reset_realtek(uint8_t asserted)
Pawel Zarembski 0:01f31e923fe2 22 {
Pawel Zarembski 0:01f31e923fe2 23 if (asserted) {
Pawel Zarembski 0:01f31e923fe2 24 swd_write_word(0xE000ED0C, 0x05FA0004);
Pawel Zarembski 0:01f31e923fe2 25 }
Pawel Zarembski 0:01f31e923fe2 26 }
Pawel Zarembski 0:01f31e923fe2 27
Pawel Zarembski 0:01f31e923fe2 28 static uint8_t validate_bin_nvic_realtek(const uint8_t *buf)
Pawel Zarembski 0:01f31e923fe2 29 {
Pawel Zarembski 0:01f31e923fe2 30 const char header[] = {0x99, 0x99, 0x96, 0x96, 0x3F, 0xCC, 0x66, 0xFC,
Pawel Zarembski 0:01f31e923fe2 31 0xC0, 0x33, 0xCC, 0x03, 0xE5, 0xDC, 0x31, 0x62};
Pawel Zarembski 0:01f31e923fe2 32
Pawel Zarembski 0:01f31e923fe2 33 return !memcmp(header, buf, sizeof(header));
Pawel Zarembski 0:01f31e923fe2 34 }
Pawel Zarembski 0:01f31e923fe2 35
Pawel Zarembski 0:01f31e923fe2 36 const target_family_descriptor_t g_realtek_rtl8195am = {
Pawel Zarembski 0:01f31e923fe2 37 .family_id = kRealtek_Rtl8195am_FamilyID,
Pawel Zarembski 0:01f31e923fe2 38 .default_reset_type = kHardwareReset,
Pawel Zarembski 0:01f31e923fe2 39 .swd_set_target_reset = swd_set_target_reset_realtek,
Pawel Zarembski 0:01f31e923fe2 40 .validate_bin_nvic = validate_bin_nvic_realtek,
Pawel Zarembski 0:01f31e923fe2 41 };