Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
天中雨水
rt-thread
提交
f582b621
R
rt-thread
项目概览
天中雨水
/
rt-thread
该项目与 Fork 源项目分叉
Fork自
RT-Thread / rt-thread
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
f582b621
编写于
5月 11, 2018
作者:
T
Tanek
提交者:
GitHub
5月 11, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1423 from qgyhd1234/scf
[修改]:修改HyperFlash启动文件
上级
1cc3c588
060ba3e9
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
675 addition
and
68 deletion
+675
-68
bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf
...xrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf
+20
-0
bsp/imxrt1052-evk/drivers/SConscript
bsp/imxrt1052-evk/drivers/SConscript
+1
-2
bsp/imxrt1052-evk/drivers/hyper_flash_boot.c
bsp/imxrt1052-evk/drivers/hyper_flash_boot.c
+0
-66
bsp/imxrt1052-evk/xip/SConscript
bsp/imxrt1052-evk/xip/SConscript
+22
-0
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_boot.c
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_boot.c
+139
-0
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_boot.h
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_boot.h
+118
-0
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_flash.c
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_flash.c
+76
-0
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_flash.h
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_flash.h
+299
-0
未找到文件。
bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf
浏览文件 @
f582b621
...
@@ -45,6 +45,12 @@
...
@@ -45,6 +45,12 @@
** ###################################################################
** ###################################################################
*/
*/
#define m_flash_config_start 0x60000000
#define m_flash_config_size 0x00001000
#define m_ivt_start 0x60001000
#define m_ivt_size 0x00001000
#define m_text_start 0x60002000
#define m_text_start 0x60002000
#define m_text_size 0x1F7FE000
#define m_text_size 0x1F7FE000
...
@@ -67,6 +73,20 @@
...
@@ -67,6 +73,20 @@
#define Heap_Size 0x0400
#define Heap_Size 0x0400
#endif
#endif
LR_m_rom_config m_flash_config_start m_flash_config_size { ; load region size_region
RW_m_config_text m_flash_config_start m_flash_config_size { ; load address = execution address
* (.boot_hdr.conf, +FIRST)
}
}
LR_m_rom_ivt m_ivt_start m_ivt_size { ; load region size_region
RW_m_ivt_text m_ivt_start m_ivt_size { ; load address = execution address
* (.boot_hdr.ivt, +FIRST)
* (.boot_hdr.boot_data)
* (.boot_hdr.dcd_data)
}
}
#define RTT_HEAP_SIZE \
#define RTT_HEAP_SIZE \
(m_data_size - ImageLength(RW_m_data) - ImageLength(ARM_LIB_HEAP) - ImageLength(ARM_LIB_STACK))
(m_data_size - ImageLength(RW_m_data) - ImageLength(ARM_LIB_HEAP) - ImageLength(ARM_LIB_STACK))
...
...
bsp/imxrt1052-evk/drivers/SConscript
浏览文件 @
f582b621
...
@@ -56,7 +56,6 @@ if GetDepend('RT_USING_USB_DEVICE'):
...
@@ -56,7 +56,6 @@ if GetDepend('RT_USING_USB_DEVICE'):
CPPDEFINES
+=
[
'ENDIANNESS'
]
CPPDEFINES
+=
[
'ENDIANNESS'
]
if
GetDepend
(
'BOARD_RT1050_EVK'
)
or
GetDepend
(
'BOARD_RT1050_SeeedStudio'
):
if
GetDepend
(
'BOARD_RT1050_EVK'
)
or
GetDepend
(
'BOARD_RT1050_SeeedStudio'
):
src
+=
[
'hyper_flash_boot.c'
]
if
GetDepend
(
'RT_USING_LWIP'
):
if
GetDepend
(
'RT_USING_LWIP'
):
src
+=
[
'drv_eth.c'
,
'fsl_phy.c'
]
src
+=
[
'drv_eth.c'
,
'fsl_phy.c'
]
...
...
bsp/imxrt1052-evk/drivers/hyper_flash_boot.c
已删除
100644 → 0
浏览文件 @
1cc3c588
/*
* File : clock.c
* This file is part of RT-Thread RTOS
* COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Change Logs:
* Date Author Notes
* 2017-12-05 Tanek first version
*/
#include <rtthread.h>
// enter serial download mode, and run command:
// finsh /> mem_dump(0x60000000, 512)
#if defined (__ICCARM__ )
RT_USED
static
const
uint32_t
boot_data
[]
@
(
0x60000000u
)
=
#elif defined ( __GNUC__ )
RT_USED
static
const
uint32_t
boot_data
[]
__attribute__
((
section
(
".bootdata"
)))
=
#elif defined ( __CC_ARM )
RT_USED
static
const
uint32_t
boot_data
[]
__attribute__
((
at
(
0x60000000u
)))
=
#endif
{
0x42464346
,
0x56010400
,
0x00000000
,
0x03030303
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000059
,
0x01080800
,
0x00000000
,
0x00000000
,
0x04000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x0000000F
,
0x0001000F
,
0x8B1887A0
,
0xA7048F10
,
0x00000000
,
0x00000000
,
0x87008700
,
0x87AA8700
,
0x87058700
,
0x87708700
,
0x8B1887A0
,
0xB70B8F10
,
0x0000A704
,
0x00000000
,
0x87008700
,
0x87AA8700
,
0x87058700
,
0x87AA8700
,
0x87008700
,
0x87558700
,
0x87028700
,
0x87558700
,
0x87008700
,
0x87AA8700
,
0x87058700
,
0x87808700
,
0x87008700
,
0x87AA8700
,
0x87058700
,
0x87AA8700
,
0x87008700
,
0x87558700
,
0x87028700
,
0x87558700
,
0x8B188700
,
0x87008F10
,
0x00008730
,
0x00000000
,
0x87008700
,
0x87AA8700
,
0x87058700
,
0x87A08700
,
0x8B188700
,
0xA3808F10
,
0x00000000
,
0x00000000
,
0x87008700
,
0x87AA8700
,
0x87058700
,
0x87808700
,
0x87008700
,
0x87AA8700
,
0x87058700
,
0x87AA8700
,
0x87008700
,
0x87558700
,
0x87028700
,
0x87558700
,
0x87008700
,
0x87AA8700
,
0x87058700
,
0x87108700
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000102
,
0x00000302
,
0x00000504
,
0x00000902
,
0x00000B04
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000200
,
0x00040000
,
0x00000008
,
0x00000001
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
};
// finsh /> mem_dump(0x60001000, 16)
#if defined (__ICCARM__ )
RT_USED
static
const
uint32_t
image_vector_table
[]
@
(
0x60001000u
)
=
#elif defined ( __GNUC__ )
RT_USED
static
const
uint32_t
image_vector_table
[]
__attribute__
((
section
(
".ivt"
)))
=
#elif defined ( __CC_ARM )
RT_USED
static
const
uint32_t
image_vector_table
[]
__attribute__
((
at
(
0x60001000u
)))
=
#endif
{
0x412000D1
,
0x60002000
,
0x00000000
,
0x00000000
,
0x60001020
,
0x60001000
,
0x00000000
,
0x00000000
,
0x60000000
,
0x00800000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
};
bsp/imxrt1052-evk/xip/SConscript
0 → 100644
浏览文件 @
f582b621
Import
(
'RTT_ROOT'
)
Import
(
'rtconfig'
)
from
building
import
*
if
GetDepend
(
'BOARD_RT1050_EVK'
)
or
GetDepend
(
'BOARD_RT1050_SeeedStudio'
):
cwd
=
GetCurrentDir
()
src
=
Glob
(
'*.c'
)
CPPPATH
=
[
cwd
]
if
rtconfig
.
CROSS_TOOL
==
'keil'
:
LINKFLAGS
=
'--keep=*(.boot_hdr.ivt)'
LINKFLAGS
+=
'--keep=*(.boot_hdr.boot_data)'
LINKFLAGS
+=
'--keep=*(.boot_hdr.dcd_data)'
LINKFLAGS
+=
'--keep=*(.boot_hdr.conf)'
else
:
LINKFLAGS
=
''
group
=
DefineGroup
(
'xip'
,
src
,
depend
=
[
''
],
CPPPATH
=
CPPPATH
,
LINKFLAGS
=
LINKFLAGS
)
Return
(
'group'
)
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_boot.c
0 → 100644
浏览文件 @
f582b621
/*
* The Clear BSD License
* Copyright 2017 NXP
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted (subject to the limitations in the disclaimer below) provided
* that the following conditions are met:
*
* o Redistributions of source code must retain the above copyright notice, this list
* of conditions and the following disclaimer.
*
* o Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* o Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "fsl_flexspi_nor_boot.h"
#if defined(__CC_ARM) || defined(__GNUC__)
__attribute__
((
section
(
".boot_hdr.ivt"
)))
#elif defined(__ICCARM__)
#pragma location=".boot_hdr.ivt"
#endif
const
ivt
image_vector_table
=
{
IVT_HEADER
,
/* IVT Header */
0x60002000
,
/* Image Entry Function */
IVT_RSVD
,
/* Reserved = 0 */
(
uint32_t
)
DCD_ADDRESS
,
/* Address where DCD information is stored */
(
uint32_t
)
BOOT_DATA_ADDRESS
,
/* Address where BOOT Data Structure is stored */
(
uint32_t
)
&
image_vector_table
,
/* Pointer to IVT Self (absolute address */
(
uint32_t
)
CSF_ADDRESS
,
/* Address where CSF file is stored */
IVT_RSVD
/* Reserved = 0 */
};
#if defined(__CC_ARM) || defined(__GNUC__)
__attribute__
((
section
(
".boot_hdr.boot_data"
)))
#elif defined(__ICCARM__)
#pragma location=".boot_hdr.boot_data"
#endif
const
BOOT_DATA_T
boot_data
=
{
FLASH_BASE
,
/* boot start location */
(
FLASH_END
-
FLASH_BASE
),
/* size */
PLUGIN_FLAG
,
/* Plugin flag*/
0xFFFFFFFF
/* empty - extra data word */
};
#if defined(__CC_ARM) || defined(__GNUC__)
__attribute__
((
section
(
".boot_hdr.dcd_data"
)))
#elif defined(__ICCARM__)
#pragma location=".boot_hdr.dcd_data"
#endif
const
uint8_t
dcd_sdram
[
1072
]
=
{
/*0000*/
0xD2
,
0x04
,
0x30
,
0x41
,
0xCC
,
0x03
,
0xAC
,
0x04
,
0x40
,
0x0F
,
0xC0
,
0x68
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
/*0010*/
0x40
,
0x0F
,
0xC0
,
0x6C
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0x40
,
0x0F
,
0xC0
,
0x70
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
/*0020*/
0x40
,
0x0F
,
0xC0
,
0x74
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0x40
,
0x0F
,
0xC0
,
0x78
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
/*0030*/
0x40
,
0x0F
,
0xC0
,
0x7C
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
0x40
,
0x0F
,
0xC0
,
0x80
,
0xFF
,
0xFF
,
0xFF
,
0xFF
,
/*0040*/
0x40
,
0x0D
,
0x80
,
0x30
,
0x00
,
0x00
,
0x20
,
0x01
,
0x40
,
0x0D
,
0x81
,
0x00
,
0x00
,
0x1D
,
0x00
,
0x00
,
/*0050*/
0x40
,
0x0F
,
0xC0
,
0x14
,
0x00
,
0x01
,
0x0D
,
0x40
,
0x40
,
0x1F
,
0x80
,
0x14
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0060*/
0x40
,
0x1F
,
0x80
,
0x18
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x1C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0070*/
0x40
,
0x1F
,
0x80
,
0x20
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x24
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0080*/
0x40
,
0x1F
,
0x80
,
0x28
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x2C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0090*/
0x40
,
0x1F
,
0x80
,
0x30
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x34
,
0x00
,
0x00
,
0x00
,
0x00
,
/*00a0*/
0x40
,
0x1F
,
0x80
,
0x38
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*00b0*/
0x40
,
0x1F
,
0x80
,
0x40
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x44
,
0x00
,
0x00
,
0x00
,
0x00
,
/*00c0*/
0x40
,
0x1F
,
0x80
,
0x48
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x4C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*00d0*/
0x40
,
0x1F
,
0x80
,
0x50
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x54
,
0x00
,
0x00
,
0x00
,
0x00
,
/*00e0*/
0x40
,
0x1F
,
0x80
,
0x58
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x5C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*00f0*/
0x40
,
0x1F
,
0x80
,
0x60
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x64
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0100*/
0x40
,
0x1F
,
0x80
,
0x68
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x6C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0110*/
0x40
,
0x1F
,
0x80
,
0x70
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x74
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0120*/
0x40
,
0x1F
,
0x80
,
0x78
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x7C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0130*/
0x40
,
0x1F
,
0x80
,
0x80
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x84
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0140*/
0x40
,
0x1F
,
0x80
,
0x88
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x8C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0150*/
0x40
,
0x1F
,
0x80
,
0x90
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x94
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0160*/
0x40
,
0x1F
,
0x80
,
0x98
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0x9C
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0170*/
0x40
,
0x1F
,
0x80
,
0xA0
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0xA4
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0180*/
0x40
,
0x1F
,
0x80
,
0xA8
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x80
,
0xAC
,
0x00
,
0x00
,
0x00
,
0x00
,
/*0190*/
0x40
,
0x1F
,
0x80
,
0xB0
,
0x00
,
0x00
,
0x00
,
0x10
,
0x40
,
0x1F
,
0x80
,
0xB4
,
0x00
,
0x00
,
0x00
,
0x00
,
/*01a0*/
0x40
,
0x1F
,
0x80
,
0xB8
,
0x00
,
0x00
,
0x00
,
0x00
,
0x40
,
0x1F
,
0x82
,
0x04
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*01b0*/
0x40
,
0x1F
,
0x82
,
0x08
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x0C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*01c0*/
0x40
,
0x1F
,
0x82
,
0x10
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x14
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*01d0*/
0x40
,
0x1F
,
0x82
,
0x18
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x1C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*01e0*/
0x40
,
0x1F
,
0x82
,
0x20
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x24
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*01f0*/
0x40
,
0x1F
,
0x82
,
0x28
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x2C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0200*/
0x40
,
0x1F
,
0x82
,
0x30
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x34
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0210*/
0x40
,
0x1F
,
0x82
,
0x38
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x3C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0220*/
0x40
,
0x1F
,
0x82
,
0x40
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x44
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0230*/
0x40
,
0x1F
,
0x82
,
0x48
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x4C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0240*/
0x40
,
0x1F
,
0x82
,
0x50
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x54
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0250*/
0x40
,
0x1F
,
0x82
,
0x58
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x5C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0260*/
0x40
,
0x1F
,
0x82
,
0x60
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x64
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0270*/
0x40
,
0x1F
,
0x82
,
0x68
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x6C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0280*/
0x40
,
0x1F
,
0x82
,
0x70
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x74
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*0290*/
0x40
,
0x1F
,
0x82
,
0x78
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x7C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*02a0*/
0x40
,
0x1F
,
0x82
,
0x80
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x84
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*02b0*/
0x40
,
0x1F
,
0x82
,
0x88
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x8C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*02c0*/
0x40
,
0x1F
,
0x82
,
0x90
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x94
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*02d0*/
0x40
,
0x1F
,
0x82
,
0x98
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0x9C
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*02e0*/
0x40
,
0x1F
,
0x82
,
0xA0
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x1F
,
0x82
,
0xA4
,
0x00
,
0x01
,
0x10
,
0xF9
,
/*02f0*/
0x40
,
0x1F
,
0x82
,
0xA8
,
0x00
,
0x01
,
0x10
,
0xF9
,
0x40
,
0x2F
,
0x00
,
0x00
,
0x10
,
0x00
,
0x00
,
0x04
,
/*0300*/
0x40
,
0x2F
,
0x00
,
0x08
,
0x00
,
0x03
,
0x05
,
0x24
,
0x40
,
0x2F
,
0x00
,
0x0C
,
0x06
,
0x03
,
0x05
,
0x24
,
/*0310*/
0x40
,
0x2F
,
0x00
,
0x10
,
0x80
,
0x00
,
0x00
,
0x1B
,
0x40
,
0x2F
,
0x00
,
0x14
,
0x82
,
0x00
,
0x00
,
0x1B
,
/*0320*/
0x40
,
0x2F
,
0x00
,
0x18
,
0x84
,
0x00
,
0x00
,
0x1B
,
0x40
,
0x2F
,
0x00
,
0x1C
,
0x86
,
0x00
,
0x00
,
0x1B
,
/*0330*/
0x40
,
0x2F
,
0x00
,
0x20
,
0x90
,
0x00
,
0x00
,
0x21
,
0x40
,
0x2F
,
0x00
,
0x24
,
0xA0
,
0x00
,
0x00
,
0x19
,
/*0340*/
0x40
,
0x2F
,
0x00
,
0x28
,
0xA8
,
0x00
,
0x00
,
0x17
,
0x40
,
0x2F
,
0x00
,
0x2C
,
0xA9
,
0x00
,
0x00
,
0x1B
,
/*0350*/
0x40
,
0x2F
,
0x00
,
0x30
,
0x00
,
0x00
,
0x00
,
0x21
,
0x40
,
0x2F
,
0x00
,
0x04
,
0x00
,
0x00
,
0x79
,
0xA8
,
/*0360*/
0x40
,
0x2F
,
0x00
,
0x40
,
0x00
,
0x00
,
0x0F
,
0x31
,
0x40
,
0x2F
,
0x00
,
0x44
,
0x00
,
0x65
,
0x29
,
0x22
,
/*0370*/
0x40
,
0x2F
,
0x00
,
0x48
,
0x00
,
0x01
,
0x09
,
0x20
,
0x40
,
0x2F
,
0x00
,
0x4C
,
0x50
,
0x21
,
0x0A
,
0x08
,
/*0380*/
0x40
,
0x2F
,
0x00
,
0x80
,
0x00
,
0x00
,
0x00
,
0x21
,
0x40
,
0x2F
,
0x00
,
0x84
,
0x00
,
0x88
,
0x88
,
0x88
,
/*0390*/
0x40
,
0x2F
,
0x00
,
0x94
,
0x00
,
0x00
,
0x00
,
0x02
,
0x40
,
0x2F
,
0x00
,
0x98
,
0x00
,
0x00
,
0x00
,
0x00
,
/*03a0*/
0x40
,
0x2F
,
0x00
,
0x90
,
0x80
,
0x00
,
0x00
,
0x00
,
0x40
,
0x2F
,
0x00
,
0x9C
,
0xA5
,
0x5A
,
0x00
,
0x0F
,
/*03b0*/
0xCF
,
0x00
,
0x0C
,
0x1C
,
0x40
,
0x2F
,
0x00
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x01
,
0xCC
,
0x00
,
0x14
,
0x04
,
/*03c0*/
0x40
,
0x2F
,
0x00
,
0x90
,
0x80
,
0x00
,
0x00
,
0x00
,
0x40
,
0x2F
,
0x00
,
0x9C
,
0xA5
,
0x5A
,
0x00
,
0x0C
,
/*03d0*/
0xCF
,
0x00
,
0x0C
,
0x1C
,
0x40
,
0x2F
,
0x00
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x01
,
0xCC
,
0x00
,
0x14
,
0x04
,
/*03e0*/
0x40
,
0x2F
,
0x00
,
0x90
,
0x80
,
0x00
,
0x00
,
0x00
,
0x40
,
0x2F
,
0x00
,
0x9C
,
0xA5
,
0x5A
,
0x00
,
0x0C
,
/*03f0*/
0xCF
,
0x00
,
0x0C
,
0x1C
,
0x40
,
0x2F
,
0x00
,
0x3C
,
0x00
,
0x00
,
0x00
,
0x01
,
0xCC
,
0x00
,
0x1C
,
0x04
,
/*0400*/
0x40
,
0x2F
,
0x00
,
0xA0
,
0x00
,
0x00
,
0x00
,
0x33
,
0x40
,
0x2F
,
0x00
,
0x90
,
0x80
,
0x00
,
0x00
,
0x00
,
/*0410*/
0x40
,
0x2F
,
0x00
,
0x9C
,
0xA5
,
0x5A
,
0x00
,
0x0A
,
0xCF
,
0x00
,
0x0C
,
0x1C
,
0x40
,
0x2F
,
0x00
,
0x3C
,
/*0420*/
0x00
,
0x00
,
0x00
,
0x01
,
0xCC
,
0x00
,
0x0C
,
0x04
,
0x40
,
0x2F
,
0x00
,
0x4C
,
0x50
,
0x21
,
0x0A
,
0x09
,
};
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_boot.h
0 → 100644
浏览文件 @
f582b621
/*
* The Clear BSD License
* Copyright 2017 NXP
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted (subject to the limitations in the disclaimer below) provided
* that the following conditions are met:
*
* o Redistributions of source code must retain the above copyright notice, this list
* of conditions and the following disclaimer.
*
* o Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* o Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _QUADSPI_BOOT_H_
#define _QUADSPI_BOOT_H_
#include <stdint.h>
/*************************************
* IVT Data
*************************************/
typedef
struct
_ivt_
{
/** @ref hdr with tag #HAB_TAG_IVT, length and HAB version fields
* (see @ref data)
*/
uint32_t
hdr
;
/** Absolute address of the first instruction to execute from the
* image
*/
uint32_t
entry
;
/** Reserved in this version of HAB: should be NULL. */
uint32_t
reserved1
;
/** Absolute address of the image DCD: may be NULL. */
uint32_t
dcd
;
/** Absolute address of the Boot Data: may be NULL, but not interpreted
* any further by HAB
*/
uint32_t
boot_data
;
/** Absolute address of the IVT.*/
uint32_t
self
;
/** Absolute address of the image CSF.*/
uint32_t
csf
;
/** Reserved in this version of HAB: should be zero. */
uint32_t
reserved2
;
}
ivt
;
#define IVT_MAJOR_VERSION 0x4
#define IVT_MAJOR_VERSION_SHIFT 0x4
#define IVT_MAJOR_VERSION_MASK 0xF
#define IVT_MINOR_VERSION 0x1
#define IVT_MINOR_VERSION_SHIFT 0x0
#define IVT_MINOR_VERSION_MASK 0xF
#define IVT_VERSION(major, minor) \
((((major) & IVT_MAJOR_VERSION_MASK) << IVT_MAJOR_VERSION_SHIFT) | \
(((minor) & IVT_MINOR_VERSION_MASK) << IVT_MINOR_VERSION_SHIFT))
#define IVT_TAG_HEADER (0xD1)
/**< Image Vector Table */
#define IVT_SIZE 0x2000
#define IVT_PAR IVT_VERSION(IVT_MAJOR_VERSION, IVT_MINOR_VERSION)
#define IVT_HEADER (IVT_TAG_HEADER | (IVT_SIZE << 8) | (IVT_PAR << 24))
#define IVT_RSVD (uint32_t)(0x00000000)
/*************************************
* Boot Data
*************************************/
typedef
struct
_boot_data_
{
uint32_t
start
;
/* boot start location */
uint32_t
size
;
/* size */
uint32_t
plugin
;
/* plugin flag - 1 if downloaded application is plugin */
uint32_t
placeholder
;
/* placehoder to make even 0x10 size */
}
BOOT_DATA_T
;
/*************************************
* DCD Data
*************************************/
#define DCD_TAG_HEADER (0xD2)
#define DCD_TAG_HEADER_SHIFT (24)
#define DCD_VERSION (0x40)
#define DCD_ARRAY_SIZE 1
#define FLASH_BASE 0x60000000
#define FLASH_END 0x7F7FFFFF
#define SCLK 1
#define DCD_ADDRESS dcd_sdram
#define BOOT_DATA_ADDRESS &boot_data
#define CSF_ADDRESS 0
#define PLUGIN_FLAG (uint32_t)0
/* External Variables */
extern
const
uint8_t
dcd_sdram
[
1072
];
extern
const
BOOT_DATA_T
boot_data
;
#endif
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_flash.c
0 → 100644
浏览文件 @
f582b621
/*
* The Clear BSD License
* Copyright 2017 NXP
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted (subject to the limitations in the disclaimer below) provided
* that the following conditions are met:
*
* o Redistributions of source code must retain the above copyright notice, this list
* of conditions and the following disclaimer.
*
* o Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* o Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "fsl_flexspi_nor_flash.h"
/*******************************************************************************
* Code
******************************************************************************/
#if defined(__CC_ARM) || defined(__GNUC__)
__attribute__
((
section
(
".boot_hdr.conf"
)))
#elif defined(__ICCARM__)
#pragma location=".boot_hdr.conf"
#endif
const
flexspi_nor_config_t
hyperflash_config
=
{
.
memConfig
=
{
.
tag
=
FLEXSPI_CFG_BLK_TAG
,
.
version
=
FLEXSPI_CFG_BLK_VERSION
,
.
readSampleClkSrc
=
kFlexSPIReadSampleClk_ExternalInputFromDqsPad
,
.
csHoldTime
=
3u
,
.
csSetupTime
=
3u
,
.
columnAddressWidth
=
3u
,
// Enable DDR mode, Wordaddassable, Safe configuration, Differential clock
.
controllerMiscOption
=
(
1u
<<
kFlexSpiMiscOffset_DdrModeEnable
)
|
(
1u
<<
kFlexSpiMiscOffset_WordAddressableEnable
)
|
(
1u
<<
kFlexSpiMiscOffset_SafeConfigFreqEnable
)
|
(
1u
<<
kFlexSpiMiscOffset_DiffClkEnable
),
.
sflashPadType
=
kSerialFlash_8Pads
,
.
serialClkFreq
=
kFlexSpiSerialClk_133MHz
,
.
sflashA1Size
=
64u
*
1024u
*
1024u
,
.
dataValidTime
=
{
16u
,
16u
},
.
lookupTable
=
{
// Read LUTs
FLEXSPI_LUT_SEQ
(
CMD_DDR
,
FLEXSPI_8PAD
,
0xA0
,
RADDR_DDR
,
FLEXSPI_8PAD
,
0x18
),
FLEXSPI_LUT_SEQ
(
CADDR_DDR
,
FLEXSPI_8PAD
,
0x10
,
DUMMY_DDR
,
FLEXSPI_8PAD
,
0x06
),
FLEXSPI_LUT_SEQ
(
READ_DDR
,
FLEXSPI_8PAD
,
0x04
,
STOP
,
FLEXSPI_1PAD
,
0x0
),
},
},
.
pageSize
=
512u
,
.
sectorSize
=
256u
*
1024u
,
.
blockSize
=
256u
*
1024u
,
.
isUniformBlockSize
=
true
,
};
bsp/imxrt1052-evk/xip/fsl_flexspi_nor_flash.h
0 → 100644
浏览文件 @
f582b621
/*
* The Clear BSD License
* Copyright (c) 2016, Freescale Semiconductor, Inc.
* Copyright 2016-2017 NXP
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification,
* are permitted (subject to the limitations in the disclaimer below) provided
* that the following conditions are met:
*
* o Redistributions of source code must retain the above copyright notice, this
* list
* of conditions and the following disclaimer.
*
* o Redistributions in binary form must reproduce the above copyright notice,
* this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* o Neither the name of Freescale Semiconductor, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __FLEXSPI_NOR_FLASH_H__
#define __FLEXSPI_NOR_FLASH_H__
#include <stdint.h>
#include <stdbool.h>
#include "fsl_common.h"
/* FLEXSPI memory config block related defintions */
#define FLEXSPI_CFG_BLK_TAG (0x42464346UL) // ascii "FCFB" Big Endian
#define FLEXSPI_CFG_BLK_VERSION (0x56010400UL) // V1.4.0
#define FLEXSPI_CFG_BLK_SIZE (512)
/* FLEXSPI Feature related definitions */
#define FLEXSPI_FEATURE_HAS_PARALLEL_MODE 1
/* Lookup table related defintions */
#define CMD_INDEX_READ 0
#define CMD_INDEX_READSTATUS 1
#define CMD_INDEX_WRITEENABLE 2
#define CMD_INDEX_WRITE 4
#define CMD_LUT_SEQ_IDX_READ 0
#define CMD_LUT_SEQ_IDX_READSTATUS 1
#define CMD_LUT_SEQ_IDX_WRITEENABLE 3
#define CMD_LUT_SEQ_IDX_WRITE 9
#define CMD_SDR 0x01
#define CMD_DDR 0x21
#define RADDR_SDR 0x02
#define RADDR_DDR 0x22
#define CADDR_SDR 0x03
#define CADDR_DDR 0x23
#define MODE1_SDR 0x04
#define MODE1_DDR 0x24
#define MODE2_SDR 0x05
#define MODE2_DDR 0x25
#define MODE4_SDR 0x06
#define MODE4_DDR 0x26
#define MODE8_SDR 0x07
#define MODE8_DDR 0x27
#define WRITE_SDR 0x08
#define WRITE_DDR 0x28
#define READ_SDR 0x09
#define READ_DDR 0x29
#define LEARN_SDR 0x0A
#define LEARN_DDR 0x2A
#define DATSZ_SDR 0x0B
#define DATSZ_DDR 0x2B
#define DUMMY_SDR 0x0C
#define DUMMY_DDR 0x2C
#define DUMMY_RWDS_SDR 0x0D
#define DUMMY_RWDS_DDR 0x2D
#define JMP_ON_CS 0x1F
#define STOP 0
#define FLEXSPI_1PAD 0
#define FLEXSPI_2PAD 1
#define FLEXSPI_4PAD 2
#define FLEXSPI_8PAD 3
#define FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1) \
(FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) | \
FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
//!@brief Definitions for FlexSPI Serial Clock Frequency
typedef
enum
_FlexSpiSerialClockFreq
{
kFlexSpiSerialClk_30MHz
=
1
,
kFlexSpiSerialClk_50MHz
=
2
,
kFlexSpiSerialClk_60MHz
=
3
,
kFlexSpiSerialClk_75MHz
=
4
,
kFlexSpiSerialClk_80MHz
=
5
,
kFlexSpiSerialClk_100MHz
=
6
,
kFlexSpiSerialClk_133MHz
=
7
,
kFlexSpiSerialClk_166MHz
=
8
,
kFlexSpiSerialClk_200MHz
=
9
,
}
flexspi_serial_clk_freq_t
;
//!@brief FlexSPI clock configuration type
enum
{
kFlexSpiClk_SDR
,
//!< Clock configure for SDR mode
kFlexSpiClk_DDR
,
//!< Clock configurat for DDR mode
};
//!@brief FlexSPI Read Sample Clock Source definition
typedef
enum
_FlashReadSampleClkSource
{
kFlexSPIReadSampleClk_LoopbackInternally
=
0
,
kFlexSPIReadSampleClk_LoopbackFromDqsPad
=
1
,
kFlexSPIReadSampleClk_LoopbackFromSckPad
=
2
,
kFlexSPIReadSampleClk_ExternalInputFromDqsPad
=
3
,
}
flexspi_read_sample_clk_t
;
//!@brief Misc feature bit definitions
enum
{
kFlexSpiMiscOffset_DiffClkEnable
=
0
,
//!< Bit for Differential clock enable
kFlexSpiMiscOffset_Ck2Enable
=
1
,
//!< Bit for CK2 enable
kFlexSpiMiscOffset_ParallelEnable
=
2
,
//!< Bit for Parallel mode enable
kFlexSpiMiscOffset_WordAddressableEnable
=
3
,
//!< Bit for Word Addressable enable
kFlexSpiMiscOffset_SafeConfigFreqEnable
=
4
,
//!< Bit for Safe Configuration Frequency enable
kFlexSpiMiscOffset_PadSettingOverrideEnable
=
5
,
//!< Bit for Pad setting override enable
kFlexSpiMiscOffset_DdrModeEnable
=
6
,
//!< Bit for DDR clock confiuration indication.
};
//!@brief Flash Type Definition
enum
{
kFlexSpiDeviceType_SerialNOR
=
1
,
//!< Flash devices are Serial NOR
kFlexSpiDeviceType_SerialNAND
=
2
,
//!< Flash devices are Serial NAND
kFlexSpiDeviceType_SerialRAM
=
3
,
//!< Flash devices are Serial RAM/HyperFLASH
kFlexSpiDeviceType_MCP_NOR_NAND
=
0x12
,
//!< Flash device is MCP device, A1 is Serial NOR, A2 is Serial NAND
kFlexSpiDeviceType_MCP_NOR_RAM
=
0x13
,
//!< Flash deivce is MCP device, A1 is Serial NOR, A2 is Serial RAMs
};
//!@brief Flash Pad Definitions
enum
{
kSerialFlash_1Pad
=
1
,
kSerialFlash_2Pads
=
2
,
kSerialFlash_4Pads
=
4
,
kSerialFlash_8Pads
=
8
,
};
//!@brief FlexSPI LUT Sequence structure
typedef
struct
_lut_sequence
{
uint8_t
seqNum
;
//!< Sequence Number, valid number: 1-16
uint8_t
seqId
;
//!< Sequence Index, valid number: 0-15
uint16_t
reserved
;
}
flexspi_lut_seq_t
;
//!@brief Flash Configuration Command Type
enum
{
kDeviceConfigCmdType_Generic
,
//!< Generic command, for example: configure dummy cycles, drive strength, etc
kDeviceConfigCmdType_QuadEnable
,
//!< Quad Enable command
kDeviceConfigCmdType_Spi2Xpi
,
//!< Switch from SPI to DPI/QPI/OPI mode
kDeviceConfigCmdType_Xpi2Spi
,
//!< Switch from DPI/QPI/OPI to SPI mode
kDeviceConfigCmdType_Spi2NoCmd
,
//!< Switch to 0-4-4/0-8-8 mode
kDeviceConfigCmdType_Reset
,
//!< Reset device command
};
//!@brief FlexSPI Memory Configuration Block
typedef
struct
_FlexSPIConfig
{
uint32_t
tag
;
//!< [0x000-0x003] Tag, fixed value 0x42464346UL
uint32_t
version
;
//!< [0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix
uint32_t
reserved0
;
//!< [0x008-0x00b] Reserved for future use
uint8_t
readSampleClkSrc
;
//!< [0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3
uint8_t
csHoldTime
;
//!< [0x00d-0x00d] CS hold time, default value: 3
uint8_t
csSetupTime
;
//!< [0x00e-0x00e] CS setup time, default value: 3
uint8_t
columnAddressWidth
;
//!< [0x00f-0x00f] Column Address with, for HyperBus protocol, it is fixed to 3, For
//! Serial NAND, need to refer to datasheet
uint8_t
deviceModeCfgEnable
;
//!< [0x010-0x010] Device Mode Configure enable flag, 1 - Enable, 0 - Disable
uint8_t
deviceModeType
;
//!< [0x011-0x011] Specify the configuration command type:Quad Enable, DPI/QPI/OPI switch,
//! Generic configuration, etc.
uint16_t
waitTimeCfgCommands
;
//!< [0x012-0x013] Wait time for all configuration commands, unit: 100us, Used for
//! DPI/QPI/OPI switch or reset command
flexspi_lut_seq_t
deviceModeSeq
;
//!< [0x014-0x017] Device mode sequence info, [7:0] - LUT sequence id, [15:8] - LUt
//! sequence number, [31:16] Reserved
uint32_t
deviceModeArg
;
//!< [0x018-0x01b] Argument/Parameter for device configuration
uint8_t
configCmdEnable
;
//!< [0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable
uint8_t
configModeType
[
3
];
//!< [0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe
flexspi_lut_seq_t
configCmdSeqs
[
3
];
//!< [0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq
uint32_t
reserved1
;
//!< [0x02c-0x02f] Reserved for future use
uint32_t
configCmdArgs
[
3
];
//!< [0x030-0x03b] Arguments/Parameters for device Configuration commands
uint32_t
reserved2
;
//!< [0x03c-0x03f] Reserved for future use
uint32_t
controllerMiscOption
;
//!< [0x040-0x043] Controller Misc Options, see Misc feature bit definitions for more
//! details
uint8_t
deviceType
;
//!< [0x044-0x044] Device Type: See Flash Type Definition for more details
uint8_t
sflashPadType
;
//!< [0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal
uint8_t
serialClkFreq
;
//!< [0x046-0x046] Serial Flash Frequencey, device specific definitions, See System Boot
//! Chapter for more details
uint8_t
lutCustomSeqEnable
;
//!< [0x047-0x047] LUT customization Enable, it is required if the program/erase cannot
//! be done using 1 LUT sequence, currently, only applicable to HyperFLASH
uint32_t
reserved3
[
2
];
//!< [0x048-0x04f] Reserved for future use
uint32_t
sflashA1Size
;
//!< [0x050-0x053] Size of Flash connected to A1
uint32_t
sflashA2Size
;
//!< [0x054-0x057] Size of Flash connected to A2
uint32_t
sflashB1Size
;
//!< [0x058-0x05b] Size of Flash connected to B1
uint32_t
sflashB2Size
;
//!< [0x05c-0x05f] Size of Flash connected to B2
uint32_t
csPadSettingOverride
;
//!< [0x060-0x063] CS pad setting override value
uint32_t
sclkPadSettingOverride
;
//!< [0x064-0x067] SCK pad setting override value
uint32_t
dataPadSettingOverride
;
//!< [0x068-0x06b] data pad setting override value
uint32_t
dqsPadSettingOverride
;
//!< [0x06c-0x06f] DQS pad setting override value
uint32_t
timeoutInMs
;
//!< [0x070-0x073] Timeout threshold for read status command
uint32_t
commandInterval
;
//!< [0x074-0x077] CS deselect interval between two commands
uint16_t
dataValidTime
[
2
];
//!< [0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns
uint16_t
busyOffset
;
//!< [0x07c-0x07d] Busy offset, valid value: 0-31
uint16_t
busyBitPolarity
;
//!< [0x07e-0x07f] Busy flag polarity, 0 - busy flag is 1 when flash device is busy, 1 -
//! busy flag is 0 when flash device is busy
uint32_t
lookupTable
[
64
];
//!< [0x080-0x17f] Lookup table holds Flash command sequences
flexspi_lut_seq_t
lutCustomSeq
[
12
];
//!< [0x180-0x1af] Customizable LUT Sequences
uint32_t
reserved4
[
4
];
//!< [0x1b0-0x1bf] Reserved for future use
}
flexspi_mem_config_t
;
/* */
#define NOR_CMD_INDEX_READ CMD_INDEX_READ //!< 0
#define NOR_CMD_INDEX_READSTATUS CMD_INDEX_READSTATUS //!< 1
#define NOR_CMD_INDEX_WRITEENABLE CMD_INDEX_WRITEENABLE //!< 2
#define NOR_CMD_INDEX_ERASESECTOR 3 //!< 3
#define NOR_CMD_INDEX_PAGEPROGRAM CMD_INDEX_WRITE //!< 4
#define NOR_CMD_INDEX_CHIPERASE 5 //!< 5
#define NOR_CMD_INDEX_DUMMY 6 //!< 6
#define NOR_CMD_INDEX_ERASEBLOCK 7 //!< 7
#define NOR_CMD_LUT_SEQ_IDX_READ CMD_LUT_SEQ_IDX_READ //!< 0 READ LUT sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_READSTATUS \
CMD_LUT_SEQ_IDX_READSTATUS //!< 1 Read Status LUT sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_READSTATUS_XPI \
2 //!< 2 Read status DPI/QPI/OPI sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE \
CMD_LUT_SEQ_IDX_WRITEENABLE //!< 3 Write Enable sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_XPI \
4 //!< 4 Write Enable DPI/QPI/OPI sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_ERASESECTOR 5 //!< 5 Erase Sector sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_ERASEBLOCK 8 //!< 8 Erase Block sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM \
CMD_LUT_SEQ_IDX_WRITE //!< 9 Program sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_CHIPERASE 11 //!< 11 Chip Erase sequence in lookupTable id stored in config block
#define NOR_CMD_LUT_SEQ_IDX_READ_SFDP 13 //!< 13 Read SFDP sequence in lookupTable id stored in config block
#define NOR_CMD_LUT_SEQ_IDX_RESTORE_NOCMD \
14 //!< 14 Restore 0-4-4/0-8-8 mode sequence id in lookupTable stored in config block
#define NOR_CMD_LUT_SEQ_IDX_EXIT_NOCMD \
15 //!< 15 Exit 0-4-4/0-8-8 mode sequence id in lookupTable stored in config blobk
/*
* Serial NOR configuration block
*/
typedef
struct
_flexspi_nor_config
{
flexspi_mem_config_t
memConfig
;
//!< Common memory configuration info via FlexSPI
uint32_t
pageSize
;
//!< Page size of Serial NOR
uint32_t
sectorSize
;
//!< Sector size of Serial NOR
uint8_t
ipcmdSerialClkFreq
;
//!< Clock frequency for IP command
uint8_t
isUniformBlockSize
;
//!< Sector/Block size is the same
uint8_t
reserved0
[
2
];
//!< Reserved for future use
uint8_t
serialNorType
;
//!< Serial NOR Flash type: 0/1/2/3
uint8_t
needExitNoCmdMode
;
//!< Need to exit NoCmd mode before other IP command
uint8_t
halfClkForNonReadCmd
;
//!< Half the Serial Clock for non-read command: true/false
uint8_t
needRestoreNoCmdMode
;
//!< Need to Restore NoCmd mode after IP commmand execution
uint32_t
blockSize
;
//!< Block size
uint32_t
reserve2
[
11
];
//!< Reserved for future use
}
flexspi_nor_config_t
;
#ifdef __cplusplus
extern
"C"
{
#endif
#ifdef __cplusplus
}
#endif
#endif // __FLEXSPI_NOR_FLASH_H__
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录