This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

【89美金 BeagleBone 板子等您拿】- 社区周年有奖征文活动开始啦- TI Sitara 和我的设计之路

Other Parts Discussed in Thread: MSP430F149, AM3359, LM3S811, MSP430G2231, CC2540, AM3517, AM3505, TPS65910, ISO1050, DP83848C, AM3715, AM1808, DM3730, OMAP-L138, MSP430F449, SYSCONFIG, LM3S6432

【89美金 BeagleBone 板子等您拿】-
社区周年有奖征文活动开始啦-
TI Sitara 和我的设计之路
Texas Instruments
2012 年 8 月 8 日 TI 中文社区上线一周年啦 ! 为感谢广大客户对 TI Sitara 产品的关注和支持,从 8 月 2 日到 10 月 7 日,我们诚邀您来分享您在学习或工作中关于应用 TI Sitara 产品的设计心得

我们相信业内同仁的分享和交流为彼此提供宝贵的经验借鉴,同时真诚希望 TI 官方社区成为大家共同学习和探讨技术的一个网上家园!
   
发贴要求(不符合下面要求将不具备获奖资格)
每篇主题不少于 300 字
内容要求清晰详细写出设计心得的具体过程(例如设计中使用哪款产品碰到的问题及其解决的方法和步骤。)
发表以跟贴形式,需为原创贴 (最好同时配上合适的图片或视频)
奖项设置
征文奖交由 TI 技术专家团队评选,取前十名为优秀分享奖
优秀分享奖(10名)- 89 美元 BeagleBone 开源硬件平台 (附图)+ 16G U盘
阳光普照奖 (100名) – TI 16G U盘
 
优秀分享奖(10名)
89 美元 BeagleBone 开源硬件平台
+ 16G U盘

