Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add MAX32690EVKIT #1059

Merged
merged 1 commit into from
Jan 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions projects.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,10 @@ projects:
- *module_if
- *module_hic_max32625
- records/board/max32650fthr.yaml
max32625_max32690evkit_if:
- *module_if
- *module_hic_max32625
- records/board/max32690evkit.yaml
nrf52820_microbit_bl:
- *module_bl
- records/hic_hal/nrf52820.yaml
Expand Down
7 changes: 7 additions & 0 deletions records/board/max32690evkit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
common:
sources:
board:
- source/board/max32690evkit.c
family:
- source/family/maxim/max32690/target.c
- source/family/maxim/target_reset_max32xxx.c
35 changes: 35 additions & 0 deletions source/board/max32690evkit.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* @file max32690evkit.c
* @brief board ID for the Analog Devices Inc.'s MAX32690EVKIT
*
* DAPLink Interface Firmware
* Copyright (c) 2023, Analog Devices, Inc.
* 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.
*/

#include "target_family.h"
#include "target_board.h"

const board_info_t g_board_info = {
.info_version = kBoardInfoVersion,
.board_id = "0426",
.family_id = kMaxim_MAX3266X_FamilyID,
.flags = kEnablePageErase,
.target_cfg = &target_device,
.daplink_url_name = "MAX32690HTM",
.daplink_target_url = "http://www.analog.com/max32690evkit",
.board_vendor = "Maxim",
.board_name = "MAX32690 EvKit",
};
99 changes: 99 additions & 0 deletions source/family/maxim/max32690/flash_blob.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
/**
* @file flash_blob.c
* @brief Flash algorithm for the MAX32690
*
* DAPLink Interface Firmware
* Copyright (c) 2023 Analog Devices, Inc.
* 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.
*/

#include "flash_blob.h"

#define CLOCK_DIV 0x00000078
#define BURST_SIZE 0x00000080

#define FLC0_BASE 0x40029000
#define FLASH0_BASE 0x10000000 //
#define FLASH0_SIZE 0x00300000 // 3MB
#define FLASH0_SECTOR KB(16)

#define FLC1_BASE 0x40029400 // second flash controller
#define FLASH1_BASE 0x10300000 // second block of flash
#define FLASH1_SIZE 0x00040000 // 256KB
#define FLASH1_SECTOR KB(8)


static const uint32_t maxim_flash_prog_blob[] = {
0xE00ABE00,
0x444949a6, 0x68826808, 0x0f07f012, 0x68cad10b, 0x69486042, 0x6948b148, 0xf0126882, 0xbf040f07,
0x604168c9, 0x2001d001, 0x20004770, 0x499b4770, 0x68084449, 0xf0226882, 0x60824270, 0xb1206948,
0x68816948, 0x4170f021, 0x20006081, 0xb5104770, 0x444c4c92, 0xf0006820, 0xb928f8f4, 0xb1286960,
0xf0006960, 0xb108f8ee, 0xbd102001, 0xbd102000, 0x4449498a, 0xb132698a, 0x4282698a, 0x688ad803,
0x1a806949, 0x6809e000, 0xf012688a, 0xd1270f07, 0xb13a6a4a, 0x624a2200, 0xb11a6a4a, 0x624a2202,
0xb9ea6a4a, 0xf022688a, 0xf0424270, 0x608a5200, 0xf422688a, 0xf442427f, 0x608a42aa, 0x68886008,
0x0004f040, 0x68886088, 0x0f04f010, 0x6888d1fb, 0x4070f020, 0x6a486088, 0x0002f010, 0x4770bf08,
0x47702001, 0x4c6db430, 0x69a3444c, 0x69a3b133, 0xd8034283, 0x1ac068a3, 0xe0006963, 0xf0126823,
0xbf040f03, 0xc008f8d3, 0x0f07f01c, 0xf8d3d17d, 0xf1bcc024, 0xd0110f00, 0x0c00f04f, 0xc024f8c3,
0xc024f8d3, 0x0f00f1bc, 0xf04fd008, 0xf8c30c02, 0xf8d3c024, 0xf1bcc024, 0xd17f0f00, 0xc008f8d3,
0x4c70f02c, 0x5c00f04c, 0xc008f8c3, 0x6018e011, 0xcb04f852, 0xc030f8c3, 0xc008f8d3, 0x0c01f04c,
0xc008f8c3, 0xc008f8d3, 0x0f01f01c, 0x1d00d1fa, 0x29041f09, 0xf010d302, 0xd1e80f1f, 0xc010f8d4,
0x0f80f1bc, 0x2910d121, 0x6018d31f, 0xcb04f852, 0xc030f8c3, 0xcb04f852, 0xc034f8c3, 0xcb04f852,
0xc038f8c3, 0xcb04f852, 0xc03cf8c3, 0xc008f8d3, 0x0c01f04c, 0xc008f8c3, 0xc008f8d3, 0x0f01f01c,
0x3010d1fa, 0x29103910, 0x2904d2df, 0x6018d313, 0xcb04f852, 0xc030f8c3, 0xc008f8d3, 0x0c01f04c,
0xc008f8c3, 0xc008f8d3, 0x0f01f01c, 0x1d00d1fa, 0x29041f09, 0xb1b9d2eb, 0xf04f6812, 0xf04f34ff,
0xea620cff, 0x402c050c, 0xe017e000, 0x2c0cea4f, 0xd1f61e49, 0x631c6018, 0xf0406898, 0x60980001,
0xf0106898, 0xd1fb0f01, 0xf0206898, 0x60984070, 0xf0106a58, 0xbf040002, 0x4770bc30, 0xbc302001,
0x68814770, 0x0f07f011, 0x6a41d126, 0x2100b139, 0x6a416241, 0x2102b119, 0x6a416241, 0x6881b9e1,
0x4170f021, 0x5100f041, 0x68816081, 0x417ff421, 0x412af441, 0x68816081, 0x0102f041, 0x68816081,
0x0f02f011, 0x6881d1fb, 0x4170f021, 0x6a406081, 0x0002f010, 0x4770bf08, 0x47702001, 0x00000004,
0x00000000,
FLC0_BASE, FLASH0_BASE,FLASH0_SIZE,CLOCK_DIV, BURST_SIZE, FLC1_BASE, FLASH1_BASE,FLASH1_SIZE
};

