9G45 FAQ

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

=硬件问题=

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

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

测试串口
问题描述： 测试串口，发送正常，但只能收到第一笔数据，之后数据收不到. 解答： 交叉串口线接受孔接触不良. 请更换串口线或跳线帽.

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

如何将PD24/PD26作pwm使用
获取相关操作文档，请联系技术支持人员.

SPI注册
在总线上注册，参考如下结构体： {        .modalias = "mcp2515", .chip_select = 1, .irq = AT91_PIN_PD25, .platform_data = &mcp251x_data, .max_speed_hz = 5 * 1000 * 1000, .bus_num = 0, .mode = 0, }, 另外，SPI设备驱动需要客户自行加载. SPI驱动目录：CD:\02 Linux 2.6 Kit\01 SourceCode\Kernel\linux-2.-6.30\drivers\spi\ateml_spi.c
 * 1) if defined(CONFIG_CAN_MCP2515) || defined(CONFIG_CAN_MCP2515_MODULE)
 * 1) endif

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芯片没有问题. 解答： 在纽扣电池没电或RTC芯片损坏时，都会出现RTC时钟不保存的现象. 如果在两种均正常情况下仍出现此问题，则可能是由于时钟驱动未更新所致，请联系技术支持人员，索要时钟驱动更新包.

=Linux=

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

watchdog默认时间15秒，如何改成5秒或其他时间
在watchdog的code中添加如下语句： int timeout = 5 ; ret=ioctl(wt_fd,WDIOC_SETTIMEOUT,&timeout);

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行)

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

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

如何修改串口波特率
修改com.c源程序，编译成可执行程序，烧入开发板即可.

如何开启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.用网线将开发板和PC机连接，确认PING通. C.Tftp下载目标文件所在目录不能有中文字符.

PING不通原因分析
A.serverip与addrip未在一个网段 B.网线有问题 C.某些公司使用无线连接局域网，此时需从交换机拉一根网线连接开发板，才能PING通

使用交叉编译工具编译镜像时，出现找不到编译器提示
环境变量路径没有添加或未添加正确.

如何定制logo，更换开机logo，及更改u-boot下logo
请联系技术支持，获取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     2)在source中加入 TARGETLIBS= \ ......        $(_PROJECTROOT)\cesysgen\oak\lib\$(_CPUINDPATH)\ceddk.lib \ \\添加的语句