zoukankan      html  css  js  c++  java
  • MSP430常见问题之FLASH存储类

    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空间的。

  • 相关阅读:
    ubuntu安装jdk的两种方法
    LeetCode 606. Construct String from Binary Tree (建立一个二叉树的string)
    LeetCode 617. Merge Two Binary Tree (合并两个二叉树)
    LeetCode 476. Number Complement (数的补数)
    LeetCode 575. Distribute Candies (发糖果)
    LeetCode 461. Hamming Distance (汉明距离)
    LeetCode 405. Convert a Number to Hexadecimal (把一个数转化为16进制)
    LeetCode 594. Longest Harmonious Subsequence (最长的协调子序列)
    LeetCode 371. Sum of Two Integers (两数之和)
    LeetCode 342. Power of Four (4的次方)
  • 原文地址:https://www.cnblogs.com/lihuidashen/p/3329398.html
Copyright © 2011-2022 走看看