taoqian's profiledifferent life, differen...PhotosBlogListsMore ![]() | Help |
|
April 10 一个有趣的现象.两个task争抢UART
TaskA
{
startTaskB();
waitfor(100);
printf很多东西
}
TaskB
{
printf很多东西
}
TaskB中的等待100是希望等待TaskB执行完,当我将Baud set成115200的时候,TaskB能执行完。
可是如果我将Baud set成9600的时候,TaskB速度慢了,结果TaskA等待了100,TaskB还是没执行完。
结果两个Task争UART,屏幕乱了。
其实这是因为串口驱动是阻赛型的:当它发现fifo满的时候,就pending了。。。。。
April 09 数据通信知识还是不够系统跟几个人谈谈了技术。
感觉自己才嵌入式开发上还可以,如RTOS上的内存管理/中断异常,CPU,ICE还有vxworks的一些调试技术我自己还比较满意。
但是在数据通信的一些概念上还存在一些需要补充的地方。
以前侧重于代码,fix bug,这跟我目前所在的环境有关系,但是如果个人努力还是可以克服的,其实应该首先看standard.
如IEEE的802.1d,802.1q,802.1ad,还应看看一些QoS,L2VPN上的一些RFC.
记得以前台湾来的一个经理,对STP,vlan等二层的东西非常熟悉,对协议理解很透,对code和Architecture的理解好像是公司最牛的,他说他协议读了很多遍,我还是很佩服他的。
如果每天能坚持一个小时看,半年就可以看完重要的二层协议了。这样的话,对数据通信这个领域就会有一些基本认识。另外,公司内部有很多feature的Design spec,和客户要求的feature的list.这些都是快速学习的好资料,要加以善用。
从下个月起开始执行吧。
判断BIG endian or little endian最简单的方法void bigorlittle()
{
uint32 a=1;
if(uint8(a)==1)
printf("little");
else
printf("big");
return;
}
以上是fix一个bug之后的心得 |
|
|