-
2021-12-03 10:54:41
2.
从0x20008000后的0x1000 4K字节不进行初始化。
老的用法: unsigned char shoe_data[10] __attribute__((at(0x20008000 )));
新的用法:unsigned char shoe_data[10] __attribute__((section(".ARM.__at_0x20008100")));
3. 推荐做法
去掉上面的√,使用分散加载表。点击 Edit进入。修改如下,并保存。
LR_IROM1 0x08000000 0x00020000 { ; load region size_region
ER_IROM1 0x08000000 0x00020000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_IRAM1 0x20000000 0x00008000 { ; RW data
.ANY (+RW +ZI)
}
RW_IRAM2 0x20008000 0x00001000 {
*(.RAM_D1)
}
}使用:unsigned char shoe_data[10] __attribute__((section(".RAM_D1")));
注意去掉上面两个勾选。
更多相关内容 -
MSP430单片机系统复位和初始化
2020-07-14 21:12:01本章我们来学习一下MSP430单片机的系统复位与初始化的过程。 这节课的主要内容有: ·系统复位POR与PUC ·POR产生过程 ·复位后,系统初始状态 ·程序中如何复位 ·硬件中如何设计 -
MDK下怎样才能让变量在复位时不被初始化
2020-08-03 15:44:59最近一个项目需要保存一下临时数据,而产品容易受干扰而...所以需要保存一下数据,那么只有在系统复位时候不再初始化变量即可。对应MDK(keil)来说是一个比较麻烦的问题。通过网络上找了大量资料和测试发现终于可以了。 -
嵌入式软件开发之: 复位和初始化
2020-08-13 20:40:18任何运行在实际硬件上的嵌入式应用程序,都必须在启动时实现一些基本的系统初始化。本节将对此予以详细讨论。 -
GT Transceiver的复位与初始化(3)TX初始化和复位流程
2021-10-26 22:26:54GTX/GTH收发器TX使用一个复位状态机来控制复位过程。GTX/GTH收发器TX被划分为两个复位区域,TX PMA和TX PCS。TX初始化与复位过程
GTX/GTH收发器TX使用一个复位状态机来控制复位过程。GTX/GTH收发器TX被划分为两个复位区域,TX PMA和TX PCS。该分区允许TX初始化和复位只在顺序模式下操作,如下图所示:
初始化TX必须在顺序模式下使用GTTXRESET。激活GTTXRESET输入可以自动触发一个完整的异步TX复位。复位状态机执行复位顺序,其覆盖整个TX PMA和TX PCS。
在正常工作期间,当需要时,顺序模式允许用户从激活TXPMARESET开始复位TX,并继续执行复位状态机,直到TXRESETDONE从低电平转换为高电平。
TX复位状态机在检测到TXUSERRDY为高电平时才会复位PCS。用户应在满足如下这些条件后将TXUSERRDY驱动为高电平。
-
当使用PLL或MMCM时,应用程序使用的所有时钟,包括TXUSRCLK/TXUSRCLK2都显示为稳定或锁定。
-
用户接口准备好向GTX/GTH收发器传输数据。
看完这段描述想说的是:TXUSERRDY 是TX的一个输入端口,当TXUSRCLK和TXUSRCLK2稳定时,该端口由用户的应用驱动为高电平。例如,如果一个MMCM被用来产生TXUSRCLK和TXUSRCLK2,那么这里可以使用MMCM锁定信号。
这里说的MMCM是文章《GT Transceiver中的重要时钟及其关系(7)TXUSRCLK以及TXUSRCLK2的产生》中提到的:
或:中驱动TXUSERCLK的MMCM,时钟稳定后LOCKED会拉高,其可作为TXUSERRDY 。
GTX/GTH收发器在完成配置后的复位
FPGA配置完成后,需要满足下面的条件才能开始顺序复位状态机:
- GTRESETSEL必须拉低以启用顺序模式(见文章:《GT Transceiver的复位与初始化(1)Transceiver复位的两种类型和两种模式》)
-
必须使用GTTXRESET。
-
在整个复位过程中,TXPMARESET和TXPCSRESET必须在TXRESETDONE被检测到高电平之前被持续驱动为低电平。
-
GTTXRESET不能被驱动为低电平,直到相关的PLL被锁定。
如果复位模式在配置时被默认为顺序模式,那么C/QPLLRESET和GTTXRESET可以在配置完成后等待至少500 ns后有效。
如果复位模式默认为单一模式,那么用户必须:
-
配置完成后至少要等待500 ns。
-
将复位模式改为顺序模式。
-
再等待300-500 ns。
-
使能C/QPLLRESET和GTTXRESET。
注意:这里为什么会提到C/QPLLRESET呢?这是因为CPLL或QPLL需要先进行复位:
文章:《GT Transceiver的复位与初始化(1)Transceiver复位的两种类型和两种模式》开头就已提到:
可见,FPGA配置完成后,需要先进行相关PLL复位,之后进行TX复位。
C/QPLLRESET和GTTXRESET也有一个先后顺序,C/QPLLRESET在先,GTTXRESET在后。
TX复位的时序如下:
建议使用CPLLL或QPLL的相关PLLLOCK将GTTXRESET从高电平释放到低电平,如上图所示。TX复位状态机在检测到GTTXRESET为高电平时等待,直到GTTXRESET被释放为低电平, 启动复位序列。
响应GTTXRESET脉冲的GTX/GTH收发器TX复位
GTX/GTH收发器允许用户在任何时候通过发送GTXRESET的高电平有效脉冲来完全复位整个TX。
TXPMARESET_TIME和TXPCSRESET_TIME可以静态设置或通过DRP端口重新编程,以调整应用GTTXRESET前所需的复位时间。使用GTTXRESET时必须满足这些条件:
-
GTRESETSEL必须被驱动为低电平以使用顺序模式。
-
在整个复位过程中,TXPMARESET和TXPCSRESET必须在TXRESETDONE被检测到高电平之前被持续驱动为低电平。
-
相关的PLL必须指示锁定。
-
该异步GTTXRESET脉冲宽度的指导原则是参考时钟的一个周期。
TX 组件复位
TX PMA和TX PCS可以单独复位。在TXPMARESET或TXPCSRESET过程中,GTTXRESET必须保持为低电平才能完成。
将TXPMARESET从高电平驱动到低电平开始PMA复位过程。
在TXPMARESET过程中,TXPCSRESET必须被持续驱动为低电平。
在顺序模式下,如果TXUSERRDY为高电平,复位状态机在完成PMA复位后自动启动PCS复位。
当TXUSERRDY为高电平时,将TXPCSRESET从高电平驱动到低电平开始PCS复位过程。
当PCS处于复位过程时,TXPMARESET必须被持续驱动为低电平。
在 顺序模式下,复位状态机只对PCS进行复位。
TX复位总结
下表总结了GTX/GTH收发器TX可用的所有复位以及在顺序模式下受其影响的组件。
在顺序模式下使用TXPMARESET可以重置GTTXRESET所涵盖的一切,除了TX复位状态机。
在不同场景下推荐使用的复位方式:
可见:
- 在上电配置完成后,需要对整个TX进行复位。
- 如果参考时钟改变或GTX/GTH收发器在配置后上电,GTTXRESET应在PLL完全完成其复位程序后有效。
- 每当PLL的参考时钟输入被改变时,PLL必须在之后复位,以确保它锁定在新的频率上。GTTXRESET应该在PLL完全完成其复位程序后有效
- 当正在使用的CPLL或QPLL在断电后回到正常工作状态时,必须对PLL进行复位。GTTXRESET应该在PLL完全完成其复位程序后有效。
- 在TXPD信号失电后,GTTXRESET必须有效。
- 当TX速率改变时,所需的复位序列会自动执行。当TXRATEDONE有效时,它表明速率变化和必要的复位序列都已应用并完成。如果TX buffer被启用,TXBUF_RESET_ON_RATE_CHANGE属性应被设置为TRUE,以允许TX缓冲器在速率改变后自动复位。如果使用TX buffer旁路模式,在TXRATEDONE有效后必须重复对齐。
- 驱动TXUSRCLK和TXUSRCLK2的时钟必须是稳定的,以便正确操作。这些时钟通常由FPGA中的MMCM驱动,以满足相位和频率要求。如果MMCM失去锁定并开始产生不正确的输出,应在时钟源重新锁定后有效TXPCSRESET。如果使用TX缓冲器旁路模式,在完成复位程序后必须重复对齐。
注意:上面提到的所有的有效,指的是触发条件有效,例如GTTXRESET有效,指的是一个高脉冲,触发TX复位。
往期回顾
GT Transceiver的复位与初始化(2)CPLL复位以及QPLL复位
GT Transceiver的复位与初始化(1)Transceiver复位的两种类型和两种模式
GT Transceiver中的重要时钟及其关系(10)RXOUTCLK的来源及其生成
GT Transceiver中的重要时钟及其关系(9)RXUSERCLK和RXUSER_CLK2的生成
GT Transceiver中的重要时钟及其关系(8)TXOUTCLK的来源及其产生
GT Transceiver中的重要时钟及其关系(7)TXUSRCLK以及TXUSRCLK2的产生
GT Transceiver中的重要时钟及其关系(6)TXUSRCLK以及TXUSRCLK2的用途与关系
GT Transceiver中的重要时钟及其关系(5)QPLL的工作原理介绍
GT Transceiver中的重要时钟及其关系(4)CPLL的工作原理介绍
GT Transceiver中的重要时钟及其关系(3)多个外部参考时钟使用模型
GT Transceiver中的重要时钟及其关系(2)单个外部参考时钟使用模型
GT Transceiver中的重要时钟及其关系(1)GT Transceiver参考时钟
FPGA的设计艺术(8)最佳的FPGA开发实践之严格遵循过程
高速串行总线设计基础(六)揭秘SERDES高速面纱之数据包与参考时钟要求
高速串行总线设计基础(八)揭秘SERDES高速面纱之CML电平标准与预加重技术
-
-
如何禁止KEIL初始化RAM为零&如何判断是软复位还是上电复位
2020-08-01 09:16:59如何禁止KEIL初始化RAM为零& 如何判断是软复位还是上电复位。 -
GT Transceiver的复位与初始化(4)RX初始化和复位流程
2021-10-29 00:00:15GTX/GTH收发器RX使用一个复位状态机来控制复位过程。由于其复杂性,GTX/GTH收发器RX被划分为比GTX/GTH收发器TX更多的复位区域。RX初始化与复位
GTX/GTH收发器RX使用一个复位状态机来控制复位过程。由于其复杂性,GTX/GTH收发器RX被划分为比GTX/GTH收发器TX更多的复位区域。如图所示,该分区允许RX的初始化和复位以顺序模式或单一模式运行。
顺序模式下的RX
要初始化GTX/GTH收发器的RX,必须在顺序模式下使用GTRXRESET。激活GTRXRESET输入可以自动触发一个完全异步的 RX复位。复位状态机执行的复位顺序上图所示。覆盖整个RX PMA和RX PCS。在正常操作期间,顺序模式 也允许用户通过激活这些复位中的任何一个来启动复位,包括 RXPMARESET, RXDFELPMRESET, EYESCANRESET, RXPCSRESET, 和 RXBUFRESET,并继续复位状态机,直到RXRESETDONE从低电平转换为高电平。
单一模式下的RX
当GTX/GTH收发器RX处于单一模式时,复位序列中的RXPMARESET、RXDFELPMRESET、EYESCANRESET、RXPCSRESET和RXBUFRESET可以单独独立执行,不会触发其他复位区域的复位。
在顺序模式或单一模式下,RX复位状态机在RXUSERRDY变为高电平之前不会复位PCS。用户应在满足这些条件后将RXUSERRDY驱动为高电平。
-
当使用PLL或MMCM时,应用程序使用的所有时钟,包括RXUSRCLK和RXUSRCLK2,都显示为稳定或锁定。
-
用户接口准备好从GTX/GTH收发器接收数据。
单独介绍下
- RXUSERRDY:
当RXUSRCLK和RXUSRCLK2稳定时,该端口由用户的应用驱动为高电平。例如,如果一个MMCM被用来产生RXUSRCLK和RXUSRCLK2,那么MMCM的锁定信号就可以用在这里。
- RXRESETDONE:
当有效时,这个高电平有效信号表明GTX/GTH收发器RX已经完成复位,可以使用了。在顺序模式下,当GTRXRESET被驱动为高电平时,该端口被驱动为低电平。在RXUSERRDY变成高电平之前,该信号不会被驱动为高电平。在单一模式下,当任何一个RX复位有效时,该端口被驱动为低电平。直到所有的RX复位无效,并且RXUSERRDY有效,该信号才会被驱动为高。
GTX/GTH收发器在配置完成后进行RX复位
上图中RX复位顺序不会自动启动,以跟随全局GSR(全局复位/置位)。
要启动上述RX复位流程,续满足如下条件:
- GTRESETSEL必须被驱动为低电平以使用顺序模式。
- 必须使用GTRXRESET。
- 所有单一复位输入,包括RXPMARESET、RXCDRRESET、RXCDRFREQRESET、RXDFELPMRESET、EYESCANRESET、RXPCSRESET和RXBUFRESET,在整个复位过程中,在RXRESETDONE变为高电平之前必须持续保持低电平。
- GTRXRESET不能被驱动为低电平,直到相关的PLL被锁定。
如果复位模式在配置时被默认为顺序模式,那么C/QPLLRESET和GTRXRESET可以在配置完成后等待至少500 ns后有效。
如果复位模式被默认为单一模式,那么用户必须
- 在配置完成后至少等待500 ns。
- 将复位模式改为顺序模式。
- 再等待300-500 ns。
- 断言C/QPLLRESET和GTRXRESET。
建议使用CPLL或QPLL的相关PLLLOCK将GTRXRESET从高电平释放到低电平,如下图所示。RX复位状态机在GTRXRESET为高电平时等待,直到GTRXRESET被释放为低电平,开始复位流程。
RX复位总结
下表总结了GTX/GTH收发器RX可用的所有复位以及在顺序模式下受其影响的组件。
单一模式下的复位,覆盖的组件:
下面是不同场景下推荐的复位方式:
往期回顾
-
-
智能卡的初始状态和复位应答
2020-11-14 16:20:27图3.67表示了复位恢复时间tO、加电时间t1、初始化时间t2、稳定的逻辑状态时间13以及复位应答时间t4的需求和数值。 图1 按照ISO/IEC 10536用于非接触智能卡数据传输的时序图 (&0≥8ms;fl≤0.2ms;f2=8ms;... -
电子测量中的TFG1005 DDS函数信号发生器复位初始化
2020-11-16 22:45:50开机后或按[shift△复位]键后仪器的初始化状态如下: A B路波形:正弦波 A B路频率:1 kHz A B路幅度:1 vP-P A B占空比:50% A路衰减:AUTO A路偏移:0 V B路谐波:1.0 B路相移:90° 初始频率... -
nand flash 的初始化和复位操作
2016-08-06 10:25:031、nand flash的初始化操作1、nand flash的初始化操作
(1.1)nand flash的初始化操作流程
(1.1.1)设初始化 置管脚
(1.1.2)初始化NFCONF寄存器
(1.1.3)初始化NFCONT寄存器
(1.2)初始化NFCONF寄存器分析
(1.2.1)在2440手册中,分析nand flash 控制器的命令/地址时序图,里面只涉及三个参数TACLS,TWRPH0,TWRPH1
/* HCLK=100MHz,也就是10ns
* TACLS: 发出CLE/ALE之后多长时间才发出nWE信号, 从NAND手册可知CLE/ALE与nWE可以同时发出,所以TACLS=0
* TWRPH0: nWE的脉冲宽度, HCLK x ( TWRPH0 + 1 ), 从NAND手册可知它要>=12ns, 所以TWRPH0>=1
* TWRPH1: nWE变为高电平后多长时间CLE/ALE才能变为低电平, 从NAND手册可知它要>=5ns, 所以TWRPH1>=0
*/
(1.2.2)nand flash 手册相应类似的时序图如下
TACLS,TWRPH0,TWRPH1对应的是tCLS-twp,twp,tCLH.这里tCLS和twp的最小值都为12ns(3.3V下),twp大于等于12ns,tCLH大于5ns
(1.2.3)参数对应的取值的表格
(1.3)初始化函数
/* 初始化NAND Flash */
void nand_init(void)
{
S3C2440_NAND * s3c2440nand = (S3C2440_NAND *)0x4e000000;
#define TACLS 0
#define TWRPH0 3
#define TWRPH1 0//初始化NFCONF寄存器(nand flash配置寄存器)
/* 设置时序 */
s3c2440nand->NFCONF = (TACLS<<12)|(TWRPH0<<8)|(TWRPH1<<4);//初始化NFCONT寄存器(nand flash控制寄存器)
/* 使能NAND Flash控制器, 初始化ECC, 禁止片选 */
s3c2440nand->NFCONT = (1<<4)|(1<<1)|(1<<0);
/* 复位NAND Flash */
s3c2440_nand_reset();
}
2、nand flash 的复位操作
(2.1)nand flash的时序图
其中tRST在nand flash手册的定义为在复位命令FFH被写入nand flash 的命令寄存器后状态引脚RnB变为高电平的时间(也就是nand flash状态变为空闲的时间)
(2.2)归纳步骤如下
选中nand flash芯片
发出FFH命令
等待nand flash变为空闲状态
取消片选
(2.3)函数编写
void s3c2440_nand_reset(void)
{
s3c2440_nand_select_chip();
s3c2440_write_cmd(0xff); // 复位命令
s3c2440_wait_idle();
s3c2440_nand_deselect_chip();
}
-
Small-OS智能卡主要回路和硬件及操作系统的初始化
2020-11-14 19:28:43当智能卡复位后,程序计数器被装人复位矢量的地址,于是处理器开始执行第1个程序代码。硬件立即被 测试以了解它是否处在... 当芯片硬件被测试并初始化后,则开始初始化操作系统。它的重要内容是设定T=1协议的数据传输 -
例说FPGA之状态初始——复位电路
2020-07-18 17:56:49FPGA器件在上电后都需要有一个确定的初始状态,以保证器件内部逻辑快速进入正常的工作状态。因此,FPGA器件外部通常会引入一个用于内部复位的输入信号,这个信号称之为复位信号。 -
DSP系统初始化
2013-04-01 12:29:55DSP的初始化,很详细的描述了DSP的内部硬件配置 -
Keil MDK下如何设置非零初始化变量
2020-08-03 01:50:43一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM...而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零。如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的。 -
第4章 复位、时钟同步和初始化
2015-11-19 13:06:52本章介绍复位、时钟同步和MPC8349E设备的整体初始化,包括复位配置信号的定义及其选项。此外还介绍配置、控制和状态寄存器。注意,本书的每一章都介绍了一个部件额外的具体的初始化过程。 -
第4章_复位时钟同步和初始化_mpc83xx中文手册
2014-01-22 13:59:20第四章 复位、时钟同步和初始化 本章介绍复位、 时钟同步和 MPC8349E 设备的整体初始化, 包括复位配置信号的定义及其选项。 此外还介绍配置、控制和状态寄存器。注意,本书的每一章都介绍了一个部件额外的具体的... -
软件的初始化和硬件的初始化
2021-11-25 17:04:281、软件初始化 1 设置栈 (SP→内存(SRAM)) 2 调用main() 3 清理工作 2、硬件初始化 1 关闭看门狗 2 初始化时钟 3 初始化SDRAM .text .global _start _start: ldr r0, =0x53000000 @ WATCHDOG寄存器地址 ... -
Xilinx FPGA平台GTX简易使用教程(三)GTX复位与初始化
2021-11-26 23:49:16所有IP核没有正确工作,原因一半是时钟,一半是复位。 -
S7-1200 PLC如何复位为出厂设置_具体方法和步骤?.docx
2021-12-27 16:06:21S7-1200 PLC如何复位为出厂设置_具体方法和步骤? -
三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位
2020-12-19 16:49:06对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢........接着依次完成 配置、初始化工作,如果这一切都顺利,就进入用户模式,FPGA会根据用户所编写的... -
HSD配ST7789V的初始化代码,兼容深超,信利
2021-01-16 10:04:35HSD配ST7789V的初始化代码,兼容深超,信利 -
KEIL编译器设置RAM数据复位后不被初始化数据
2021-04-20 20:54:25这样只要不带电属于热启动就不会被初始化 第二种: 1. 修改分散加载文件sct,增加一个名为MYRAM的执行节,该执行节起始地址为0x1000A000,长度为0x2000字节(8KB),由UNINIT修饰: 在sct文件中这.. -
GT Transceiver的复位与初始化(2)CPLL复位以及QPLL复位
2021-10-17 23:09:43在使用QPLL之前,必须对其进行复位。 -
ST7789V-初始化
2018-08-15 09:07:18ST7789V-的初始化代码,适用于大部分的TFT屏,MCU接口 RGB接口 SPI接口等 -
嵌入式系统/ARM技术中的eCAN总线模块的初始化步骤
2020-11-12 20:49:05在CAN模块正常操作及初始化之前,必须使能模块的时钟。可以通过寄存器PCLKCR的14位使能/屏蔽CAN模块的时钟。在不使用CAN模块时,通过该位屏蔽CAN的时钟可以降低功耗。该位不能控制CAN模块的低功耗模式,同其他外设... -
1_AURIX 应用笔记 TC27xC启动与初始化.pdf
2020-03-11 01:15:23AURIX TC27X系列启动和初始化,详细介绍了TC27X系列上电BMI配置,初始化步骤,TC27xC TriCore™ AURIX™ 微控器初始化过程, 包括以下步骤: ⇒ 初始化 CPU0 的 C 运行环境( Cstart 程序), AURIX 复位后, CPU0 ... -
汇川冷复位,热复位,初始值复位
2021-01-21 14:36:30热复位后,除了保持型量(retain和persistent变量)外,其它当前活动应用的变量都被重新初始化。如果设置了初始值的变量,热复位后变量值为设定的初始值,其它变量都设置为标准初始值(例如:设置为0)。 冷复位:... -
CodeWarrior 中实现RAM自定义初始化 ( 非掉电复位,变量值不初始化)
2020-09-16 11:47:24引言 RAM自定义初始化目标 ...4. 利用MCU标志寄存器的POR上电复位标志位(PORF)对该保护RAM区域进行自定义初始化 总结 基于S9KEAZN32AMLC这颗业界广泛使用的汽车级MCU,给大家介绍具体如何在CodeWa... -
数组初始化和成员变量初始化初值分析
2019-04-28 16:50:501、数组初始化 首先,我们看一下代码的输出: int[] i = new int[2]; System.out.println(i[0]); Integer[] integers = new Integer[2]; System.out.println(integers[0]); String[] s = new String[2]; System.... -
第4章-复位时钟同步和初始化-mpc83xx中文手册
2016-05-20 10:20:42第4章-复位时钟同步和初始化-mpc83xx中文手册