你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32H750外挂flash程序加密问题

[复制链接]
思行一 提问时间:2019-1-2 16:30 /
悬赏20ST金币已解决
     因为STM32H750自带的FLASH太小,而工程文件超过这个flash的容量,所以需要外挂一块flash来存程序,但是此程序需要加密,然后就遇到了问题。如果我往里面存的是密文,那么我读取的时候就要解密,现在衍生了另一个问题就是我STM32是如何从flash读取指令并执行的?是读一句执行依据还是将flash里面的程序整体读到内部ram里面再执行的?如果是前者,那么我读密文程序指令的时候,还要先去解密再去执行,这样的话我整个程序运行的时间是怎样的呢?如果是后者,那么STM32又是怎样实现整体解密的呢?
     希望对程序加解密有经验的朋友能够给一点建议,多谢!

最佳答案

查看完整内容

要用外扩什么Flash,NorFlash?NandFlash?SPI Flash? 只是存数据的话,好办一些。如果还想从外部Flash执行程序,而且还是加密的,那么恐怕有点难度。 STM32执行程序既不是读一条执行一条,也不是全部搬到内部RAM执行,而是带流水的。 你的工程文件大,不全是运行程序吧,应该有不少是数据吧,那么可以分开存放。 ...
收藏 评论10 发布时间:2019-1-2 16:30

举报

10个回答
七哥 回答时间:2019-1-2 16:30:59
要用外扩什么Flash,NorFlash?NandFlash?SPI Flash?
只是存数据的话,好办一些。如果还想从外部Flash执行程序,而且还是加密的,那么恐怕有点难度。
STM32执行程序既不是读一条执行一条,也不是全部搬到内部RAM执行,而是带流水的。
你的工程文件大,不全是运行程序吧,应该有不少是数据吧,那么可以分开存放。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

wudianjun2001 回答时间:2019-1-4 09:58:38
同意楼上,存用户保存的数据的话加密解密好弄,存用户程序的话就不太好加密了吧

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

熊二在深圳 回答时间:2019-1-4 10:53:17
这个很简单的啊。加密的东西存在片内的FLASH。片外的FLASH只作为数据。你的工程再大,总不至于全部都是执行代码吧。其实也没有必要全部加密。如果需要全部加密,可以外加一个加密芯片。这样更保险

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

单片机爱好者 回答时间:2019-1-4 11:33:59
核心算法放在片内,外部放部分程序和数据。程序只做调用处理,参数加密就可以了,还可以增加ID加密,拷贝出去也没用

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

思行一 回答时间:2019-1-7 14:24:01
toofree 发表于 2019-1-4 09:21
要用外扩什么Flash,NorFlash?NandFlash?SPI Flash?
只是存数据的话,好办一些。如果还想从外部Flash执 ...

外扩Nor Flash,其实本身的执行程序不大,但是调用了一个DSP库的定点FFT之后整个工程就126k了,而H750的内部flash只有128k,所以寻求方法呢
思行一 回答时间:2019-1-7 14:25:45
笨熊 发表于 2019-1-4 10:53
这个很简单的啊。加密的东西存在片内的FLASH。片外的FLASH只作为数据。你的工程再大,总不至于全部都是执行 ...

其实外加加密芯片不可靠,因为将整个程序放到外部flash,可以绕开这块加密芯片将里面的程序读出来的。
思行一 回答时间:2019-1-7 14:28:10
toofree 发表于 2019-1-4 09:21
要用外扩什么Flash,NorFlash?NandFlash?SPI Flash?
只是存数据的话,好办一些。如果还想从外部Flash执 ...

我不是很理解STM32带流水执行程序,能否在解释下呢?谢谢
七哥 回答时间:2019-1-7 14:42:24
本帖最后由 toofree 于 2019-1-7 14:47 编辑
思行一 发表于 2019-1-7 14:24
外扩Nor Flash,其实本身的执行程序不大,但是调用了一个DSP库的定点FFT之后整个工程就126k了,而H750的内 ...

不加FFT和加FFT都编译一下,看一下生成的BIN文件各占多少?
按照你说的本身程序不大,那么我认为程序是不是只有三四十K?加个FFT应该不至于占八九十K吧!
如果程序大,也可能是常量数据大,那么常量数据放到NorFlash就好了。变量定义时都不要初始化,直接在程序运行开始时通过常量数组给变量数组赋初值。
思行一 回答时间:2019-1-7 14:46:43
toofree 发表于 2019-1-7 14:42
不加FFT和加FFT都编译一下,看一下生成的BIN文件各占多少?
按照你说的本身程序不大,那么我认为程序是不 ...

其实却是如你猜想的那样,我在map文件里面查看了。我如果使用浮点FFT的话只有40k左右,如果我调用的是q15定点FFT的话就变成126k了,就是bin文件的大小。
思行一 回答时间:2019-1-7 14:49:55
jy04706985 发表于 2019-1-4 11:33
核心算法放在片内,外部放部分程序和数据。程序只做调用处理,参数加密就可以了,还可以增加ID加密,拷贝出 ...

这样确实可以,但是是否会影响我整个程序的运行速率呢?您是否有尝试过?

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版