在stm32移植ecos #4,移植redboot(ROM启动方式)上篇和stm32移植ecos #5,移植redboot(ROM启动方式)下篇两篇文章中,详细介绍了redboot的移植过程,且烧写到内部flash后可正常启动。
在stm32移植ecos #6,redboot的疑问和问题,redboot是必需的吗?文章中讨论了在我们的应用中redboot是否必需的问题。
接下来移植ecos,在此基础上运行一个最基本的helloworld程序。在移植过程中,我先后采用了两种方法并都成功运行。一种方法是在redboot下引导运行内存中的helloworld程序;另一种方法是把映像烧写到内部flash中直接运行它。这两种方式对于ecos而言,只是它的启动类型配置不同而已。
为叙述方便并使读者有的放矢,把ecos的移植步骤分为几个章节分别介绍,读者可以选择的阅读。
本节主要介绍如何配置ecos并编译生成静态链接库文件。
引子
不像linux编译后会产生内核镜像文件,ecos本身被编译为一个静态链接库文件,最终与用户应用程序链接在一起,生成一个二进制烧写文件。redboot是一个特例,它编译后直接生成二进制烧写文件。这点需要明确并区别开来。
移植和配置ecos
前面章节中,我们在STM32平台上成功地移植了redboot。ecos本身设计为一个高度可配置的嵌入式OS,因此,移植和配置ecos本身就相对容易多了,只需要在ecos的图形配置工具中,把Templates中的Packages从redboot改为default即可。如下图所示。
其它步骤包括编译等参考stm32移植ecos #4,移植redboot(ROM启动方式)上篇和stm32移植ecos #5,移植redboot(ROM启动方式)下篇两篇文章的详细说明。
另外注意的就是启动类型和debug串品波特率的配置,其它的配置先暂时不用管。如下图所示。
当用redboot引导运行内存中的helloworld程序时,启动类型必须配置为RAM类型;当烧写到内部flash直接运行时,启动类型必须配置为ROM类型。这点必须十分注意。
配置并设置好编译路径后,就可编译出ecos静态库文件了。生成的静态链接库文件在生成路径下的ecos_install/lib目录,如下图所示。
其中,libtarget.a就是生成的ecos静态链接库文件,target.ld是链接说明文件,用于告诉编译器如何链接该库文件。
从上所述,把ecos生成静态链接库文件是相当容易的。相比其它OS,如UCOS、linux等,更加简洁明了。
推荐阅读相关文章:
- stm32移植ecos #8,移植ecos并成功运行helloworld程序,编译链接生成helloworld程序
- stm32移植ecos #11,使用自己的模板(Template)
- stm32移植ecos #10,移植ecos并成功运行helloworld程序,烧写到内部flash直接运行helloworld程序
- stm32移植ecos #9,移植ecos并成功运行helloworld程序,使用redboot引导运行内存中的helloworld程序
- stm32移植ecos #21,触摸屏tsc2046驱动移植
- stm32移植ecos系列文章归档
- stm32移植ecos #13,redboot引导启动flash中的应用程序映像文件(下)
- stm32移植ecos #12,redboot引导启动flash中的应用程序映像文件(上)
我觉得之所以要编译器库再和用户程序一起链接,是因为没有MMU,ecos本身也不支持mmu,没法动态加载程序吧。
兄弟,我的博客换了,换成jingzhiee.com,有空你改下友情链接。
怎么换域名了?
链接在一起,据我所知,并非MMU的缘故,而是由于当初OS设计时考虑了嵌入式资源。
我将博客折分成了两个,一个工作的,一人生活的,以后的侧重点就是jingzhiee.com