日期:2012-04-25
如果不是要试用BeagleBone,也不会花着大把的时间去研究AM335X的硬件系统设计,这些天翻阅了TI好多的文档资料,有一些小小的心得,和大家共享一下,全当做个记录,时间久了可以回来翻翻。
关于AM335X的硬件系统介绍可以参考这个链接:http://processors.wiki.ti.com/index.php/AM335x_Hardware_Design_Guide
== Hardware Design Timeline → ==
Constructing the Block Diagram |
→ |
Selecting the Boot Mode |
→ |
Confirming Pin Multiplexing Compatibility |
→ |
Confirming Electrical and Timing Compatibility |
→ |
Designing the Power Subsystem |
→ |
Designing the Clocking Subsystem |
→ |
Floorplanning the PCB |
→ |
Creating the Schematics |
→ |
Laying out the PCB |
→ |
Testing / Debugging |
我主要按以下的顺序,谈谈我最近的一些收获,仅供大家参考。
BeagleBone的参考手册:《BeagleBone Rev A3 System Reference Manual》
1) 关于电源
TI总是宣传AM335x只要5美元,你们在看看它配套使用的电源芯片,价格也不菲啊,都在4美元左右,真他妈的坑爹!而且电源芯片选择的余地也不大,这点对于系统设计来说倒是一件好事,不用过多的纠结,使用成熟的方案就行了。
常见的搭配:可以参考一下《AM335x power options》
也就这几颗料,AM335X_EVM中使用的是TPS65910,在BeagleBone中使用的是TPS65217
有以下几个文档可以参考:
《TPS65217 User’s Guide for AM335x Processors (SLVU551)》
《TPS65910A User's Guide For AM335x Processors (SWCU093)》
《Powering the AM335x With the TPS650250 (SLVA487)》
《Power Management Units for Embedded Processors》
这个链接写的比较详细:http://processors.wiki.ti.com/index.php/Device:AM335x:Device_Evaluation
BeagleBone上用的TPS65217也是挺有意思的,看到了吧,有A,B,C三种,有啥区别呢?看看下面的图可能就有启发了。
很明显我们用的是TPS65217B,为啥呢?AM3359只有ZCZ封装,板载memory是DDR2的。
那么AM3359有几种电源呢?《在AM335x ARM® Cortex™-A8 Microprocessors (MPUs)》第77页有详细的介绍,主要有1.1V,1.8V,3.3V
在不同的模式下,系统的主频不一样,对VDD_MPU,VDD_CORE的电压需求也不一样。
为什么需要专门的电源芯片,估计是和它各个电源的上电顺序有关。普通的电源芯片能不能满足系统设计要求,目前还没看到成熟的方案,谁也不想自己去当个小白鼠,还是随大流的好。AM335x各个电压的上电顺序如下:
由于拿到的试用板子是A3版本的,而且芯片型号也是XAM3359,属于实验样品,没有标明芯片的速率等级,也不知道能跑多快。不过从Linux的系统打印来看,应该是在500MHz或者600MHz
IO的电压也有两种,1.8V或3.3V
从上面的图上可以看到这样的话,Supply voltage range for dual- voltage IO domain
BeagleBone上是直接接在3.3V上的
BeagleBone Rev3的原理图可以从这个地址得到:https://github.com/CircuitCo/BeagleBone-RevA3
关于电源功耗的评估在这个地址可以看到:http://processors.wiki.ti.com/index.php/AM335x_Power_Consumption_Summary,还是挺详细的
2) 关于时钟
详细的细节参考datasheet吧,主要的就下面两句话:
- The device operation requires a 32k optional crystal and HF crystal with either 19.2,24,25,26 MHz reference clock for operation.
- A 32.768-kHz clock input is an optional for the RTC.
BeagleBone采用的是24MHz外部时钟,原理图如下:
至于内部的主时钟和外部输入的时钟是啥关系,这个还需要进一步的研究,不过和硬件设计本身没有太大的关系。
3) 关于启动模式
The following boot modes are supported:
- NOR Flash boot
- NAND Flash boot
- SPI boot
- SD/MMC boot
- EMAC boot
- UART boot
- USB boot (like an ethernet card, not as mass storage)
前面4个应该是目前比较流行的启动模式,NorFlash目前随着文件系统和应用的不断扩大,已经渐渐的没落了。现在比较如日中天的应该是从NandFlash启动
BeagleBone目前只是的是从SD卡启动,这个在调试阶段还是挺方便的,做生产的话就有些牵强了,最起码我是不推荐使用的
在这里不得不提美光的一颗memory芯片,型号:MT29CxGxxMAxxxJA
有什么特色呢:137-Ball NAND Flash with LP-DRAM MCP,也就是memory里面既有nand也有LP-DRAM
恰好这个AM335X都支持,这样的memory我很喜欢。可以把系统设计的更加的小巧,而且不用SD卡启动了,适合产品开发。
同时我也见过成功的案例,DM3730 + 这个料
关于系统的启动流程不在这个里面讨论了,有空单独说说
4) 关于网口
尼玛,不是都标榜有千兆网口吗,我翻遍所有的和AM335X相关的demo板,都是百兆网口,这是为什么??这是为什么???
貌似BeagleBone的接口的接法是MII接口,只有和手册上的RGMII接口类似,但是时钟又是25MHz的,速率只能到100M啊,是不是换成125M的就能到1000M?不过LAN8710也不支持千兆网,哈哈。好奇怪的哦
科普一下:
RGMII(Reduced Gigabit Media Independent Interface)是Reduced GMII(吉比特介质独立接口)。GMII和RGMII均采用8位数据接口,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式,支持传输速率:10M/100M/1000Mb/s ,其对应clk 信号分别为:2.5MHz/25MHz/125MHz。RGMII数据结构符合IEEE以太网标准,接口定义见IEEE 802.3-2000。