struct rt_object parent; /**< inherit from rt_object */
enum rt_device_class_type type; /**< device */
rt_uint16_t flag, open_flag; /**< device flag and device open flag */
/* device call back */
rt_err_t (*rx_indicate)(rt_device_t dev, rt_size_t size);
rt_err_t (*tx_complete)(rt_device_t dev, void* buffer);
/* common device interface */
rt_err_t (*init) (rt_device_t dev);
rt_err_t (*open) (rt_device_t dev, rt_uint16_t oflag);
rt_err_t (*close) (rt_device_t dev);
rt_size_t (*read) (rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size);
rt_size_t (*write) (rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size);
rt_err_t (*control)(rt_device_t dev, rt_uint8_t cmd, void *args);
#ifdef RT_USING_DEVICE_SUSPEND
rt_err_t (*suspend) (rt_device_t dev);
rt_err_t (*resumed) (rt_device_t dev);
#endif
void* user_data; /**< device private */
};
1. 结构体中包含了大量的指针函数。由于一个设备驱动就是一个内核对象,而内核对象只能是动态的(必须能够被修改),它将直接变成一个个内存区域,进而消耗了"大量"的内存。/* 新的结构定义 */
struct rt_device
{
struct rt_object parent;
rt_uint8_t type;
rt_uint8_t flags;
rt_uint16_t item_count;
const void* items;
const struct rt_device_ops *vops;
const void* user_data;
};
新的设计中,包括:现在的小型设备要么裸奔,要么上系统。裸奔的片子一般不在乎有没有操作系统概念
大多是大循环,状态机组成。对单片机资源需求也比较小。等到没有操作系统管理不了了,比如要tcp还要
文件系统,这时候有个管理助手就比较方便。一般能变迁到这一步就已经是硬件要跨越瓶颈了,这时候
需要操作系统来支持,那么使用大一些的内存和高档一些的cpu是没有人不接受的,所以一个中小型嵌入式的
更多关注部分首先是怎样‘易用’这一点很重啊不然ucos的使用人怎么那么多就是因为其微内核,易用;但是面对
高端的使用来说他的GUI部分就很难推广了,太难用。其次完善,高效,我认为能够把lwip这样的协议嵌套进来做完美
就是不错了,至于rtthread能够做到集成fat,gui这样的功能已经很不错了。我觉得不在于怎没样节省内存开销,怎样减少
代码量,我们能够学习和使用它更愿意它完善,安全,丰富。
我们单位使用的还是44box这样的片子,很好,耐用,也有裸奔和带系统的两种,都没有太多的资源限制,一旦一个平台
选定其他的就是扩展变换,应用类的了。现在由stm的代理商支持转移整体平台了,呵呵以后都是m3的天下了,这个系统的片子
也就是低端的一些单片机,根本没有可能上系统,嘿嘿,我们的字库都是外挂的就这样一般的应用程序都在60-200k不等,哪里还有
空间跑系统。而那些需要系统的都有44BOX,2440完成,一般对处理器用了什么资源不会限制,我们单位一年的单片机综合用量应该
在100K以上,我是按照民用的思路去思考,衡量的,也是简单看法,请大家莫笑。
最后衷心希望飞飞,shaolin等大虾越来越明,rtthread越来越多人,支持,追随。我个人祝愿他们的说明书,使用指南越来越
完善,能够快速指导我们这些时间不是很充裕的人迅速深入,呵呵,这是个矛盾呀,不想花精力还想有结果是一厢情愿了些。
2011-04-01
请教各位有使用trace32经验的兄弟,trace32里面说的支持很多种rtos到底指的是支持什么?普通的调试器如jlink不是也可以调试rtos吗?十分感谢。
请教各位有使用trace32经验的兄弟,trace32里面说的支持很多种rtos到底指的是支持什么?普通的调试器如jlink不是也可以调试rtos吗?十分感谢。
|
|
3月24日 (13 天前) |
|
|
19:59 (14 小时前) |