要在stm32上运行ecos系统,首先要让redboot启动起来,然后再去引导ecos的运行。本节主要介绍在stm32开发板上移植redboot并让其从CPU内部flash启动。
redboot的作用
redboot是ecos的一部分,具体的说,它是ecos系统的一个最小实现,主要用作bootloader,用于引导OS的启动。可以引导的OS不仅仅是ecos本身,还包括像linux等其它操作系统。
说起bootloader,很多人可能马上就联想到了u-boot,是的,你现在可以把redboot视为像u-boot一样的东西。
为什么要从CPU内部ROM启动
之所以移植的redboot从CPU内部flash启动而不是从内部RAM或者外部SRAM启动,主要是移植步骤最简单,几乎不需要做任何的修改就可以运行起来。
移植redboot到stm32开发板
1.,如果没有搭建好ecos开发环境的,请阅读这篇文章:ubuntu9.10中安装eCos并建立eCos开发环境
2,打开ecos图形配置工具configtool,如下图所示。
下图中,左边窗口为ecos的配置项窗口,右边窗口从上到下分别为:冲突提示窗口、配置项属性窗口、配置项说明窗口。
3,设定ecos代码仓库(Repository)位置
获取ecos最新代码,请查看这篇文章:使用TortoiseCVS获取最新的eCos源代码
在ecos图形配置工具configtool界面中,点击Build->Repository,如下图所示。
配置好ecos代码仓库位置后,configtool会重新载入内容。
4,选择模板(Template)和目标(Target)及软件包(Package)
在ecos图形配置工具configtool界面中,点击Build->Templates,在Templates界面中,先选择目标板,即在Hardware中选择“ST STM3210E EVAL board”,然后选择模板即在Package中选择“redboot”,最后点击OK。如下左图所示。
点击OK后,可弹出一个冲突提示按钮,如下右图所示。不过不要紧,点击Continue按钮即可,configtool会帮我们自动解决这些冲突的。
5. 导入redboot-ROM的最小配置
在ecos图形配置工具configtool界面中,点击File->Impor,如下左图所示,然后会出现如下右图所示的界面。
在上面右图界面中,去设定的ecos软件仓库的如下路径找到redboot-ROM的最小配置文件:
你的ecos软件仓库路径/ecos/packages/hal/cortexm/stm32/stm3210e_eval/current/misc
在该路径下有一个名为:redboot_ROM.ecm的文件,这个就是redboot-ROM的最小配置文件。ecos是一个可配置系统,配置后会产生一个后缀为.ecc的文件。而.ecm文件则是ecos的最小配置文件,与.ecc文件比较起来,.ecm文件去掉了.ecc文件中的注释,所以文件大小非常小。
导入后,会提示有冲突,如上述方法一样,点击continue让ecos的配置工具自动解决冲突。然后点击OK按钮,完成redboot_ROM最小配置文件的导入。
6.,设置串口波特率并保存配置
经上述步骤后,接下来我们确定下redboot的启动方式并设置debug串口的波特率。
在ecos图形配置工具configtool界面的配置项窗口(左边的主窗口)中,依次找到:
eCos HAL—>Cortex-M Architecture—>Cortex-M3/-M4 STM32 Variant—>ST STM3210E EVAL Development Board配置项,如下图所示。
首先确定redboot的启动类型(上右图中的Startup type配置项),根据我们导入的最小配置文件,默认情况下是ROM,所以不需要修改,这里我们需要修改下串口波特率(上右图中的Console serial port baud rate配置项),修改为115200。
至此,我们完成了redboot的配置。配置完成后,在ecos图形配置工具configtool菜单栏中点击保存按钮,选择好路径,并拟定好配置文件的名称,我取名为redboot.ecc。
保存后,会在保存路径下产生两个文件夹,其中,xxx_build用于存放编译的目标文件;xxx_install存放最终产生的目标文件和库文件等(xxx表示你保存时取得配置文件名称),如下图所示。
7,编译
首先,确定你的编译器的位置。在ecos图形配置工具configtool界面中,如下图所示。
设定编译器,在ecos图形配置工具configtool界面中,点击Build->Library或者直接按F7,开始编译。在configtool的底部窗口,可以看到编译进展,最后看到finish提示时,表示编译完成,如下图所示。
这时会在redboot_install文件夹下的bin目录下有目标文件,如下图所示:
8.,烧写redboot.bin到stm32 CPU内部flash
接好J-Link,然后给板子上电,打开J-Link的J-flash ARM软件。如下图所示。
然后点击File->Open data file…,选择产生的redboot.bin文件,会提示你输入开始烧写地址。默认起始地址是0,由于STM32 CPU内部flash起始地址是0×08000000,因此,这里我们输入这个地址,设定后,点击OK按钮。如下图所示。
点击Target->Connect,连接J-Link,然后点击Target->Auto或者直接按F7开始烧写redboot.bin。
9. 启动redboot
烧写好redboot.bin后,就可以启动redboot了,如下图所示。
到此,初步完成了redboot的移植。别看上面步骤很多,实际上很简单,只是说起来比较繁琐些。如果你按照上述的步骤进行操作,一般不会出现问题,可以很顺利的看到redboot的启动信息。