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 stm32f411
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 
00024 static const uint32_t output_flash_prog_blob[] = {
00025     0xE00ABE00, 0x062D780D, 0x24084068, 0xD3000040, 0x1E644058, 0x1C49D1FA, 0x2A001E52, 0x4770D1F2,
00026     0x03004601, 0x28200e00, 0x0940d302, 0xe0051d00, 0xd3022810, 0x1cc00900, 0x0880e000, 0xd50102c9,
00027     0x43082110, 0x48424770, 0x60414940, 0x60414941, 0x60012100, 0x22f068c1, 0x60c14311, 0x06806940,
00028     0x483ed406, 0x6001493c, 0x60412106, 0x6081493c, 0x47702000, 0x69014836, 0x43110542, 0x20006101,
00029     0xb5104770, 0x69014832, 0x43212404, 0x69016101, 0x431103a2, 0x49336101, 0xe0004a30, 0x68c36011,
00030     0xd4fb03db, 0x43a16901, 0x20006101, 0xb530bd10, 0xffb6f7ff, 0x68ca4926, 0x431a23f0, 0x240260ca,
00031     0x690a610c, 0x0e0006c0, 0x610a4302, 0x03e26908, 0x61084310, 0x4a214823, 0x6010e000, 0x03ed68cd,
00032     0x6908d4fb, 0x610843a0, 0x060068c8, 0xd0030f00, 0x431868c8, 0x200160c8, 0xb570bd30, 0x1cc94d14,
00033     0x68eb0889, 0x26f00089, 0x60eb4333, 0x612b2300, 0xe0174b15, 0x431c692c, 0x6814612c, 0x68ec6004,
00034     0xd4fc03e4, 0x0864692c, 0x612c0064, 0x062468ec, 0xd0040f24, 0x433068e8, 0x200160e8, 0x1d00bd70,
00035     0x1f091d12, 0xd1e52900, 0xbd702000, 0x45670123, 0x40023c00, 0xcdef89ab, 0x00005555, 0x40003000,
00036     0x00000fff, 0x0000aaaa, 0x00000201, 0x00000000,
00037 };
00038 
00039 /**
00040 * List of start and size for each size of flash sector
00041 * The size will apply to all sectors between the listed address and the next address
00042 * in the list.
00043 * The last pair in the list will have sectors starting at that address and ending
00044 * at address start + size.
00045 */
00046 static const sector_info_t sectors_info[] = {
00047     {0x08000000, KB(16)},
00048 };
00049 
00050 static const program_target_t flash = {
00051     0x20000047, // Init
00052     0x20000075, // UnInit
00053     0x20000083, // EraseChip
00054     0x200000AF, // EraseSector
00055     0x200000FB, // ProgramPage
00056     0x0,        // Verify
00057     
00058     // BKPT : start of blob + 1
00059     // RSB  : blob start + header + rw data offset
00060     // RSP  : stack pointer
00061     {
00062         0x20000000 + 0x00000001,
00063         0x20000000 + 0x00000020 + 0x0000014c,
00064         0x20000800
00065     },
00066 
00067     0x20000000 + 0x00000A00,   // mem buffer location
00068     0x20000000,                // location to write prog_blob in target RAM
00069     sizeof(output_flash_prog_blob), // prog_blob size
00070     output_flash_prog_blob,         // address of prog_blob
00071     0x00000200                 // ram_to_flash_bytes_to_be_written
00072 };