Skip to content

Commit 074b6f9

Browse files
ozersamathias-arm
authored andcommitted
Add MAX32650FTHR support
Signed-off-by: Sadik.Ozer <[email protected]>
1 parent 186d8e5 commit 074b6f9

File tree

6 files changed

+183
-0
lines changed

6 files changed

+183
-0
lines changed

projects.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,10 @@ projects:
538538
- *module_if
539539
- *module_hic_max32625
540540
- records/board/max32670evkit.yaml
541+
max32625_max32650fthr_if:
542+
- *module_if
543+
- *module_hic_max32625
544+
- records/board/max32650fthr.yaml
541545
nrf52820_microbit_bl:
542546
- *module_bl
543547
- records/hic_hal/nrf52820.yaml

records/board/max32650fthr.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
common:
2+
sources:
3+
board:
4+
- source/board/max32650fthr.c
5+
family:
6+
- source/family/maxim/max32650/target.c
7+
- source/family/maxim/target_reset_max32xxx.c

source/board/max32650fthr.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @file max32650fthr.c
3+
* @brief board ID for the Maxim Integrated's MAX32650FTHR
4+
*
5+
* DAPLink Interface Firmware
6+
* Copyright (c) 2009-2021, ARM Limited, All Rights Reserved
7+
* SPDX-License-Identifier: Apache-2.0
8+
*
9+
* Licensed under the Apache License, Version 2.0 (the "License"); you may
10+
* not use this file except in compliance with the License.
11+
* You may obtain a copy of the License at
12+
*
13+
* http://www.apache.org/licenses/LICENSE-2.0
14+
*
15+
* Unless required by applicable law or agreed to in writing, software
16+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
* See the License for the specific language governing permissions and
19+
* limitations under the License.
20+
*/
21+
22+
#include "target_family.h"
23+
#include "target_board.h"
24+
25+
const board_info_t g_board_info = {
26+
.info_version = kBoardInfoVersion,
27+
.board_id = "0425",
28+
.family_id = kMaxim_MAX3266X_FamilyID,
29+
.flags = kEnablePageErase,
30+
.target_cfg = &target_device,
31+
.daplink_url_name = "MAX32650HTM",
32+
.daplink_target_url = "http://www.maximintegrated.com/max32650FTHR",
33+
};
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/**
2+
* @file flash_blob.c
3+
* @brief Flash algorithm for the MAX32650
4+
*
5+
* DAPLink Interface Firmware
6+
* Copyright (c) 2009-2019, ARM Limited, All Rights Reserved
7+
* SPDX-License-Identifier: Apache-2.0
8+
*
9+
* Licensed under the Apache License, Version 2.0 (the "License"); you may
10+
* not use this file except in compliance with the License.
11+
* You may obtain a copy of the License at
12+
*
13+
* http://www.apache.org/licenses/LICENSE-2.0
14+
*
15+
* Unless required by applicable law or agreed to in writing, software
16+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
* See the License for the specific language governing permissions and
19+
* limitations under the License.
20+
*/
21+
22+
#include "flash_blob.h"
23+
24+
#define CLOCK_DIV 0x000000C0
25+
#define BURST_SIZE 0x00000080
26+
27+
#define FLC0_BASE 0x40029000
28+
#define FLASH0_BASE 0x10000000 //
29+
#define FLASH0_SIZE 0x00300000 // 3MB
30+
31+
#define FLC1_BASE 0 // second flash controller
32+
#define FLASH1_BASE 0 // second block of flash
33+
#define FLASH1_SIZE 0 //
34+
35+
#define FLASH_SIZE MB(3)
36+
#define FLASH_SECTOR KB(16)
37+
38+
#define FLASH_BASE FLASH0_BASE
39+
40+
static const uint32_t maxim_flash_prog_blob[] = {
41+
0xE00ABE00,
42+
0x444949a6, 0x68826808, 0x0f07f012, 0x68cad10b, 0x69486042, 0x6948b148, 0xf0126882, 0xbf040f07,
43+
0x604168c9, 0x2001d001, 0x20004770, 0x499b4770, 0x68084449, 0xf0226882, 0x60824270, 0xb1206948,
44+
0x68816948, 0x4170f021, 0x20006081, 0xb5104770, 0x444c4c92, 0xf0006820, 0xb928f8f4, 0xb1286960,
45+
0xf0006960, 0xb108f8ee, 0xbd102001, 0xbd102000, 0x4449498a, 0xb132698a, 0x4282698a, 0x688ad803,
46+
0x1a806949, 0x6809e000, 0xf012688a, 0xd1270f07, 0xb13a6a4a, 0x624a2200, 0xb11a6a4a, 0x624a2202,
47+
0xb9ea6a4a, 0xf022688a, 0xf0424270, 0x608a5200, 0xf422688a, 0xf442427f, 0x608a42aa, 0x68886008,
48+
0x0004f040, 0x68886088, 0x0f04f010, 0x6888d1fb, 0x4070f020, 0x6a486088, 0x0002f010, 0x4770bf08,
49+
0x47702001, 0x4c6db430, 0x69a3444c, 0x69a3b133, 0xd8034283, 0x1ac068a3, 0xe0006963, 0xf0126823,
50+
0xbf040f03, 0xc008f8d3, 0x0f07f01c, 0xf8d3d17d, 0xf1bcc024, 0xd0110f00, 0x0c00f04f, 0xc024f8c3,
51+
0xc024f8d3, 0x0f00f1bc, 0xf04fd008, 0xf8c30c02, 0xf8d3c024, 0xf1bcc024, 0xd17f0f00, 0xc008f8d3,
52+
0x4c70f02c, 0x5c00f04c, 0xc008f8c3, 0x6018e011, 0xcb04f852, 0xc030f8c3, 0xc008f8d3, 0x0c01f04c,
53+
0xc008f8c3, 0xc008f8d3, 0x0f01f01c, 0x1d00d1fa, 0x29041f09, 0xf010d302, 0xd1e80f1f, 0xc010f8d4,
54+
0x0f80f1bc, 0x2910d121, 0x6018d31f, 0xcb04f852, 0xc030f8c3, 0xcb04f852, 0xc034f8c3, 0xcb04f852,
55+
0xc038f8c3, 0xcb04f852, 0xc03cf8c3, 0xc008f8d3, 0x0c01f04c, 0xc008f8c3, 0xc008f8d3, 0x0f01f01c,
56+
0x3010d1fa, 0x29103910, 0x2904d2df, 0x6018d313, 0xcb04f852, 0xc030f8c3, 0xc008f8d3, 0x0c01f04c,
57+
0xc008f8c3, 0xc008f8d3, 0x0f01f01c, 0x1d00d1fa, 0x29041f09, 0xb1b9d2eb, 0xf04f6812, 0xf04f34ff,
58+
0xea620cff, 0x402c050c, 0xe017e000, 0x2c0cea4f, 0xd1f61e49, 0x631c6018, 0xf0406898, 0x60980001,
59+
0xf0106898, 0xd1fb0f01, 0xf0206898, 0x60984070, 0xf0106a58, 0xbf040002, 0x4770bc30, 0xbc302001,
60+
0x68814770, 0x0f07f011, 0x6a41d126, 0x2100b139, 0x6a416241, 0x2102b119, 0x6a416241, 0x6881b9e1,
61+
0x4170f021, 0x5100f041, 0x68816081, 0x417ff421, 0x412af441, 0x68816081, 0x0102f041, 0x68816081,
62+
0x0f02f011, 0x6881d1fb, 0x4170f021, 0x6a406081, 0x0002f010, 0x4770bf08, 0x47702001, 0x00000004,
63+
0x00000000,
64+
FLC0_BASE, FLASH0_BASE,FLASH0_SIZE,CLOCK_DIV, BURST_SIZE, FLC1_BASE, FLASH1_BASE,FLASH1_SIZE
65+
};
66+
67+
/**
68+
* List of start and size for each size of flash sector - even indexes are start, odd are size
69+
* The size will apply to all sectors between the listed address and the next address
70+
* in the list.
71+
* The last pair in the list will have sectors starting at that address and ending
72+
* at address flash_start + flash_size.
73+
*/
74+
static const sector_info_t sectors_info[] = {
75+
FLASH0_BASE, FLASH_SECTOR,
76+
};
77+
78+
static const program_target_t flash = {
79+
0x20000005, // Init
80+
0x20000033, // UnInit
81+
0x20000053, // EraseChip
82+
0x20000075, // EraseSector
83+
0x200000e9, // ProgramPage
84+
0x0, // Verify
85+
86+
// BKPT : start of blob + 1
87+
// RSB : blob start + header + rw data offset
88+
// RSP : stack pointer
89+
{
90+
0x20000001,
91+
0x200002a4,
92+
0x20000500
93+
},
94+
95+
0x20000000 + 0x00000A00, // mem buffer location
96+
0x20000000, // location to write prog_blob in target RAM
97+
sizeof(maxim_flash_prog_blob), // prog_blob size
98+
maxim_flash_prog_blob, // address of prog_blob
99+
0x00004000 // ram_to_flash_bytes_to_be_written
100+
};