阳光普照奖 (100名)
TI 16G U盘

 

 

 

  • 基于SitaraTM ARM® CortexTM-A8 之HMI设计

  • AM335x MCASP0 与 AIC3100的调试心得和过程

    AM335X MCASP调试.doc
  • 非常好的活动啊。

  • 很希望获得,以便更快的入手

  • 先占个座位,写好了传上来,希望阳光普照到我啊,tiU盘,我来了。

  •   在这之前是南哥带我认识并熟悉了MSP430,而后我就Ti产生浓厚的兴趣。后来我又发现了ARM,之后我便开始了LM3S的设计之路。

     我要做的事很多,首先要把自己所熟悉的基于MSP430F149的模块重新在LM3S上调试成功,然后就是把以前难以用430实现或者430根本就不行的模块用LM3S来调试。这个过程中给我印象最深刻的就是OV7620。以前用430时我就没有办法实现,后来事实证明是我那时水平菜,但是430确实没有LM3S好。OV7620是1/3”CMOS彩色/黑白图像传感器。它支持连续和隔行两种扫描方式,VGA与QVGA两种图像格式;最高像素为664×492,帧速率为30fps;数据格式包括YUV、YCrCb、RGB三种,能够满足一般图像采集系统的要求。在此之前我仅了解有OV7620着个东西,根本就没考虑使用它,后来有了LM3S我发现我又有更多的模块可以使用。LM3S带给我的实在是太多太多,在此我也不说太多感谢的话了。

      下面我就不废话了讲讲我的学习心得:

    对于OV7620来说430采点速度太慢了430一次可以一行采一百多点,而LM3S一次可以采一屏。这就是差距。以下是小部分程序和图片

    void OV7670FIFO_init(void)

    {

     fifo_port_init();

     FIFO_WRST_L; //写指针复位,开始往FIFO写入数据

     FIFO_WRST_H;

     FIFO_RRST_L; //写指针复位,开始往FIFO写入数据

     FIFO_RRST_H;    

     while (1)

     {

         if(OV7660_init())

         {

             break; //OV7660_init()==1初始化成功跳出while循环,包含SCCB初始化

         }

     }  

     fifo_init();//摄像头缓冲区初始化

    }

    void TakePic(void)

    {

     VSYNCCnt = 0;  

     sei();//中断使能

    }

     不好意思图过段时间再补张。

  • 基于SitaraTM ARM® CortexTM-A8 之电机控制系统

           采用SitaraTM ARM® CortexTM-A8中的ARM AM3359来设计控制电机,该电机为无刷直流串励电机,由于AM3359具有12-位逐次逼近寄存器 (SAR) ADC每秒 200K 采样可以通过一个 8:1 模拟开关从 8 个复用模拟输入中选择任何一个作为输入可被配置成一个 4-线,5-线,或者 8-线制的电阻式触摸屏控制器 (TSC) 接口进行工作,高达 3 个 32-位增强型捕捉模块 (eCAP)可配置为 3 个捕捉输入或者 3 个辅助PWM输出,高达 3 个增强型高分辨率PWM模块 (eHRPWM)具有时间和频率控制的专用 16-位时基计数器可配置为 6 个单端,6 个双边对称,或者 3 个双边不对称输出,多达 3 个 32-位增强型正交编码脉冲 (eQEP) 模块,利用了这些资源来设计了电机的驱动和控制。
          调试心得主要是应用3 个增强型高分辨率PWM模块 (eHRPWM)驱动硬件电路的设计和调试。在AM3359输出的3路PWM后,通过高速光耦HCPL-316J驱动infineon的IGBT。在PWM到316调试的过程中遇到了一些问题,用示波器测试3359输出到316原边的pwm波形时,波形失真,在下降沿有很大的抖动和毛刺,这直接影响到了316副边高压端驱动能力,igbt经常报error,经过分析,发现3359端是3.3V,到316原边供电是+5V,之间的电平不匹配,同时在3359的PWM输出端没有加滤波电路处理,这样导致了IGBT经常报错,解决了这2个问题后,目前还没有发现异常现象。
         
     
  • 为什么我不能在你这个帖子的第一楼我的跟帖中修改编辑内容呢?为什么图片不能上传???

  •  

    为什么我不能在你这个帖子的第一楼我的跟帖中修改编辑内容呢?为什么图片不能上传???

    请点击帖子下方的“铅笔”按钮来编辑帖子;进入编辑框后,点击“插入图片”按钮可插入图片。

     

  • Sorry, there was a problem with your last request!

    Either the site is offline or an unhandled error occurred. We apologize and have logged the error. Please try your request again or if you know who your site administrator is let them know too.

    提示我不能修改啊

  • Weimin,

    是否是因为网络或浏览器问题,我用小号测试,一切正常啊。

  •       我没学过Sitara,我接触的ARM只有LM3S,这还是得益于TI的赠板活动。虽然我的LM3S811还没有全部学会,但我想我对这块芯片了解的差不多了,要更深输入了解lms811还是等以后有项目可以用到时再做深入了解!

       在论坛我看到有关于很多的网友 BeagleBone 板子的开发分享,我也做了对Sitara的一些简单的了解:

       TI 的arm9和其它 ARM9 产品不同ti的产品高度集成了各种主要的接口,如串行 ATA (SATA)、通用并行端口 (uPP) 以及 TI 独特的可编程实时单元 (PRU) 等。PRU 可提供灵活的可配置 I/O 控制,使我们这些人员能够扩展外设功能,并为其设计添加定制接口。而且这种pru可以提高整个系统的灵活性,用户可以配置的也跟全面。

    这些体现在:能够实施并调整UART 与 CAN 等标准版、定制版以及“简化”版通用与专用串行接口,从而可扩展系统外设需求。又因为这种独特的PRU 可将 ARM9 解放出来,提高应用处理能力、降低整体功耗、消除时延问题,并提高实时响应能力,从而可最大限度地提高效率。独特的外设组合包括 SATA、uPP、具有集成型 PHY 的 USB 2.0 移动 (OTG)、具有集成 PHY 的 USB 1.1、10/100 以太网 MAC 以及 MMC/SD 等,可顺利实施数据、网络、器件以及传感器通信。

  • AM335x MPU 有很多有点:

    1.有很高的性价比,集成 3D 图形加速引擎,2 个千兆以太网口,LCDC,TSC 等等。

    2.有很完整的生态系统。Linux,Android SDK 都很完善,让人很容易上手。

    3.TI 的资料很丰富,有 WIKI,Deyisupport,还有原厂和代理商 FAE 的支持。

    4.有几种 EVM 可以选择来评估。

    一直想总结一下 TI  的 AM335x,很看好这个芯片.找个时间,我再好好分享一下。

  • 从确定手控算法要走嵌入式实现开始,就一直在关注合适的平台。在经过一段时间的资料收集和对比后,最后选择使用BeagleBoard-xm。走了几天的采购流程,从chipsee顺利的买到了板子。

    拿到板子后,第一件事,做android的sd卡系统。从TI的官网上,下载了GINGERBREAD和ICS的Pre-built Images. 万事开头难,使用脚本格式化sd卡时,买板子附带的4G卡一直无法正确被格式化,使用win的磁盘管理,sd的最后一个分区无法操作. 从网上下载了U盘修复工具对sd卡进行修复后,使用正常.  对比了两个版本的android后,决定使用GINGERBREAD,原因是上板子后, ICS的响应非常慢,在对android系统不是很熟悉的情况下,为了保证项目时间,选择GINGERBREAD.  ICS的响应问题改如何解决呢?请TI的FAE指导一下。

       系统完成后,发现camera app一直无法运行,网上下载了其他的camera相关app,安装到板子上,同样无法运行.  这个问题到目前还未解决。

    系统app无从下手. 只有自己写app实现,发现系统boot后,无论是否接摄像头,/dev下都包含了video-video8,导致在其他android上测试正确的app在bb-xm上无法正确执行。最后,决定重编内核,下载了GINGERBREAD的源码,编译内核,将uvc相关功能编译成模块,启动后insmod。这种情况下,/dev下的设备阶段正确显示。插上摄像头,/dev/video0出现,不插就不会存在,问题解决,自己写的APP出图像。

    手控目的就是为了代替鼠标,在算法操作完成后,需要对光标操作时,发现调用sendevent函数,无法操作光标移动,也无法发出左右键的点击事件。getevent函数一切正常。在网上搜索解决办法的同时,也在学习linux的input子系统。在经过四天对kernel的driver/input/目录下相关文件的分析和反复尝试,终于发现是因为driver/input/input.c文件中,在sendevent函数所发送的信息到达时,write函数只将event传递给了底层设备,而没有写入/dev/input目录下的设备节点中。在input.c中添加了语句后,重编内核,运行鼠标控制app,光标终于动了。

     希望以上的问题对使用2.3.4版本开发的朋友有帮助。在解决这些问题的过程中,获得的支持确实不多,论坛和beagleboard的mail list中,都没有获得有效回复。

     看到beagleboard的讨论贴,现在用beaglebone的人很多,希望有机会能拿到一块用用。

  • 我也遇到同样问题,不能编辑,修改。

  • 怎么发表啊,只发现回复的按钮啊

  • 点击回复左侧的“使用高级文本编辑”

  • 初识TI:

    对于MCU,也就大学的时候玩玩51,对于MSP,我是毫无接触。大学的时候把51玩熟了,什么定时器,中断,IO,ADC,DAC,扩展ram,觉得,单片机也就那样,不管PIC,AVR,MSP,哈似乎51,大同小异,差不多。后来,毕业出来了,几家公司,玩过51,玩过ADSP,玩过AHDL,玩过vxWork的PPC,MIPS,玩过linux的X86,现在,突然接到一个项目回归单片机,竟然是MSP。时间紧,任务急,加班加点搞开发。每一个研发工程师都想知道什么是开发项目的捷径,比如买本秘籍,修炼3,5天,突然变成绝世高手。但是,不可能的,该走的路,该爬的山,不按部就班踏踏实实的做,无法完成。

    我的第一次:

    小项目,用MSP430G2231开发,对于我一次都没见过MSP的菜菜而言,绝对毫无头绪。没办法,按以前的经验,搞板子,看datasheet,调试IO口,看经典程序.......发现MSP的资源还是挺多的,各大网站都有,而且TI也很负责,一下通用的应用还有源代码下载,上手进度很快,虽然对硬件还不是很熟悉,但是几天就有把握解决掉这个小项目了,万事开头难,但是只要开了头,就如万马奔腾那样狂奔了。项目应用需要定时,在我还不会用定时器的时候,我用了最最简单的软件延时,基本调试完功能了,但是延时时间不准,觉得郁闷,又重头写了timer控制,虽然软件架构该了一遍,但是对内部又熟悉了一把,感觉信心爆爆。

    现在的接触:

    TI出了款不错的新品:CC2540. 低功耗蓝牙4.0,这让很多小器件与终端通信成为可能,极大的推动了物联网的发展。于是,我就开始玩它了。CC2540许多应用有源代码,能在IPHONE4s上控制设备的状态,比如LED灯变化,读取电池剩余电量等,总之,通信无处不在,下载源码,查看BLE Stack,学习OSAL,发现这套东西,理念简单,架构复杂,虽然把event轮询一遍消耗不少,但是对于蓝牙低数据量的应用,还是一个不错的解决方案,其低功耗更是诱人,一个纽扣锂电池能让芯片跑上一年,相信许多用户会考虑使用这样低成本的设备,也希望各位开发厂商好好经营这个解决方案的市场,一起挣钱:)

    BEL stack其实主要是GAP和GATT的通信应用,GAP定义设备角色,central,peripheral,broadcasting,监控设备。负责设备发现,建链,终端连接,绑定和设备配置等牛x的功能;GATT则定义了一套服务架构,分为用户和服务器,用户通过GATT的协议从服务器上读写操作,这个用户和服务器都可以使GAP中定义的设备角色的任意一种,充分体现了协议栈的灵活性。

    TI也提供了满足快速开发的开发板,CC2540 Development Kit和CC2540 Development mini,两者的区别仅仅是底板多了一些外围器件和一个USB仿真器而已,网上都有开发板,299美刀和99美刀,建议大家都买正版的,因为TI的PCB板是4层板,无线阻抗和一些PCB参数都会稳定很多,搞开发又不是量产,该投资的还是不要省。

    自己摸索,很累,很孤独,我也在多跑论坛,多加qq群,与很多开发者讨论交流技术问题,作为一个从X86 linux出来的开发工程师,我觉得TI的技术资源做得很好,国内的开发氛围也很好,大家都很开放,热情。

    编后寄语:

    今天看英文文档看傻了,就上这里来消遣一下,抽时间记录上面的废话,希望能得到U盘的同时,让更多和我一样这个迷茫的初级阶段的同学们得到我的分享,搞好TI各种解决方案,让大家双赢。

  •  

    我和beaglebone的偶遇

    beaglebone加装显示屏

     

    原来接触最多的都是TIDSP,电源或者模拟产品。而TI推出的ARM核芯片一直没有机会上手。偶然的机会了解到一个朋友手里有一块beaglebone开发版暂时闲置,于是果断出手借过来玩了几天。算是对beaglebone有了短暂的接触和了解。

     

    刚上手的几天不是很熟悉,在网上查资料,看介绍,学视频,搭环境,折腾的不亦乐乎。但是总觉得这么好的开发板只在终端上通过一堆烦乱的代码做开发有些枯燥,看到抽屉里原来做项目剩下的各种LCD屏,于是打算给开发板加装显示屏,让枯燥的开发过程带点颜色。


     

    手上的显示屏有五寸的六寸的八寸的十寸的。接口有TTL的,LVDS的。要做就做全套,各种屏幕都能连接,有独立供电,带触摸屏(电阻屏)。

     

    通过查找资料了解到beaglebone集成了LCD控制器,控制器的结构如下图:

     

    BeagleboneTTL接口,在板上增加了TTLLVDS接口芯片,THC63LVDM83R,这样就能同时支持LVDS接口的屏。电容屏,电阻屏,恒流源供电,LED背光供电,能带的全都带上。各种屏幕的接口能加的全都加上。


     

     

     

     

    LVDS接口芯片也加上,支持高分辨率大尺寸屏幕。这样手头上带的各种屏幕都能支持了。

    板子做好以后的效果


     

     

    连接上开发板,接上外接电源和LCD屏,很顺利,就出现了beaglebonelog图和登陆界面。进展还算顺利。后面想再接再厉加载linux图形界面,在网上找了很久,没有太多资料,也许是beaglebone开发板太新用的人还不多吧。本想继续研究,但是朋友的项目已经开始,只好把开发板还回去了。希望能拥有自己的开发板,这样就可以随心所欲的开发了。

    现在手上没有开发板,原来没有照片,就从网上借用一张beaglebonelog图片吧


     

  • 感觉单片机重点在于学习解决问题的思路和方法,现在的电子技术发展更新很快,几年就会更新一代产品,所以不断学习应该是干这一行不可回避的一个问题,其实做什么样的大项目,可能显示一个人的水平,可是更重要的是能够掌握解决问题的方法和途径不断更新知道的能力, 如果我们只知道吃老本视线狭窄,那么就很难跟上时代的发展,今天也是ARM8,明天可能就是ARM9,10。真正的能力应该是:遇到没有解决过的问题或器件,能利用自己已学的知识,迅速找到解决问题的方法。掌握行业的信息,并能及时的将所得到的信息,实现在自己的设计里面,这个才是能力。写程序的过程就是一个创造的过程,几乎没有完全一样的项目,每次你遇上的几乎都不相同,所以你拥有的必须是你面对新项目时的创造能力,当然也要充分的利用好手头资源,充分借鉴前辈的经验,才能多快好省的达成自己的目标。

  • AM3517缓存与MMU的调试

    需求:前段时间做过一款产品,要求高速和高精度,每秒钟数据采样与处理在两千次以上,初步做两种方案,一种是在Linux操作系统下,稳定性高,升级方便,但操作系统对主控芯片的开销会增大,担心不能满足要求;第二种:是前后台模式。

    简析:一直很信赖TI的产品,经再三考虑选了AM3505这款芯片,主频600M,理论推算可以满足要求,因为暂时没有界面处理,所以选了一个不带图形加速器的,但在样片申请时AM3505暂时没有,就给了AM3517,很感谢TI的样片申请业务。

    系统:主控芯片AM3517,内存:美光DDR2 MT47H64M16HR-25,Flash:三星K9K8G08U0A,电源芯片:tps65910,网卡:IP101A,另外预留了HDMI和CAN接口,芯片型号:TFP410PAP和ISO1050等。

    应用开始:

    第一步,焼写启动代码,从ti技术支持得到的开发包,TI的启动代码包含了两部分一个是X-loader TI自己做到,另一个是linux通用引导U-boot。用ti的flash tool烧写工具,用之前需要根据自己的硬件类型做一些配置,如NandFlash是几位的,最大容量,块大小,页大小等,对相应的只修改一下。其他还有一些配置,由于个人没有用过就不再多说,有问题时建议多看Help文件,Ti论坛也有很多相关资料。

    接下来是将x-loader和U-boot合并到一起。X-loader存在的原因可能是,U-boot内容过多,芯片内部Ram有限(64K),所以就做了一级缓冲,先运行x-loader对硬件环境一个简单的初始化,然后将u-boot拷贝到内存中,再将控制权交给U-boot。

    对编译后的X-loader做了一下分析,发现x-loader头部是一个固定的内容,就是X-loader的大小,合并方法是将U-boot的对硬件必要的初始化和添加搬运自己代码到内存中的这段程序压缩到64K以内,等Uboot把自己搬运完了就跳到内存中从新运行U-boot,在U-boot中要判断自己是在内存中还是在Flash中,这个可以通过地址来判断,在Flash中就运行拷贝自己的程序,在内存中就跳过。这个很简单,都是U-boot内部函数的一些拷贝。

    第二步:网卡移植,IP101A非常好用,我们用的是RMII精简接口,需要给AM3517的网络部分提供一个50M的时钟,IP101A内部可以产生这个时钟,其他都用默认配置即可。在U-boot里添加以下IP101A的PHY地址做个判断就可以。

    第三步:一键更新,使用u-boot通过网络自己更新自己、内核、文件系统会很方便,而且速度很快,只是指令多了点。这里就是把u-boot的tftp下载命令,擦出nand flash命令和写命令综合到一起,其他也没什么,值得说的就是,烧写u-boot时用的是硬件1bit Ecc校验,这个是am3517内部定义的。烧写内核时用的是硬件Ecc 4 bit校验方式。

    第四步:在U-boot里验证开启指令缓存,数据缓存后与开启前的速度对比。

    之前一直都是在搞51和M3,所以对缓存不是很清楚,但硬件的资源一般都是根据要求配置一些寄存器,于是就开始看AM3517数据手册,两千多页全英文,想想都头大,哎!英语不好。

    于是就挑了一些相关的关键的看,但在芯片手册里根本找不到关于缓存的初始化和相关的介绍。在u-boot里有打开指令缓存和数据缓存的函数,但都只是一个接口。

    废话就不多说了,关于MMU的作用以及为什么要使用内存管理与虚拟映射,还有缓存cache的分类,网上都有详细的资料,这里就不再多说了。在A8(整个ARM体系里具有MMU的内核)里指令缓存是可以单独单开的,但数据缓存必须与MMU同时打开,初始化步骤是先建立MMU页表,可以使用虚拟地址,也可以不用虚拟地址,但页表必须要建立,也就是必须要做映射(因为打开了MMU),在建立页表的时候可以根据自己的需要对相应的内存地址做允许缓存和不允许被缓存,页表是存储在内存空间里的一个,建立页表是一个比较复杂的过程,这里有一份某个培训机构(具体名字忘记了)的关于cache和mmu的详细资料,有需要的可以联系我,另外还有本很不错的书籍,建议想把ARM玩精的,都要看一下《ARM体系结构与编程》杜春雷的,写的很详细。

    以下是建立以及页表的程序:

    如有疑问,请联系woshic23

    static inline unsigned int initializeMMU()

    {

    unsigned int adat,rr2,rr3,i;

    rr2   = 0xdfe;

    adat = get_cr() & 0xfffffffe;             //Read Control Register

    asm volatile("mcr p15, 0, %0, c1, c0, 0 @ set CR" : : "r" (adat) : "cc");  //disable MMU

    asm volatile("mcr p15, 0, %0, c7, c5, 0 @ set CR" : : "r" (0) : "cc");   //invalidate caches jay

    asm volatile("mcr p15, 0, %0, c7, c5, 6 @ set CR" : : "r" (0) : "cc");   //clear the whole jump target of cache

    asm volatile("mcr p15, 0, %0, c7, c5, 7 @ set CR" : : "r" (0) : "cc");   //invalidate VA from branch predictor array

    asm("MRC p15, 0, %0, c1, c0, 1 @ get CR" : "=r" (adat) : : "cc");    //Read Auxiliary Control Register

    adat &= 0x3d;

    asm volatile("mcr p15, 0, %0, c1, c0, 1 @ set CR" : : "r" (adat) : "cc");  //disable L2

    asm volatile("mcr p15, 0, %0, c8, c7, 0 @ set CR" : : "r" (0) : "cc");   //invalidate TLBs  //Invalidate Inst-TLB and Data-TLB

    asm volatile("mcr p15, 0, %0, c2, c0, 2 @ set CR" : : "r" (0) : "cc");   //selected table reg 0 //Write Translation Table Base Control Register

    asm volatile("mcr p15, 0, %0, c2, c0, 0 @ set CR" : : "r" (0x80000000) : "cc"); //set start of translation table  //Write Translation Table Base Register

    for( i=0;i<0x400;i++ )               //initialize the nand space page table (0 - 0x3fffffff)

    {

     rr3    = (rr2 | ( i<<20 ));

           (*(volatile unsigned int*)(0x80000000+(i<<2))) = rr3;

    }

    for( i=0x400;i<0x800;i++ )              //initialize the on-chip Memory space page table (0x40000000 - 0x7fffffff)

    {

     rr3    = (rr2 | ( i<<20 )) & 0xfffffff2;

           (*(volatile unsigned int*)(0x80000000+(i<<2))) = rr3;

    }

    rr3 = (rr2 | ( 0x800<<20 ));

    (*(volatile unsigned int*)(0x80000000+(0x800<<2))) = rr3 & 0xfffff01f;   //initialize the store page table space in the sdram (0x80000000 - 0x80100000)

    for( i=0x801;i<0x900;i++ )              //initialize the SDRAM main address space(SMS) page table (0x80000000 - 0xbfffffff)

    {

     rr3    = rr2 | ( i<<20 );

           (*(volatile unsigned int*)(0x80000000+(i<<2))) = rr3;

    }

    asm volatile("mcr p15, 0, %0, c3, c0, 0 @ set CR" : : "r" (0xfffffffd) : "cc"); //Setup domain control register Enable all domains to client mode  //Write Domain Access Control Register

    asm("MRC p15, 0, %0, c1, c0, 0 @ get CR" : "=r" (adat) : : "cc");    //read CP15 register 1 into adat

    //adat &= ~((1<<12)|(1<<2));              //disable icache and dcache

    adat |= 1 | (1<<12) | (1<<2);

    asm volatile("mcr p15, 0, %0, c1, c0, 0 @ set CR" : : "r" (adat) : "cc");

    }

    公司现在所有的液晶驱动从4.3到12.1都是用的三星的2440,一直想对Ti a8的液晶驱动研究一下,但由于时间原因,还没有机会,希望有机会能体验一下AM3359的性能!

    写的不好,请大家见谅,这是第一次写一个总结,一直都比较忙,这几天一直等一台样机,所以闲了几天。

    希望大家能多分享!!

    下面还有一篇关于LM3S-M3的应用,抽时间再写吧!

  • 附件为有图片的版本,论坛中上传图片是个很麻烦的事情。大家请直接参看附件

    希望可以获取到BeagleBon,这个开发板精致小巧,可以随身携带方便学习。

    众所周知,RS485的工作流程是,在发送时必须把GPIO输出一个电平,在接收时,必须把GPIO设置为另一个电平,这样才可以让485芯片处于接收数据的状态,并且要及时切换485的收发状态,否则有可能造成485最后一个字节没有发送,或第1个字节无法接收等现象

     

    CPUAM335X

    操作系统:WINCE

    WINCE中,将RS485的操作,整合到串口驱动中,实现在WINCE中的串口通讯

    AM335X操作串口的源码位置:

    \WINCE700\platform\common\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\SERIAL

    MDD层源码的位置:

    WINCE700\platform\common\src\soc\COMMON_TI_V1\COMMON_TI\SERIAL\COM_MDD2

    开始分析程序:

    先分析操作串口的部分:此部分和具体的CPU寄存器操作有关,具体的寄存器设置都在此文件中完成,例如:串口收发,中断,FIFO的设置等

    GetSerialObject函数,由MDD层调用,这里会返回一个HW_VTBL结构体给MDD层,MDD层以后就通过函数指针的调用方式,来操作串口设备

    我们在看几个重要的函数

    HWOpen:打开串口函数,在WINDOWS API调用CreateFile函数后就会调用到这里,打开串口后,我们先将RS485设置为接收数据的状态

     

     

     

     

    HWTxIntr:发送数据函数,此函数在FIFO触发等级到达后,会被调用,这里要实现485的状态的切换

     

     

     

     

     

     

     

     

     

    在这里原先的做法是循环等待LSR寄存器的移位寄存器为空

     

    *pLendgth=0时,就代表发送的内容完成了,因此我们切换为收的状态

    否则,就是有发送的内容,我们判断当*pLength长度小于AM335XFIFO大小时,就开启FIFO为空,并且发送移位寄存器同时为空的中断

    SetSCRTXShiftEmptyInt函数的实现如下:

     

    主要是设置SCR寄存器

     

    HWIOCtl函数中,我们增加2个操作

     

     

     

     

     

    可以单独的设置485的收发GPIO电平

     

     

    现在看一下MDD层:

    COM_Write函数:此函数调用WriteFile函数后,会调用到这里,

     

     

     

     

     

    我们在DoTxData函数上面增加一个HWIoctl函数,用此方法实现485状态的切换

    然后调用DoTxData函数进行数据的发送,同时发送中断会到来

     

     

    到这里,大致的流程已经结束,到目前发送此驱动即使使用232通讯,在触摸屏被按住的情况下,效率也不是很高,还要想办法优化一下此驱动。

     

     

     

     

     

    WINCE RS485调试.pdf
  •        Sitara  有强大的HMI,HMI设备包括硬件与软件。这里的软件也就是组态软件,硬件我更关心的是他的串口和以太网接口。  在有些的情况下可能要使用的串口会非常的多,可能会达到七八个之多,这是就很少有CPU可以达到这个程度,这时如果你使用别的一些CPU通过串口扩展芯片来做,这是就有一个问题:多串口的扩展芯片非常的贵,有时甚至超过了CPU本身,如果是用电脑通过插多串口卡来做,串口卡的价格也是一个永远的痛!

       而TI Sitara 的AM18系列有一种可以根据用户需要而自行构造的逻辑功能的数字集成电路引脚("CPLD"),可以根据你的需要灵活的配制出任意你想要的功能。可以通过它配置出一个串口或者是CAN总线;通过AM18xx的PRU模块,可以将它管理到的而你别的常规没直接用到的引脚配置成任意你想要的功能。比如说串口或是CAN总线。所不同的是CPLD时,你用的是VHDL,而PRU时你用的是TI提供的PRU汇编(TI提供了丰富的例程)。因此我们可以看着PRU就是AM18xx的片上 “CPLD”。 对于只使用串口的HMI产品而言,你可以将网络接口等对应的引脚全部配置成串口。这样你只需要一颗CPU的钱,就买到了一颗CPU外加四路以上的串口扩展。而对于使用网络接口的高端HMI产品,TI Sitara AM389x是你的最佳选择。强大的显示子系统PowerVR 3D 2000MPoly/Sec, 足以应付HMI所需的各种复杂图形处理要求。

  • 最近时间一直在做一个新项目,同时也是对旧项目的硬件平台进行一个升级,所以用了sitara am3517 Cortex-A8做了一块主板。以下简单介绍一下整个开发过程的笔记以及在中间遇到的一些问题及其解决方法。

    1、平台硬件资源简介

    CPU:TI Sitara AM3517+

    DDR2:SAMSUNG K4T1G164QE-HCE7

    Nand:SAMSUNG K9F1g08UOD

    PHY:NS DP83848C

    2、建立TFTP Server

    a、安装相关软件包:Ubuntu tftp(服务端),tftp(客户端),xinetd

    apt-get install tftpd tftp xinetd

    b、建立配置文件

    在/etc/xinetd.d/下建立一个配置文件tftp

    sudo vim tftp

    在文件中输入以下内容:

    service tftp

    {

    socket_type = dgram

    protocol = udp

    wait = yes

    user = root

    server = /usr/sbin/in.tftpd

    server_args = -s /tftpboot

    disable = no

    per_source = 11

    cps = 100 2

    flags = IPv4

    }

    保存退出。

    c、建立Ubuntu tftp服务文件目录(上传文件与下载文件的位置),并且更改其权限

    sudo mkdir /tftpboot

    sudo chmod 777 /tftpboot -R

    d、重新启动服务

    sudo /etc/init.d/xinetd restart

    3、编译

    安装ubuntu10.04,toolchain等相应环境。

    export PATH=$PATH:/opt/4.4.3/bin/

    编译x-loader

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- am3517evm_config

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

    ./signGP x-load.bin

    编译u-boot

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- am3517_evm_config

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

    编译kernel

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- am3517_evm_defconfig

    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

    setenv bootargs 'mem=256M console=ttyS2,115200n8 noinitrd root=/dev/mtdblock4 rw rootfstype=jffs2 omapfb.rotate=1 omapfb.rotate_type=1 omap_vout.vid1_static_vrfb_alloc=y;'

    4、利用busybox制作root file system

    编译busybox

    make menuconfig

    (1)

    (2)

    (3)

    make

    make install

    构建框架

    cd /home/user/

    mkdir rootfs

    cd rootfs

    mkdir –p dev lib etc sys proc mnt var tmp data

    chmod 777 *

    添加内容

    /bin与/sbin目录

    cp –rf busybox-1.17.2/_install/bin ./

    cp –rf busybox-1.17.2/_install/sbin ./

    /dev目录

    mknod dev/console c 5 1

    mknod dev/null c 1 3

    chmod 777 dev/*

    /lib目录

    cp /opt/4.4.3/arm-none-linux-gnueabi/lib/* ./lib/

    /etc目录

    fstab:指明需要挂载的文件系统

    inittab:init进程的配置文件

    profile:用户环境配置文件

    init.d目录:启动文件目录,该目录中有个名为rcS的文件,里面存放了系统启动时配置以及自启动加载的进程等。

    /proc、/mnt、/var、/tmp目录

    基本都是空目录。

    /mnt一般用做临时挂载某个文件系统,比如说u盘。

    /tmp用于存放临时文件,我挂载为了ramfs,用于下载文件,应用程序放置,内存文件系统访问速度相当快,不比nand,加快了访问速度,而且增强了nand寿命。

    /data目录

    挂载为了yaffs2文件系统,可以用于读写,用于存储一些需要保存的数据。

    5、制作jffs2

    mkfs.jffs2 -r ./rootfs -o rootfs.jffs2 -e 0x20000 -p=0x1000000 -n

    在使用过程中,请详细了解mkfs.jffs2各个参数的作用。

  • 管理员,您好。为什么我不能编辑上面的贴子呢?

    提示:

    Sorry, there was a problem with your last request!

    Either the site is offline or an unhandled error occurred. We apologize and have logged the error. Please try your request again or if you know who your site administrator is let them know too.

    昨天我也试过了,也是这样的提示。

    我的贴子还没有写完,您能修复一下这个问题吗?

  • 在windows环境下用Sourcery CodeBench编译基于am3359的u-boot

    在windows环境下用Sourcery CodeBench编译基于am3359的u-boot.doc
  • 基于AM3715的图像处理算法优化

    之前在 AM3715的一个板子上做过一段时间的图像处理算法优化,由于是初次接触sitara系列,过程略显生疏。

    1. 由于该算法复杂度不低,有较多的循环,而系统中可用的运算资源只有cortex-A8,所以首先将算法移植到A8上面,没有开启任何编译选项,并进行了耗时测试,结果不是很理想,还需要提升70~80%才能达到性能需求。

    2. 查阅了一些资料和别人的经历,利用编译器产生打开了编译选项-ftree-vectorize 和 -mfpu=neon,并且优化级调到了o3,此时性能提升了40个百分点的样子。

    3. 为了进一步优化,学习了一下NEON的指令集,尝试把小的循环体以汇编形式实现,NEON在处理循环体形式的向量计算时还是有比较大的潜力,类似于DSP中的SIMD,而且汇编也比DSP简单很多,因为不需要考虑指令并行,只需要排指令流水线即可。汇编完成后,性能已经达到了之前的要求。

    谢谢。

  • BeagleBone的系统安装

    前段时间实验室的同学买了块BeagleBone开发板,我看了之后着实嘴馋,可惜囊中羞涩,只能拿来用一下,把使用的过程分享一下。

    BeagleBone是基于TI AM335x ARM Cortex-A8微处理器的开源开发平台。拥有USB、Ethernet和JTAG等完整的开发接口以及完全的扩展接口,提供了低成本,高扩展性的ARM平台。BeagleBone支持完全的Linux系统,我们可以找到多个开源的项目在其上运行了。

    BeagleBone附送的micro SD卡中有预制的Angstrom系统,我们看看怎么使用它。

    Angstrom

    Angstrom是一种针对嵌入式系统(PDA、手持设备、手机、路由器等)优化的 Linux 发行版(内核、引导装载器和应用程序组合)。Angstrom是由OpenEmbedded编译工具编译生成。BeagleBone上面的Angstrom系统还集成了大量应用软件,同时系统运行以后还可以在线安装应用程序。

    1. ——BeagleBone101介绍:是一个BeagleBone的自述文件,可以通过Cloud9 IDE,文件为“bone101.js”。
    2. ——Cloud9 IDE:Cloud9 IDE是由ajax发起的开源项目,由NodeJS执行编译工作这个集成开发环境旨在集成其他现有IDE的所有强大功能和诸如Eclipse,Netbeans, Textmate等代码编辑器,整合作为插件。
    3. ——GateOne:Gate One 是一款使用 HTML5 技术编写的网页版 SSH 终端模拟器。

    1.Linux(ubuntu)

    首先看看在Linux系统(ubuntu11.10)下面如何安装使用Angstrom系统。

    我们去下载最新的预制(pre-build)Angstrom BeagleBone版本,下载最新的img.gz或者img.xz映像文件。

    接着将下载下来的img文件解压到SD卡中。将一张micro SD卡插入读卡器(可以直接用附送的卡),在终端输入命令:

    # zcat xxx.img.gz > /dev/sdX

    或者

    # xz -dkc xxx.img.xz > /dev/sdX

    这里sdX是代表USB的设备号(这里为sdb),这里需要一分钟左右

    解压拷贝完成后将SD卡取出插入BeagleBone中,上电,启动需要一点时间,最后弹出BeagleBone窗口,最新的Angstrom已经装好。

    USB转以太网接口

    在Angstrom系统中,boot启动后,系统是运行了USB存储 gadget驱动,SD卡其中一个分区作为USB磁盘来访问。在Angstrom系统启动后还运行了USB转以太网接口gadget驱动,这样我们可以通过USB线来与BeagleBone建立IP连接,这样可以通过浏览器访问BeagleBone中的内容。

    将USB线连接PC和BeagleBone,USB可以提供电源,也可以通过外接5V稳压器供电,如图这是BeagleBone的电源就是由电源插座供电,这都是由BeagleBone上电源管理芯片自动切换。

    首先运行minicom,进入Angstrom系统,输入root登陆。此时输入lsmod,可以列表Angstrom系统运行的模块。包括g_mass_storage和ipv6。

    在PC机上弹出BeagleBone USB磁盘,再在Angstrom里输入lsmod,会发现g_mass_storage模块没有了,出现了g_ether模块,这个也就是USB转网口的gadget。

    输入ifconfig -a察看,出现usb0设备,这就是BeagleBone上的USB转网口接口。

    输入ifup usb0配置网络接口。BeagleBone的IP地址为192.168.7.2

    在浏览器中输入http://192.168.7.2,会进入BeagleBone101界面,这是BeagleBone的一个说明文件,对BeagleBone项目做了一些介绍。

    在浏览器地址中输入https://192.168.7.2,会进入GateOne界面,这是一个网络终端仿真器。

    在浏览器地址中输入http://192.168.7.2:3000,会进入Cloud9 IDE开发环境。

    以太网接口

    Beaglebone上有一个RJ45以太网接口,如果有多余的网络接口,直接链接BeagleBone的网口,这样访问Angstrom系统内容更方便。

    登陆Angstrom系统输入ifconfig -a察看网络链接,设备eth0就是BeagleBone上的网口,此时IP为192.168.0.163(路由器自动设置的)

    那此时浏览器访问的地址要变化了,输入http://192.168.0.163就可以直接访问BeagleBone101,其它的也类似。

    当然这时候Angstrom也能线升级或者安装各种应用软件。

     2.Windows XP

    连接BeagleBone上点之后,同样打开超级终端串口监视,Angstrom启动以后登陆。

    与之前的操作一样,先输入lsmod查看Angstrom系统下挂载的模块。在Windows系统下弹出BeagleBone USB磁盘,系统会提示需要安装RNDIS—Ethernet-Gadget驱动.rar。

     

    解压下载的驱动,安装RNDIS驱动。

    安装完成后PC和BeagleBone就通过USB转网口连接起来,下面看看通过浏览器访问BeagleBone。在浏览器网址输入http:/192.168.7.2

    也许是兼容问题,用IE访问总是会出错误,最好用FireFox或者Chrome浏览器。

    同样的如果通过BeagleBone的网口直接连上网络,设置好IP地址后就可以直接访问BeagleBone了,与Linux系统下差不多。

    BeagleBone的连接非常简单,达到了一根线调试的目的,只通过一根USB线就可以完成供电、传输数据甚至模拟网络访问。BeagleBone的网络接口也为软件开发提供了灵活性,对于开发者来说非常方便。BeagleBone Angstrom系统里集成了开源Cloud9 IDE开发环境,同时还能在线安装各种Linux应用软件,远程登录就能对BeagleBone进行完全操控,Angstrom对于软件开发人员是一个很好的学习和开发平台。

    是基于TI AM335x ARM Cortex-A8微处理器的开源开发平台。拥有USB、Ethernet和JTAG等完整的开发接口以及完全的扩展接口,提供了低成本,高扩展性的ARM平台。BeagleBone支持完全的Linux系统,我们可以找到多个开源的项目在其上运行了。

  • 大多数电子爱好者都是从学习单片机开始,在单片机经验上继续摸索更高级的芯片,板子。作为电子爱好者,我也已经玩单片机好久了,从最初的51单片机,再到TI的430系列的低功耗单片机,还有LM3S系列的Arm也当单片机用过一段时间。后来感觉不能仅仅会开发这些别人眼中的低端产品,我就把目光转移到FPGA,DSP和ARM嵌入式学习上来。

    由于大四一年时间松,任务轻,学习这些东西也是得心应手,很快掌握了FPGA,并对软硬件设计的结合有了较清晰的认识,FPGA的出现为自己设计sopc系统提供了很大可能性。当时也在想TI怎么没出FPGA的板子呢,只能选择Xinlinx和Altera的芯片做设计。在下学期做毕业设计的时候,有机会学习DSP,用的是TI公司的2812芯片,在实验室找了空板,申了样片,自己焊接完毕,不亦乐乎的学习起来,并应用到毕业设计当中。这一年的学习体验到芯片的快,无论是FPGA还是DSP都可以跑到上百兆,让之前一直做低端单片机的我大开眼界。即将研究生入学,老师要求学习ARM嵌入式,我理所当然的又获得了个学习的机会,从师兄手里借了一块BeagleBone开发板,虽然借的时侯还对它没什么概念,但其精致的外表和TI的商标已经足以让我心动。

    在拿到板子后,开始研究这个东西,但刚开始简直无从下手啊。在网上查阅了大量资料,发现ARM嵌入式不是想象的那么简单,不像51单片机或者launchpad那样可以轻松入门,只是平台搭建就够忙活好一阵了。拿到板子后,第一件事就是了解板子上的硬件资及电路设计,am3359主控芯片、电源、SD卡、USB、网卡、JTAG调试等一应俱全,引出的接口也很方便实验扩展。在了解硬件及电路设计的时候,“BeagleBone开发板使用手册”这个资料给了我很大帮助,在bbs.eeworld.com.cn/thread-321356-1-1.html%E5%8F%AF%E4%BB%A5%E4%B8%8B%E8%BD%BD。在了解基本硬件后就开始熟悉软件和平台,不像之前学单片机或FPGA那样,有个软件直接编程下载,ARM嵌入式倒是和学linux差不多,需要一台运行linux环境的计算机,这个需要到TI官网上下载最新sdk文件,然后运行,安装后找到ti-sdk-am335x-evm-05.04.01.00文件夹,运行setup.sh,我用的系统是ubuntu10.0,一切正常。安装完成后再为beaglebone编译u-boot和MLO,根据TI官方wiki步骤,编译u-boot, 可以参考processors.wiki.ti.com/.../AMSDK_u-boot_User%27s_Guide。 之后就是编译Kernel, 最后让BeagleBone运行起来。虽然步骤配置起来很麻烦,但是由于之前看过一点linux, 在网友的帮助下,还是顺利跑起来了,在格式化完SD卡,并做了读写测试后,迫不及待的开始研究如何驱动外围设备。

    首先学习的当然是GPIO驱动了,然而在linux操作环境下,对GPIO的操作比想象中难很多,虽然之前用LM3S系列ARM时,也用过GPIO,但那时底层驱动都已经封装好了,可以直接用。直接参考网友的驱动,写了LED驱动的函数,

    /* Enabling the GPIO module. */    

    GPIODirModeSet(GPIO_INSTANCE_ADDRESS,24,GPIO_DIR_OUTPUT);

    GPIODirModeSet(GPIO_INSTANCE_ADDRESS,22,GPIO_DIR_OUTPUT);

    GPIODirModeSet(GPIO_INSTANCE_ADDRESS,23,GPIO_DIR_OUTPUT);

    GPIODirModeSet(GPIO_INSTANCE_ADDRESS,24,GPIO_DIR_OUTPUT);

    写好驱动,在主函数里面直接调用就可以了,看着灯在那里一点点的闪,虽然简单,但终究有点成果了。在完成这个入门程序的开发后,又参考网友chenzhufly的18B20函数和显示函数,自己做了一个稳定采集显示的小玩意。感觉在搭建好实验平台后,又和当初单片机入门之后一样,一点点探索不同的外设和驱动,不断学习新知识。目前在eeworld 上看到了“我与BeagleBone有个约会活动”,越来越多的网页开始加入到BeagleBone的学习中来,有这么多人并肩战斗,感觉真好。给大家推荐一个帖子:我的Beaglebone学习历程bbs.eeworld.com.cn/viewthread.php。目前我也是在跟着这个帖子一步步深入学习BeagleBone。

    在学习过程中,发现德仪社区和电子工程师论坛有很多相关的资料,也有很多网友在学习同样的东西,可以从他们身上学到很多东西。在网友的帮助下,可以很快入门。同时也希望尽快深入BeagleBone,在力所能及的情况下鼓励更多的人加入到BeagleBone的学习中来。通过对BeagleBone的学习,嵌入式在我面前打开一片崭新的空间,不再是原来那些单片机那样的简简单单的控制,深入学习嵌入式,我还有很长的路要走,现在也仅仅是刚入门,要参考网友的经验,一点点深入熟悉BeagleBone,尽快开发出属于自己的项目。

  • 您好  想问下关于windows下AM3359开发环境的问题,我的邮箱aiqingdiy999@live.cn 可以给我发邮件么?交流下?急!谢谢!!!

  • 之前买过一个MSP430的单片机,用作开发。因为之前买过普通的8位单片机开发板,感觉能做的功能太有限了,而且板子总是不稳定。8位的单片机确实不好用,买过好多国产的芯片,虽然便宜,但是不稳定,已经报废了好多个了。后来网上查了一下16位的单片机,就买了一个MSP430用来开发,后来就自己摸索着进行研究。说实话,MSP430很适合进行板子开发,能实现的功能也很多,我用它做过一个点阵汉字显示,一个交通灯控制系统,不过由于是本科时做的,所以也没拍照。但是说实话,用起来确实很不错。

  • 正好我也在使用AM1808,项目刚刚展开,目前还在学习阶段。技术问题我喜欢记录过程,总结一些心得体会发表出来,希望可以对你有用!

    主要是关于AM1808开发板的NAND Flash烧写问题,针对WIKI网页中语焉不详的部分,详细介绍了Flash and Boot Utils 编译环境的建立,编译过程,烧写过程和中间遇到的问题及解决方法。

    AM1808入门-编译Flash and Boot Utils Package.doc
  • 后来我才发现,原来单片机的功能和ARM相比,差了好大,就有了想学习ARM的冲动。虽然没上看过ARM的课程,但是有了CPLD/FPGA的知识,又借了一些ARM的书,看了一下,也算基本掌握了。后来宿舍的一个ARM大牛买了个AM37x的ARM开发板。他挺厉害的,ARM学习的非常好。做过许多开发,挺佩服他的。现在看来,当初学习的单片机真的是小儿科了。

  •      和TI也有着挺深 的感情了,刚开始了解TI是从学习DSP开始的,那时候也知道了TI是家很棒的公司,在中国有大学计划,很不错。接触 BeagleBone也是不久前而已,由于项目要求就弄了块来学习。TI的 BeagleBone的优势还是很明显的,如可实现逼真的游戏实时像素图形及3D用户界面加速和无需添加额外硬件,便可提供用户状态等。

     由于才刚接触这块板子,就分享下安装angstrom系统的过程吧。

     1,可到相关的网站下载已经编译好的img.xz映像文件,

     2,将MINI SD放入读卡器插入开发主机,在主机终端运行:
                   sudo -s xz -dkc Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.05-beaglebone-2012.04.22.img.xz

     3,等待一下(可能也挺久的),等命令运行结束后,取出mini SD卡,将其插入BeagleBone开发板中,上电


          BeagleBone开发板会依次运行: U-Boot, Angstrom系统。

     4, 用minicom -s选择正确的串口,一般是ttyUSB1, 进入开发板的字符调试截面,输入用户名root进入Angstrom系统,OK!

      装angstrom系统基本就是这些步骤,BeagleBone还是挺好的。

  • 刚开始接触BeagleBone开发板很迷惑啊,总是拿着学习单片机的思维去想这个板子该怎么学,但是这个板子配置远没有那么简单,倒是和linux系统等嵌入式关系很大。由于刚拿到板子没多久,还没怎么搞懂究竟怎么用,论坛上这些帖子和经验分享着实令我受益颇多。在前辈帖子的指导下,我也开始了自己的BeagleBone开发之旅。在查阅了很多资料,逛了很多论坛之后,我意识到开发环境配置的重要性。刚开始用MINU USB将BeagleBone连接到电脑上时,会提示找到新硬件,但是驱动没法安装,只能继续研究,在电脑上发现了个教程,按照教程一步步解决了驱动问题。在网上看到了两种调试方式:一种是利用XP系统下超级终端,另一种是基于Linux环境下的。鉴于Linux开发的人比较多,资料比较全面,我打算配置Linux系统学习BeagleBone。安装虚拟机,下载教程,参考网友bbs.eeworld.com.cn/viewthread.php,一步步搭建实验环境。目前只学到这里,这次活动很多网友分享了好多有价值的资料,可以一点点学习了。

  • 自己平时接触的比较多的也就是TIDSP产品以及一些模拟器件。以前也用过msp430,上学期接触了一块BeagleBone开发板,发现它是一个具有高扩展性的ARM开发平台。 BeagleBone留出来的调试接口比较少,大部分设备都是通过mini USB口连接,由于接触这块板子时间不长,这里就先分享一下USB口驱动的安装吧。

    windows XP下的  驱动可以自动安装,FTDI USBD驱动要去FDTI官网上下载USB转串口的驱动文件http://www.ftdichip.com/Drivers/VCP.htm。然后就可以解压下载的驱动文件,驱动文件安装好后,就可以给板子通电了,可以直接用一根USB线供电就可以工作了,连接USB线到电脑,windows会自动识别,接着出现USB串口转换A,选择从列表安装,指定到下载的USB驱动程序目录。之后同样的步骤安装好USB串口转换B口以及BeagleBone串口。然后需要通过建立串口的通讯看串口是否配置成功。在XP系统中附件通讯中建立一个超级终端,选择BeagleBone的串口号,然后设置波特率,数据位等,设置好后复位BeagleBone,这时串口监视窗口就会有很多启动信息,Angstrom系统启动以后出现登陆提示,就可以登录上BeagleBonelinux系统了。这样就把xp系统下的BeagleBone的串口驱动装好了。

     

  • 测试USB和SD卡报告如下

    一、 USB设备测试

    AM1808有一个USB2.0的OTG接口,和一个USB1.1的接口。板载USB包括一个原生USB 2.0的OTG设备,和由HUB扩展的3个USB设备。

    将USB设备(U盘)插入原生USB口(J18),要注意P11跳线要设置为host,系统枚举成一个usb设备。

    然后运行“df”查看设备节点

    可以发现找到了一个设备,设备名称为sda1

    运行如下命令测试USB读写速度,sda1是设备名称,不同设备可能不同。

    hdparm -t /dev/sda1

    由输出信息不难看出,原生USB的读写速度12949kb/s,将近13Mb/s。这个速度同样也取决于U盘。

    将U盘拔下插到扩展USB(J15),测试扩展USB,同样会枚举成USB设备

    运行“df”查看设备节点

    运行如下命令查看扩展USB的读写速度

    hdparm -t /dev/sda1

    根据以上测试,原生USB是一个USB 2.0的OTG接口,而剩余的三个是由USB1.1扩展的接口,虽然是由HUB扩展的但是速度上与USB1.1相差不大。

    相比USB1.1接口,USB2.0的速度就显得非常有优势了。

    二、 SD卡测试

    1,普通SD卡测试

    插入SD卡,以金士顿 2GB为例,运行“df”查看

    可以发现设备名称mmcblk0p1

    切换工作目录到sd卡下,查看sd卡内容。

    cd /mnt/mmc/mmcblk0p1

    ls

    测试SD卡速度:

    hdparm -t /dev/mmcblk0p1

    2,SDHC高速卡测试

    SDHC是高速SD卡,插入一张高速SD卡,以金士顿 4GB SDHC卡为例。

    hdparm -t /dev/mmcblk0p1

    资料.docx
  •           这个活动挺好,刚好手头完成了一个项目,和大家分享下硬件心得。

    基于AM3359的PDA.pdf
  • GPIOchar型驱动,这里主要就是点个灯

    AM3553X的GPIO控制(Linux下).doc