@@ -43,31 +43,21 @@ const target_family_descriptor_t g_sw_sysresetreq_family = {
4343 .soft_reset_type = SYSRESETREQ ,
4444};
4545
46- //Weakly define family
47- __attribute__((weak ))
48- const target_family_descriptor_t g_nxp_kinetis_kseries = {0 };
49- __attribute__((weak ))
50- const target_family_descriptor_t g_nxp_kinetis_lseries = {0 };
51- __attribute__((weak ))
52- const target_family_descriptor_t g_nxp_kinetis_k32w_series = {0 };
53- __attribute__((weak ))
54- const target_family_descriptor_t g_nxp_mimxrt = {0 };
55- __attribute__((weak ))
56- const target_family_descriptor_t g_nxp_rapid_iot = {0 };
57- __attribute__((weak ))
58- const target_family_descriptor_t g_nordic_nrf51 = {0 };
59- __attribute__((weak ))
60- const target_family_descriptor_t g_nordic_nrf52 = {0 };
61- __attribute__((weak ))
62- const target_family_descriptor_t g_realtek_rtl8195am = {0 };
63- __attribute__((weak ))
64- const target_family_descriptor_t g_ti_family = {0 };
65- __attribute__((weak ))
66- const target_family_descriptor_t g_wiznet_family = {0 };
67- __attribute__((weak ))
68- const target_family_descriptor_t g_renesas_family = {0 };
69- __attribute__((weak ))
70- const target_family_descriptor_t g_toshiba_tz_family = {0 };
46+ // Weak references to family definitions.
47+ extern __WEAK const target_family_descriptor_t g_nxp_kinetis_kseries ;
48+ extern __WEAK const target_family_descriptor_t g_nxp_kinetis_lseries ;
49+ extern __WEAK const target_family_descriptor_t g_nxp_kinetis_k32w_series ;
50+ extern __WEAK const target_family_descriptor_t g_nxp_mimxrt ;
51+ extern __WEAK const target_family_descriptor_t g_nxp_rapid_iot ;
52+ extern __WEAK const target_family_descriptor_t g_nordic_nrf51 ;
53+ extern __WEAK const target_family_descriptor_t g_nordic_nrf52 ;
54+ extern __WEAK const target_family_descriptor_t g_realtek_rtl8195am ;
55+ extern __WEAK const target_family_descriptor_t g_ti_family ;
56+ extern __WEAK const target_family_descriptor_t g_wiznet_family ;
57+ extern __WEAK const target_family_descriptor_t g_renesas_family ;
58+ extern __WEAK const target_family_descriptor_t g_toshiba_tz_family ;
59+
60+ #define FAMILY_LIST_TERMINATOR ((const target_family_descriptor_t *)(0xffffffff))
7161
7262__attribute__((weak ))
7363const target_family_descriptor_t * g_families [] = {
@@ -86,30 +76,34 @@ const target_family_descriptor_t *g_families[] = {
8676 & g_wiznet_family ,
8777 & g_renesas_family ,
8878 & g_toshiba_tz_family ,
89- 0 // list terminator
90- };
79+ FAMILY_LIST_TERMINATOR // list terminator
80+ };
9181
9282__attribute__((weak ))
9383const target_family_descriptor_t * g_target_family = NULL ;
9484
9585
9686void init_family (void )
9787{
98- uint8_t index = 0 ;
99- uint16_t family_id = get_family_id ();
100- if (g_target_family != NULL ){ //already set
88+ // Check if the family is already set.
89+ if (g_target_family != NULL ) {
10190 return ;
10291 }
103-
104- while (g_families [index ]!= 0 ) {
105- if (g_families [index ]-> family_id && (g_families [index ]-> family_id == family_id )) {
92+
93+ // Scan families table looking for matching family ID.
94+ uint8_t index = 0 ;
95+ uint16_t family_id = get_family_id ();
96+
97+ while (g_families [index ] != FAMILY_LIST_TERMINATOR ) {
98+ if ((g_families [index ] != NULL ) && (g_families [index ]-> family_id == family_id )) {
10699 g_target_family = g_families [index ];
107100 break ;
108101 }
109102 index ++ ;
110103 }
111-
112- if (g_target_family == NULL ){ //default family
104+
105+ // Last resort is to use a default family.
106+ if (g_target_family == NULL ) {
113107 g_target_family = & g_hw_reset_family ;
114108 }
115109}
@@ -138,11 +132,11 @@ uint8_t target_set_state(TARGET_RESET_STATE state)
138132 swd_set_soft_reset (g_target_family -> soft_reset_type );
139133 }
140134 return swd_set_target_state_sw (state );
141- }else {
135+ } else {
142136 return 1 ;
143137 }
144138 }
145- }else {
139+ } else {
146140 return 0 ;
147141 }
148142}
@@ -151,7 +145,7 @@ void swd_set_target_reset(uint8_t asserted)
151145{
152146 if (g_target_family && g_target_family -> swd_set_target_reset ) {
153147 g_target_family -> swd_set_target_reset (asserted );
154- }else {
148+ } else {
155149 (asserted ) ? PIN_nRESET_OUT (0 ) : PIN_nRESET_OUT (1 );
156150 }
157151}
0 commit comments