9G45 FAQ

From eLinux.org
Jump to: navigation, search


主要描述基于9G45开发时所遇到的一些问题及解决方法。

硬件问题

开发板不识别USB

确认nandflash/dataflash内无代码(或者拔掉相关flash的使能跳线帽)
用usb线连接开发板和PC机时,如果是台式机,请选择主机后面的usb口
给开发板上电,会显示usb识别,如果没有,可以按复位键,直到PC机识别usb
如果是第一次连接PC机,则需要安装驱动。如果驱动安装不正确,请卸载之前驱动,重新安装。
正常识别USB如下图:
Sbc6045 1a.jpg
以上步骤皆确认后,仍然无法正常识别,则有可能是usb线有问题,请更换usb线。
在以上所有操作皆尝试后,仍然不成功,请与售后联系,返修开发板。
xp,win7 32 位机上均测试成功。

触摸屏校准

问题描述:
使用自己的电阻触摸屏,校准后有较大误差,屏幕边缘偏差达1cm,触摸一固定点,触点抖动非常明显,画线测试时无法绘制平滑曲线,有严重的锯齿现象。
解答:
9G45对触屏特性有要求,要求电阻触摸阻抗越小越好,阻抗大,很难实现精准触摸。可用万用表测X+,X-与Y+,Y-之间阻抗。本公司屏不存在此现象,我司5.6寸屏阻值分别是613/463欧姆。
如果一定要使用自己的屏,可以通过降低采样频率,在驱动程序里应用简单的滤波算法,可有效改善锯齿现象。

测试串口

案例描述:
某客户在SBC6345平台wince系统下测试串口,发现发送正常,但只能收到第一笔数据,之后数据收不到,怀疑测试软件有问题。
解答:
经反复检查与运行串口测试软件代码,均未发现问题,后偶然使用另一交叉串口线,问题解决,原来是由于交叉串口线接受孔接触不良。如果遇到类似情况,请更换串口线或跳线帽。

16位色与24位色

问题描述:
开发板默认显示色深16位,显示正常。改为24为输出评估显示效果,发现:内核开机logo图片显示颜色正常,进入重点,执行QT测试程序,颜色很奇怪。将RGB改为BGR,应用程序颜色显示正常,内核启动logo颜色又不正常。
解答:
本公司的开发板在硬件上支持24位色深,在内核驱动中,board-sam9m10g45ek.c设置的是16位色深,实际采用的是R5G6B5 16为色深,另外本公司开发板配套的屏只能使用16位色。如果要用客户自己的屏使用24位,需要在开发板上跳线,修改硬件和内核驱动。
如果使用自己的屏且选择16位色,,可直接接RGB的高16位。

如何将PD24/PD26作pwm使用

获取相关操作文档,请联系技术支持人员。

SPI注册

在总线上注册,参考如下结构体:

static struct spi_board_info ek_spi_devices[] = { 
{
/* DataFlash chip */
.modalias = "mtd_dataflash",
.chip_select = 0,
.max_speed_hz = 15 * 1000 * 1000,
.bus_num = 0,
},
#if defined(CONFIG_CAN_MCP2515) || defined(CONFIG_CAN_MCP2515_MODULE)
{
.modalias = "mcp2515",
.chip_select = 1,
.irq = AT91_PIN_PD25,
.platform_data = &mcp251x_data,
.max_speed_hz = 5 * 1000 * 1000,
.bus_num = 0,
.mode = 0,
},
#endif
};

另外,SPI设备驱动需要客户自行加载。
SPI驱动目录:CD:\02 Linux 2.6 Kit\01 SourceCode\Kernel\linux-2.-6.30\drivers\spi\ateml_spi.c

SBC6345加4.3寸屏显示正常,接7寸屏,logo无显示,系统启动后,屏无任何反应,只有背光亮

SBC6345有一排LVDS排针,本身不能直接接屏,需要用LVDS-TTL转接板转换电平后,再接7.0寸屏。需要接3.3v供电的,类似于SBC6845。
解决方案:
A.将LVDS2TTL转接板上R5 0欧电阻补上
B.将屏驱动板上u19 3.3v 117电源芯片补上

RTC

问题描述:
6845纽扣电池正常,U2 pin6电压为3.1v,RTC不能保存时钟,每次复位重启,时钟显示均不一样,现象如下图所示:
Rtc 1a.JPG
解答:
在纽扣电池没电或RTC芯片损坏时,都会出现RTC时钟不保存的现象。
如果在两种均正常情况下仍出现此问题,则可能是由于时钟驱动未更新所致,请联系技术支持人员,索要时钟驱动更新包。

SBC6845下,7.0寸屏不亮,触摸是正常的

1.屏大小为7寸,需要设置JP10/JP11为0/1,即JP11跳线帽要盖上
2.查看屏背板上,U19是否有焊接,如果有,则不用插上SBC6845上JP9的跳线帽;如果没有焊接,请务必插上JP9的跳线帽。
3.查看屏背板上C19, R15, R14, R8四只元器件是否有焊接,如果有,请去掉它们;如果没有焊接,请断电后,用万用表测Q11的G,S极(同边的那两只引脚)引脚之间的电阻
4.将相关信息提供给FAE,以供分析。

