1 /* 2 * Copyright (c) 2022 ASR Microelectronics (Shanghai) Co., Ltd. All rights reserved. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "flash.h" 17 #include "duet_flash.h" 18 19 /* Logic partition on flash devices */ 20 hal_logic_partition_t hal_partitions[HAL_PARTITION_MAX]; 21 extern const duet_logic_partition_t duet_partitions[]; 22 flash_partition_init(void)23void flash_partition_init(void) 24 { 25 hal_partitions[HAL_PARTITION_BOOTLOADER].partition_owner = 26 duet_partitions[PARTITION_BOOTLOADER].partition_owner; 27 hal_partitions[HAL_PARTITION_BOOTLOADER].partition_description = 28 duet_partitions[PARTITION_BOOTLOADER].partition_description; 29 hal_partitions[HAL_PARTITION_BOOTLOADER].partition_start_addr = 30 duet_partitions[PARTITION_BOOTLOADER].partition_start_addr; 31 hal_partitions[HAL_PARTITION_BOOTLOADER].partition_length = 32 duet_partitions[PARTITION_BOOTLOADER].partition_length; 33 hal_partitions[HAL_PARTITION_BOOTLOADER].partition_options = 34 duet_partitions[PARTITION_BOOTLOADER].partition_options ; 35 36 hal_partitions[HAL_PARTITION_PARAMETER_1].partition_owner = 37 duet_partitions[PARTITION_PARAMETER_1].partition_owner; 38 hal_partitions[HAL_PARTITION_PARAMETER_1].partition_description = 39 duet_partitions[PARTITION_PARAMETER_1].partition_description; 40 hal_partitions[HAL_PARTITION_PARAMETER_1].partition_start_addr = 41 duet_partitions[PARTITION_PARAMETER_1].partition_start_addr; 42 hal_partitions[HAL_PARTITION_PARAMETER_1].partition_length = 43 duet_partitions[PARTITION_PARAMETER_1].partition_length; 44 hal_partitions[HAL_PARTITION_PARAMETER_1].partition_options = 45 duet_partitions[PARTITION_PARAMETER_1].partition_options ; 46 47 hal_partitions[HAL_PARTITION_PARAMETER_2].partition_owner = 48 duet_partitions[PARTITION_PARAMETER_2].partition_owner ; 49 hal_partitions[HAL_PARTITION_PARAMETER_2].partition_description = 50 duet_partitions[PARTITION_PARAMETER_2].partition_description; 51 hal_partitions[HAL_PARTITION_PARAMETER_2].partition_start_addr = 52 duet_partitions[PARTITION_PARAMETER_2].partition_start_addr; 53 hal_partitions[HAL_PARTITION_PARAMETER_2].partition_length = 54 duet_partitions[PARTITION_PARAMETER_2].partition_length; 55 hal_partitions[HAL_PARTITION_PARAMETER_2].partition_options = 56 duet_partitions[PARTITION_PARAMETER_2].partition_options; 57 58 hal_partitions[HAL_PARTITION_PARAMETER_3].partition_owner = 59 duet_partitions[PARTITION_PARAMETER_3].partition_owner ; 60 hal_partitions[HAL_PARTITION_PARAMETER_3].partition_description = 61 duet_partitions[PARTITION_PARAMETER_3].partition_description; 62 hal_partitions[HAL_PARTITION_PARAMETER_3].partition_start_addr = 63 duet_partitions[PARTITION_PARAMETER_3].partition_start_addr; 64 hal_partitions[HAL_PARTITION_PARAMETER_3].partition_length = 65 duet_partitions[PARTITION_PARAMETER_3].partition_length; 66 hal_partitions[HAL_PARTITION_PARAMETER_3].partition_options = 67 duet_partitions[PARTITION_PARAMETER_3].partition_options; 68 69 hal_partitions[HAL_PARTITION_PARAMETER_4].partition_owner = 70 duet_partitions[PARTITION_PARAMETER_4].partition_owner ; 71 hal_partitions[HAL_PARTITION_PARAMETER_4].partition_description = 72 duet_partitions[PARTITION_PARAMETER_4].partition_description; 73 hal_partitions[HAL_PARTITION_PARAMETER_4].partition_start_addr = 74 duet_partitions[PARTITION_PARAMETER_4].partition_start_addr; 75 hal_partitions[HAL_PARTITION_PARAMETER_4].partition_length = 76 duet_partitions[PARTITION_PARAMETER_4].partition_length; 77 hal_partitions[HAL_PARTITION_PARAMETER_4].partition_options = 78 duet_partitions[PARTITION_PARAMETER_4].partition_options; 79 80 hal_partitions[HAL_PARTITION_APPLICATION].partition_owner = 81 duet_partitions[PARTITION_APPLICATION].partition_owner; 82 hal_partitions[HAL_PARTITION_APPLICATION].partition_description = 83 duet_partitions[PARTITION_APPLICATION].partition_description; 84 hal_partitions[HAL_PARTITION_APPLICATION].partition_start_addr = 85 duet_partitions[PARTITION_APPLICATION].partition_start_addr; 86 hal_partitions[HAL_PARTITION_APPLICATION].partition_length = 87 duet_partitions[PARTITION_APPLICATION].partition_length; 88 hal_partitions[HAL_PARTITION_APPLICATION].partition_options = 89 duet_partitions[PARTITION_APPLICATION].partition_options; 90 91 hal_partitions[HAL_PARTITION_OTA_TEMP].partition_owner = 92 duet_partitions[PARTITION_OTA_TEMP].partition_owner; 93 hal_partitions[HAL_PARTITION_OTA_TEMP].partition_description = 94 duet_partitions[PARTITION_OTA_TEMP].partition_description; 95 hal_partitions[HAL_PARTITION_OTA_TEMP].partition_start_addr = 96 duet_partitions[PARTITION_OTA_TEMP].partition_start_addr; 97 hal_partitions[HAL_PARTITION_OTA_TEMP].partition_length = 98 duet_partitions[PARTITION_OTA_TEMP].partition_length; 99 hal_partitions[HAL_PARTITION_OTA_TEMP].partition_options = 100 duet_partitions[PARTITION_OTA_TEMP].partition_options; 101 102 #ifdef MS_CONFIG_OTA_SUPPORT 103 hal_partitions[HAL_PARTITION_OTA_MCU].partition_owner = 104 duet_partitions[PARTITION_OTA_MCU].partition_owner; 105 hal_partitions[HAL_PARTITION_OTA_MCU].partition_description = 106 duet_partitions[PARTITION_OTA_MCU].partition_description; 107 hal_partitions[HAL_PARTITION_OTA_MCU].partition_start_addr = 108 duet_partitions[PARTITION_OTA_MCU].partition_start_addr; 109 hal_partitions[HAL_PARTITION_OTA_MCU].partition_length = 110 duet_partitions[PARTITION_OTA_MCU].partition_length; 111 hal_partitions[HAL_PARTITION_OTA_MCU].partition_options = 112 duet_partitions[PARTITION_OTA_MCU].partition_options ; 113 114 hal_partitions[HAL_PARTITION_OTA_PARA].partition_owner = 115 duet_partitions[PARTITION_OTA_PARA].partition_owner; 116 hal_partitions[HAL_PARTITION_OTA_PARA].partition_description = 117 duet_partitions[PARTITION_OTA_PARA].partition_description; 118 hal_partitions[HAL_PARTITION_OTA_PARA].partition_start_addr = 119 duet_partitions[PARTITION_OTA_PARA].partition_start_addr; 120 hal_partitions[HAL_PARTITION_OTA_PARA].partition_length = 121 duet_partitions[PARTITION_OTA_PARA].partition_length; 122 hal_partitions[HAL_PARTITION_OTA_PARA].partition_options = 123 duet_partitions[PARTITION_OTA_PARA].partition_options ; 124 125 hal_partitions[HAL_PARTITION_OTA_HEAD_PARA].partition_owner = 126 duet_partitions[PARTITION_OTA_HEAD_PARA].partition_owner; 127 hal_partitions[HAL_PARTITION_OTA_HEAD_PARA].partition_description = 128 duet_partitions[PARTITION_OTA_HEAD_PARA].partition_description; 129 hal_partitions[HAL_PARTITION_OTA_HEAD_PARA].partition_start_addr = 130 duet_partitions[PARTITION_OTA_HEAD_PARA].partition_start_addr; 131 hal_partitions[HAL_PARTITION_OTA_HEAD_PARA].partition_length = 132 duet_partitions[PARTITION_OTA_HEAD_PARA].partition_length; 133 hal_partitions[HAL_PARTITION_OTA_HEAD_PARA].partition_options = 134 duet_partitions[PARTITION_OTA_HEAD_PARA].partition_options ; 135 #endif 136 } 137 138