This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请问TI专家,关于CKFA



在其他网站看到CKFA,这个到底是什么啊?具体怎么用啊?希望能有比较详细的解释,谢谢!

  • feng,

    不知道你在哪里看到CKFA,但是C2000确实有一个应用文档提到过,Communication Kernel and Flash API (CKFA),即使用串口下载程序或在线升级时的代码,这部分代码实现通信协议,Flash烧写的功能。附件是这个应用文档。

    Eric

  • 在EEWORD的C2000区啊,上面也是ti专家说的,叫囧神来着,但是后来就都没更新了。

    谢谢啊,我看一下,就是英文不太好

     

  • CKFA就是串口升级或是下载程序时下载到RAM区域的注流代码,当芯片运行CKFA代码时,就接收上位机的程序,然后调用FLASH API将用户程序下载到FLASH中。

    Eric

  • 这个只是一个串行烧录的driver,CKFA起到的作用:

    1:初始化硬件

    2:获取串行数据信息,即hex文件内容

    3:flash解密

    4:解析相应程序地址 与长度

    5:烧录flash,及flash API

    6:一些自定义协议可以加入:比如对应sector擦除,程序跳转,flash verify等等

    CKFA需要通过C2000自带的boot rom进行导入,这个过程在boot模式配置好以后可以通过串行接口自动导入,boot rom会自动解析CKFA的程序;

    CKFA导入到RAM以后,自动运行,接下来就是CKFA里面自己写的内容功能了;

    可以把 CKFA分成两部分(1)和(2),这两部分都需要建立工程独立编译,这样做的目的就是为了适用不同的C2000芯片,因为无密码区的代码量很小;

    首先通过Boot Rom导入CKFA(1),这部分的作用就是初始化硬件,对C2000解密,然后把CKFA(2)导入到C2000,并且跳转到CKFA(2)运行,所以这部分的代码量要尽量写的小,能够直接在无密码的ram中运行;

    CKFA(2)的代码代可以比较大,因为此时C2000已经处于解密状态,剩下的工作都交给CKFA(2),包括解析目标文件,flash API(erase,flash,verify)等等。

    另外,可以通过PC端软件发送目标板的晶振数值给C2000,这样可以提高串行通讯波特率,毕竟用自动波特率和内部晶振,不能做到非常高的波特率。