eCos可配置性的一点解释
来源:互联网 发布:淘宝怎么交易游戏账号 编辑:程序博客网 时间:2024/05/16 18:07
上周末参加了上海开源软件的活动,认识了RT-Thread的发起者,为身边有那么多技术的狂热者感到高兴。
他们在几年的时间把RT-Thread做的这么优秀真的很辛苦,在这里支持他们一下。
会议中讨论到了RTOS的配制性,觉得这个问题可以讨论的更清晰些,这里针对eCos可配置性的实现稍作介绍。
1.编译文件可配置
eCos操作系统是一个结构化相对清晰的RTOS,按照不同的功能把系统的分为若干组件,这些组件分布在eCos代码的不同目录中。
通过eCos的CDL配置脚本,可以选择那些组件那些文件需要编译到eCos系统中。
因为这个配置是文件级别的,我认为这部分是编译的文件可配置。
这里如果我们在配置界面中把Nano-X Server/Client方式选择后,就可以把nano-x的代码加入到eCos的microwindows中了
图形配置界面
CDL代码的实现
cdl_component CYGBLD_MICROWINDOWS_NANOX_SERVER { display "Nano-X Server/Client" default_value 1 implements CYGBLD_MICROWINDOWS_NANOX_SETUP # NANO X compile\ nanox/srvmain.c\ nanox/srvfunc.c\ nanox/srvutil.c\ nanox/srvevent.c\ nanox/srvclip.c\ nanox/srvnet.c\ nanox/clientfb.c\ nanox/client.c\ nanox/error.c\ nanox/nxdraw.c\ nanox/nxproto.c\ nanox/nxutil.c
2.预编译可配置
我所提到的预编译主要是指我们通常所说的预编译宏,我们可以在代码中根据这些宏定义决定在程序中编译那部分代码。
图形配置界面
实现配置的脚本
description "Touch screen driver for the MINI2440"cdl_option CYGPKG_DEVS_TOUCH_BLOCKREAD { display "touch driver is blockread method" flavor bool default_value0 description " This option modifies the touch driver read method to blockread or not." }
代码中是如何根据配置来编译的
static Cyg_ErrNo ts_lookup(struct cyg_devtab_entry **tab, struct cyg_devtab_entry *st, const char *name){ if (!_is_open) { _is_open = true;#if CYGPKG_DEVS_TOUCH_BLOCKREADcyg_drv_mutex_init(&res_lock);cyg_drv_cond_init(&res_wait,&res_lock);#endif cyg_drv_interrupt_create(CYGNUM_HAL_INTERRUPT_ADC, 0, (CYG_ADDRWORD)0, cyg_mini2440_ts_isr, cyg_mini2440_ts_dsr, &ts_thread_handle, &ts_thread_data); cyg_drv_interrupt_attach(ts_thread_handle); cyg_drv_interrupt_unmask(CYGNUM_HAL_INTERRUPT_ADC); } return ENOERR;}
3.编译选项的可配置
有时候为了提高运行效率或者打开编译器的某些调试选项,我们常常要为编译器加入特定的参数。
比如 -O2 为GCC加入2级优化, -g 开启调试选项,在编译好的可执行文件中加入更多的调试信息。
配置界面
实现配置脚本
cdl_component CYGPKG_MICROWINDOWS_OPTIONS { display "Build options" flavor none no_define description " Package specific build options including control over compiler flags used only in building this package, and details of which tests are built." cdl_option CYGPKG_MICROWINDOWS_CFLAGS_ADD { display "Additional compiler flags" flavor data no_define default_value { "-I$(PREFIX)/include/microwin -D__ECOS=1 -DMSDOS=0 -DELKS=0 -D__rtems__=0 -D_MINIX=0 -DNOTYET=0 -DUNIX=1 -DHAVE_FILEIO -DHAVE_BMP_SUPPORT=1 -DHAVE_PNM_SUPPORT=1 -DHAVE_XPM_SUPPORT=1 -DxHAVE_JPEG_SUPPORT=1 -DHAVESELECT=1" } description " This option modifies the set of compiler flags for building the MicroWindows package. These flags are used in addition to the set of global flags." } cdl_option CYGPKG_MICROWINDOWS_CFLAGS_REMOVE { display "Suppressed compiler flags" flavor data no_define default_value { "" } description " This option modifies the set of compiler flags for building the MicroWindows package. These flags are removed from the set of global flags if present." } }
- eCos可配置性的一点解释
- 关于STM32 FLASH上运行ecos的内存配置的一点解释
- 嵌入式可配置实时操作系统eCos
- 关于可配置工作流的一点想法
- eCOS--可裁减的实时操作系统
- 关于sevlet的一点尝试性解释
- 软件可重用性的一点思考
- 软件可重用性的一点思考
- 软件可重用性的一点思考
- 关于可移植性的一点唠叨
- 软件可重用性的一点思考
- MEMCFG.S的一点解释
- cvCalEMD2函数的一点解释
- 关于.dequeue的一点解释
- java序列号的一点解释
- 《嵌入式可配置实时操作系统eCos开发与应用》第2版 配套光盘 资料下载
- ecos 图形化配置
- eCos编译配置说明
- SOCKET编程经验总结
- 条件循环一些小知识点
- 实现分组效果的
- 与Janet关于敏捷测试若干问题的Q&A
- 对send()的理解
- eCos可配置性的一点解释
- 第六章 关于POP_UP MENU
- VC下使用stl如何摆脱MSVCP60.dll?
- sql 2005数据库加密
- 日期减少一天的C函数实现
- UpdatePanel.Triggers
- 数据持久化(转)
- Oracle 绑定变量 详解
- C++程序性能总结