原创 MM32F0130 RevC 读保护设置

2020-11-19 15:14 2652 0 分类: MCU/ 嵌入式 文集: MM32 MCU调试工具

一. MM32-Link配合MM32Program方式

1. MM32Program中做读保护设置

2. 在汇编程序中的设置:

如使用IAR开发项目,在\Device\MM32F013x\Source\IAR_StartAsm\startup_mm32f013x_iar.s中,

添加如下代码:

                DS8  1024    ;reserved 1024 bytes

如使用KEIL开发项目,在\Device\MM32F013x\Source\KEIL_StartAsm\startup_mm32f013x_keil.s中,

添加如下代码:

                data2xyz        FILL    1024,0xBF00,2 ; defines 1024 bytes containing 0xBF00

编译通过后使用MM32Program+MM32LINK烧录器,烧录到目标MCU,记得烧录成功后需要断电重上电一次 确保读保护操作成功。

二. 使用其它第三方烧录工具方式

1. 如不是通过MM32Program+MM32LINK烧录器,烧录到目标MCU,而是通过其他第三方烧录工具烧录到目标MCU(以非保护的方式),则需要在程序添加上述写读保护代码与判断是否已设置读保护动作,来实现MM32F013x RevC的读保护;

烧录好后,第一次上电,判断是否已经读保护,如果未读保护则执行配置读保护程序,否则运行主代码;

断电后,再次上电,就完成的读保护了;

具体代码如下:

  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @brief Read protection for the main flash
  3. /// @note This function can be used for protect devices.
  4. /// @retval None.
  5. ////////////////////////////////////////////////////////////////////////////////
  6. FLASH_Status FLASH_ProgramProtectSpecialRev(void)
  7. {
  8. FLASH_Status ret;
  9. ret = FLASH_ProgramOptionHalfWord(0x1FFE0000, 0xFE01);
  10. if (ret != FLASH_COMPLETE) {
  11. return ret;
  12. }
  13. ret = FLASH_ProgramOptionHalfWord(0x1FFE0002, 0xFF00);
  14. if (ret != FLASH_COMPLETE) {
  15. return ret;
  16. }
  17. ret = FLASH_ProgramOptionHalfWord(0x1FFE0004, 0xC03F);
  18. if (ret != FLASH_COMPLETE) {
  19. return ret;
  20. }
  21. ret = FLASH_ProgramOptionHalfWord(0x1FFE0006, 0xFE01);
  22. if (ret != FLASH_COMPLETE) {
  23. return ret;
  24. }
  25. return ret;
  26. }
  27. ////////////////////////////////////////////////////////////////////////////////
  28. /// @brief Check Read protection status of the main flash
  29. /// @note This function can be used for protect devices.
  30. /// @retval None.
  31. ////////////////////////////////////////////////////////////////////////////////
  32. bool Check_MainFlashProtectSpecialRev(void)
  33. {
  34. u16 temp;
  35. temp = *(__IO u16*)(0x1FFE0000);
  36. if (temp != 0xFE01) {
  37. return false;
  38. }
  39. temp = *(__IO u16*)(0x1FFE0002);
  40. if (temp != 0xFF00) {
  41. return false;
  42. }
  43. temp = *(__IO u16*)(0x1FFE0004);
  44. if (temp != 0xC03F) {
  45. return false;
  46. }
  47. temp = *(__IO u16*)(0x1FFE0006);
  48. if (temp != 0xFE01) {
  49. return false;
  50. }
  51. return true;
  52. }

作者: SnailWillow, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3931539.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
相关推荐阅读
SnailWillow 2020-11-30 15:56
Ubuntu 16.04 LTS 搭建Nuttx开发环境
sudo apt-get updatesudo apt-get install automake bison build-essential flex gcc-arm-none-eabi gperf ...
SnailWillow 2020-11-26 16:31
MM32 MCU UART 9bit通讯功能
UART 9bit通信的作用是第9bit用于标识是地址或数据,第9bit 为1标识是从机地址,为0标识是数据,此外UART通信的第9bit也可作为数据的同步帧位使用。在双机通讯中,UART的8bit通...
SnailWillow 2020-11-24 13:32
MM32 MCU LIN接口
  随着汽车电子技术的高速发展和广泛应用,实现智能化和网络化是汽车发展的必然趋势。为简化日益增加的汽车电控设备的线路连接,提升系统的可靠性和故障诊断水平,实现各电控设备之间的数据资源共享,并...
SnailWillow 2020-11-18 16:27
Linux下MM32开发环境的搭建
一、 安装eclipse IDE for C/C++ developers1.准备工作需要下载两个软件包(1)JDK:http://www.oracle.com/technetwork/ja...
SnailWillow 2020-11-18 11:01
MM32 MCU Toolbox简介
MM32 MCU ToolBox主要是协助FAE解决、分析和追溯客户端的芯片的定位工具,也面向MM32 MCU用户,方便MM32 MCU用户快速定位程序进入Hardfault的原因以及脱离IDE对芯片...
广告
我要评论
0
0
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /2 下一条