保护软件版权之 Scatter File文件

学习下面的文章

   1, ://www.cnblogs.com/qiyuexin/p/9026365.html

    2, https://blog.csdn.net/xlhcgd/article/details/45876175

   3,https://blog.csdn.net/dake_160413/article/details/73162766

如何保护我们的软件版权呢,

这是最近老想的问题,

    一种是芯片本身提供的保护措施,比如只读保护,写保护等

    第二种,程序本身做加密,如根据芯片的序列号来加密等措施,

    第三种,更高级的保护措施,我想是将程序段区别开来,bootload程序中包含APP的某部分(如A)程序,或某个函数

        IAP下载APP image文件,实际涉及程序A的部分没有含在其中,

        IAP程序先用烧录器烧写到芯片内部某个程序段,然后通过IAP程序,下载更新APP image文件,然后运行APP时,调用IAP中的A程序,或者跳到A程序执行,完了再回来

有哪位达人看到这里,考虑一下我这个思路是否正确,正在试图完善这个过程

1,什么时候使用SCATTER FILE呢?

a 存在复杂的地址映射:例如代码和数据需要分开放在在多个区域。

b 存在多种存储器类型:例如包含 Flash,ROM,SDRAM,快速SRAM。我们根据代码与数据的特性把他们放在不同的存储器中,比如中断处理部分放在快速SRAM内部来提高响应速度,而把不常用到的代码放到速度比较慢的Flash内。

c 函数的地址固定定位:可以利用Scatter file实现把某个函数放在固定地址,而不管其应用程序是否已经改变或重新编译。

d 利用符号确定堆与堆栈:

e 内存映射的IO:采用scatter file可以实现把某个数据段放在精确的地指处。

因此对于嵌入式系统来说scatter file是必不可少的,因为嵌入式系统采用了ROM,RAM,和内存映射的IO。

2,基本语法

a,BNF符号与语法

b,加载文件各部分描述

    加载区描述

    每个加载区有

ó名称:供连接器确定不同下载区域

ó基地址:相对或绝对地址

ó属性:可选

ó最大字节数:可选

ó执行区域列:确定执行时各执行区域的类型与位置

执行区描述  每个执行区有

ó名称:供连接器确定不同下载区域

ó基地址:相对或绝对地址

ó属性:确定执行区域的属性

ó最大字节数:可选

ó输入段:确定放在该执行区域的模块

例如

LOAD_ROM(下载区域名称) 0x0000(下载区域起始地址) 0x8000(下载区域最大字节数)
{
        EXEC_ROM(第一执行区域名称) 0x0000(第一执行区域起始地址) 0x8000(第一执行区域最大字节数)
       {
       *(+RO(代码与只读数据))
       }
      RAM(第二执行区域名称) 0x10000(第二执行区域起始地址) 0x6000(第二执行区域最大字节数)
      {
       *(+RW(读写变量), +ZI(未初始化变量))
      }
}

发布了8 篇原创文章 · 获赞 1 · 访问量 3630

猜你喜欢

转载自blog.csdn.net/qq_15548761/article/details/89646011