在上一节中,详细介绍了如何使用redboot引导内存中的helloworld程序。也许这时会有人问:如何使用redboot引导flash(如spi接口flash或者外扩NAND FLASH等)中的helloworld程序呢?这个工作我暂还没做,因为还涉及到redboot中flash管理、分区等相关问题。
本节主要介绍另一种方法来启动执行helloworld程序,即把该目标执行程序烧写到stm32内部flash中直接运行(上电或复位后直接运行helloworld程序),无需使用reboot来引导运行。
1. 配置ecos的启动类型为ROM类型
这是关键一步,使用ecos图形配置工具配置ecos的启动类型(Startup type)为ROM类型,如下图所示。
2. 重新编译
重新配置ecos启动类型后,重新编译ecos,然后也记得重新编译helloworld程序。编译方法详见:http://velep.com/archives/551.html
3. 把helloworld目标执行文件下载到flash中
使用J-Link或者串口工具把编译后得到目标执行文件hello.bin或者hello.srec下载到stm32内部flash中,注意内部flash的地址,不要弄错了。具体下载方法在这里不再做说明。
4. 重上电或复位启动执行
下载完成后,重新给板子上电或者复位板子,则可在调试串口(COM0)中看到helloworld输出信息,如下图所示。
5. 总结
至此,通过7,8,9,10等4个章节,我们初步完成了ecos系统的移植,并介绍了采用两种方法来运行我们的helloworld应用程序。到这里,我们应该对ecos的开发有了初步的了解。有木有?
接下来我们还有很多工作需要去完成,如下所述几个方面:
- 裁减ecos,按需配置功能组件和软件包,该留则留,不需要的则去掉;
- 编写或者移植相关硬件驱动;
- redboot中实现对flash的初始化和分区管理;根据之前的观察,redboot中可识别到有哪些flash,但不能执行对flash的初始化和分区管理,如果这一步解决了,则使用redboot引导flash中的用户应用程序则是水到渠成的事了;
- 根据应用需要,编写用户应用程序;
以上的工作都是繁琐而复杂,需要一步一步的来做。计划今年一个人完成这些事情。
推荐阅读相关文章:
- stm32移植ecos #9,移植ecos并成功运行helloworld程序,使用redboot引导运行内存中的helloworld程序
- stm32移植ecos #8,移植ecos并成功运行helloworld程序,编译链接生成helloworld程序
- stm32移植ecos #7,移植ecos并成功运行helloworld程序,配置编译生成静态链接库文件
- stm32移植ecos #21,触摸屏tsc2046驱动移植
- stm32移植ecos系列文章归档
- stm32移植ecos #13,redboot引导启动flash中的应用程序映像文件(下)
- stm32移植ecos #12,redboot引导启动flash中的应用程序映像文件(上)
- stm32移植ecos #11,使用自己的模板(Template)
能将enc28j60网络模块移植上去不?
enc28j60是个spi接口的网卡芯片,如果熟悉ecos也熟悉ecos网卡驱动的话,那就很容易的事了。
网卡驱动有的,不知道怎样连上SPI
如没错的话,要实现网卡驱动相关的函数,比如read、write等函数,在这些函数中则可以直接调用spi的接口函数来操作网卡相关寄存器
兄弟,等哪天你裁个能在stm32f103vc上用的ecos时告诉我一声,我也玩玩
好的啊,不过,不知道要何时啊
其实我之前也了解过ecos,甚至买了本书来看。不过一直没实用,也就不了了之。手头上有块这样的stm32板,不过板上不支持外部sram。如果ecos在stm32上必须要sram才能完整跑起来,那在很多m3芯片上就显得有点鸡肋了,还不如上freertos这些。
那说明你还没了解ecos,可知道,ecos最小可编译到10K以下甚至达到2K。
问题是,比较最小体积没有任何意义,带上OS后,还是要看应用需求,有些应用如网络协议栈本身就需要较多的RAM资源。
因此,关键还是要看应用需求!选用什么OS,很多是从应用需求和成本(包括人力开发成本)考虑的。
这倒是,资源不够时,要么换芯片,要么换系统,再要么精简程序。
兄弟,你能不能精简下,最好能在stm32f103vc上跑,我这正好有个这种板子,我也弄弄。另外,ecos在windows的开发环境不好搭建吧,cygwin这种还是不太方便
我也想尽快把移植弄完,只是身在南京,冒时间冒条件啊
没用cygwin,用的是linux的那套开发环境,这开发环境挺容易搭建的,装个虚拟机,安装好交叉编译器就可以用了
Linux我装了,回头我也试试。仿真器你用的是j-link还是openocd?
J-link,你都弄过linux了,这个开发环境对你应该是小事小桩啦
我在Linux用过J-LInk,OPenOCD也用过。不过没目标,所以没深入玩。一会儿我试试吧,也弄弄ecos。
ecos国内玩的人少,不知道你怎么想起弄这个?国内不是还有rt-thread,貌似挺火的
上年一项目中用到了,所以产生了一点兴趣