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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版