armboot的烧写和内核文件系统的烧写是最基本的,也是最原始的操作。但是对于以后整块板的分析是很有好处的,为下一步外围模块的添加做好了准备工作。
对于上面的烧写工作,我自己也有独到的看法。首先,为什么烧写armboot需要用JTAG?原因很简单,我们烧写的基本过程是这样的:先将需要烧写的镜像文件或者bin文件传送到内存的指定位置,然后再讲它拷贝到flash的指定位置(需要指定文件的大小)。在这里要注意,所有的erase操作和拷贝操作都是有一个前提,也就是在armboot运行的情况下,也就是说,如果我们将flash中的内容全部erase(擦除)之后,则这些擦操作将全部不能执行。所以,你要烧写armboot和内核文件系统,则必须先让armboot跑起来,这该如何解决呢?在这里,我们就借助AXD。先在串口进入armboot,此时已经将armboot拷贝到内存中运行,此时可以进行擦除操作了,将flash中的内容全部擦除。注意了这里是关键,假如现在系统重启,flash中什么内容都没有,自然所有的操作都失效,我们采用JTAG,将armboot导入到内存让它运行起来,这样的话,又可以执行擦除和复制操作了。现在我们先将内存初始化,再一次擦除flash,保证被擦除干净。这样的话,我们就可以继续烧写room.bin文件,其实这个文件时burn-in文件的镜像,完成的工作就是一些初始化,每次当系统启动之后,它和armboot都被调入内存运行,完成对系统的初始化。
在完成armbootroom.bin的烧写之后。接下来最重要的就是内核文件系统的烧写了。同样,步骤无非就是将映像文件先用tftp传送到内存,然后将flash里面固定的地址空间擦除,然后再将内存中的内容拷贝到flash,需要指定flash中的起始地址和文件的大小(文件的大小会在tftp的传输过程中显示)。