/**
* List of start and size for each size of flash sector - even indexes are start, odd are size
* The size will apply to all sectors between the listed address and the next address
* in the list.
* The last pair in the list will have sectors starting at that address and ending
* at address flash_start + flash_size.
*/
static const sector_info_t sectors_info[] = {
{FLASH0_BASE, FLASH0_SECTOR},
{FLASH1_BASE, FLASH1_SECTOR},
};

static const program_target_t flash = {
0x20000005, // Init
0x20000033, // UnInit
0x20000053, // EraseChip
0x20000075, // EraseSector
0x200000e9, // ProgramPage
0x0, // Verify

// BKPT : start of blob + 1
// RSB : blob start + header + rw data offset
// RSP : stack pointer
{
0x20000001,
0x200002a4,
0x20000500
},

0x20000000 + 0x00000A00, // mem buffer location
0x20000000, // location to write prog_blob in target RAM
sizeof(maxim_flash_prog_blob), // prog_blob size
maxim_flash_prog_blob, // address of prog_blob
0x00004000 // ram_to_flash_bytes_to_be_written
};
38 changes: 38 additions & 0 deletions source/family/maxim/max32690/target.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/**
* @file target.c
* @brief Target information for the MAX32690
*
* DAPLink Interface Firmware
* Copyright (c) 2023 Analog Devices, Inc.
* 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.
*/

#include "target_config.h"

#include "flash_blob.c"

/* MAX32690 3MiB+256KB Flash, 1MiB RAM */
target_cfg_t target_device = {
.sectors_info = sectors_info,
.sector_info_length = (sizeof(sectors_info))/(sizeof(sector_info_t)),
.flash_regions[0].start = 0x10000000,
.flash_regions[0].end = 0x10000000 + MB(3) + KB(256),
.flash_regions[0].flags = kRegionIsDefault,
.flash_regions[0].flash_algo = (program_target_t *) &flash,
.ram_regions[0].start = 0x20000000,
.ram_regions[0].end = 0x20000000 + MB(1),
.target_vendor = "Maxim",
.target_part_number = "MAX32690",
};
3 changes: 3 additions & 0 deletions test/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@
('max32625_max78000fthr_if', False, 0x0000, "bin" ),
('max32625_max32670evkit_if', False, 0x0000, "bin" ),
('max32625_max32650fthr_if', False, 0x0000, "bin" ),
('max32625_max32690evkit_if', False, 0x0000, "bin" ),
('kl26z_if', False, 0x0000, "bin" ),
('k20dx_if', False, 0x0000, "bin" ),
('k26f_if', False, 0x0000, "bin" ),
Expand Down Expand Up @@ -182,6 +183,7 @@ def VENDOR_TO_FAMILY(x, y) : return (VENDOR_ID[x] <<8) | y
( 0x0423, VENDOR_TO_FAMILY('Stub', 1), 'max32625_max78000fthr_if', 'max32625_bl', 'MAX78000' ),
( 0x0424, VENDOR_TO_FAMILY('Stub', 1), 'max32625_max32670evkit_if', 'max32625_bl', 'MAX32670' ),
( 0x0425, VENDOR_TO_FAMILY('Stub', 1), 'max32625_max32650fthr_if', 'max32625_bl', 'MAX32650' ),
( 0x0426, VENDOR_TO_FAMILY('Stub', 1), 'max32625_max32690evkit_if', 'max32625_bl', 'MAX32690' ),
( 0x0700, VENDOR_TO_FAMILY('Stub', 1), 'stm32f103xb_stm32f103rb_if', 'stm32f103xb_bl', 'ST-Nucleo-F103RB' ),
( 0x0720, VENDOR_TO_FAMILY('Stub', 1), 'stm32f103xb_stm32f401re_if', 'stm32f103xb_bl', 'ST-Nucleo-F401RE' ),
( 0x0720, VENDOR_TO_FAMILY('Stub', 1), 'stm32f103xb_stm32f072rb_if', 'stm32f103xb_bl', 'ST-Nucleo-F072RB' ),
Expand Down Expand Up @@ -315,6 +317,7 @@ def VENDOR_TO_FAMILY(x, y) : return (VENDOR_ID[x] <<8) | y
0x0423, # MAX78000FTHR
0x0424, # MAX32670EVKIT
0x0425, # MAX32650FTHR
0x0426, # MAX32690EVKIT
0x0460, # WISE-1570
0x1101, # Nordic-nRF52-DK
0x1102, # Nordic-nRF52840-DK
Expand Down
Loading