source/family/maxim/max32650/target.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* @file target.c
3+
* @brief Target information for the MAX32650
4+
*
5+
* DAPLink Interface Firmware
6+
* Copyright (c) 2009-2021, ARM Limited, All Rights Reserved
7+
* SPDX-License-Identifier: Apache-2.0
8+
*
9+
* Licensed under the Apache License, Version 2.0 (the "License"); you may
10+
* not use this file except in compliance with the License.
11+
* You may obtain a copy of the License at
12+
*
13+
* http://www.apache.org/licenses/LICENSE-2.0
14+
*
15+
* Unless required by applicable law or agreed to in writing, software
16+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
* See the License for the specific language governing permissions and
19+
* limitations under the License.
20+
*/
21+
22+
#include "target_config.h"
23+
24+
#include "flash_blob.c"
25+
26+
/* ME10 -- MAX32650 3MiB Flash, 1MiB RAM */
27+
target_cfg_t target_device = {
28+
.sectors_info = sectors_info,
29+
.sector_info_length = (sizeof(sectors_info))/(sizeof(sector_info_t)),
30+
.flash_regions[0].start = 0x10000000,
31+
.flash_regions[0].end = 0x10000000 + MB(3),
32+
.flash_regions[0].flags = kRegionIsDefault,
33+
.flash_regions[0].flash_algo = (program_target_t *) &flash,
34+
.ram_regions[0].start = 0x20000000,
35+
.ram_regions[0].end = 0x20000000 + MB(1),
36+
};

