共7条
1/1 1 跳转至页
[原创]TI Stellaris片上flash代码保护
TI Stellaris片上flash代码保护 简介 代码的安全性已成为现代嵌入式系统极为重要部分。代码保护要求的范围也越来越广,从标记为只读的flash存储区块,完全禁止来自外部硬件设备调试的访问。 Stellaris®系列微控制器包含内置的代码保护功能,以满足客户多样化的保护需要。本应用笔记讨论一些这些保护功能及其局限性。 Flash区块保存 Stellaris微控制器可以通过软件配置,将片上flash的每一块(每块大小为2KB)均进行安全设置。位于系统控制地址区域里的flash读保护使能寄存器(FMPRE)与flash编程保护使能寄存器(FMPPE)控制着片上flash的安全属性。每2K的flash块在FMPRE与FMPPE寄存器里都有相对应的位,因此可以组合出多种flash读写安全属性。片上flash只能在永久锁定之间进行debug调试测试。 想了解更多关于片上保护寄存器的编程信息,请访问该系列datasheet的“片上内存”章节。 只运行保护 只运行保护使用片上flash只能运行,但是不允许再次编程与读取。该模式的典型应用于器件仍需要调试,但是某部分代码需要保护而不被外部调试器读取的情况。例如某公司欲出售其已经预编程的stellaris芯片,这样用户不仅可以调试其自己的代码,也可以保护公司的源代码不泄露,诸如内置了电机驱动模块在flash上,用户自己来配置自己的电机控制方案。 接下来介绍一下保护机制下的缺陷及解决方案。当C代码编译并链接后,编译器会将常量等文本数据类型的数据放在各个函数之间的数据区域。文本数据在程序运行时通过LDR指令来调用并加载入内存。LDR指令会在Cortex-M3的DCODE总线上执行操作,但受限于“只运行保护”机制。如果要访问的区域被“只运行保护”机制保护,那么此操作将会被禁止,处理器将不会加载所需要的常量,因此,正确的运行将被中止。可以通过以下三种方案来解决此模式下的正常读写文本数据: 方法一:通过对编译器的相关参数配置,将文本数据存入于一个单独可读的flash区块。注意LDR指令使用了PC指针的偏移地址,因此,要保证文本数据区域在偏移指令指向的地址范围内。 方法二:使用编译器,通过算术指令生成需要的文本数据。 方法三:如果编译器不支持上述两种方法,就使用汇编完成上述两种方法。 很遗憾,在此篇文章撰写时,尚无编译器支持方法一、二。也许现在的编译器可以达到了。
关键词: 原创 Stellaris 片上 flash 代码
共7条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【我想要一部加热台】使用8051单片机驱动WS2812被打赏40分 | |
【换取逻辑分析仪】rtthread添加RRH62000传感器驱动-基于野火启明6M5被打赏48分 | |
换逻辑分析仪+Verilog多输入门被打赏27分 | |
【换取逻辑分析仪】基于ESP32和LVGL的音频数据动态显示系统被打赏48分 | |
与电子爱好者谈读图四被打赏50分 | |
Let‘s do 第三季 [电子测光表] 基础任务和进阶任务成果展示被打赏50分 |