阅读:1421回复:3
底层协议怎样处理数据的收发?
大家好:
我在作一个底层驱动协议,要对物理层的数据接收和发送,然后对上层也要进行数据的接收和发送。 对于接收数据,我的硬件有给中断,我通过ISR来处理接收数据。 但是对于发送数据,我有疑问,我认为有两种方法来做: 1) 做一个发送数据的函数,当协议中要发送数据时直接调用这个函数。等发送函数处理完,再回来。这里有一点是硬件发送的时间与CPU指令处理时间相比是很长的。 2) 另外创建一个task(thread/process),将发送数据单独放在这个task里,可以另外创建两个task,一个发送给物理层,一个发送给上层。 当协议(main task),要发送数据时,它只是将数据写到一个全局结构中,然后继续处理其他的事情。发送task检测到有发送数据时,在来发送数据。 大家认为两种方法那个好?我现在是用方法2。但是开了多个任务后,系统很不稳定,我是想改为方法1。 另外,我的RTOS是uiTRON,它对多任务的处理方法是: 对任务开for(;;)永远循环,但是在循环的结尾出让本task sleep,直到被唤醒。所以,它的多任务实际就势任务A执行一下(A sleep and wake up task B),然后任务B执行一下(B sleep and wake up task A),然后就一直轮流交替。 |
|
最新喜欢:fly_fl... |
沙发#
发布于:2002-06-17 10:52
第一种方法比较好。
我们原先作过的课题都是采用这种方法。但是接收作为一个单独的任务。 发送只做一个函数,用信号量活呼哧量什么的进行锁住。这样做的好处是 减少了任务,任务转换的开销减少,速度相应有增加,另外思路清晰。 第二中方法要维护一个共享数据空间,在处理多个任务时,指针的移动处理要非常小心。 |
|
|
板凳#
发布于:2002-07-14 21:49
应该第一种方法比较好。
你的itron可不可以改造啊?估计没有源码的说:)不开源就是不爽? |
|
|
地板#
发布于:2004-09-23 20:26
itron与rtlinux实时操作系统各自的优点与缺点。我现在有一个项目。想权衡综合考虑用那一个操作系统。
itron与rtlinux实时操作系统各自的优点与缺点。我现在有一个项目。想权衡综合考虑用那一个操作系统。 能不能问一下itron的优点与缺点如: 支持多少个任务?提供哪些调度算法? 是不是可抢占内核?--不是说可抢占调度 内核可不可配置? 用什么主要算法保证实时? 同步手段有哪些?信号量有没有反priority inversion的方法? 支持哪些平台? 中断处理有哪些特点? 内核有没有可扩展点? 我的QQ:360003831 |
|