搜索
bottom↓
回复: 6

如何配置djyos,以EKK8962板为例

[复制链接]

出0入0汤圆

发表于 2010-1-11 15:01:17 | 显示全部楼层 |阅读模式
嵌入式产品,几乎每一款都是独特的,而且许多情况下资源还是很紧张的,设计者希望高效利用有限的资源,这样,操作系统的配置就非常重要,合理的配置,能够使操作系统既能满足应用需求,又降低flash和内存消耗。按默认配置的版本,资源开销如下:
    Total RO  Size (Code + RO Data)                23800 (  23.24kB)
    Total RW  Size (RW Data + ZI Data)             10128 (   9.89kB)
    Total ROM Size (Code + RO Data + RW Data)      24220 (  23.65kB)
上述数据未包含流水灯事件、shell事件、uart守护事件和键盘守护事件所需要的运行栈。

1、djyos的目录结构
\djyos\si-------------------------------------------------------------总目录
\djyos\si\djyos-----------------------------------------------------所有不需要移植的内核代码
\djyos\si\arch------------------------------------------------------所有需要移植的内核代码
\djyos\si\arch\cortex-m3----------------------------------------cortex-m3的公共代码
\djyos\si\arch\cortex-m3\luminary-------------------------------Ti公司的m3的公共代码
\djyos\si\arch\cortex-m3\luminary\ekk8962-----------------------ekk8962板子的代码
\djyos\si\prj-ekk8962-------------------------------------------应用程序工程目录
\djyos\si\prj-ekk8962\include\config-prj.h----------------就它了,操作系统的裁剪就是由这个文件控制的。
\djyos\si\prj-ekk8962\*.scat------------------------------keil版本的链接配置文件,修改它可以改变异常和中断的栈尺寸。

2、配制方法
把配置放在工程目录中,有一个好处,就是不同的工程,对操作系统的组件有不同的要求,只要改自己目录下的config-prj.h文件就可以了,操作系统代码可以保持不变。

djyos的配置是通过定义各种常量来实现的,下面分组说明这些常量的含义。

2.1配置主频
同一个板子,应用于不同工程时,主频可能不同,在这里配置。
#define M   1000000
#define cn_mclk         (50*M)      //主频
#define cn_fclk         cn_mclk     //cm3自由运行外设时钟
#define cn_xtal         cn_rcc_xtal_8mhz        //主振频率

#define cn_tick_ms      1       //操作系统内核时钟脉冲长度,以毫秒为单位。
#define cn_tick_hz      1000    //内核时钟频率,单位为hz。
#define cn_fine_us      1       //操作系统内核精密时钟脉冲长度,以微秒为单位。
                                //它表示从上一次tick脉冲开始至今流逝的时间量。
#define cn_fine_hz      1000000 //内核精密时钟频率,是cn_fine_us的倒数。

2.2配置内核组件
djyos中事件控制块、锁控制块等所需要的内存是静态分配的,合理配置下列常数,能够很好地控制内存消耗。
#define cn_device_limit     20     //定义设备数量。
#define cn_handle_limit     20     //定义设备句柄数量。
#define cn_locks_limit      20     //定义程序中可用的自由锁的数量。自由锁指用户
                //调用semp_creat和mutex_create创建的锁,不包括嵌入到设备中的锁。
#define cn_events_limit     32     //事件数量
#define cn_evtts_limit      16     //总事件类型数
#define cn_wdt_limit        5      //允许养狗数量
#define cn_mem_pools        10     //允许建立10个内存池
#define cn_int_num          48     //lm3s8962有48个中断源
这些常数的含义及对内存开销的影响如下:
可创建设备数量:20,设备控制块开销1200字节。
可同时打开设备数量:20,设备句柄开销400字节
可使用的锁的数量:20,包含信号量和互斥量,锁控制块开销800字节。
事件数量:20,即事件队列中未处理完毕的事件数量上限,开销1680字节
事件类型数量:16,即应用程序登记的事件类型上限,开销1152字节
看门狗数量:5,即允许应用程序创建的看门狗数量上限,开销380字节
内存池数量:10,除从堆中分配外,djyos还提供类似ucosii的“批发-零售”式内存分配功能,内存池控制块开销800字节。
中断数量:48,中断控制块开销1344字节。注意,这里指的是lm3s8962版本能够支持的最大中断号,不是应用程序实际使用的中断数量。
用户可以根据自己工程的特点,灵活配置这些常量,控制资源消耗。例如,应用程序不需要那么多设备,就可以减少设备数量。

2.3配置外部组件和外设驱动
各常量中,1表示需要该组件,0表示不需要该组件。
#define cfg_keypad          1   //是否包含键盘驱动
#define cfg_djyfs           0   //是否包含文件系统
#define cfg_djyfs_flash     0   //是否包含flash文件系统的驱动
#define cfg_djyfs_ram       0   //是否包含ram文件系统
#define cfg_nude_terminal   0   //nude terminal是一个在启动时提供最基本的人机
#define cfg_uart0_used      1   //通过ftdi转成usb串口
#define cfg_uart1_used      0   //
#define cfg_uart2_used      0   //

除上述所列的配置项目外,还有一些其他项目,但这些项目不建议用户修改,除非有特殊需要。

3、配置栈
djyos for cortex-m3中,应用程序使用psp栈指针,异常和中断使用msp栈指针。异常和中断栈的尺寸配置为1K,如果应用程序的ISR没有用到这么多的栈,也可以通过修改链接配置文件(arm的术语叫分散加载文件),以节省内存。
    heap_top 0x20010000-0x400 EMPTY 0
    handle_msp +0 EMPTY 0x400
这句中,0x20010000是lm3s8962内存最高地址+1,0x400是异常和中断的栈尺寸,改动这个参数即可。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-1-31 20:52:54 | 显示全部楼层
顶!
也座个沙发感觉下哈

出0入0汤圆

发表于 2010-1-31 20:56:23 | 显示全部楼层
呵呵,顶一下。希望以后也能形成一个类似开源社区的组织,一起讨论,互相进步

出0入0汤圆

发表于 2010-2-9 19:57:12 | 显示全部楼层
DJY目前支持几个编译器,目前是不是Keil

出0入0汤圆

 楼主| 发表于 2010-2-9 20:00:46 | 显示全部楼层
V0.4.1以前是gcc,之后是keil,精力有限,只能维护一种版本。

出0入0汤圆

发表于 2010-2-10 07:43:15 | 显示全部楼层
LZ能不能上传一个在EKK8962跑的KEIL例程,这样感觉上手更快点啊

出0入0汤圆

 楼主| 发表于 2010-2-10 08:41:44 | 显示全部楼层
在本版下载帖 http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3866965&bbs_page_no=1&bbs_id=3065 中就有啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 22:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表