首先声明,手册上给出的FlashSize地址是错误的,正确的应该是0x1FFF7A20,取高16位。确切说应该是(0x1FFF7A23,0x1FFF7A22两个字节),
芯片的这96位ID是产品唯一身份标识。可以从特定的寄存器中读出来。FlashSize表示内部flash的大小,也是固化在芯片内部的。
手册上讲的ChipID的基地址是0x1FFF7A10,ChipSize的基地址也是0x1FFF7A10。肯定是不对的
谷歌了半天才发现真正的ChipSize地址0x1FFF7A20。知道了地址,直接读取地址中的数据就OK了。操作相当简单
读取FlashSize
uint16_t cpuGetFlashSize(void)
{
return (*(__IO u16*)(0x1FFF7A22));
// return (*(__IO u32*)(0x1FFF7A20))>>16;
}
//读取ChipID
void cpuidGetId(void)
{
mcuID[0] = *(__IO u32*)(0x1FFF7A10);
mcuID[1] = *(__IO u32*)(0x1FFF7A14);
mcuID[2] = *(__IO u32*)(0x1FFF7A18);
}
通过串口发送到PC就可以看到了。
串口发送程序;
printf("CPUID IS 0X%X %X %X.\r\n", mcuID[0], mcuID[1], mcuID[2] );
printf("Flash size is %d KB\r\n",cpuGetFlashSize());
PC接收到的:
为了验证,可以使用STLink Utility对比下:
关键字:STM32F4 读取芯片ID Flash Size
引用地址:
【STM32F4】读取芯片ID和芯片Flash Size
推荐阅读最新更新时间:2024-03-16 15:26
TX2440 ARM开发板Uboot移植(三、添加Nand Flash的有关操作支持)
在上一节中我们说过,通常在嵌入式bootloader中,有两种方式来引导启动内核:从Nor Flash启动和从Nand Flash启动,但不管是从Nor启动或者从Nand启动,进入第二阶段以后,两者的执行流程是相同的。当u-boot的start.S运行到“_start_armboot: .word start_armboot”时,就会调用lib_arm/board.c中的start_armboot函数,至此u-boot正式进入第二阶段。此时注意:以前较早的u-boot版本进入第二阶段后,对Nand Flash的支持有新旧两套代码,新代码在drivers/nand目录下,旧代码在drivers/nand_legacy目录下,CFG_
[单片机]
[ARM笔记]驱动对设备的识别过程及实例——NAND Flash
驱动程序识别设备时,有以下两种方法: (1)驱动程序本身带有设备信息,比如开始地址、中断号等;加载驱动程序时,就可以根据这些信息来识别设备。 (2)驱动程序本身没有设备信息,但是内核中已经(或以后)根据其他方式确定了很多设备的信息;加载驱动程序时,将驱动程序与这些设备逐个比较,确定两者是否匹配(math)。如果驱动程序与某个设备匹配,就可以通过该驱动程序来操作这个设备了。 内核常使用第二种方法来识别设备,这可以将各种设备集中在一个文件中管理,当开发板的配置改变时,便于修改代码。在内核文件include/linux/platform_device.h中,定义了两个数据结构来表示这些设备和驱动程序:platform_device结
[单片机]
使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法
1. 简要说明 JLink的调试功能、烧写Flash的功能都很强大,但是对于S3C2410、S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢;烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点。 本文使用一个间接的方法来实现对S3C2410、S3C2440开发板的Nor、Nand Flash的烧写。原理为:JLink可以很方便地读写内存、启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来烧写。 2. 操作步骤 2.1 连接硬件 对于大多数的S3C2410、S3C2440开发板而言,它们所用的JTAG接口一般有3种
[单片机]
NAND FLASH在储存测试系统中的应用
0 引言 计算机技术的高速发展,存储系统容量从过去的几KB存储空间,到现在的T8;乃至不久的将来要达到的PB存储空间,其数据存取的能力在飞速扩展。随之而来产生的SCSI、FC、SAN、iSCSI、IPStorage和数据生命周期管理等崭新的领域,更给计算机技术和网络技术赋予了蓬勃的生命力。存数性能的提升通常是通过在基础结构上增加更多的物理磁盘驱动数目或者采用更快转速的磁盘驱动器来完成。 机载存储设备要求具有高的可靠性和高抗撞击、抗震、防潮、耐高压和承受高温的特点,而磁盘驱动器存取数据时有机械转动,其抗冲击,抗震动性不强,所以不适用于航空航天等恶劣环境下使用。基于半导体存储芯片闪存的固态存储器(SSD)的出现很好的解
[测试测量]
keil 5 如何安装stm32f4的库
最近要用stm32f407芯片写程序,但是我的keil5之前只用过stm32f1系列的库,因此需要下载安装 单击下面图标 然后按下图操作: 最后点击install(安装),这时下载,但是有可能很慢,因此也可以直接用下面百度网盘的资源,下载下来直接安装即可。 链接:http://pan.baidu.com/s/1kV5M4gn 密码:s58x 参考:http://bbs.elecfans.com/forum.php?mod=viewthread&ordertype=2&tid=1149749
[单片机]
STM32F4 CubeMX HAL CAN 使用步骤
(这仅仅是一个最简单的CAN示例Demo程序,仅作参考。最新的HAL库CAN的部分有所改变,不能直接使用该文方法。) STM32CubeMX版本: 固件库版本: 第一步分:CubeMX软件配置。 0、工程配置以及芯片选择这里就不再赘述了,最好是勾选为每个外设生成独立的.c源文件。 1、打开CAN外设。 2、配置芯片时钟树。这里我使用了芯片内部HSI RC,主时钟配置为168MHz。 3、CAN配置。 3.1配置波特率为1Mb/s。计算方法:42M/2/(14+6+1)==1M 3.2、使能RX0接收中断。 到这里配置已经完成了,这里我们只配置了部分选项,其余大部分都是采用的默认配置。点击工
[单片机]
Cortex-M3 (NXP LPC1788)之看门狗定时器对Flash编程的影响
这两天在学习窗口式看门狗模块,之前一直调试的很happy,今天早上突然就进入不了调试模式,而且无法擦除Flash,无法下载程序。郁闷了半天,以为是Keil软件和Ulink出了问题,在另外个电脑上重载,问题依旧。准备用ISP进行尝试,使用FlashMagic软件,进行读取芯片的ID,一直报警autobaud错误,进他提示的网页看下也没有什么有用的信息。 仔细看了数据手册,在Flash存储器章节看到如下信息。引导加载器(boot loader)控制芯片复位后的初始化操作,并提供对Flash存储器进行编程的工具。包括ISP,通过引导加载器软件和UART0串口片上Flash存储器进行编程或在编程。IAP,应用终端用户的应用代
[单片机]
JTAG口及其对Flash的在线编程
摘要:通过JTAG实现对Flash在线编程。首先,介绍JTAG的定义、结构及引脚的定义,并阐述JTAG状态机的工作原理。然后,介绍JTAG口的边界扫描寄存器,给出实现JTAG在线写Flash的电路,和如何通过JTAG实现Flash的编程及程序流程图。
关键词:JTAG Flash 在线编程
随着嵌入式技术的发展,在一些高端的掌上设备中,都使用了Flash芯片,如Compaq的iPAQ、联想的天祺系列等产品。但对于研发人员来说,在开发阶段需要大量的程序调试,就意味着要对Flash进行擦除和改写的工作,因此,如何对Flash进行在线编程是问题的关键所在。本文介绍一种通过JTAG对Flash进行的在线编程方法。
1 JTAG简介
[应用]