今天的计划有变,下午的11126我们听了一半就跑掉了,又去提前听了11064。所以今天的学习内容是上午11120,下午11126和11064。嗯,于是明天将会去听11075、11128、11045,那个11026可能不会去听。嗯。以上。
那么开始今天的学习心得。其实今天的心得并不是很多,首先上午的11120是一个用MC芯片实现TCP/IP和RS232的转换的一个动手课,所以其实理论的东西并不是很多。所以取得的实际经验比理论多。而下午的11126实在没啥意思,所以也就没啥心得,而11064则是嵌入式系统的噪声问题,比较偏硬件,我当然也就没啥心得了。呵呵。
那么,首先是11120,使用MC芯片来实现TCP/IP。其实MC提供了一个TCP/IP协议栈的代码,使用起来还是很好用的。当然,要求芯片中也得有以太网的模块。该协议栈是C的代码。可以去MC官网下载。该协议栈功能还是比较强大的,物理层自然不必说,网络层实现了ICMP、IP和ARP协议——ICMP就是PING的协议,IP是互联网的基本协议没有什么异议,ARP则是物理解析协议,记得把IP绑到MAC上就是这个协议。然后传输层的话,自然是常用的UDP和TCP。然后应用层有NBNS/SHTP/DNS/SNMP/DHCP/TELNET/SMTP/HTTP/FTP等等协议。常有的都可以搞定。
当然也不要担心这么多协议,会导致协议栈的应用程序较大。因为在编译时,编译器会根据你DEFINE的一些变量来决定协议栈的部分哪些会被编译进去。所以,可以选择自己需要的部分使用就好了。嗯。赞一下。
那么该协议栈的调度呢,是通过一个不间断的WHILE(1)无穷循环来实现调度的。这个循环里面有若干系统的进程也可以加入用户自己的程序。但是,有一个系统进程叫StackTask,该进程务必要处在该循环体的第一位。而且其优先级也比其他进程要高。因为该循环体会进行一些解包啊什么的关键活动。而其他后面的进程的优先级基本相同,不会影响什么。但是处于习惯,用户进程一般处于该循环体的最后一位。
那么,这里就有个需要注意的事情,如果用户进程占用CPU较大,比如,大家经常会使用的软件循环延时,这个是非常不好的,这就会导致程序一致处在用户进程里面,导致无法出去搞到StackTask,从而导致网络数据吞吐量降低。编写时一定要注意。
那么后来就是在搞动手实验了。体验了一下MC的TCP/IP栈,用我们的话说叫:很好,很强大!呵呵。不过编完自己的网页还要转换为C或者BIN文件,占用宝贵的内部空间。嗯。不过的确很好,很强大。嗯。
那么后来的11126,其实是一个示波器的广告。而且来的AE大哥实在经验不足,所以实在没有什么听头。于是就转换了课堂,去听了听11064,DFN。这样就可以把时间腾出来明天就可以去听ADC了。呵呵。
DFN这节课,其实很有用的,不过时间有点不足,据说这是一节全下午的课,不过现在被压缩到2小时。所以时间比较不够。所以其实有点紧张。而且,我也实在累了,几乎没听。大致就是说了PCB怎么走线,数据怎么传等等。具体的原理,实在我也不知道了……
好,今天的学习笔记到此为止。呵呵。明天晚上回家再说~
- 本文固定链接: https://www.dragongod.net/2007/11/master-07-learned-2nd/
- 转载请注明: 龙天 于 龙天小筑 发表