您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > eCos环境搭建以及Hello--world小例程
基于STMicroelectronicsSTM32F4DiscoveryeCos嵌入式实时操作系统开发环境一、建立开发环境a)环境介绍i.宿主机:ubuntu12.04LTSx86_64操作系统。ii.开发机:STMicroelectronicsSTM32F4Discoveryboard。b)搭建开发环境i.安装TCL:sudoapt-getinstalltclii.安装32位运行环境:sudoapt-getinstallia32-libsiii.下载eCos安装脚本:wget--passive-ftp执行安装脚本:shecos-install.tclv.执行后出现如图所示选单,选择安装源,尽量选近的,可以加快下载速度。vi.此处我们选择eCos的官方源25,输入25并回车,出现如图提升,选择安装路径,此次保持默认即可,直接回车。也可以自己更改。vii.然后选择工具链,包括ARM、MIPS、X86等,此处我们只需要ARM工具链即可,输入1,然后回车,选择ARM工具链,然后输入q,回车确认。此时系统自动开始下载。viii.此时eCos配置工具还不能用,因为配置工具比较老,是用的比较老的stdlibc++.so.5,而现在的发行版都用的是stdlibc++.so.6,解决方法之一是下载较老的标准c++库,sudoapt-getinstalllibstdc++5。另外一个方法是采用比较新的配置工具,wget如果采用的是较新的配置工具,那需要做一些处理。下载完成以后在当前目录会出现一个名为ecos的文件夹,这个就是我们下载eCos工具,为了方便,我将它移动到/opt目录下,供所用用户使用。1.sudomvecos/opt2.然后我们需要替换其中的配置工具为最新编译的版本,如果安装了libstdc++.so.5,此处可以跳过。3.sudomvecos-tools-bin-110209.i386linux.tar.bz2/opt/ecos/ecos-3.0/tools/bin/,此处/opt请更具实际情况自行替换。然后进入该目录cd/opt/ecos/ecos-3.0/tools/bin/解压该文件,tarxvfecos-tools-bin-110209.i386linux.tar.bz2x.接下来是配置环境变量。1.gedit~/.profile,在最后添加两条命令#addandseteCosenvironmentexportPATH=${PATH}:/opt/ecos/gnutools/arm-eabi/binexportPATH=${PATH}:/opt/ecos/ecos-3.0/tools/bin注意,/opt需要根据实际情况修改,视下载的ecos文件夹所在目录而定。2.此时退出登录,然后重新登陆,或者是执行source~/.profile即可使修改的环境变量生效。3.测试环境,在终端上输入arm-eabi-gcc–v,将会出现如下提示在执行configtool,则会出现如下界面此时说明eCos的环境以及搭建好了。二、获取最新的HG源码,此处推介使用tortoiseHGa)Sudoapt-getinstalltortoisehg,安装水银。b)同步源码i.打开tortoiseHG,如图ii.执行ctrl+shift+n,新建克隆,如图目的地址(Destination)可以自己修改,然后单击clone,即可从官方下载最新的源码。三、编译个一点灯程序,相当于c语言的helloworlda)在终端执行configtool然后选着build选单下的repository,并修改为tortoiseHG的下载的ecos源码路径,此处即为/home/share/source/ecos,请根据实际情况修改。b)然后选择build选单下的templates,因为官方已经有我们用的这块开发板的移植,所以直接使用即可。如图c)确认后出现如下界面,选择continue出现如图所示界面找到eCosHAL-Cortex-MArchitecture-Cortex-M3/-M4STM32Variant-STM32processorselection,如图将STM32processorvariantinuse的值改委F407VG,然后continue然后在同一选单下方找到STMicroelectronicsSTM32F4-Discoveryboard,将Starttype改为ROM然后按图中的编译按钮出现resolveconflicts界面,直接continue,然后选择生成工程的路径此处我选择/home/share/project/led一段时间以后,下方信息栏出现buildfinished.说明编译已经完成。d)此时仅仅是将我们选择的操作系统模块编译成一个库,我们还需要将与我们的应用程序链接起来。i.找到ecos目录下的examples文件夹,将其中的build_Makefilebuild_Make.params拷贝到我们的工程根目录/home/share/project/led,此时该目录下应该有生成的ecos库文件以untitled开头。ii.然后编写led.c,代码如下#includecyg/kernel/kapi.h#includestdio.h#includestdlib.h#includecyg/hal/var_io.h#includecyg/io/io.h/*nowdeclare(andallocatespacefor)somekernelobjects*//*spaceforledthreadobjects*/cyg_threadthread_s;/*spacefortaskstacks*/charstack[512];/*nowthehandlesforthethreads*/cyg_handle_tthread_led;/*andnowvariablesfortheprocedurewhichisthethread*/cyg_thread_entry_tled_blink;/*weinstallourownstartuproutinewhichsetsupthreads*/voidcyg_user_start(void){cyg_thread_create(4,led_blink,(cyg_addrword_t)0,LedThread,(void*)stack,512,&thread_led,&thread_s);cyg_thread_resume(thread_led);}/*thisisasimpleprogramwhichrunsinathread*/voidled_blink(cyg_addrword_tdata){intn;n=0;for(;;){cyg_thread_delay(100);CYGHWR_HAL_STM32_GPIO_OUT(CYGHWR_HAL_STM32F4DISCOVERY_LED1,0!=(n&0x1));CYGHWR_HAL_STM32_GPIO_OUT(CYGHWR_HAL_STM32F4DISCOVERY_LED2,0!=(n&0x2));CYGHWR_HAL_STM32_GPIO_OUT(CYGHWR_HAL_STM32F4DISCOVERY_LED3,0!=(n&0x4));CYGHWR_HAL_STM32_GPIO_OUT(CYGHWR_HAL_STM32F4DISCOVERY_LED4,0!=(n&0x8));n++;n&=0x100;}}iii.依次执行build.Makeparamsbuild.Makefile,然后编辑生成的Makefile,将SRCS改为SRCS=led.c,保存退出,然后执行make,即可在路径下生存led,这是一个ELF文件,我们还需要将他转换为bin文件以供烧写。iv.arm-eabi-objcopy–Obinaryledled.bin将elf转为bin.v.此时我们可以将生成的led.bin烧写到芯片中。
本文标题:eCos环境搭建以及Hello--world小例程
链接地址:https://www.777doc.com/doc-7160009 .html