at91sam9263芯片资源与CAN驱动调试心得

at91sam9263嵌入了一个基于200 mips(每秒百万条指令)的arm926ej-s微控制器(mcu),从而解决了在图形界面、数据密集型应用(比如联网的医疗监测设备和gps导航系统)中基于arm9的传统微控制器遭遇的瓶颈问题。
at91sam9263采用了27条dma(直接存储器存取)通道,包括atmel 18通道的pdc(外围直接存储器存取控制器)、一个9层的总线矩阵以及用于数据/指示tcm(紧密耦合式内存)的两条其他的总线,以便增强cpu性能并提供高达41.6 gbps的片上数据传输速率。两个ebi(外部总线接口)支持十亿字节以上的外部内存。
人机接口。片上人机接口外围设备包括一个相机接口、tft/stn lcd控制器、一个6通道音频前端接口(ac97)、i2s和一个2d图形协处理器,该处理器可减轻cpu的画线、区块传输、多边形填充和剪辑功能负担。
联网和通信。联网外围设备包括一个12mbps的usb主机和设备、10/100 ethernet mac(以太网媒体接入控制器)以及1 mbps can(控制器局域网)。另外还有四个usart(通用同步/异步收发器)、两个50 mbps spi(同步平行接口)、compactflash、sdio(mci)和一个twi(双线接口),该twi能被连接到诸如gprs调制解调器和wi-fi等有线和无线通信模块上。
外围的dma控制器使从外围设备到内存的数据传输无需使用cpu——基于arm9的传统处理器通过发出装载-存储指示(要求至少80个cpu 周期)实现内存和外围设备之间的一个字节的数据的传输。这些处理器以200 mhz(总线频率为100 mhz)运行,即使在内存管理单元和指示/数据缓存控制器都被激活的状态下,它们通常也会在传输达到约20 mbps时达到其功能极限。
atmel的at91sam9263整合了18个简单、硅高效(silicon-efficient)、单一周期的外围pdc、五个dma控制器(拥有对usb主机的突发模式支持)、ethernet mac、相机接口、lcd 控制器、2d图形控制器,以及一个内存到内存的dma控制器(支持突发模式、分散聚集和链表)。dma控制器彻底减轻了外部串行端口和内存之间的数据传输负担。当传输速度为20 mbps时,atmel的sam9263仍然有88%的mips可用于应用执行。
11层的总线和96千字节的片上sram(静态存储器)消除了带宽瓶颈。atmel在at92sam9263上配置了11条总线和96千字节的片上暂存sram。该sram可被部分地设定为紧密耦合式数据和指示内存。这些总线可提供多条并列片上传输通道和总计41.6 gbps的片上带宽。
两个ebi使arm9 cpu和图形处理器可同时、并行工作。at91sam9263拥有两个ebi:一个是系统内存接口,另一个则是人机接口。第二个接口使lcd控制器和cpu无需共享内存,同时使可用的cpu mips增长20%到40%。
【at91sam9263芯片资源】
1、融合了arm926ej-stm arm thumb的处理器
-dsp指令扩展,用于java 加速处理器的jazelle技术
-16k字节高速缓冲器,16k字节指令高速缓冲器,写缓冲器
-在220mhz 220mips
-内存管理单元
-embededicetm,调试通讯信道支持
-中等规模的执行内嵌式宏单元结构
2、总线矩阵
-9个32位层矩阵,允许片上总线带宽合计达28.8gbps
-引导模式选项,映像命令
3、嵌入式内存
-一个128k字节的内部rom,以最大总线矩阵速度实现单周期访问
-一个80k字节的内部sram,以处理器最大速度或最大总线矩阵速度实现单周期访问
-一个16k字节的内部sram,以最大总线矩阵速度实现单周期访问
4、双外部总线接口(ebi0-ebi1)
-ebi0支持sdram,静态内存,使能的ecc nand flash 和compact flash。
-ebi1支持sdram,静态内存,使能的ecc nand flash。
5、dma控制器
-充当一个总线矩阵主控器
-内嵌两个单向信道,这两个信道具备编程优先权、地址产生、信道缓存和控制。
6、20个外设dma控制器信道
7、lcd控制器
-支持主动或被动显示
-在tft模式下每个像素最大可以24bit,在stn彩色模式下每个像素最大可以16bit。
-在tft模式下最大可以16m彩色,分辨率可达2048x2048,支持虚拟屏幕缓存。
8、2d图形加速器
-直线拖动,块转移,多边形填充,剪切,命令排队。
9、摄像传感器接口
-itu-r bt.601/656外部接口,可编程帧捕捉速率。
-12bit接口,可以支持高灵敏度传感器。
-sav和eav同步,preview path with scaler,ycbcr格式。
l0、usb2.0全速(12mbit/秒)主机双端口
-双片上收发器
-集成的fifo和专用的dma信道。
l1、usb2.0全速(12mbit/秒)设备端口
-片上收发器,2,432字节可配置的集成dpram。
l2、10/100 base-t以太网mac
-独立的媒体接口或简化的独立的媒体接口。
-有用于接收和发送的28字节fifo和专用的dma信道。
l3、全部特性的系统控制器,包括
-复位控制器,停止控制器。
-20个32bit电池后备寄存器,总计达80字节。
-时钟发生器和电源管理控制器。
高级中断控制器和调试单元。
周期间个计时器,看门狗计时器和双实时计时器。
1)复位控制器(rstc)
-基于两个上电复位单元,复位源识别和复位输出控制。
2)停止控制器(shdwc)
-可编程管脚控制和唤醒电路。
3)时钟发生器(ckgr)
-32768hz低耗电振荡器用于后备电源供应,提供一个永久的低速时钟。
-3-20mhz片上振荡器,两个最大240mhz的pll。
4)电源管理控制器(pmc)
-较低时钟运行模式,软件可编程电源优化容量。
-4个可编程外部时钟信号。
5)高级中断控制器(aic)
-可单独屏蔽,8级优先权,矢量中断源。
-两个外部中断源和一个快速中断源,虚假中断保护。
6)调试单元(dbgu)
-2线uart并且支持调试通讯信道,可编程ice存取阻止。
7)周期性间隔计时器(pit)
-20bit间隔计时器加12bit间隔计数器。
8)看门狗计时器(wdt)
-加密保护,仅一次性编程,视窗化的16-bit计数器运行于低时钟
9)两个实时计时器(rtt)
-带有16-bit预分频器的自由备份计数器运行于低时钟
l4、5个32-bit并行输入/输出控制器(pioa,piob,pioc,piod和pioe)
-160可编程的i/o线同时传输于外部设备2 i/o
-每一条i/o线的信号输入、改变、中断性能
-个别可编程的漏极开路输出、上拉电阻、同步输出
-16全面可编程信息目标邮箱,时间戳计数器
l5、两个多媒体接口卡 (mci)
– sd卡/sdio 和 multimediacard 驱动
– 自动化协议控制和用pdc快速自动化数据传输
– 每一控制器带有两个sd卡槽支持
l6、两个同步串行控制器(ssc)
–每一个接收器和转换器有独立时钟和帧同步信号
– i2s模拟接口支持, 时间分区同步传输支持
– 以32-bit数据转换器高速持续数据流性能
l7、一个ac97 控制器 (ac97c)
– 6-频道信号 ac97 模拟前端接口,插槽分配
l8、3个通用同步和异步收发器 (usart)
– 独立的波特率发生器, irda红外线调制、解调,曼彻斯特编码、解码
– 支持 iso7816 t0/t1 smart 卡,硬件握手信号, rs485 支持
l9、两个主从串行总线接口(spi)
– 8到16-bit 可编程的数据长度,4个外部总线芯片选择
– 每秒 90mbits速度的同步通信
20、一个3频道的16-bit 计时器和计数器(tc)
– 三个外部时钟输入端, 每个频道提供2个多功能 i/o 插口
– 双 pwm 发生器, 原理图攫取,波形攫取模式,连接、断开性能
2l、一个四频道16-bit pwm 控制器wmc)
22、一个两线接口 (twi)
– 主模式支持,支持所有的 atmel eeproms
23、所有数字引脚的ieee 1149.1 jtag边界扫描
24、电源供应
–vddcore 和 vddbu 电压为1.08v 至1.32v
–vddosc 和 vddpll电压为 3.0v 至 3.6v
–vddiop0 (外设i/os)电压为2.7v 至 3.6v
–vddiop (外设 i/os)电压为11.65v 至 3.6v
–vddiom0/vddiom1 可编程电压为 1.65v 至 1.95v 或者 3.0v 至 3.6v (内存 i/os)
at91sam9263 can驱动调试心得
之前调试can设备,一般用的是一个从淘宝上买的usb转can的调试工具,100k -- 800k波特率基本没有什么问题,我们也就没有过多的去考虑一些细节的问题。忽一日,某客户说我们的can驱动有问题,跟他们的can调试设备通信不上,疑虑ing.遂带工具前往之,试之,果然。。。。
遂借其can调试工具回来捯饬,久未果 查其为zlg公司的产品,遂前往之。遇到周立功公司一个大牛,can专家,号称没有他解决不了的can问题,事实证明,却是有料,周立功公司的can 分析仪就是他们一帮人弄的,现在不做研发,转做服务了。拿can分析仪查之,发现我们的cpu发出的can波形 波特率对不上,虽然设置为500k,可是由于cpu时钟频率非常规频率,分频以后,can时钟再512k左右,zlg公司的can调试工具是标准品,他们一般要求时序是比较严格的,所以我们的设备跟他的调试工具之间通信通不上,但是网上购买的usb转can的调试工具则将sjw域设置的比较大 3或者4 左右,可以跟大部分的can通信上,即使是对方的can波特率不精确,存在比较大的误差。
can问题绝大部分呢,应该就是出在波特率的精确度上,但是一般情况下没有那么精准的测试仪器,所以搞的大家一头雾水。适当调整sjw 同步跳转宽度的大小,可以一定程度的解决这个问题,但是不是最佳的解决方案。虽然现象上看到,哦,通信正常了,我发的包对方可以收到,对方发的数据包我也可以收到,但是,事实是,这里面有了多次的重发,得益于can协议,重发,应答等等。
下面简单描述下can波特率的分析
比如说500k波特率,一个比特被分为16个时间因子
500k * 16 = 8m
所以can时钟应该尽量使8m的倍数。误差尽量小。
同理推算其他波特率跟时钟的对应关系。
在我们的9263应用中,mclk = plla/2,can时钟从mclk分频而来。
所以plla的取值应为16m的整数倍。我们的plla一般设置再200m---150m,所以plla可取192m 176m 160m等。
wince下设置就比较简单了,eboot启动后,空格可以进入eboot配置菜单,可以直接设置cpu的主频 跟 分频,不赘述。
裸奔的程序 则需要自己去设置倍频跟分频系数,从atmel官网下载了pll计算工具,帮了不上忙,可能没有那么精准,但是尽量接近就好。
#define board_mck ((16367660 * 98 / 10) / 2) /*160m*/
如上设置为160m的设置
除了这个宏定义的修改以为,在board_lowlevel.c中也需要做一些修改,
#define board_mula (at91c_ckgr_mula & (97 《《 16))
#define board_diva (at91c_ckgr_diva & 10)
就是那两个系数,注意分频系数不变,但是倍频系数减一了,原因看数据手册就明白。
原来以为这样就可以了,可是还有一个地方忽略了,看代码
void lowlevelinit( void )函数中
void lowlevelinit( void )
{
……。
#if !defined(sdram)
/* initialize main oscillator
初始化主振荡器,时钟等一系列操作
#endif //#if !defined(sdram)
。。。。。。。。。。。
}
整个过程包含在了对sdram宏的判断内,如果定义了sdram则不做下面的处理,乖乖,你不做这个处理怎么可以呢,遂注释掉上面两个宏定义。
这个宏定义不是在文件中定义的,而是在编译器的工程设置里面,
options-àc/c++ compiler preprocessor选项卡,最下面 defined symbols
也可以直接把sdram去掉。
一直在纠结sdram的初始化是在什么地方进行的?
调试心得之关于spi启动的问题
到底是什么问题呢:spi data flash本身的质量有问题造成的。
反映的现象是:从spi dataflash的0地址读取数据是没有任何问题的,但是如果从中间任何一段读取数据,就有严重的地址偏移问题。
调试过程及步骤如下:
原来认为是cpu(at91sam9263有a版本和b版本)版本有问题,造成无法读取flash造成,反馈的现象是:
当data flash启动后,会将第一段代码eboot.nb0,存放于data flash的0x5000偏移地址,加载后,会进行wince的引导。
但是实际结果是:
================================= 》romboot 》romboot 》romboot 》
info: low level init: ok starting main… at45db321 …
load ce-boot from flash to sdram jumping… -
==================================
从现象上看,data flash已经找到了,也就说明spi线路是正确的,但是为什么读的数据有问题呢?
怀疑问题有如下几个:
第一:data flash的spi本身硬件有问题,可能存在干扰。
第二:在从data flash拷贝数据到sdram中,出现错误,数据不正确,sdram初始化有问题。 第三:因我们的spi线路和以前的版本不同,采用了max3002进行了隔开,怀疑max3002本身造成spi线路的 不稳定。
第四:cpu版本有问题,at91sam9263从a到b版本,spi已经改过了,就我知道的是at91sasm9263 b版本的spi,需要两次复位才可以工作。
一个一个怀疑的问题进行验证:
一:sam ba 2.8可以对sdram进行初始化,都可以进行读写,说明sdram本身硬件上无问题。
第二:data flash ,samba 2.8都可以进行读写,也无任何问题,同时启动代码可以正确执行。那么就应该可以证明spi部分是能够工作的,但是问题在于at91sam9263 b版本内部的rom boot和at91sam9263 a版本的rom boot有不同,那么就证明说:在spi这个部分的初始化部分做了修正。所以,找到at91sam9263 b版本的spi部分的err data sheet。找问题。改了半天代码,问题还是依旧。
第三:实在没有办法了,2008年11月18日,找到百特的雷工,初步认定是cpu版本的问题,我自己认为自己的代码水平比较落后,请求雷工帮忙,最后验证结果如下:
从data flash读出的数据,放到sdram后出现了问题,我们以前的老板子,是无问题的。可以正确将数据从data flash读出来,然后,显示在串口上。每次从data flash中读10个字节,发现读出来的数据每次都是一致的,但是就是不正确。
没有办法,雷工也是好久没有写代码了,只好约好第二天,到白特找他们的工程师刘工,刘工是我老乡,真的够朋友,那天晚上搞到半夜,最后验证出来,现象是:从data flash偏移0x8000地址中读取的数据放到sdra m中,某一个位置找到差不多的数据。最后给出结果:可能是at91sam9263 b版本可能有问题,但是最大的问题是:sdram工作后,影响了spi的稳定性。
第四:太晚了,大家都各自回家了(这个时候我找百特定好了a版本的cpu,说是他们现在没货,第二天能送来),实在是没有任何头绪了,没有办法,赶快定了cpu,at91sam9263 a版本,恰好,百特没有货,他们老板从香港定来后,我们拿到,赶快去贴上,这个过程不过是1天的时间,下午了,下午3点就搞好,带上测试软件,跑到李工(我们焊接的师傅)那里,把工具全部架好,一测试,郁闷死了,竟然还是不行。天呀……
第五:看来a版本也不行,那只能怀疑是板的布线有问题了,因为没有别的办法可以想了,这个时候,我反倒放松了,因为我认为问题已经找到了。但是,到底是spi的哪条线受到了干扰呢?我对百特刘工的话深信不已。实在没有办法,上午我赶快拿着a版本的板子跑到百特,找到刘工,(想把他验证的结果再重演一下,刘工改了半天,发现是从data falsh的0地址,读出来数据放到sdram中是无问题的,一直也怀疑sdarm初始化有问题)根据这几天的测试结果,发现有一个疑点,我发现a版本的芯片,我写了一个小程序,从data flash中读取数据放到sram中也是不正确的。而且,和以前的测试结果完全一样。一直怀疑和芯片有关系,现在看,可以完全排除芯片at91sam9263的问题了。
第六:从data flash中读取数据放到sram中也是不正确的(我把sdram关闭了),我就推翻了刘工说的sdram对spi data flash有干扰想法。
刘工发现是从data falsh的0地址,读出来数据放到sdram中有大部分是相同的,这次把代码全部恢复过来,把data flash的0地址的数据放到0x23f00000(linux引导程序u-boot的地址)-0x8000的位置,这样,就可以保证在0x23f00000的位置上,有正确的u-boot程序。但是,等程序运行起来,还是没有得到正确的启动结果。有可能是有部分数据读出来后,还是有不正确的。
第七,实在是没有办法了,我们开始怀疑data flash有问题,恰好,我也问过我们的lisa(lisa是我们的采购,我原来一直认为这个data flash是从百特采购的,最后发现这个东西是从市场上采购来的,我很晕了,但是当时问lisa的时候,我没有放在心上,lisa说这个芯片是原装的),恰好我带上了一个我们老版本的板子,将老版本的板的data flash换上去后,完全ok了。

人工智能发力“智能+” 传统行业改造升级、万物互联
荣耀9什么时候上市最新消息:华为荣耀9旗舰即将发布,除了麒麟960+6G运存,还有这些功能
影驰极光幻影光效评测 游戏玩家的灯控神器
电流检测放大器替代仪表放大器实现在电路中的应用
USB Type-C取得里程碑式成就,苹果必将引领发展方向
at91sam9263芯片资源与CAN驱动调试心得
Caviar发布iPhone12系列黄金定制版
华为nova 6 SE惊艳来袭,4800万像素矩阵式四摄
基于Intersil的电源管理产品及低功耗设计介绍
电功率与机械功率的换算公式
射频测试线缆3.5mm和2.92mm连接器的区分
如何衡量比特币每秒的吞吐量
石墨烯在样品前处理中的应用
Apple Vision Pro的相关供应商公开
一种新的基于视觉语言模型的零镜头分类框架
2019TechNet Conference在香港举行 奥比中光作为高盛合作伙伴受邀出席
星链服务的下载速度已经超过了300Mbps,不过上传速度还有待提升
蓝牙耳机芯片因疫情和产能不足严重缺货
VR是什么,有什么作用
OPPO将持续发力声学领域,耳机产品发力空间音效领域