MSP430常见问题之FLASH存储类

简介: Q1:用IAR Embedded Workbench for MSP430 通过JTAG往MSP430上写程序。为了知道片内程序的版本,必须读出Flash 中内容。什么工具软件可以通过JTAG口实现这个功能?A1:熔丝未烧断的话,做个空程序的项目,然后在C-SPY选项里选择保留未改变的区域,DEBUG后看MEMORY里的内容!熔丝烧断的话只能用编程器或BSL,如果加密了,只能通过BSL来读了,不过你要知道中断向量表的32个字节的内容,即密码。

Q1:用IAR Embedded Workbench for MSP430 通过JTAG往MSP430上写程序。为了知道片内程序的版本,必须读出Flash 中内容。什么工具软件可以通过JTAG口实现这个功能?
A1:熔丝未烧断的话,做个空程序的项目,然后在C-SPY选项里选择保留未改变的区域,DEBUG后看MEMORY里的内容!熔丝烧断的话只能用编程器或BSL,如果加密了,只能通过BSL来读了,不过你要知道中断向量表的32个字节的内容,即密码。

Q2:MSP430F449中我想把一个整形的数A存入某地方掉电也不丢失,作为以后程序运行的参数。是放在flash里面吗?用代码怎么实现?
A2:如果只是个巴字节的话就把它作为数组或者变量定义到FLASH就可以了。如: const unsigned char Value@0x0C000

Q3: 430里面Flash的主存储区和信息存储区有什么区别么?是不是程序是保存在主存储区里面的?那信息存储区是存什么信息的呢?存进去之后是不是随时能够读写出来呢?
A3: Flash分主Flash和信息Flash。如你所说,Flash主存储区主要来存储程序。信息Flash就是保存数据用的,可以随时读取。不过从物理特性而言他们是一模一样的,就段的长度有区别。当然信息段你也可以用来存储程序使用。

Q4:在flash 单字节写的时候,如我写在D区,可以不用全部清D区吗?因为D区还有先前保存的数据.
A4: 不可以。只能先读出然后全部擦除再重新写入,如果FLASH可以如您说的那么操作,那就是EEPROM了

Q5: 目前使用的单片机是5V供电,买的flash存储芯片3.3V供电,单片机和存储芯片的连接是怎么的呢?我查看一些相关资料,说是可以直接连接,但是直接连接有问题,请问如何连接??需要什么样的方法??
A5: 最好在FLASH与MCU之间接一个电平转换芯片, 或者用MOFET管转换一下电平。


Q6:请问擦写FLASH 选择频率时,有没有要特别注意的,如果我用8M的,不分频,这样可以吗?
A6:要注意啊,擦写Flash的频率在250~470K(具体可以查查手册);必须对FCTL2进行设置,使频率在这个范围内。


Q7: 用jtag接口往430 中写程序会不会破坏原有flash信息段保存的数据啊?
A7:取消擦除信息段选项,即在IAR project 的options 选项中DEBUG 下的选项。


Q8:从数据手册上来看,在写的过程中,好像要求判断BUSY位来决定接下来的操作,可是为什么TI的例程里面没有判断BUSY bit ?是不是MCU会自动判断?
A8:430对FLASH的写操作多种。比如块写(××OCKWRITE)和字节/字写(BYTE/WORDWRITE),在不同模式下,允许写的操作也不同。比如在字节写(BYTE WRITE)操作下,允许在FLASH MEMORY或在RAM下进行。当在FLASH MEMORY下进行写操作时,此时CPU是挂起的,直到写操作完成它才能执行下一个指令操作,但是当擦除程序是在RAM内初始化的,那么CPU就可以一直执行,如果不判断BUSY位的话,当RAM内代码执行完毕(us级),PC跳转到FLASH,而此时FLASH还再做擦除操作(ms级)就会造成非法访问,产生不可屏蔽中断。

Q9:MSP430的编译器默认是将数组定义在RAM 里面。请问如果我要将定义的数组直接保存在flash里面应该如何定义呢?是不是要修改编译器的某个配置信息,然后直接用const 定义呢?
A9:这个如何分配,以及用什么关键字都是由编译器决定的,如果你用的是IAR Embedded Workbench for 430,那再在数组声明的时候,前面加一个CONST那么在编译的时候就会将数组分配到FLASH空间。如果不加const默认的情况是分配到RAM空间的。

 

相关文章
|
3月前
|
存储 网络协议 安全
【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无法访问
【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无法访问
|
1月前
|
存储 安全 数据库
Uno Platform 安全数据存储秘籍大公开!加密、存储、读取全攻略,让你的数据固若金汤!
在 Uno Platform 中实现安全的数据存储需要选择合适的数据存储方式,并对存储的数据进行加密。通过加密数据,可以保护用户的敏感信息,防止数据泄露。同时,在读取和使用数据时,需要进行解密操作,确保数据的可用性。希望本文对你在 Uno Platform 中实现安全的数据存储有所帮助。
27 0
|
3月前
【Azure 服务总线】Azure门户获取ARM模板,修改Service Bus的TLS版本
【Azure 服务总线】Azure门户获取ARM模板,修改Service Bus的TLS版本
|
3月前
【Azure 服务总线】有何办法可以把原来老环境的Azure Service Bus 配置快速复制到新环境配置,而且原环境不删除
【Azure 服务总线】有何办法可以把原来老环境的Azure Service Bus 配置快速复制到新环境配置,而且原环境不删除
|
3月前
|
固态存储 Java 网络安全
【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)
【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)
|
6月前
|
弹性计算 缓存 运维
Serverless 应用引擎产品使用之在阿里云函数计算中发现没有NAC(Native Application Component)选项,且无法自己上传MOD(模块)如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
存储 弹性计算 数据挖掘
《阿里云存储手册》——云定义存储CDS
《阿里云存储手册》——云定义存储CDS
423 0
|
XML 对象存储 Swift
Ceph对象存储的Amazon S3接口的使用(重点介绍分片上传接口)(基于nautilus版本)
Ceph对象存储的Amazon S3接口的使用(重点介绍分片上传接口)(基于nautilus版本)
721 0
|
芯片
编写app流程---直接访问eeprom硬件
编写app流程---直接访问eeprom硬件
122 0
|
Web App开发 Linux API
SAP UI5 设备类型检测 Device API 的工作原理
为什么 SAP UI5 应用初始化时,要调用 SAP UI5 设备检测 API,即 sap.ui.Device 来检测运行当前 SAP UI5 应用的设备类型?
146 0
SAP UI5 设备类型检测 Device API 的工作原理