Kevin

Kevin学ZED之6: 指鹿为马

0
阅读(13549)

在Kevin学ZED之5中,  我们顺藤摸瓜, 沿着linux软件一直到点亮灯这条线索走了一遍,发现,虽然是小小的一盏LED灯, 也许是设计者有意为之, 居然涵盖了All Programable的所有部件. 对道行不深的菜鸟来说, 如果花时间搞明白这条线上所有环节, 基本上就可以上一个层次了.

花时间学习各种文档,永远是非常非常耗时间滴. 如果文档还是英文写的话, 就更抓不住重点啦. 当年俺在华为当菜鸟的时候,焚香沏茶,对着一篇晦涩的英文文档的前面几页读了半天,在各种法律术语和定语从句之间挠头, 终于才明白,那是GPL协议, 根本不用读嘛,应该跳过,直接读后面的内容嘛.

最简单的学习方法是搞破坏, 比如, 把源文件随便改改,然后编译啊,综合啊一通,居然能把系统搞崩溃了,转不起来了,这说明,至少你的工具链建立对了,可以重新编译或综合软硬件系统,把原先好的系统搞坏了.

搞破坏的方法相当粗暴, 而且有时候不说明问题. 比如,我小时候拿着把螺丝刀,把俺们家的闹钟全拆开了,零件散落了一地, 再也装不回去了.这种破坏,压根不能说明我对钟表的任何原理有理解.

稍微优化一点的方法是指鹿为马, 就是修改一些最容易理解的地方, 比如把LED0 和LED7这两盏灯互换一下.这样,你如果软件上操作LED7, 而实际亮的板子上是LED0,这就说明你有能力修改系统,而且能够通过所有的编译和综合环节了.   这种方法哪怕你不懂C语言,Verilog, UCF神马滴,照样可以对系统施加修改. 如果能实现这一步, 说明你能够修改源代码,对系统施加你希望的影响了.

在顺藤摸瓜一节中, 我们发现点亮一盏灯的环节还真多, 任何一个环节进行LD0, LD7的互换都可以实现. 可以在设备驱动那个环节,也可以在EMIO环节,也可以在UCF环节. 要么怎么叫All Programable, 全面可编程呢,真是条条大路通罗马.

由于修改代码地方非常有限,这样学习不会破坏编译进程,每次都能看到效果,自信心和成就感就油然而生.

后面我们分别会在这些环节进行互换,  分别看效果, 然后所有环节都随便换, 看看最后指鹿为马的最终效果. 通过这种方法,就可以在不理解代码的情况下,基本搞清楚整个软硬件工具链的使用方法,