Linux

SBC6045在u-boot,linux下显示dram 128M,是否可用256M

u-boot下的显示可以更改,实际可用到256M,linux下只能用到128M,核心板有两个DRAM,但分别挂在EBI0和EBI1上,他们的地址分别是20000000 和 70000000,不相连。
在wince下,可用到256M。

watchdog默认时间15秒,如何改成5秒或其他时间

在watchdog的main.c中添加如下语句:

   #include <linux/watchdog.h> 
int timeout = 5 ;
ret=ioctl(wt_fd,WDIOC_SETTIMEOUT,&timeout);

make,生成可执行文件watchdog即为所需。

SBC6045首次上电和reboot时,无法识别AC97,按reset重启时,可识别

AD1981B芯片的RESET由NRST控制,在reboot时,不会给NRST一个低电平,按复位键,会给NRST一个低电平,从而复位AD1981B芯片,进而识别AC97。
解决方案:
A.手动复位,按reset键即可
B.烧入新版u-boot。新版u-boot在每次系统重启时,都会给NRST一个低电平,复位AD1981B芯片,,识别AC97,前提:将地板上两电容C85/C53卸下,此操作不会对其他电路有影响。
u-boot代码目录:/u-boot-1.3.4/board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c (149行)
U boot-reset.JPG

由于nandflash有坏块,烧写uImage失败

因坏块而导致烧写失败时,可以跳过坏块,用tftp烧写。
假设坏块地址为0x1c1000,则可将uImage烧入0x1c2000中。此时,需要修改kernel分区,启动内核时,从0x1c2000启动,也可以修改u-boot的bootcmd,使之从0x1c2000读取内核系统到内存。

利用tftp烧写yaffs2文件失败

案例描述:
利用tftp烧写yaffs2文件失败,且在烧写0%处失败,但通过SD卡烧写可以成功。
解答:在tftp下载yaffs2文件时,文件传输时被更改,相关数据不正常,导致烧写失败。
此时推荐用SD卡进行烧写。

如何修改串口波特率

修改com.c源程序,编译成可执行程序,烧入开发板即可。

	fd = OpenDev(device); 
if (fd > 0) {
set_speed(fd,115200); //将此处115200修改成所需波特率
} else {
fprintf(stderr, "Error opening %s: $s\n", device, strerror(errno));
close(fd_r);
close(fd_o);
exit(1);
}

如何开启telnet服务

在/etc/init.d/rcS中添加如下内容:

 runlevel=S 
prevlevel=N
umask 022
export runlevel prevlevel
mount -a
mkdir /dev/pts
/bin/mknod /dev/pts/0 c 136 0
/bin/mknod /dev/pts/1 c 136 1
/bin/mknod /dev/pts/2 c 136 2
/bin/mknod /dev/pts/3 c 136 3
/bin/mknod /dev/pts/4 c 136 4
/bin/mknod /dev/pts/5 c 136 5
/bin/mount -t devpts devpts /dev/pts
echo /sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
/bin/hostname -F /etc/sysconfig/HOSTNAME
/usr/sbin/telnetd

tftp下载yaffs2文件不成功

A.serverip与addrip需要设置在同一个网段,且serverip是yaffs2文件所在的PC机的IP地址;
B.确认网线是正常的。
C.用网线将开发板和PC机连接,确认PING通。
D.Tftp下载目标文件所在目录不能有中文字符。

使用交叉编译工具编译镜像时,出现找不到编译器提示

环境变量路径没有添加或未添加正确。
Arm-none-linux-.JPG

请联系技术支持,获取logo相关文档。

如何实现USB转串口

以FT232芯片为例。
编译内核时,添加如下选项,配置进内核。

 Device driver 
<*> USB Serial Converter support
[*] USB Serial Console device support
[*] USB Generic Serial Driver
<*> USB FTDI Single Port Serial Driver

生成uImage后,烧入开发板即可。

Wince

6045下,BSP对于串口驱动,只能使用TXD/RXD,没有带RTS/CTS的RS485驱动。

请查看此目录:
CD:\SBC6045\03 WinCE 6.0 Kit\01 BSP\RS485 更新驱动。

使用MmMapIoSpace()函数时,链接缺少CEDDK.LIB

MmMapIoSpace这个函数是在ceddk里面实现的,所以需要link了ceddk.lib才能使用。
它的源码实现在:
X:\WINCE500\PUBLIC\COMMON\OAK\DRIVERS\CEDDK\DDK_MAP

     看pb的帮助 
Requirements
OS Versions: Windows CE 2.10 and later.
Header: CEDDK.h.
Link Library: CEDDK.lib.

解决方法:

   1)文件中加入头文件饱含#include <CEDDK.h> 
2)在source中加入 TARGETLIBS= \
......
$(_PROJECTROOT)\cesysgen\oak\lib\$(_CPUINDPATH)\ceddk.lib \ \\添加的语句