博客列表

Kevin学ZedBoard之9:mac下的惊喜
发表于:2013-04-16 17:14:52 | 分类:默认
浏览( ) | 评论( )

今天一不小心,U盘里有了病毒,放到公司的电脑上,立即被查出。 本以为病毒杀掉就完事了,没想到IT跑过来,说,必须全面扫描,才算过关。 扫描时机器那个速度慢啊.......还好我随身带了出差用的Mac air笔记本电脑。 突发奇想,干脆用Mac air 调试俺的ZedBoard板软件呗。 把ZedBoard的串口转USD插到Mac上。 然后查了一下Cypress的网站,知道Mac是支持ZedBoard上那款串口转USD芯片滴。 打开Mac的终端窗口。 跑到/dev下去看了一下ls /dev/tty*.*果然发现了 /dev/tty.usbmodem621 这个设备说明驱动木有问题了。 接下来是找一个类似于Hypertermimal或Minicom之类的mac版本软件。标准答案是ztermzterm里面,俺死活都找不到到哪里去设置/dev/tty.usbmodem621这个设备的地方。 后来,才在setttings/modem preference 里面找到, mac很聪明啊,自动就设成了usbmodem621,当然,你也可以手工从菜单里选。 

Kevin学ZedBoard之8:土著的神器
发表于:2013-04-08 11:10:48 | 分类:默认
浏览( ) | 评论( )

Native compile 相对于 Cross compile 来讲,分别翻译为本地编译 和 交叉编译。其实Native的翻译,我更愿意翻译成土著。对很多人来讲, 本地编译就是在PC机上编译PC机上运行的软件。交叉编译嘛, 就是在PC机上编译ARM上运行的软件。 对Kevin来讲,这也是一个思维定式了。 嵌入式系统,肯定要先讲交叉编译。ZedBoard板的出现,使得直接在ZedBoard上编译成为可能。反正跑的是全版本的Ubuntu,上面加载全套的gcc没有任何问题。这个gcc与pc上的gcc相比,其实是arm的二进制版本而不是x86版本。 由于地盘站在ARM系统上, 自己的那个arm-xilinx-.....gcc,就可以脱掉交叉的帽子,变本地了。 就像俺住在上海,本来说普通话,在一堆上海人中间,上海话居然就相当与普通话了。 linaro的那个包里,已经预装了gcc工具链, 因此,连gcc的安装都省了,直接用。 这样,在ZedBoard板上编译一个C语言的hellow world 就简单到一步。 只需要打开gedit 编辑helloworld.c, 敲入#include &l

Kevin学ZedBoard之7: 交叉编译初探
发表于:2013-04-07 18:25:57 | 分类:默认
浏览( ) | 评论( )

 在Kevin学ZedBoard之6:指鹿为马中, 我们明确了学习方法, 也就是试图修改一点点软件的源代码,找到那个写LED0,LED1的地址那句话, 然后换一下它们的地址或命令字,然后重新编译源代码, 使得最终我们点亮LED0的那句 echo 1 > /sys/class/gpio/gpio61/value 的结果是点亮了LED1, 或者是LED7,等等.   一旦你能够修改源代码,并能够把你的修改在硬件中体现出来,后面的事情就简单了,更复杂的修改就成了一个完成工作量的问题. ZedBoard其实已经足够强大,理论上,要想直接在ZedBoard上进行本机编译,其实也是可以滴, 只需要装一个ARM版的GCC就可以了. 当然,目前还不推荐这样做,因为毕竟是嵌入式系统,特别是可编程逻辑PL端, 还要跑Vivado等软件. 因此,需要交叉编译.  交叉编译用的工具链,按理说应该在这里可以找到:http://wiki.xilinx.com/zynq-tools 可打开一看,死活也找不到下载链接.最后,在这里找到了:http://www.xilinx.com/member/

Kevin学ZedBoard之6: 指鹿为马
发表于:2013-03-29 17:43:16 | 分类:默认
浏览( ) | 评论( )