test/info.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
('max32625_max32666fthr_if', False, 0x0000, "bin" ),
9898
('max32625_max78000fthr_if', False, 0x0000, "bin" ),
9999
('max32625_max32670evkit_if', False, 0x0000, "bin" ),
100+
('max32625_max32650fthr_if', False, 0x0000, "bin" ),
100101
('kl26z_if', False, 0x0000, "bin" ),
101102
('k20dx_if', False, 0x0000, "bin" ),
102103
('k26f_if', False, 0x0000, "bin" ),
@@ -175,6 +176,7 @@ def VENDOR_TO_FAMILY(x, y) : return (VENDOR_ID[x] <<8) | y
175176
( 0x0422, VENDOR_TO_FAMILY('Stub', 1), 'max32625_max32666fthr_if', 'max32625_bl', 'MAX32666' ),
176177
( 0x0423, VENDOR_TO_FAMILY('Stub', 1), 'max32625_max78000fthr_if', 'max32625_bl', 'MAX78000' ),
177178
( 0x0424, VENDOR_TO_FAMILY('Stub', 1), 'max32625_max32670evkit_if', 'max32625_bl', 'MAX32670' ),
179+
( 0x0425, VENDOR_TO_FAMILY('Stub', 1), 'max32625_max32650fthr_if', 'max32625_bl', 'MAX32650' ),
178180
( 0x0700, VENDOR_TO_FAMILY('Stub', 1), 'stm32f103xb_stm32f103rb_if', 'stm32f103xb_bl', 'ST-Nucleo-F103RB' ),
179181
( 0x0720, VENDOR_TO_FAMILY('Stub', 1), 'stm32f103xb_stm32f401re_if', 'stm32f103xb_bl', 'ST-Nucleo-F401RE' ),
180182
( 0x0720, VENDOR_TO_FAMILY('Stub', 1), 'stm32f103xb_stm32f072rb_if', 'stm32f103xb_bl', 'ST-Nucleo-F072RB' ),
@@ -308,6 +310,7 @@ def VENDOR_TO_FAMILY(x, y) : return (VENDOR_ID[x] <<8) | y
308310
0x0422, # MAX32666FTHR
309311
0x0423, # MAX78000FTHR
310312
0x0424, # MAX32670EVKIT
313+
0x0425, # MAX32650FTHR
311314
0x0460, # WISE-1570
312315
0x1101, # Nordic-nRF52-DK
313316
0x1102, # Nordic-nRF52840-DK

0 commit comments

Comments
 (0)