要在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最小配置文件的导入。
推荐阅读相关文章:
- stm32移植ecos #6,redboot的疑问和问题,redboot是必需的吗?
- stm32移植ecos #5,移植redboot(ROM启动方式)下篇
- stm32移植ecos系列文章归档
- stm32移植ecos #12,redboot引导启动flash中的应用程序映像文件(上)
- stm32移植ecos #9,移植ecos并成功运行helloworld程序,使用redboot引导运行内存中的helloworld程序
- stm32移植ecos #21,触摸屏tsc2046驱动移植
- stm32移植ecos #13,redboot引导启动flash中的应用程序映像文件(下)
- stm32移植ecos #11,使用自己的模板(Template)
请问configtool怎么编译?
configtool已经有编译好的可执行程序,你确定需要自己编译?
按照教程,将生成的bin烧写到stm32f103rdt6中,连接串口上电,结果没有反应,没有任何打印输出。希望受到指点。
你的板子应该没有外扩RAM吧,如果没有,则需要修改stm3210e-eval模板
感谢你的回复。想问下,在哪儿修改、怎么修改呢。我是刚学习ecos的菜鸟,请多指教….
你可参考下这个开源工程:http://52ecos.net/thread-487-1-1.html,这个开源工程用的板子配置跟你的差不多
谢谢。周末来试试。
你好,又要请教你了。根据你的提示,我把原模板拷贝了一份,然后根据你提供的开源工程的例子并修改其中的CDL及源码、LDI等文件。但是编译时提示缺失 CYGHWR_MEMORY_LAYOUT。是我修改的问题么,我是用记事本打开直接修改的。
应该有些主谁的没有修改完全,包括头文件的修改等等!
我按照教程的说明,怎么没有成功呢。