Arrow / Mbed OS DAPLink Reset
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers flash_blob.c Source File

flash_blob.c

00001 /**
00002  * @file    flash_blob.c
00003  * @brief   Flash algorithm for the W7500
00004  *
00005  * DAPLink Interface Firmware
00006  * Copyright (c) 2009-2019, ARM Limited, All Rights Reserved
00007  * SPDX-License-Identifier: Apache-2.0
00008  *
00009  * Licensed under the Apache License, Version 2.0 (the "License"); you may
00010  * not use this file except in compliance with the License.
00011  * You may obtain a copy of the License at
00012  *
00013  * http://www.apache.org/licenses/LICENSE-2.0
00014  *
00015  * Unless required by applicable law or agreed to in writing, software
00016  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
00017  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00018  * See the License for the specific language governing permissions and
00019  * limitations under the License.
00020  */
00021 
00022 #include "flash_blob.h"
00023 static const uint32_t w7500_flash_prog_blob[] = {
00024     0xE00ABE00, 0x062D780D, 0x24084068, 0xD3000040, 0x1E644058, 0x1C49D1FA, 0x2A001E52, 0x4770D1F2,
00025     0x4d27b430, 0x606c2400, 0x1e644d26, 0x4c26602c, 0x086d6925, 0x6125006d, 0x46a44c24, 0x4760bc30, 
00026     0x47702000, 0x47702000, 0x2014b570, 0x21004c1c, 0x4d1c6061, 0x602c1e4c, 0x69224c1b, 0x006d0855, 
00027     0x460b6125, 0x461a4c19, 0x200047a0, 0xb570bd70, 0x49132512, 0x604a2200, 0x17494b12, 0x4c126019, 
00028     0x08496921, 0x61210049, 0x4c104601, 0x46284613, 0x200047a0, 0xb570bd70, 0x4b092422, 0x605d2500, 
00029     0x175b4d08, 0x4d08602b, 0x085e692b, 0x612e0076, 0x4601460b, 0x4c054620, 0x200047a0, 0x0000bd70, 
00030     0xe000ed00, 0xe000e180, 0xe000e000, 0x1fff1001, 0x00000000, 
00031 };
00032 
00033 /**
00034 * List of start and size for each size of flash sector
00035 * The size will apply to all sectors between the listed address and the next address
00036 * in the list.
00037 * The last pair in the list will have sectors starting at that address and ending
00038 * at address start + size.
00039 */
00040 static const sector_info_t sectors_info[] = {
00041     {0, 256},
00042 };
00043 
00044 static const program_target_t flash = {
00045     0x20000041, // Init
00046     0x20000045, // UnInit
00047     0x20000049, // EraseChip
00048     0x2000006F, // EraseSector
00049     0x20000097, // ProgramPage
00050     0x0,        // Verify
00051     
00052     // BKPT : start of blob + 1
00053     // RSB  : blob start + header + rw data offset
00054     // RSP  : stack pointer
00055     {
00056         0x20000000 + 0x00000001,
00057         0x20000000 + 0x00000020 + 0x000000b0,
00058         0x20000800
00059     },
00060 
00061     0x20000000 + 0x00000A00,   // mem buffer location
00062     0x20000000,                // location to write prog_blob in target RAM
00063     sizeof(w7500_flash_prog_blob), // prog_blob size
00064     w7500_flash_prog_blob,         // address of prog_blob
00065 
00066     // Do not modify. program_buffer_size of W7500 must be set to 0x00000100
00067     0x00000100                 // ram_to_flash_bytes_to_be_written
00068 };