大家好,直接主题,我用的DSP为F28034,前几天突然有个想法,自己试了下不太好用,现在分享出来问下大家能不能实现,具体如下:
假如我有一段代码,这一段代码比较厉害,我不希望别人知道源代码也不希望别人有此代码的库文件甚至不希望别人有能下载的hex文件或者out文件。但是,我又希望我的这段代码能够允许其他人调用二次开发,怎么实现呢?
我的想法:我将28034的FLASH的一个区分离出来专用于下载我的这一段代码,假设为(修改cmd文件)
FLASHF : origin = 0x3EC000, length = 0x002000
这样,我将这一段FLASH 加入密码,也就是说二次开发人员不能擦除我这一段代码,这就保证了我的代码安全性,用户只能购买下载有我的程序的DSP才能使用我的这段程序。
那么,怎样留出接口供二次开发呢?
我的想法:向二次开发人员规定,我的这段代码的入口函数地址为FLASHF的起始地址(这通过CMD文件很容易实现),二次开发人员只需要让程序跳转到这一地址,就相当于调用了这个函数。传参可以通过规定指定的RAM地址进行,(CMD中划分出指定RAM地址用于交互)。
但是不幸的是,通过实际测试并行不通,遇到问题有:
1,我需要自己下载一次我的程序,用于刷新FLASHF区域,并且二次开发人员需要重新擦除偶五的main函数,自己重新新建CCS工程,但是,当我编译我的工程时发现,如果我不调用我的入口函数,此函数是不编译的(FLASHF区域无数据),即使我关了CCS优化
2,无论我采用何种方式,都不能将程序跳转到FLASH 地址0x3EC000
在此寻求帮助,谢谢大家了
mangui zhang:我觉得你可以将自己的部分封装为lib然后lib中的函数去读固定MCU颗粒的DNA
如果是你标记过得就能运行不是标记的就不能运行这样你看行不行
大家好,直接主题,我用的DSP为F28034,前几天突然有个想法,自己试了下不太好用,现在分享出来问下大家能不能实现,具体如下:
假如我有一段代码,这一段代码比较厉害,我不希望别人知道源代码也不希望别人有此代码的库文件甚至不希望别人有能下载的hex文件或者out文件。但是,我又希望我的这段代码能够允许其他人调用二次开发,怎么实现呢?
我的想法:我将28034的FLASH的一个区分离出来专用于下载我的这一段代码,假设为(修改cmd文件)
FLASHF : origin = 0x3EC000, length = 0x002000
这样,我将这一段FLASH 加入密码,也就是说二次开发人员不能擦除我这一段代码,这就保证了我的代码安全性,用户只能购买下载有我的程序的DSP才能使用我的这段程序。
那么,怎样留出接口供二次开发呢?
我的想法:向二次开发人员规定,我的这段代码的入口函数地址为FLASHF的起始地址(这通过CMD文件很容易实现),二次开发人员只需要让程序跳转到这一地址,就相当于调用了这个函数。传参可以通过规定指定的RAM地址进行,(CMD中划分出指定RAM地址用于交互)。
但是不幸的是,通过实际测试并行不通,遇到问题有:
1,我需要自己下载一次我的程序,用于刷新FLASHF区域,并且二次开发人员需要重新擦除偶五的main函数,自己重新新建CCS工程,但是,当我编译我的工程时发现,如果我不调用我的入口函数,此函数是不编译的(FLASHF区域无数据),即使我关了CCS优化
2,无论我采用何种方式,都不能将程序跳转到FLASH 地址0x3EC000
在此寻求帮助,谢谢大家了
早安咬Fan:
1. 在你自己的工程调用这个函数,编译后程序就在 FLASHF 相关区域(最好这个区域就只有这个你这个函数),
然后,通过设置生成 BIN 文件(网上搜一下过程),生成 BIN 文件的参数设置为,只生成提取这一段代码。
再写一个单独的工程,通过调用官方的 Flash API 将这一段代码的 BIN 文件烧到你需要的芯片里去,官方 API 好像是可以实现加密。
这个单独的工程,CMD 文件里要把 FLASHF 相关区域留出来用来烧写,要实现的功能为读取 BIN 文件和烧写 BIN 文件到 FLASHF 相关区域。
读取和烧写时,注意下大小端。
用户的工程,和这个单独的工程类似,CMD 文件里也要保留 FLASHF 相关区域。
2. 跳转的话,你这个是函数,要用函数指针的方式跳转。把这个地址转换成你的函数样子的指针。