从Java到嵌入式(一)——嵌入式入门

  近一个月以来,开始研究ARM,由于没有基础,所以一路下来,经历了千磨万炼,终于小有收获,特写此博客与人分享。

  首先自己介绍一下,本人生物科学专业毕业,在校一直自学计算机编程,从Flash、网页、VB、Java,C语言算是大学的必修课咯。08年毕业后从事JavaEE开发,2010年转做JavaSE,从事Eclipse插件开发(也是自学的)。

  之前没有电子电路基础,对PCB、串口、并口、电平这些概念还是一头雾水,就开始投入ARM的学习中。学习最重要的就是实践,所以立刻就买了一块FriendlyARM mini2440开发板,买了个嵌入式微型打印机(荣达)、二维码扫描器(矽感)、还有个SONY芯片的工业相机(加拿大PointGray),至于为什么买这些设备,恕不方便透露。两三天的时间,设备陆续买回来了,可一看到设备,就傻眼了,打印机和二维码扫描器的数据线接口怪模怪样的排线,打印机是10pin双排的串口,而扫描器是12pin很薄的卡式接头,电源和数据线在一起,可我的开发板上只有一个DB-9的串口和四个从DB-9引出的4pin的TTL电平串口。怎么办呢?网络呀!对!怎么把这茬忘了,于是到Q_Q群里问,关于电源怎么接呀,串口怎么接呀,但结果都不理想,唉,看来没办法了。还得靠自己。于是静下心来开始分析问题(心静很重要,当时遇到问题后在群里问的那会儿,别提有多急躁了)。

  正所谓,求人不如求己,仔细阅读设备的用户手册,mini2440的用户手册,打印机的用户手册,扫描器的接线说明等等。可一骝下来,都是些电路图,还有些专业符号,看不懂,咋办?还好在群里有个叫"小树"的朋友,推荐我看看郭天祥的视频(在此非常感谢他,给了我指引了正确的方向)。于是乎,从verycd上down下视频,走马观花似的,花了两个晚上快速浏览了一遍,对PCB(印刷电路板)以及电路中的部分电子元件符号有了一定的了解(刚开始连PCB是什么都不知道),对正负极,GND(地线)有了新的认识。说说正负极的问题吧,根据高中的物理知识,一直以为电路要有正负极,这样才能构成一个回路。地线倒是听说过,可没听说电路板上还有地线呀,有一次在Q_Q群里问问题的时候,听到有人说地线就是负极,这下我就晕了,不光是地线,还有电压为负的呢!可以前没听说过呀,高中学的不是地线和正负极是分开的吗(可想我有多可爱了吧)?怎么?后来有人解释说地线就是电势为0的地方,当电路中有电势差时,电流就从电势高的一端流向低的一端,这样就形成了电流。哦!我恍然大悟!简直是一语道破天机呀!对于GND,广义上是地线,但是也分电源地和信号地,不过一般没有严格的区分。几天下来,收益良多,同时也感慨万千呀,总算能认得清电路图中的符号了。

  手册是看了,光纸上谈兵是不能把电源和串口接上来的呀,于是,先上淘宝淘几样DIY必备宝贝,万用表(数字的)是少不了的,还有电烙铁、溶胶枪,螺丝刀套装(数字万用表和溶胶枪是我在我们公司里看到了才知道还有这玩意儿)加起来一百元不到,就搞定了。工具是有了,可线怎么接上去呢?排线接头都对不上来。于是想到找排线头,可哪里有呢?先到卖电脑配件,还有修手机的店里问了下,没有。于是Google,原来还有电子市场哦(又长了见识了),有个赛格电子市场,好家伙,于是查好路线,周末带好设备过去,配接头和接口,除了扫描器的排线头没配到,基本上都齐了,还买了些接电源用的线,排线,串口公母头,虽然东西不多,还花了我RMB30(感觉像是被宰了)。回到家就开始对着万用表说明书看看,插上电烙铁,对着手册的引脚定义,把打印机的10pin的串口排线的另一端焊上DB-9的串口接头。其实串口主要是两根线起作用,一根用来发信号(TXD),一根用来收信号(RXD),还有根地线(GND),其它的线都是起辅助作用,只要收发线接好就OK了。接着做电源线,没有卡线钳,还好有把镊子,虽然慢了点,而且不太好使,但做出来的效果跟用钳子做出来的一样漂亮(心里终于得到了一丝满足)。

  mini2440开发板上提供了一个4pin电源接口,外侧2pin是正极,中间两pin是地线(也就是负极),外侧的两个正极中,一个是直接与外电路相通的,不通过开发板的电源开关的,只要板子通上电(不打开电源开关)就有电,另一个是经过板子的电源开关的,只有板子的电源打开才有电。线头做好后,插入接头。为打印机接上电源,看到打印机指示灯亮了,电路就通了,按照说明书做自检测打印,嘿!还真打印出字来了,搞定!不过还是怀疑串口是否接对了,可笔记本没串口(当初买笔记本的时候不知道DELL的家庭个人版和商务版有什么区别,现在终于懂了,原来个人版的机器没有串口和并口,只适合于家庭个人娱乐用,不适合做开发)!我的天!还好我淘了根USB转串口线,用超级终端连板子测试过,是没问题的。连打印机不知道行不行,于是下载了个串口调试助手——UARTAssit,按说明书的参数配置好后,向打印机发送数据,居然没反应,调试助手也卡住不动了,傻眼了。咦,公司的台式机好像有串口,嘿嘿,打了个如意算盘,于是第二天带着板子到公司里,连上串口用调试助手一测试,OK!终于松了口气了。

  接下来的问题就是相机没有Linux驱动,咋办?凉拌?!于是Email给PointGray的技术支持,第一次用English写Email,自我感觉良好 ^_^,Email是晚上十一点多发的,一点左右就收到回信了,可能加拿大是白天,刚上班吧。技术支持建议用libdc1394这个软件包,可以在Linux下控制1394接口的相机。于是在虚拟机中装上Redhat9(虽然老了点,但是用习惯了),配置好VSFTP,下载libdc1394源代码编译安装,安装过程中好像没什么问题,发现源代码中有测试程序,运行一下helloword.a测试一下,居然报个错说什么初始化失败。这下就晕了呀,怎么办,Google呗!Goo了半天,终于找到了葵花宝典——"libdc1394-HOWTO.pdf",一看,不得了,原来内核中没有1394设备驱动,得要重新编译内核,于是,我便开始了漫长的内核升级之旅。内核升级详情,待续。

猜你喜欢

转载自johnson-lee.iteye.com/blog/759883