所谓的flashboot就是将用户主程序烧写至flash片中,然后加电开机实现主程序的自动载入和启动过程。关于程序对flash的烧写本文不做讨论,主要是熟悉flash芯片的一些参数、烧写规则,以及存储起始地址的分配等,编写简单的C程序即可实现,并且需要对cmd文件进行必要的修改,后面会发帖对cmd文件进行详细介绍。
先了解一下flash烧写的几种方法。一般来说有两种。1、自带软件烧写。2、利用仿真器,自编程序实现。本文主要讲述的是后一种方法,即编写烧写程序,实现主程序的烧写。
介绍一下自己的开发平台。一块开发板,一个USB仿真器,一台PC,软件是CCS2.2。
要实现flashboot还得了解系统的启动过程。对于C6000系列来说,开机加电以后,系统会自动加载flash的前1K空间的数据复制到内存的0x0开始的地址空间,并从0x0处开始运行程序。因此如果我们的主程序是大于1K的话,那么必须做二次引导才能实现载入。这里本文讨论二次引导。
要实现二次引导,必须得增加一个二次载入程序,该程序必须小于1K,用于对用户程序的载入,一般用汇编语言实现。源代码此处不做讨论,可以参考合众达的程序。主要实现几个功能:分别载入用户主程序的cinit段和text段,完成后跳转至用户主程序的入口地址开始执行。这里要注意的是用户主程序与二次载入程序在编译的时候是作为一个整体工程进行编译的,由cmd文件来控制两个程序分别占用的内存空间,然后通过烧写程序将这一个混合编译好的程序写入flash中,即可实现flash的自启动过程。