在Kevin学ZedBoard之5中,  我们顺藤摸瓜, 沿着linux软件一直到点亮灯这条线索走了一遍, 发现,虽然是小小的一盏LED灯, 也许是设计者有意为之, 居然涵盖了All Programable的所有部件.  对道行不深的菜鸟来说, 如果花时间搞明白这条线上所有环节, 基本上就可以上一个层次了. 花时间学习各种文档,永远是非常非常耗时间滴. 如果文档还是英文写的话, 就更抓不住重点啦. 当年俺在华为当菜鸟的时候, 焚香沏茶,对着一篇晦涩的英文文档的前面几页读了半天,在各种法律术语和定语从句之间挠头, 终于才明白,那是GPL协议, 根本不用读嘛, 应该跳过,直接读后面的内容嘛.最简单的学习方法是搞破坏, 比如, 把源文件随便改改, 然后编译啊,综合啊一通,居然能把系统搞崩溃了,转不起来了,这说明,至少你的工具链建立对了, 可以重新编译或综合软硬件系统,把原先好的系统搞坏了. 搞破坏的方法相当粗暴, 而且有时候不说明问题. 比如,我小时候拿着把螺丝刀,把俺们家的闹钟全拆开了,零件散落了一地, 再也装不回去了. 这种破坏,压根不能说明我对钟表的任何原理有理解.稍微

Kevin学ZedBoard之5:顺藤摸瓜
发表于:2013-03-29 16:31:47 | 分类:默认
浏览( ) | 评论( )

当你可以修改点亮LED灯那个实验led_test.sh, 改变LED点灯的速度,以及顺序时, 一定想知道究竟发生了什么, 凭什么一个简单的脚本, 就在Linux的用户层控制板子上的某一个硬件,比如说,灯。对于习惯了在单片机环境下无操作系统裸奔C/汇编的兄弟来说, 上面的问题似乎有些多余. 直接对某个地址进行读写操作, 这个地址经过译码,对应的管脚,连到板子上LED,不就可以控制LED了吗。这就说来话长了.简言之,Linux 为了给每个进程一个独立的地址空间,特意划分了用户空间和内核空间。内核空间可以对物理地址操作,用户空间只是虚地址。 而内核与用户空间程序接口,采用特殊文件系统。也就是看上去像文件,其实连接到系统和设备的系统。比较老的有devfs文件系统位于设备驱动/dev,或者procfs位于/proc。当然,还有比较新的sysfs文件系统。Led_test.sh, 采用的就是sysfs文件系统。 这个文件系统的特点吧,主要是可以一层一层垒硬件的驱动,比如先总线驱动,再某个USB驱动,在USB挂载的设备的驱动。这比/dev一个设备驱动包括所有相关设备层次清晰很多。在linux内核2.6以后才有的。 对sys

Kevin学ZedBoard之4:小试牛刀
发表于:2013-03-25 18:10:35 | 分类:默认
浏览( ) | 评论( )

在完成了点亮LED灯那个实验后,作为程序员,肯定想改一改那个脚本,让它按照自己的想法运行,比如,最简单的延迟1秒亮灭灯变成2秒亮灭灯.如何改呢?简单,只需要编辑led_test.sh就可以了.  《嵌入式系统软硬件协同设计实战指南-基于Xilinx ZYNQ》的实验1.2    要想在嵌入式系统linux中修改某个文件,并不轻松。因为,最经典的修改工具,大名鼎鼎的Vi,虽然它让你在只有一个串口终端的时候,仍然有能力随心所欲地进行各种文本编辑修改, 但对初学者,刚开始学习它仍然比较痛苦.  大家早都习惯了鼠标,甚至是触摸屏,要在黑乎乎的终端上敲各种命令,显然很痛苦.   ZED板的出现,使得文本编辑可以直接用图形化的gedit, 方便多了。当ZED板的Ubuntu跑起来以后, 一方面,看到了漂亮的Unity图形界面,另一方面,串口上还有一个以root身份登陆进去的终端. 图形界面嘛,是以linaro身份自动登陆进去的, 密码就是linaro。   Untiy是2012年才开始的Ubuntu新界面,深受ipad和社交网络影响。风格走向一堆app

Kevin学ZedBoard之0:一堆梦想
发表于:2013-03-22 15:51:37 | 分类:默认
浏览( ) | 评论( )

 喜欢听“迈克学摇滚”(Michael Learns to Rock),可以将激情四射的摇滚乐演绎的那么简单,透明,干净,从容。 更难能可贵的是,来自中文歌曲旋律的大量再创作,让人倍感亲切。作为一个曾经的软件工程师, 我有一堆的梦想,梦想有那么一种超级强大的芯片,可以在软硬件设计之间游刃有余,动力十足,同时,它又可以那​么的低调, 简洁, 以至于搞单片机以及软件的新手都能轻松入门; 梦想从此SOC的设计和定义可以由一个学生在寒暑假就能完成​; 梦想从此各种天才的算法可以不光停留在论文上,而是, 以IP的形式运行在各种中国创造的芯片和产品间; 梦想当一轮一轮的诸如云计算物联网之类的大概念炒作完成之后, 核心技术,会以自主知识产权芯片的形式,傲然站立在世界技术的战略制高点! 而这个制高点,就位于中国。Zynq, 一个All Programmable SoC的诞生, 让我的梦想开始起航。基于全球第一个面向广大社区的低成本All Programmable SoC Zynq 开发板ZedBoad, 我将竭我所能, 和广大的同行们一起, 共同领略Zynq

Kevin学ZedBoard之3:知一点点所以然
发表于:2013-03-22 15:47:49 | 分类:默认
浏览( ) | 评论( )

 <嵌入式系统软硬件协同设计实战指南-基于Xilinx ZYNQ>的实验1.2 , 是一个很酷的实验, 照猫画虎一番,居然ZED板就能当一个能跑Ubuntu的小电脑使, 更酷的是, 只是运行脚本, 居然就可以控制板子上的LED, 居然就能在OLED屏幕上看到漂亮的logo.当然,这都建立在你一丝不苟地照猫画虎按照书上的步骤操作的假设上的. 万一其中一步没有完全做对, 结果就没那么美妙了.  对菜鸟来说, 最后结果出不来, 最笨的办法就是从头来一遍, 这次小心就是了.  这种不求甚解的精神在学习中值得大力提倡,  因为, 谁都想快点看到令人鸡冻的结果, 在看到结果之前,谁都不想浪费时间搞明白一步一步的含义到底是为什么.  激动过了, 让我们回过头来,看看我们都干了些什么. 实验1.2到底都做了哪些事. 古人云,知其然,也要知其所以然.  我们嘛,目前不需要100%的所以然, 但知道一点点所以然还是要滴. 先上图: 大家可以看到, SD卡分了两个区, 一个是FAT,一个是EXT,  FAT里面从光盘里拷贝了引导文

Kevin学ZedBoard之2:磨刀不误砍柴功
发表于:2013-03-19 18:20:17 | 分类:默认
浏览( ) | 评论( )

在 高效能人士的七个习惯 中, 最后一条是 Sharpen the saw , 一般翻译成:不断更新, 看了以后就不知所云了.  其实嘛, 英文原意就是锯木头的人, 不要光要整天锯木头, 有时候应该停下来, 拿锉刀修修锯齿, 让锯子锋利写.  明明就是磨刀不误砍柴功的意思嘛.继续做<嵌入式系统软硬件协同设计实战指南-基于Xilinx ZYNQ>的实验1.2.这个实验主要让大家会对SD卡分区,并拷贝整个linux文件系统进去. 然后跑功能齐全的linux. 这件事情,搁windows世界, 还是相当滴简单, 无非就是把SD卡分成两个盘, 一个盘装BOOT.BIN, 一个装操作系统中所有的文件.   可悲的是windows不支持ext文件系统, 因此如此简单的事情就变得麻烦起来.如果一定要在 windows下做, 也有办法, 也就是用Partition Wizard 这个软件, 建立FAT和EXT4分区, 然后, 用Ext2fsd软件在windows下, 把光盘里的linaro包里的一堆目录和文件拷贝到SD卡中,就完事了.  我按这个套路折腾

Kevin学ZedBoard之1:万事开头难
发表于:2013-03-18 16:36:48 | 分类:默认
浏览( ) | 评论( )

 毛主席说过,三天不学习,赶不上刘少奇. Kevin不学习也是如此.  ZYNQ出来已经很久, Kevin光在讲座上讲它的好处就讲了N次. 讲得唾沫星子横飞的, 可亲手在上面跑代码的事, 目前为止,真的没做过.  去年底ZedBoard板开始大规模捐赠以后,  Joshua Lu 的神书:  嵌入式系统软硬件协同设计之南-基于XILINX ZYNQ 也随之完成, 很酷的小车Demo也在办公室到处乱跑, 过年俺吃得酒足饭饱,华科那边又预约我5月份讲嵌入式系统设计的课。  万事具备,只欠开工学习了。 今天花了一早上浏览了全书, 下午开始做书上的第一个实验:1.1 GPIO LED 动手玩。  插好USB线以后,下载TeraTerm, 设置好波特率,上电。  等待奇迹发生,  期待着TeraTerm的窗口中吐出字符.......  N秒钟过去了。 木有反映。 No luck. Joshua 就在俺隔壁坐着,找他问,是木有问题滴, 可,第一个实验就做不出来问他, Kevin这也太没有面子了吧。 &n