搜索
bottom↓
楼主: qwert

70元买的卫星导航仪,不知道值不值(多图)?

[复制链接]

出0入0汤圆

发表于 2011-1-7 16:29:11 | 显示全部楼层
回复【194楼】momo31  
jtag引脚我找到了,电路板有sd卡槽的那一面,con6 插座就是
-----------------------------------------------------------------------

高手啊,第一个感谢你。

出0入0汤圆

发表于 2011-1-7 17:04:31 | 显示全部楼层
那些拿到板子的朋友们,现在可以放心的开搞了。楼主要是能再弄30套导航仪,又一个开源项目出场了

我是第一次搞arm9,不懂。就把bga下面的过孔给研究了一遍,结合2410的bga引脚图,然后把阻焊刮掉,用万用表找可疑的jtag引出脚。


(原文件名:1.jpg)

出0入0汤圆

发表于 2011-1-7 18:54:39 | 显示全部楼层
又一个重大发现,gps模块是sirf3 芯片的

可能不同机器用的模块有所区别,我是白色的机器,序列号是633……gps模块电路板上的丝印和楼主发的有所不同

接口研究了下,好像不是串口,有可能是usb的,但是pcb背面有rxb,txb,这个也许能做个串口gps模块

下面是拆解图

(原文件名:P2011T(104).jpg)


(原文件名:P2011T(105).jpg)


(原文件名:P2011T(106).jpg)


(原文件名:P2011T(107).jpg)


(原文件名:P2011T(108).jpg)

出0入0汤圆

发表于 2011-1-7 20:01:35 | 显示全部楼层
感谢momo31 !
如果能测出来lcd和按键的管脚,就更像开发板了。

出0入0汤圆

发表于 2011-1-7 20:04:38 | 显示全部楼层
回复【197楼】momo31
-----------------------------------------------------------------------

我的GPS 的和你的电路板不一样~~  

应该仅仅是电路板不同而已了~~~
====================================

你把jtag 找到了??   牛人~~~

出0入0汤圆

发表于 2011-1-7 20:35:53 | 显示全部楼层
大家帮忙看看这个芯片是多少?这个有点问题,现在冲电不进去,开不了机了。谢谢

(原文件名:279e1920260453fae6cdd50ac5329318.jpg)

出0入0汤圆

发表于 2011-1-7 20:45:10 | 显示全部楼层
是否喽
tps2113a?

出0入0汤圆

发表于 2011-1-8 09:35:24 | 显示全部楼层
感谢 momo31 提供的参考,JTAG都被你弄出来了,大神啊!

出0入0汤圆

发表于 2011-1-8 09:38:01 | 显示全部楼层
我的CE界面还没搞出来,配置文件看了一便,不知道改什么

出0入0汤圆

发表于 2011-1-8 09:49:13 | 显示全部楼层
液晶是模拟屏,和主控的专用驱动器联接,应该是通用地接法,按键需要测绘

出0入0汤圆

发表于 2011-1-8 11:04:44 | 显示全部楼层
回复【197楼】momo31  
又一个重大发现,gps模块是sirf3 芯片的
可能不同机器用的模块有所区别,我是白色的机器,序列号是633……gps模块电路板上的丝印和楼主发的有所不同
接口研究了下,好像不是串口,有可能是usb的,但是pcb背面有rxb,txb,这个也许能做个串口gps模块
下面是拆解图

(原文件名:p2011t(104).jpg)

(原文件名:p2011t(105).jpg)

(原文件名:p2011t(106).jpg)

(原文件名:p2011t(107).jpg......
-----------------------------------------------------------------------

<center>

我的也是白色的,GPS跟你的一样的。而且主板的日期是2005.12.12,不是LZ的2005.11.25。 但用CE 端口测试软件,GPS是接在Serial COM2, 不是GPS COM3的,接串口比接USB口的成本低点吧。

出0入0汤圆

发表于 2011-1-8 11:44:08 | 显示全部楼层
LS的你的图看不见啊

出0入0汤圆

发表于 2011-1-8 12:25:24 | 显示全部楼层
相机的电池不太给力,这几天在家的时间没多少,主板的没拍照了。

出0入0汤圆

发表于 2011-1-8 13:40:35 | 显示全部楼层
点击此处下载 ourdev_609884U5NSIX.rar(文件大小:447K) (原文件名:SP系统PC端的注_册表编辑工具,绿色的!.rar)

PC上修改CE注_册表的软件。

出0入0汤圆

发表于 2011-1-8 19:44:12 | 显示全部楼层
楼上的都是一群狼,也不留一台。

出0入0汤圆

发表于 2011-1-9 08:48:06 | 显示全部楼层
这几天要陪家人在医院打点滴,现在用手机上的网。其实很简单的,就是机子跟电脑连接完成后,打开那个绿色的注_册表编辑器,修改CE的部分,将local machine\init\ 下的launch90的值修改为explorer.exe(原为MainPage.exe),再捅一下机子背后的reset就可以了。但如果关机重开后就要重复以上的步骤,目前还没找到其他办法,或者通过jtag,灌自己编译的固件进去。

出10入210汤圆

发表于 2011-1-9 09:06:13 | 显示全部楼层
我昨天请教过arvidwen 柏联域,经arvidwen 柏联域指点,我的能运行凯立得了。
我正在写方法,请稍等......

出0入0汤圆

发表于 2011-1-9 09:56:17 | 显示全部楼层
回复【212楼】rainbow 老陈
我昨天请教过arvidwen 柏联域,经arvidwen 柏联域指点,我的能运行凯立得了。
我正在写方法,请稍等......
-----------------------------------------------------------------------

能否将凯立德的软件共享下,上面给的链接失效了

出0入0汤圆

发表于 2011-1-9 10:15:01 | 显示全部楼层
绝对超值@

出10入210汤圆

发表于 2011-1-9 10:27:54 | 显示全部楼层
Word2003格式文件:点击此处下载 ourdev_610007ESAAD8.doc(文件大小:3.50M) (原文件名:PN80.doc)

凯立德P1515-D5402-2241J07完美版320x240
地图数据下载地址:
卷一:http://u.115.com/file/t589d878b9
卷二:http://u.115.com/file/t59ab3c6f

3.5主程序

P1515-D5402-2241J07主程序下载:
http://u.115.com/file/t5383d3cba

●NAVICONFIG.txt文件内容(这个不改也没有关系,导航软件中可自动or手动设置)
MMPORT=COM2:
BAUDRATE=4800(可通过NAVICONFIG进行修改)


●xLoader.ini文件内容
[配置]
文件路径=NaviOne.exe
保持背光=1
打开蓝牙=0
蓝牙延迟=0
旋转屏幕=4
来电处理=3
隐藏任务栏=1
竖屏通话=0

驱动
http://cache.ourdev.cn/bbs_upload842621/files_35/ourdev_609134OCHC03.rar

同步软件
http://cache.ourdev.cn/bbs_upload842621/files_35/ourdev_609104AFFD4Y.zip

OURDEV网友arvidwen 柏联域上传在【208楼】的注_册表编辑工具
SP系统PC端的注_册表编辑工具,绿色的!.rar
http://cache.ourdev.cn/bbs_upload842621/files_35/ourdev_609884U5NSIX.rar


将地图文件解压,将2241j07目录中的所有文件复制或移动到主程序“NaviOne”目录中,将NaviOne目录复制到SD卡的根目录下。

(原文件名:SD卡文件.jpg)


同步软件及驱动的安装就不写了。

已连接:

(原文件名:已连接.jpg)


使用更改注_册表:

(原文件名:注_册表更改.jpg)

关闭注_册表编辑软件后,捅一下Reset键,复位机器,就能进入WinCE的桌面了。
下面的操作就自己搞定吧。上几张图,手机照的,凑合着看看吧。

(原文件名:00.jpg)


(原文件名:01.jpg)


(原文件名:03.jpg)


(原文件名:04.jpg)


(原文件名:05.jpg)


(原文件名:06.jpg)


(原文件名:07.jpg)


(原文件名:08.jpg)


(原文件名:09.jpg)


(原文件名:10.jpg)


(原文件名:11.jpg)


(原文件名:12.jpg)

出10入210汤圆

发表于 2011-1-9 10:31:34 | 显示全部楼层
回复【213楼】xbq1001
回复【212楼】rainbow 老陈
我昨天请教过arvidwen 柏联域,经arvidwen 柏联域指点,我的能运行凯立得了。  
我正在写方法,请稍等......
-----------------------------------------------------------------------
能否将凯立德的软件共享下,上面给的链接失效了
-----------------------------------------------------------------------

215楼中115网盘的地址可用,共享时间还有25天。你再试试。
地图是两个包,总共1.36G,主程序57M。

出0入0汤圆

发表于 2011-1-9 10:31:58 | 显示全部楼层
写得很好!

出0入0汤圆

发表于 2011-1-9 10:37:56 | 显示全部楼层
回复【212楼】rainbow  老陈
我昨天请教过arvidwen 柏联域,经arvidwen 柏联域指点,我的能运行凯立得了。
我正在写方法,请稍等......
-----------------------------------------------------------------------

老陈太客气了。我只是用过一段时间windows mobile系统的手机,刚好知道方法。

出10入210汤圆

发表于 2011-1-9 11:19:19 | 显示全部楼层
回复【218楼】arvidwen 柏联域
-----------------------------------------------------------------------

真的谢谢你的耐心指导。

出0入0汤圆

发表于 2011-1-9 15:28:22 | 显示全部楼层
木有2G卡,很郁闷

出0入0汤圆

发表于 2011-1-9 16:33:05 | 显示全部楼层
上传一个串口调试工具,选择COM2,4800baud就能看到卫星信号

点击此处下载 ourdev_610060FYODID.rar(文件大小:5.27M) (原文件名:WINCE下的实用程序.rar)

GPS通信标准NMEA格式说明
By Alpha20. 一月 2009 21:49
PPC上用的几乎所有的gps设备软件都是向串口发送NMEA数据,而几乎所有的ppc gps软件都是从串口取得NMEA数据进行处理。
有一点儿现在需要注意,PPC WM6.1以及以下的系统自带的自动管理GPS效果都很一般,推荐在使用时将程序端口和硬件端口都设置为无,并关闭PPC的GPS自动管理功能,使用GPSGate这款PPC上用来管理GPS通信的软件。
从NMEA数据所包括的信息来看,正常的GPS软件之间不存在定位精度、定位速度、车辆行驶信息不同等差别,因为这些数据都来自GPS,软件只是调用。所以应该不会出现所谓的xx软件定位慢、xx软件速度误差大、xx软件收星不良等问题。
NMEA数据如下:
$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77
$GPRMC,121252.000,A,3958.3032,N,11629.6046,E,15.15,359.95,070306,,,A*54
$GPVTG,359.95,T,,M,15.15,N,28.0,K,A*04
$GPGGA,121253.000,3937.3090,N,11611.6057,E,1,06,1.2,44.6,M,-5.7,M,,0000*72
$GPGSA,A,3,14,15,05,22,18,26,,,,,,,2.1,1.2,1.7*3D
$GPGSV,3,1,10,18,84,067,23,09,67,067,27,22,49,312,28,15,47,231,30*70
$GPGSV,3,2,10,21,32,199,23,14,25,272,24,05,21,140,32,26,14,070,20*7E
$GPGSV,3,3,10,29,07,074,,30,07,163,28*7D
说明:NMEA0183格式以“$”开始,主要语句有GPGGA,GPVTG,GPRMC等
1、 GPS DOP and Active Satellites(GSA)当前卫星信息
$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7><CR><LF>
<1>模式 :M = 手动, A = 自动。
<2>定位型式 1 = 未定位, 2 = 二维定位, 3 = 三维定位。
<3>PRN 数字:01 至 32 表天空使用中的卫星编号,最多可接收12颗卫星信息。
<4> PDOP位置精度因子(0.5~99.9)
<5> HDOP水平精度因子(0.5~99.9)
<6> VDOP垂直精度因子(0.5~99.9)
<7> Checksum.(检查位).
2、 GPS Satellites in View(GSV)可见卫星信息
$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,?<4>,<5>,<6>,<7>,<8><CR><LF>
<1> GSV语句的总数
<2> 本句GSV的编号
<3> 可见卫星的总数,00 至 12。
<4> 卫星编号, 01 至 32。
<5>卫星仰角, 00 至 90 度。
<6>卫星方位角, 000 至 359 度。实际值。
<7>讯号噪声比(C/No), 00 至 99 dB;无表未接收到讯号。
<8>Checksum.(检查位).
第<4>,<5>,<6>,<7>项个别卫星会重复出现,每行最多有四颗卫星。其余卫星信息会于次一行出现,若未使用,这些字段会空白。
3、Global Positioning System Fix Data(GGA)GPS定位信息
$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>
<1> UTC时间,hhmmss(时分秒)格式
<2> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<3> 纬度半球N(北半球)或S(南半球)
<4> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<5> 经度半球E(东经)或W(西经)
<6> GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算
<7> 正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)
<8> HDOP水平精度因子(0.5~99.9)
<9> 海拔高度(-9999.9~99999.9)
<10> 地球椭球面相对大地水准面的高度
<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
<12> 差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)
4、Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐定位信息
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
<1> UTC时间,hhmmss(时分秒)格式
<2> 定位状态,A=有效定位,V=无效定位
<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<4> 纬度半球N(北半球)或S(南半球)
<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<6> 经度半球E(东经)或W(西经)
<7> 地面速率(000.0~999.9节,前面的0也将被传输)
<8> 地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
<9> UTC日期,ddmmyy(日月年)格式
<10> 磁偏角(000.0~180.0度,前面的0也将被传输)
<11> 磁偏角方向,E(东)或W(西)
<12> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
5、 Track Made Good and Ground Speed(VTG)地面速度信息
$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh<CR><LF>
<1> 以真北为参考基准的地面航向(000~359度,前面的0也将被传输)
<2> 以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)
<3> 地面速率(000.0~999.9节,前面的0也将被传输)
<4> 地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)
<5> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)



转自:http://lishao378.blog.sohu.com/103079419.html

出0入0汤圆

发表于 2011-1-9 20:14:11 | 显示全部楼层
黑色外壳的有收到星的没,我的和191楼的一样,搜不到星

出0入0汤圆

发表于 2011-1-9 20:51:51 | 显示全部楼层
第一次需要把机器拿到室外等半个小时,我的就是这样的,第一次定位成功后,以后再开机时就只需要几分钟就可以了

出0入0汤圆

发表于 2011-1-9 21:06:24 | 显示全部楼层
还有吗,

出0入0汤圆

发表于 2011-1-9 21:35:33 | 显示全部楼层
我也想问这个问题耶,看到这个帖子晚了

出0入0汤圆

 楼主| 发表于 2011-1-9 21:44:45 | 显示全部楼层
上次拿30台时还有20套左右全套包装的,不过卖的人开价要100多,当时不敢要。
今天去要过来了,不过只得13套了,全套配件的,带包装,迟点放上来

出0入0汤圆

发表于 2011-1-10 13:50:24 | 显示全部楼层
用几伏电压充电?

出0入0汤圆

发表于 2011-1-10 14:11:41 | 显示全部楼层
5v

出0入0汤圆

发表于 2011-1-10 14:13:44 | 显示全部楼层
实测充电电流大约是950mA

出0入0汤圆

发表于 2011-1-10 14:40:48 | 显示全部楼层
找了一个2G卡,已经测试通过,我的是黑色的

在开阔地方才好使,窗户边,阳台上都不行

出0入0汤圆

 楼主| 发表于 2011-1-10 14:53:40 | 显示全部楼层
找到款跟定制差不多的电芯,最大可能利用了机内的空间,可以刚刚好放进,容量差不多是原来的两倍,续航时间可以比原来多近一倍

(原文件名:nEO_IMG_IMG_8909.jpg)


(原文件名:nEO_IMG_IMG_8896.jpg)


(原文件名:nEO_IMG_IMG_8888.jpg)

出0入0汤圆

 楼主| 发表于 2011-1-10 18:45:15 | 显示全部楼层
配件有五样,一直充一车充一数据线一耳线一支座:

(原文件名:nEO_IMG_IMG_8824_.JPG)
黑的有8台:

(原文件名:nEO_IMG_IMG_8835.jpg)
白的5台:

(原文件名:nEO_IMG_IMG_8837.jpg)

当时跟老板说只要机头不要配件,打死都不肯卖。所以我是只能花钱把配件一起买过来了,因为是全套配件带包装,比单机头的要贵50元,所以卖出的价格自然会高好些。今天有好几个坛友问我能不能单买机头,不要配件,所以很抱歉,配件不另卖的,我留着也没有用,只整套卖。
定的价就是实价,就不再打折了,定个180,200再打8折也没有意义是不,加几十的辛苦费,说实话我也想赚多点,呵呵。

出0入0汤圆

 楼主| 发表于 2011-1-10 18:57:33 | 显示全部楼层
上批遇到个很郁闷的事,就是有个哥们拍了个机子,我当天就发货了,但快递发货慢了点,正常是第二天可以收到的(广东省内的),这哥们第二天就来责问我怎么回事,说从下单到现在已3天了,怎么还没有收到货,我一连抱歉了几个,解释了几次,第三天收到货了还来找我麻烦。
  所以有那位急性子的哥们,急着要的,千万记得拍下时联系下我叫发顺丰(默认发申通圆通,我方便发货),我会改下运费的,就多几元10元的运费,望体谅下,我可以保证尽快发出,但快递的快慢我真干涉不到的。

出0入0汤圆

 楼主| 发表于 2011-1-10 19:25:24 | 显示全部楼层
http://item.taobao.com/auction/item_detail.htm?item_num_id=8947872550

PN80 配套聚合物电池,容量是原来的近两倍:
http://item.taobao.com/auction/item_detail.htm?item_num_id=9052482298

继续送出5样宝贝:
DC 4.0 插头(可以送一件):http://item.taobao.com/auction/item_detail.htm?item_num_id=8947747118

电源导线(可以送一条):http://item.taobao.com/auction/item_detail.htm?item_num_id=8947842646

手写笔(可以送一支):http://item.taobao.com/auction/item_detail.htm?item_num_id=8947706074

2.4寸 4线触摸屏(可以送一块):http://item.taobao.com/auction/item_detail.htm?item_num_id=8948087064

30万 带JPEG压缩 摄像头(可以送2个):http://item.taobao.com/auction/item_detail.htm?item_num_id=8948026632

出0入0汤圆

发表于 2011-1-10 23:16:20 | 显示全部楼层
凯立德软件视频教程
http://www.tudou.com/programs/view/lFdU1NukC5I/
百度文库下载(需20积分)!
http://wenku.baidu.com/view/1b32f1f3f90f76c661371ae2.html

出0入0汤圆

发表于 2011-1-10 23:36:45 | 显示全部楼层
4G SDHC SD卡认不出怎么办?

出10入210汤圆

发表于 2011-1-11 08:14:02 | 显示全部楼层
回复【237楼】51rf
4g sdhc sd卡认不出怎么办?

-----------------------------------------------------------------------

程序没升级只能认2G及以下的卡,不支持HC类的。

出0入0汤圆

 楼主| 发表于 2011-1-11 11:15:48 | 显示全部楼层
使用lazarus(delphi pascal)开发自己的WIN CE程序:

[edit] 設定Windows CE介面
要設定Windows CE介面,您需要多裝一個安裝程式,或者是手動設定介面,以下對兩種方法都有詳細的說明,當然,透過安裝程式當然是簡單多了。

[edit] 使用額外的安裝程式
要用第一次穩定的Free Pascal for Windows CE來安裝WinCE開發環境的動作從來都沒容易過。

逐步教學:

要在Windows作業系統上安裝最新版的Lazarus,請直接從SourceForge網站上下載: http://sourceforge.net/project/showfiles.php?group_id=89339
要下載Lazarus編譯器的外加功能安裝程式,您也可以直接下載,同樣從Source Forge的下載網頁就可以找到了。
安裝完成後,您就可以透過Lazarus編譯Win32應用程式,以及arm-wince的應用程式了,當然,要編譯arm-wince應用程式時,您要先變更編譯器選項:
Project->Compiler Option->Paths分頁


LCL Widget Type(various): wince
Project->Compiler Option->Code分頁


Target OS: wince
Target CPU: arm
[edit] 手動設定Windows CE介面
提供給Windows CE用的編譯器跟執行時期函式庫只有在Free Pascal 2.1.x版裡面才有附。Lazarus的最新版本裡面有包含這一版的Free Pascal。

步驟一 – 您得先在Windows上面把編譯器重新進行編譯,以產生Windows CE-ARM 交叉編譯器,相關指令請見: [移植WinCE].

步驟二 – 您必須用步驟一裡面產生出來的交叉編譯器,把FCL (Free Component Library)重新編譯,請參考[這裡]的指令說明。

步驟三 – 將以下的指令作成批次檔,放在您安裝Lazarus的目錄下,並執行它:

PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm
make lcl LCL_PLATFORM=wince PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince
上述指令會編譯出Windows CE可使用的LCL。

步驟四 – 把LazarusPackageIntf 進行交叉編譯,這樣就可以使用第三方視覺元件了,請切換到lazarus\packager\registration目錄:

PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm
make PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince
附註: 您必須要在您的專案的unit path中,特地把$(LazarusDir)\packager\units\$(TargetCPU)-$(TargetOS)\ 這個路徑加入,只要您的專案有把FCL設定成必要套件,專案的unit path就一定要加該路徑。

步驟五 – 現在您就可以開始使用Lazarus IDE來設計、編譯、對您的應用程式進行偵錯了。

您可以用跟以下的批次檔類似的指令來編譯您的應用程式:
PATH=C:\Programas\lazarus\pp\bin\i386-win32;c:\Programas\arm
ppcrossarm.exe -Twince -FuC:\Programas\fpc\rtl\units\arm-wince -FDC:\Programas\arm -XParm-wince- test.pas
ppcrossarm.exe -Twince -FuC:\programas\lazarus\lcl\units\arm-wince -FuC:\programas\lazarus\lcl\units\arm-wince\wince -FuC:\Programas\fpc\rtl\units\arm-wince -FDC:\Programas\arm -XParm-wince- windowtest.pas
[edit] 用Lazarus IDE來編譯Windows CE的專案
附註: 最近常有使用者回報,在進行程式連結的時候,IDE會回報說找不到 "wincemenures.or"這個檔案。您只要從"lazarus/lcl/interfaces/wince"這個目錄裡把該檔案複製到"lazarus/lcl/units/arm-wince"目錄就行了。

就像您要為其他介面跟作業系統的程式進行編譯的動作一樣。請確定您已經把Lazarus選單裡面的設定設好了: Project->Compiler Option->Paths分頁


LCL Widget Type(various): wince
Project->Compiler Option->Code分頁


Target OS: wince
Target CPU: arm
您還需要把: Environment options-> Files分頁的 compiler path項目設定為 ppcrossarm.exe這個編譯程式。

設定完後,IDE就可以用來編譯您的Windows CE專案了。

[edit] 在Lazarus IDE裡面對Windows CE軟體進行偵錯
您也能直接在Lazarus IDE裡面對產生的應用程式進行偵錯。

步驟一 – 在Lazarus IDE裡面,選擇Environment->Debugger Options項目,把裡面的debugger path設定為專為WinCE設計的gdb程式所在的目錄,您可以從這裡取得為WinCE設計的gdb程式執行檔:[1]


步驟二 – 如果您使用Microsoft Device Emulator 1.0或2.0,請執行它,並確認您設定讓該模擬器使用128MB的記憶體,在模擬器裡面設定一個與作業系統共用的資料夾。然後在您用來編譯/建立應用程式的批次檔裡面,加入一個命令,把產生出來的WinCE執行程式複製到那個共用的資料夾裡面去。以下是一個啟動模擬器,並直接設定讓模擬器使用128MB的指令。

start deviceemulator.exe ".\ppc_2003_se\PPC_2003_SE_WWE_ARMv4.bin" /memsize 128 /skin
".\ppc_2003_se\PocketPC_2003_Skin.xml"
啟動模擬器以後,如果您想停止它,請直接進行儲存並離開 ('save and exit') ,以後想要再啟動的時候,可以直接從開始命令列裡面執行啟動模擬器(或復原模擬器)的捷徑即可。

步驟三 – 執行Device Emulator Manager,並在已經執行的模擬器項目上按滑鼠右鍵,選擇”連接底座”(cradle)。此時,Microsoft的ActiveSync應該會自動跳出來。如果ActiveSync沒有自己跳出來,則請您直接按模擬器裡面的”檔案->與電腦連接”(File->Get connected),如果ActiveSync這時候還是無法認得模擬器,請先”移除底座”,然後再次進行”連接底座”(cradle)的動作。

步驟四 – 把該檔案透過檔案總管複製到 \gdb目錄裡面去。如果這是您第一次使用模擬器,則您必須在'My Pocket PC'這個項目中建立gbd目錄,從檔案總管裡面看到的 ‘My Pocket PC’這個項目就是模擬器的根目錄。(要讓這個動作加速的話,請直接打開一個檔案總管視窗,切換到您建置應用程式的目錄,點選該檔案,按下Ctrl+C,然後到模擬器裡面的 \gdb 目錄裡面按 Ctrl+V把該檔案貼上即可)


步驟五 – 現在您已經可以對您的WinCE應用程式進行偵錯了,您的application.gdb應該會被啟動,它會把arm-wince-pe-stub.exe這個執行檔複製到\gdb目錄裡面,並檢查您的應用程式執行檔已經存在,然後啟動您的程式。如果您遇到任何錯誤,請確定\gdb這個資料夾是否存在,arm-wince-pe-stub.exe跟您的應用程式執行檔是否位於該資料夾中。使用者常遇到無法把過大的執行檔順利複製到\gdb資料夾裡面的情形,所以我們才希望您讓模擬器使用128MB的記憶體,否則模擬器的預設值是只會使用64MB而已的。

註記:

1. 在WinCE系統裡面,在結束程式後,程式還會繼續被留在記憶體裡面所以您不能把執行檔給覆蓋掉。因此您得從WinCE的控制台(開始->設定)把記憶體裡面執行中的程式個體給刪除,步驟如下 (以下步驟是在模擬器裡面點選的喔): 開始工作列->設定->系統(分頁)->記憶體->執行程式(分頁)->點選您的應用程式名稱->點選”停止”

2. 每次您完成偵錯的步驟後,請勿直接結束程式,而要執行”Program Reset”,來把偵錯程式重置。請注意,這個程序執行過後,有時候您的執行程式個體還會留在模擬器的記憶體裡面,所以請您依照註記1的說明,把該程式執行個體給刪除掉。




[edit] 安裝與使用Pocket PC 模擬器
1 – 您可以從微軟的網站下載Pocket PC的模擬器. 我所列出的模擬器跟英文版網頁所列的不同,這是微軟Device Emulator 2.0的中文版,大家可以放心下載,不用擔心有語文上的隔閡。

如果您需要正體中文的Windows Mobile 6裝置模擬器,請從這裡下載,請下載 0404\Windows Mobile 6 Professional Images (CHT).msi,安裝裡面有很多個模擬器,您如果不需要行動電話功能的純PDA,安裝後,請執行開始工作列->Windows Mobile 6 SDK->Standalone Emulator Images->Chinese (Traditional)中的Classic裝置即可。

2 – 在英文版網頁裡面,提到建議大家下載微軟的虛擬機器網路驅動程式,好讓模擬器可以具備連線功能,但在中文網頁中提供給大家的是微軟的裝置管理員2.0版,已經內建NE2000驅動程式,可以直接讓模擬器分享電腦網路卡以獲得網路功能了,所以這些驅動程式就免了。

3 – 下載ActiveSync 4.5來安裝,如果您的電腦上已經裝了ActiveSync 4.5或更新的版本,就可以跳過這個步驟,否則,請您到這個網頁把ActiveSync 4.5下載回來安裝,雖然該網頁會要求您註冊,但也別怕,請直接按下繼續,然後選擇不要註冊,還是可以下載回來安裝的。(如果您使用的是Windows Vista,那就不用下載ActiveSync 4.5了,您得下載Windows Mobile裝置中心6.1 (32位元版)或是Windows Mobile裝置中心6.1 (64位元版),請依照您的Windows Vista的版本決定要下載哪一個程式回來安裝。

4 – 設定ActiveSync/Windows Mobile裝置中心6.1,在一般完全不設定的情形下,ActiveSync/ Windows Mobile裝置中心6.1只能辨識插入USB插槽的Windows Mobile裝置,模擬器是無法被辨識的。請您依照下列步驟進行設定: ActiveSync 4.5: 檔案->連線設定: 允許連線到下列其中一個裝置 : 請選擇 DMA

Windows Mobile裝置中心6.1: “行動裝置設定”->”連線設定”: 勾選”允許連線到下列其中一個裝置”,選擇”DMA”後,按確定鍵。

至此,您已經有了完整功能的PocketPC模擬器了,它已經可以用來跟Lazarus進行應用程式開發的工作了。

要在模擬器上面對Lazarus開發的應用程式進行偵錯,您需要透過ActiveSync/Windows Mobile 裝置中心6.1來使用GDB,不然就只能直接執行了。

[edit] 在模擬器上面執行應用程式
1 – 點選Windows開始工作列->Windows Mobile 6 SDK->Standalone Emulator Images->Chinese (Traditional)中的Classic裝置,如果您需要具備電話功能的Pocket PC裝置,則請您點選其它的模擬裝置,裡頭有多種不同螢幕解析度的模擬裝置喔。

2 – 如果您從來沒有為這個模擬裝置設定任何共用資料夾的話,請現在幫它設定好,設定的方法如下: 點選模擬裝置視窗上面: 檔案->設定->一般(分頁) 最底下有個共用資料夾,點選右邊的按鍵選擇一個系統中的資料夾即可。

設定完畢後,您就有了可以跟Windows CE模擬裝置共用的資料夾,也就能把您用Lazarus作出來的Windows CE執行檔從這裡放到模擬裝置上面去執行了。

3 – 在模擬裝置上面點選: 開始->程式集,然後在畫面中點選”檔案總管”,然後從下拉式選單中,您就可以選擇”Storage Card”。”Storage Card”這個資料夾就是您剛剛設定的共用資料夾了,如果您是把執行檔放在這個資料夾裡面,直接點它,就可以從模擬裝置上面執行它了。

[edit] 螢幕截圖
以下我們用Free Pascal與Lazarus+WinCE的一個簡單範例來測試交叉編譯器:   

[edit] 要怎麼新增一個視覺元件呢?
範例: TButton.

TButton是在lcl/buttons.pp這個檔案中定義的。它是一個跟作業系統無關的LCL元件,所以不管是開發哪一種平台應用程式的程式設計人員都能使用到它。

它的視覺化類別(widgetset class)則是寫在lcl/widgetset/wsbuttons.pp這個檔案中,這是所有視覺化元件的基礎,與平台無關的(可以支援qt, carbon, gtk, win32等)。

它的wince介面類別則在lcl/interfaces/wince/wincewsbuttons.pp這個檔案裡:

TWinCEWSButton = class(TWSButton)
private
protected
public
   class function  CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
end;
每個WS類別,實際上都做了一些需要進行註冊的動作,您可以在每個wincewsXXX.pp檔案結尾的initialization區段裡看到:

RegisterWSComponent(TButton, TWinCEWSButton);

請注意,DestroyHandle也是需要被實現的,它會被用來把這些控制項所用到的記憶體空間釋放掉。

[edit] 請同時參照
Windows CE 介面開發注意事項
使用Win64+Lazarus開發Windows CE程式的補充教學
Windows CE介面的未來發展計劃
WindowsCE應用程式的迷你架構:pkMiniGUI.pas 說明文件
KOL GUI函式庫,將WinCE介面進行完整的移植 – 讓Win32/WinCE的專案可以快速轉移。(我自己是還沒成功測試過這部分,但本頁的說明我已經成功的在Windows Vista + Windows Mobile 6 模擬器上面測試成功了-2008/1/5)
[edit] 下載
Lazarus的Windows版安裝程式是建構於FPC 2.1.1或更新的版本:ftp://ftp.hu.freepascal.org/pub/lazarus/cross/. 這些檔案也被同步放在 http://michael-ep3.physik.uni-halle.de/Lazarus/cross/ 更詳細的資料可以從 http://www.mail-archive.com/lazarus@miraclec.com/msg12909.html 找到,感謝Vincent Snijders。



[edit] 本網頁的更新記錄
初版正體中文翻譯,以及Device Emulator 2.0等相關資訊,由元智大學資訊傳播學系兼任講師張子仁 (Dennies Chang)製作。 - 2008/1/4 User:Dennies
Retrieved from "http://wiki.lazarus.freepascal.org/Windows_CE_Interface/zh_TW"


使用lazarus和KOLCE开发Windows Mobile下使用的程序2008-07-20 10:49本文讲述了使用KOLCE如何开发Windows Mobile下的程序。

一、安装,配置环境
由于要开发Windows Mobile的程序,因此必须安装lazarus下的WinCE编译器。如果想要编译出来的程序体积小,需要安装KolCE。下面讲一下KolCE的安装方法。
首先打开MirrorKOLPackage.lpk,然后点击Compile,使控件编译并生成.o和.ppu文件,编译通过后,点击Install,此时会重新编译lazarus,编译以后,用strip lazarus.exe 使exe体积变小。
二、使用KolCE
新建一个工程,在窗体上放置KOLProject,设置好projectDest后,放置KOLForm,保存工程,在工程目录下会发现一个与projectDest名称相同的工程文件,打开它。

三、开发相关的功能
在本例中,我开发了一个可以实现字符串Base64加密解密,MD5加密的工具。
开发时注意一下程序的窗口大小,如果程序的窗口大小超过屏幕大小,那么程序的显示将会非常难看。

四、编译程序
要编译Windows Mobile下的程序,当然不能用Win32下的编译方式,我们必须对编译平台进行修改。如图所示,把目标平台修改为winCE。修改完之后就可以Build程序了。

五、运行程序
编译后的程序当然不能在windows下运行了,我们需要用WinCE模拟器或是真实的手机来运行它。
运行效果如下:
再来手机实物照一张(真的是太模糊了。。):

六、总结
到此为止,一个简单的Windows Mobile程序就做好了,可以看到,Lazarus配合着KolCE,在手机平台上的确是非常的强劲,由于是原生的程序,它的执行速度是非常快的,并且也不受.NET平台的制约。


点击此处下载 ourdev_610395KPQSCL.zip(文件大小:858K) (原文件名:kol-ce-2.80.3.zip)

出0入0汤圆

发表于 2011-1-11 11:53:59 | 显示全部楼层
送的触摸屏容易破碎,可能是运输造成的!

出0入0汤圆

发表于 2011-1-11 16:06:41 | 显示全部楼层
回复【189楼】arvidwen  柏联域
回复【185楼】lixiangwen  lee
这个 有弄成功的没  ?
有合适的安装导航软件没?~~~
-----------------------------------------------------------------------

gps接收正常,能在ce4.2上运行的导航软件都能导航的。

今天对比过你备份的注_册表文件和我的,把我的ce界面也搞出来了。

gps接收正常,我这台是接com2的,4800,那个gps-com3不知是怎么用的。


早上用com test软件启动gps测试 (原文件名:adsci2920.jpg)

<center>
刚才用凯立德看到的gps资料 <font color="green">(原文件名:adsci2922.j......
-----------------------------------------------------------------------

请教下,这个是用的什么软件或工具看到的gps信息的呢?

出0入0汤圆

发表于 2011-1-11 18:17:16 | 显示全部楼层
用凯立德截的图,上面的楼层有详细的教程。


好消息,连接C3 370c成功,有赖Rainbow 老陈测出了连接GPS的串口定义。
相机和人都在充电,照片一会补上。

出0入0汤圆

发表于 2011-1-11 18:47:44 | 显示全部楼层
回复【242楼】arvidwen  柏联域
-----------------------------------------------------------------------

我晕 ,这会儿才看到啊!!
楼主现在还有吗?给个地址也好

出0入0汤圆

发表于 2011-1-11 19:40:17 | 显示全部楼层
我去过那个厂

出0入0汤圆

发表于 2011-1-11 20:08:55 | 显示全部楼层
回复【242楼】arvidwen 柏联域
用凯立德截的图,上面的楼层有详细的教程。
好消息,连接c3 370c成功,有赖rainbow 老陈测出了连接gps的串口定义。
相机和人都在充电,照片一会补上。
-----------------------------------------------------------------------

呵呵,等下也学习下,是串口的吧 应该!

出0入0汤圆

发表于 2011-1-11 20:33:10 | 显示全部楼层
回复【243楼】shaobing1231  
回复【242楼】arvidwen  柏联域
-----------------------------------------------------------------------
我晕 ,这会儿才看到啊!!
楼主现在还有吗?给个地址也好
-----------------------------------------------------------------------

我不是楼主。。。。应该还有的,你打开楼主的店看看。


(原文件名:aourdev_607435B1E2SK.jpg)
Rainbow 老陈测出的接口定义:
1    1.5V未知;
2    可能是GPS的状态提示LED(也可能是PPS,0.5HZ)
3    Rx
4    Tx
5    GND
6    VCC 3.3V


连接插头比C3 370C的还小,这样引出来,用的是串口硬盘的排线 (原文件名:aDSCI2951.jpg)


测试,所以没剪线没上烙铁,接了一大堆线 (原文件名:aDSCI2953.jpg)


特意给370C刷了9600的固件。 (原文件名:aDSCI2954.jpg)

PN80是通过开关GPS模块的电源来控制GPS的启动关闭的,所以接上370C也不会造成电量的浪费。370C有纽扣电池可以记录星历,能缩短搜星时间,所以还是值得换370C的,还能刷支持差分定位的固件,提高精度。


请教个无损把这里拆开的办法,以便把370C装进去。 (原文件名:aDSCI2946.jpg)

出0入0汤圆

发表于 2011-1-11 23:34:36 | 显示全部楼层
回复【194楼】momo31
jtag引脚我找到了,电路板有sd卡槽的那一面,con6 插座就是
上图


飞线,7根,和jlink连接 (原文件名:p2011t(102).jpg)


con6接口的简易说明,其余引脚暂时不知道 (原文件名:p2011t(103).jpg)
我的软件水平有限,还不会搞arm9处理器,所以只弄到了这一步,用jlink连接了一下


(原文件名:2.jpg)
<center><a class=tt16 onclick="fnquickimagequote(this,'files_35/ourdev_609691f......
-----------------------------------------------------------------------

请问momo31  有最新的进展不? 我用你给的Jtag定义  和jlink 连不上,

提示找不到 硬件,电压测试正常~  我用的是 jlink V6

出0入0汤圆

 楼主| 发表于 2011-1-12 01:36:05 | 显示全部楼层
现在起买导航仪再送出两个安捷伦出的在多普达和索爱机子上使用的100万的摄像头:
http://item.taobao.com/auction/item_detail.htm?item_num_id=9065884952


(原文件名:nEO_IMG_IMG_8506.jpg)


(原文件名:nEO_IMG_IMG_8508.jpg)


(原文件名:nEO_IMG_IMG_8499.jpg)

点击此处下载 ourdev_610583ME6IPH.pdf(文件大小:137K) (原文件名:adcm2650.pdf)
点击此处下载 ourdev_610584GAV1QE.pdf(文件大小:198K) (原文件名:lunwen.pdf)


点击此处下载 ourdev_610569B3SFYS.txt(文件大小:17K) (原文件名:adcm3800.c.txt)
点击此处下载 ourdev_610570NG70XY.txt(文件大小:2K) (原文件名:adcm3800.h.txt)
点击此处下载 ourdev_610571D4VN8T.txt(文件大小:59K) (原文件名:adcm3800_hw.c.txt)
点击此处下载 ourdev_610572SSB6C7.txt(文件大小:38K) (原文件名:adcm3800_hw.h.txt)
点击此处下载 ourdev_610573L591AJ.txt(文件大小:7K) (原文件名:adcm2650.c.txt)
点击此处下载 ourdev_610574NBXL7Y.txt(文件大小:2K) (原文件名:adcm2650.h.txt)
点击此处下载 ourdev_610575TDDRJO.txt(文件大小:21K) (原文件名:adcm2650_hw.c.txt)
点击此处下载 ourdev_610576F06CXT.txt(文件大小:16K) (原文件名:adcm2650_hw.h.txt)
点击此处下载 ourdev_610577CQGZIQ.txt(文件大小:8K) (原文件名:i2c-adcm2650.c.txt)
点击此处下载 ourdev_610578H66PL4.txt(文件大小:2K) (原文件名:i2c-adcm2650.h.txt)
点击此处下载 ourdev_610579TP1BPB.txt(文件大小:23K) (原文件名:camera.h.txt)

出10入210汤圆

发表于 2011-1-12 11:33:52 | 显示全部楼层
回复【246楼】arvidwen 柏联域
-----------------------------------------------------------------------

2脚功能已确认:是模块的连机状态指示LED,就是那个充电旁边的绿色LED。

出0入0汤圆

发表于 2011-1-12 21:34:05 | 显示全部楼层
回复【249楼】rainbow 老陈
-----------------------------------------------------------------------

连机状态:  或定位成功指示?

出0入0汤圆

发表于 2011-1-12 23:16:11 | 显示全部楼层
回复【194楼】momo31  
jtag引脚我找到了,电路板有sd卡槽的那一面,con6 插座就是  
上图  

-----------------------------------------------------------------------

有人按 momo31 的jtag 引脚 和jlink 连接成功的吗?  

我的怎么弄都是这样的:


(原文件名:1.jpg)

出0入0汤圆

发表于 2011-1-13 00:08:06 | 显示全部楼层
求一份LTV350QV-F05的资料,LTV350QV-F04的资料和这个一样吗?

出0入0汤圆

 楼主| 发表于 2011-1-13 02:41:39 | 显示全部楼层
主机:ubuntu 8.10 x86_64
交叉编译器:/usr/local/arm/3.3.2/bin/arm-linux-
内核:2.6.22.6
LCD:SUMSANG 的 LTV350QV_FOE 3.5 寸 240x320
一点 LCD 的知识:
LCDTFT LCD 电信号部件组成:主要由背光电路和显示电路组成。
背光电路: 3.5 寸 TFT LCD 背光,大都采用白光 LED 作为背光源,一般由 6 个串连的白光 LED 组成(如下
图),驱动电压大概 20V 左右,20mA 电流左右,是一个耗电量很大的 部件。对于电池供电系统,大都采用升
压型 DC/DC 进行驱动,很多厂家都有推出专门针对串连白光 LED 的驱动器。
显示电路:显示电路一般由 Timing Controller、Source Driver、Gate Driver 组成。有的 IC 把 Timing
Controller 和 Source Driver 集成在一起了,也有的 IC 把三个部分都集成了。这三部分电路一般都集成在
TFT LCD 模组里面了,也有的 TFT LCD 把 Timing Controller IC 放到外面了(如 SHARP 的一些 LCD)。
SAMSUNG LTV350QV 的 DRIVER IC 是 S6F2002,
S6F2002 集成了 Timing Controller、Source Driver、Gate Driver 部分和电源管理部分,164RGB X
240 驱动能力,所以对于 320 X 240 QVGA 的分辨率,需要两片 S6F2002。两片 S6F2002,一片作为主控
制器,一片作为从控制器,正是由于 LVT350QV 是有两片 DRIVER IC 驱动的缘故,如果上电时序配合不好,很
容易出现显示异常(一半显示不正常,一半显示正常)。
更多的内容见 http://bbs.21ic.com/upfiles/img/200686154229590.pdf
这个 LTV350QV 比较特殊的是,它的初始化需要通过 spi 总线写 S6F2002 内部的寄存器,有人说,
LTV350QV 比较麻烦的一点是还必须要进行 SPI 设置,但这也是它比较灵活的一面。
更多 spi 设置信息。
通常的做法是用 gpio 口模拟 spi 总线。
spi 总线有三根线,分别是 CS,SCL,SDI。
至于它们分别接的是 gpio 的哪个口,这得看具体硬件连接,例如在我的板子上,GPCDAT8 GPCDAT9
GPCDAT10 分别连的是 CS,SCL,SDI,后面移植的时候会用到。
移植过程:
在 arch/arm/mach-s3c2410/mach-smdk2410.c 合适地方加上
static struct s3c2410fb_mach_info MY2410_lcd_cfg __initdata = {
        .type   =     S3C2410_LCDCON1_TFT,
        .regs   ={
        .lcdcon1       = S3C2410_LCDCON1_TFT16BPP |
                        S3C2410_LCDCON1_TFT |
                        S3C2410_LCDCON1_CLKVAL(0x04),
        .lcdcon2       = S3C2410_LCDCON2_VBPD(5) |
                        S3C2410_LCDCON2_LINEVAL(239) |
                        S3C2410_LCDCON2_VFPD(4) |
                        S3C2410_LCDCON2_VSPW(3),
        .lcdcon3       = S3C2410_LCDCON3_HBPD(13) |
                        S3C2410_LCDCON3_HOZVAL(319) |
                        S3C2410_LCDCON3_HFPD(20),
        .lcdcon4       = S3C2410_LCDCON4_MVAL(13) |
                        S3C2410_LCDCON4_HSPW(18),
        .lcdcon5       = S3C2410_LCDCON5_FRM565 |
                        S3C2410_LCDCON5_INVVLINE |
                        S3C2410_LCDCON5_INVVFRAME |
                        S3C2410_LCDCON5_PWREN |
                        S3C2410_LCDCON5_INVVCLK |
                        S3C2410_LCDCON5_HWSWP,
},
.width          = 320,
.height         = 240,
.xres           ={
        .min    = 320,
        .max    = 320,
        .defval = 320,
},
.yres           ={
        .min    = 240,
        .max    = 240,
        .defval = 240,
},
.bpp            ={
                .min    = 16,
                .max    = 16,
                .defval = 16,
        },
        .gpcup= 0xffffffff,                            //禁止上拉
        .gpcup_mask= 0xffffffff,                       //_mask 用于将寄存器清零
        .gpccon= 0xaa9556a9,                           //
        .gpccon_mask= 0xffffffff,
        .gpdup= 0xffffffff,
        .gpdup_mask= 0xffffffff,
        .gpdcon= 0xaaaaaaaa,
        .gpdcon_mask= 0xffffffff,
        .lpcsel= 0x00,                         //LPC3600
};
可以在同目录下的 mach-qt2410.c 复制一个过来再修改,其中 struct 的名字 MY2410_lcd_cfg 可以随便
取,但要与后面的保持一致。
.type   =       S3C2410_LCDCON1_TFT 表明是 tft 屏,否则内核以为是 stn 的屏,而 stn 最大支持
12bpp,内核会打印 invalid bpp 16bpp 的信息,相应代码在 drivers/vedio/s3c2410fb.c 的
s3c2410fb_activate_var 函数中
lcdconx 的配置指的是 2410 的 lcd 控制寄存器,240x320 的屏配置基本差不多,按照自己屏的数据手册,
参考刘立国的《S3C2410 下 LCD 驱动程序移植及 GUI 程序编写》这篇文章,配置一下。
剩下的几个参数指定了,宽度,高度,16bpp 的色度。
.gpcup 和.gpcup_mask 的配置都用全一即可,
其实*_mask 参数作用是将要修改的寄存器参数先清零,这样可以保证后面的设置操作正确。因为设置
操作是置位操作,无法清零。也就是说:如果没有 tmp = readl(reg) & ~mask;这一句,就无法将 11 设
置成 10。见参考文章 2。
.gpccon 依据自己的板子连线确定,我的设为 0xaa9556a9 依次表示
VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND
具体见数据手册。
.lpcsel 表示 LPC3600,关于 LPC3600 见数据手册 lcd controller 部分 的说明,在我的板子上,没有用到。
--------------------------------------------------------------------------------------
在 arch/arm/mach-s3c2410/mach-smdk2410.c 的 static void __init smdk2410_init(void)函数
加上
s3c24xx_fb_set_platdata(&MY2410_lcd_cfg);
这样,刚刚添加的数据就加进内核了。
对于,一般的屏,这样的设置就可以了,但是,LTV350QV 需要特殊的初始化,通过 spi 写里面的寄存
器,所以我们还要修改 drivers/vedio/s3c2410fb.c 里的代码。
-----------------------------------------------------------------
在 drivers/vedio/s3c2410fb.h 加上
#define CS_H         __raw_writel(__raw_readl(S3C2410_GPCDAT)|(1<<8), S3C2410_GPCDAT)//MAKE_HIGH(LTV350QV_CS)
#define CS_L        __raw_writel(__raw_readl(S3C2410_GPCDAT)&~(1<<8), S3C2410_GPCDAT)//MAKE_LOW(LTV350QV_CS)
#define SCLK_H __raw_writel(__raw_readl(S3C2410_GPCDAT)|(1<<9), S3C2410_GPCDAT)        //MAKE_HIGH(LTV350QV_SCL)
#define SCLK_L __raw_writel(__raw_readl(S3C2410_GPCDAT)&~(1<<9), S3C2410_GPCDAT)         //MAKE_LOW(LTV350QV_SCL)
#define SDI_H        __raw_writel(__raw_readl(S3C2410_GPCDAT)|(1<<10), S3C2410_GPCDAT)//MAKE_HIGH(LTV350QV_SDI)
#define SDI_L       __raw_writel(__raw_readl(S3C2410_GPCDAT)&~(1<<10), S3C2410_GPCDAT)//MAKE_LOW(LTV350QV_SDI)
这就是用 gpio 模拟的 spi 的高电平和低电平。
加上
#define LTV350QV_POE                    0x1d             //屏的 id
typedef struct _LTV350qv_spi_data_{
         unsigned char Device_ID;                             //ID of the device
         unsigned short Index;                                //index of register
         unsigned short Structure;                           //structure to be writed
}LTV350QV_SPI_Data;                                      //定义一个数据结构方便传送
模拟 spi 初始化的思想就是把数据串行的通过 SDI(这里是 GPCDAT10)在 SCL 和 CS 时序下送到寄存器
里。
实现代码如下:(改自开发板的 LCD 测试程序)
void LTV350QV_Register_Write(LTV350QV_SPI_Data regdata)
{
         unsigned char i,temp1;
         unsigned short temp2;
         unsigned int temp3;
         //write index
         temp1=regdata.Device_ID<<2 | 0<<1 | 0<<0;                             //register index
         temp2=regdata.Index;
         temp3=(temp1<<24) | (temp2<<8);
         CS_L;
         mdelay(1);
         for(i=0;i<24;i++)
                   {
                             SCLK_L;
                             if(temp3 & (1<<(31-i)) )                   //if is H
                                        SDI_H;
                             else
                                        SDI_L;
                             mdelay(1);          //setup time
                      SCLK_H;
                      mdelay(1);    //hold time
               }
       CS_H;
       mdelay(5);
       //write instruction
       temp1=regdata.Device_ID<<2 | 1<<1 | 0<<0;      //instruction
       temp2=regdata.Structure;
       temp3=(temp1<<24) | (temp2<<8);
       CS_L;
       mdelay(1);
       for(i=0;i<24;i++)
               {
                      SCLK_L;
                      if(temp3 & (1<<(31-i)) )   //if is H
                             SDI_H;
                      else
                             SDI_L;
                      mdelay(1);
                      SCLK_H;
                      mdelay(1);
               }
       CS_H;
}
void LTV350QV_Write(unsigned short index, unsigned short regdata)
{
       LTV350QV_SPI_Data WriteData;
       WriteData.Device_ID=LTV350QV_POE; //0x1d
       WriteData.Index=index;
       WriteData.Structure=regdata;
       LTV350QV_Register_Write(WriteData);
}
void LTV350QV_Power_ON(void)
{
   int old_gpccon;
   old_gpccon=__raw_readl(S3C2410_GPCCON);
   __raw_writel(__raw_readl(S3C2410_GPCCON)&0xffa0ffff,S3C2410_GPCCON);
   //清 GPCCON8 9 10
   __raw_writel(__raw_readl(S3C2410_GPCCON)|0x00150000,S3C2410_GPCCON); //设
置为输出
   CS_H;
   SCLK_H;
   SDI_H;
   mdelay(15);
   LTV350QV_Write(9, 0x0000);
   mdelay(15);
   LTV350QV_Write(9, 0x4000);
   LTV350QV_Write(10, 0x2000);
   LTV350QV_Write(9, 0x4055);
   mdelay(60);
   LTV350QV_Write(1, 0x409d);
   LTV350QV_Write(2, 0x0284);
    LTV350QV_Write(3, 0x0100);
   LTV350QV_Write(4, 0x3000);
   LTV350QV_Write(5, 0x4003);
   LTV350QV_Write(6, 0x000a);
   LTV350QV_Write(7, 0x0021);
   LTV350QV_Write(8, 0x0c00);
   LTV350QV_Write(10, 0x0103);
    LTV350QV_Write(11, 0x0301);
   LTV350QV_Write(12, 0x1f0f);
   LTV350QV_Write(13, 0x1f0f);
   LTV350QV_Write(14, 0x0707);
   LTV350QV_Write(15, 0x0307);
   LTV350QV_Write(16, 0x0707);
   LTV350QV_Write(17, 0x0000);
   LTV350QV_Write(18, 0x0004);
   LTV350QV_Write(19, 0x0000);
   mdelay(35);
   LTV350QV_Write(9, 0x4a55);
   LTV350QV_Write(5, 0x5003);
        __raw_writel(old_gpccon,S3C2410_GPCCON);
        printk("LTV350QV_Power_ON\n");
}
void LTV350QV_Power_OFF(void)
{
         // GON -> 0, POC -> 0
         LTV350QV_Write(9, 0x4055);
         // DSC -> 0
         LTV350QV_Write(5, 0x4003);
        // VCOMG -> 0
        LTV350QV_Write(10, 0x0000);
        mdelay(1);
         // AP[2:0] -> 000
         LTV350QV_Write(9, 0x4000);
        printk("LTV350QV_Power_OFF\n");
}
注意一点的就是,用 GPCDAT8,GPCDAT9,GPCDAT10 作模拟 spi 时,相应的 GPCCON 位要设为输
出,而我的 GPCCON 又作为了 lcd 功能的使用,所以设置时先用变量把 GPCCON 保存起来,设置完之
后再还原。对应代码
        int old_gpccon;
        old_gpccon=__raw_readl(S3C2410_GPCCON);
        __raw_writel(__raw_readl(S3C2410_GPCCON)&0xffa0ffff,S3C2410_GPCCON);
        //清 GPCCON8 9 10
        __raw_writel(__raw_readl(S3C2410_GPCCON)|0x00150000,S3C2410_GPCCON); //设
置为输出
还用一点,网上有人说,LTV350QV_Write(                     , )函数的地址前面一个应该是 16 进制的,这和你的具体
写寄存器的函数的实现有关,反正是数据要一位一位的送到每个寄存器。
模拟 spi 初始化的函数写好了后,在 static int __init s3c2410fb_probe 函数里加上我们的初始化函数
void LTV350QV_Power_ON,有人说加在哪个地方无所谓,我是加在
ret = s3c2410fb_init_registers(info);这句话之后,其它地方没试过,应该也可以。
-------------------------------------------------------------------
配置内核
Device Drivers --->
Graphics support --->
   Display device support --->
         <*> Display panel/monitor support
       <*> Support for frame buffer devices
       <*> S3C2410 LCD framebuffer support
       Console display driver support--->
       <*> Framebuffer Console support
      
  • Framebuffer Console Rotation
          
  • Select compiled-in fonts
          
  • VGA 8x8 font
          
  • VGA 8x16 font
          
  • Mini 4x6 font
          
  • Sparc console 8x16 font
          
  • Bootup logo--->
           --- Bootup logo
          
  • Standard 224-color Linux logo
    Tips:logo 要选 224 的 color,16 的不好看:-(
    再 make,make uImage,下载,启动,应该就看到小企鹅了。^_^
    附上换 logo 的方法,来自参考文章 2。
    (1)用 GIMP 图像编辑器打开你想要的图像文件,依次选择图像->模式->索引颜色,将颜色改为 224
    色;至于图片大小,不要大于你的显示器分辨率就好(我只试过 80*80 和 320*240 的大小),最后将
    文件保存为 ppm 格式(ASCii 码),文件名为:logo_linux_clut224.ppm。
    (2)将 logo_linux_clut224.ppm 拷贝到/drivers/video/logo 文件夹下,替换原有的文件(记得备份啊,
    以防万一)。
    (3)重新编译内核,下载,启动。
  • 出0入0汤圆

     楼主| 发表于 2011-1-13 02:44:50 | 显示全部楼层
    原文地址
    http://bbs.21ic.com/upfiles/img/200686154229590.pdf
    http://bbs.21ic.com/upfiles/img/200686154428226.pdf



    最近一段时间工作上一直在使用TFT LCD,主要是3.5寸LCD,以SAMSUNG的LTV350QV及其一些台湾的兼容产品为主。工作的内容就是把这些屏在我们的产品上应用起来,经过这 一段时间后,发觉对TFT LCD的内部结构还是不怎么清楚,所以最近几天花了一些时间了解TFT LCD的结构以及工作原理,并整理下来加深自己的理解以及提供大家参考,这只是我自己的一些理解,错误的地方请大家多指正。
    首先,我们了解一些TFT LCD的结构,如下图所示,主要由偏振片、虑色器基板、液晶、TFT基板、片振片、背光源组成。在虑色器基板和TFT基板封入扭曲向列型液晶(TN),构 成液晶盒,虑色器基板上制作有透明的公共电极,TFT基板上制作了矩阵式薄模晶体管,用来开光象素电极的电压信号,为了使液晶层保持一定的厚度,在两块玻 璃基板中间放有透明隔垫(聚酯模片或玻璃小球)。
    TFT LCD电信号部件组成:主要由背光电路和显示电路组成。
    背光电路: 3.5寸TFT LCD背光,大都采用白光LED作为背光源,一般由6个串连的白光LED组成(如下图),驱动电压大概20V左右,20mA电流左右,是一个耗电量很大的 部件。对于电池供电系统,大都采用升压型DC/DC进行驱动,很多厂家都有推出专门针对串连白光LED的驱动器。

    显示电路:显示电路一般由Timing Controller、Source Driver、Gate Driver组成。有的IC把Timing Controller和Source Driver集成在一起了,也有的IC把三个部分都集成了。这三部分电路一般都集成在TFT LCD模组里面了,也有的TFT LCD把Timing Controller IC放到外面了(如SHARP的一些LCD)。
    SAMSUNG LTV350QV LCD框图分析(如下图):LTV350QV的DRIVER IC是S6F2002,
    S6F2002 集成了Timing Controller、Source Driver、Gate Driver部分和电源管理部分,164RGB X 240驱动能力,所以对于320 X 240 QVGA的分辨率,需要两片S6F2002。两片S6F2002,一片作为主控制器,一片作为从控制器,正是由于LVT350QV是有两片DRIVER IC驱动的缘故,如果上电时序配合不好,很容易出现显示异常(一半显示不正常,一半显示正常)。

    一个台湾TFT LCD框图分析(如下图):它的驱动IC主要有两片,一片集成了Timing Controller和Source Driver,另外一片是Gate Driver。


    TFT LCD常用信号解释:
    LED_Cathode/LED_Anode:LCD背光电源供电
    M/POL:液晶驱动极性转换型号,用于产生VCOM信号
    RESET:全局复位信号
    CS/SCL/SDI:LCD TCON IC的配置端口
    DATA[0:23]:LCD RGB24BIT数据信号,一般我们使用16BIT,因为在人的肉眼观察下16BIT的色彩和24BIT的色彩没有太大区别,而16BIT所需处理的数据量比24BIT小很多,一般情况我们把剩余的地位数据线连接到高位。
    HSYNC:水平同步时钟信号
    VSYNC:垂直同步时钟信号
    DOTCLK:象素时钟信号
    VDD:数字电源,一般是3.3V
    AVDD:模拟电源,一般是5V
    VGL:GATE OFF控制电压
    VGH:GATE ON控制电压
    VCOM:LCD公共驱动电极
    ENABLE:data enable信号

    TFT电路驱动原理:由CPU通过LCD接口送来的视频信号及时钟经过TCON的时序转换,RGB数据经过D/A转换送到SOURCE端,同时TCON 产生移位时钟信号驱动GATE端,选通一行,打开这一行的所有晶体管, SOURCE向液晶电容充电,液晶产生灰度并保持,通过GATE的移位,继续向下面行写入液晶图像,当整个行写完,又重新从第一行开始。

    如果一直显示静止的图像,液晶电极上的电压就会一直不变,当撤销电压时,液晶很难回复原状,容易造成液晶损坏。解决这问题的方法就是改变液晶的控制电压 的极性,也就是说即使是静止的图像,液晶电极上的电压也一直在翻转。一般的LCD都采用行翻转的形式,通过改变公共端的电压极性VCOM而达到翻转的目 的。TCON IC一般会送出一个M或者POL的信号,我们用这个信号产生VCOM,一般的转换电路使用非们或者运方电路。通过调节VCOM的DC端,我们可以改变 LCD的色彩,调节AC端,可以改变LCD的对比度。也许是由于行翻转的缘故,有的LCD会产生水平的条纹(Flicker现象),LTV350QV不怎 么明显,一般的台湾LCD比较明显。

    点屏心得:
    常用点屏步骤:
    1、 确保数据、时钟、电源等连接正常。
    2、 确保LCD的几组工作电源VDD/AVDD/VGL/VGH正常。
    3、 LCD配置:有的LCD的TCON IC需要使用SPI接口进行配置。
    a) 配置的内容主要是时钟信号的极性、扫描方向等,还有一些TCON IC支持CCIR601/656/OSD功能等,主要根据实际情况配置。
    b) GAMMA校正:一般根据LCD厂家提供的参数进行校正,以前调LTV350QV就是因为厂家给的GAMMA参数不正确,造成色彩显示不正常。
    c) SPI时序:一般不同的LCD屏的SPI时序和寄存器都会有一些差别,我一般是根据时序图进行操作寄存器(如下图),通过写寄存器,只要LCD有反应了,表明SPI通讯基本没有什么问题了。

    4、 时钟设置:
    a) 一般的LCD SPEC中都会给出关于时序的参数以及时序图,我们按照图中进行设置就可以了。如下图:我们就可以知道时钟频率、脉冲宽度、前扫、回扫等。

    通过如下图的画面我们就可以知道HSYNC和VSYNC时钟极性为负。

    通过下图我们就可以知道是上升沿锁存数据,下降沿改变数据了

    通过以上步骤LCD上面应该会出现美丽动人的画面了,有可能图像位置还会有一些偏差,不过没关系,看着屏幕的图像调节前扫、回扫进行左右上下移动就OK了。
    图像异常处理:
    图像颜色不正常:有可能时钟型号极性反,还有可能VCOM调节不正常。
    出现水波纹:确保电源VDD/AVDD/VGL/VGH纹波足够小,确保VCOM波形正确,VCOM电路端的电源稳定。
    上电出现白屏:一般TFT LCD对上电要求都比较严格,需要按照LCD SPEC中时序上电,如下图。

    文档中没有图片,如果大家想看图片,请看PDF文档。

    出0入0汤圆

     楼主| 发表于 2011-1-13 02:50:13 | 显示全部楼层
    S3C2410 下 LCD 驱动程序移植及 GUI 程序编写ourdev_610852UEV6E7.pdf(文件大小:409K) (原文件名:S3C2410 下 LCD 驱动程序移植及 GUI 程序编写.pdf)

    出0入0汤圆

     楼主| 发表于 2011-1-13 02:56:07 | 显示全部楼层
    这里有LTV350QV-F05的资料,没有注_册下不了,需要邀请码才能注_册
    那位有帐号帮个忙,把它转这里来
    http://bbs.cedn.cn/viewthread.php?tid=12018

    出0入0汤圆

     楼主| 发表于 2011-1-13 03:01:10 | 显示全部楼层
    Power control for Samsung LTV350QV Quarter VGA LCD Panel
    + *
    + * Copyright (C) 2006, 2007 Atmel Corporation
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License version 2 as
    + * published by the Free Software Foundation.
    + */
    +#include <linux/delay.h>
    +#include <linux/err.h>
    +#include <linux/fb.h>
    +#include <linux/init.h>
    +#include <linux/lcd.h>
    +#include <linux/module.h>
    +#include <linux/spi/spi.h>
    +
    +#include "ltv350qv.h"
    +
    +#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL)
    +
    +struct ltv350qv {
    + struct spi_device *spi;
    + u8 *buffer;
    + int power;
    + struct lcd_device *ld;
    +};
    +
    +/*
    + * The power-on and power-off sequences are taken from the
    + * LTV350QV-F04 data *** from Samsung. The register definitions are
    + * taken from the S6F2002 command list also from Samsung. Both
    + * documents are distributed with the AVR32 Linux BSP CD from Atmel.
    + *
    + * There's still some voodoo going on here, but it's a lot better than
    + * in the first incarnation of the driver where all we had was the raw
    + * numbers from the initialization sequence.
    + */
    +static int ltv350qv_write_reg(struct ltv350qv *lcd, u8 reg, u16 val)
    +{
    + struct spi_message msg;
    + struct spi_transfer index_xfer = {
    + .len = 3,
    + .cs_change = 1,
    + };
    + struct spi_transfer value_xfer = {
    + .len = 3,
    + .cs_change = 1,
    + };
    +
    + spi_message_init(&msg);
    +
    + /* register index */
    + lcd->buffer[0] = LTV_OPC_INDEX;
    + lcd->buffer[1] = 0x00;
    + lcd->buffer[2] = reg & 0x7f;
    + index_xfer.tx_buf = lcd->buffer;
    + spi_message_add_tail(&index_xfer, &msg);
    +
    + /* register value */
    + lcd->buffer[4] = LTV_OPC_DATA;
    + lcd->buffer[5] = val >> 8;
    + lcd->buffer[6] = val;
    + value_xfer.tx_buf = lcd->buffer + 4;
    + spi_message_add_tail(&value_xfer, &msg);
    +
    + return spi_sync(lcd->spi, &msg);
    +}
    +
    +/* The comments are taken straight from the data *** */
    +static int ltv350qv_power_on(struct ltv350qv *lcd)
    +{
    + int ret;
    +
    + /* Power On Reset Display off State */
    + if (ltv350qv_write_reg(lcd, LTV_PWRCTL1, 0x0000))
    + goto err;
    + msleep(15);
    +
    + /* Power Setting Function 1 */
    + if (ltv350qv_write_reg(lcd, LTV_PWRCTL1, LTV_VCOM_DISABLE))
    + goto err;
    + if (ltv350qv_write_reg(lcd, LTV_PWRCTL2, LTV_VCOML_ENABLE))
    + goto err_power1;
    +
    + /* Power Setting Function 2 */
    + if (ltv350qv_write_reg(lcd, LTV_PWRCTL1,
    + LTV_VCOM_DISABLE | LTV_DRIVE_CURRENT(5)
    + | LTV_SUPPLY_CURRENT(5)))
    + goto err_power2;
    +
    + msleep(55);
    +
    + /* Instruction Setting */
    + ret = ltv350qv_write_reg(lcd, LTV_IFCTL,
    + LTV_NMD | LTV_REV | LTV_NL(0x1d));
    + ret |= ltv350qv_write_reg(lcd, LTV_DATACTL,
    + LTV_DS_SAME | LTV_CHS_480
    + | LTV_DF_RGB | LTV_RGB_BGR);
    + ret |= ltv350qv_write_reg(lcd, LTV_ENTRY_MODE,
    + LTV_VSPL_ACTIVE_LOW
    + | LTV_HSPL_ACTIVE_LOW
    + | LTV_DPL_SAMPLE_RISING
    + | LTV_EPL_ACTIVE_LOW
    + | LTV_SS_RIGHT_TO_LEFT);
    + ret |= ltv350qv_write_reg(lcd, LTV_GATECTL1, LTV_CLW(3));
    + ret |= ltv350qv_write_reg(lcd, LTV_GATECTL2,
    + LTV_NW_INV_1LINE | LTV_FWI(3));
    + ret |= ltv350qv_write_reg(lcd, LTV_VBP, 0x000a);
    + ret |= ltv350qv_write_reg(lcd, LTV_HBP, 0x0021);
    + ret |= ltv350qv_write_reg(lcd, LTV_SOTCTL, LTV_SDT(3) | LTV_EQ(0));
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(0), 0x0103);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(1), 0x0301);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(2), 0x1f0f);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(3), 0x1f0f);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(4), 0x0707);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(5), 0x0307);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(6), 0x0707);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(7), 0x0000);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(8), 0x0004);
    + ret |= ltv350qv_write_reg(lcd, LTV_GAMMA(9), 0x0000);
    + if (ret)
    + goto err_settings;
    +
    + /* Wait more than 2 frames */
    + msleep(20);
    +
    + /* Display On Sequence */
    + ret = ltv350qv_write_reg(lcd, LTV_PWRCTL1,
    + LTV_VCOM_DISABLE | LTV_VCOMOUT_ENABLE
    + | LTV_POWER_ON | LTV_DRIVE_CURRENT(5)
    + | LTV_SUPPLY_CURRENT(5));
    + ret |= ltv350qv_write_reg(lcd, LTV_GATECTL2,
    + LTV_NW_INV_1LINE | LTV_DSC | LTV_FWI(3));
    + if (ret)
    + goto err_disp_on;
    +
    + /* Display should now be ON. Phew. */
    + return 0;
    +
    +err_disp_on:
    + /*
    + * Try to recover. Error handling probably isn't very useful
    + * at this point, just make a best effort to switch the panel
    + * off.
    + */
    + ltv350qv_write_reg(lcd, LTV_PWRCTL1,
    + LTV_VCOM_DISABLE | LTV_DRIVE_CURRENT(5)
    + | LTV_SUPPLY_CURRENT(5));
    + ltv350qv_write_reg(lcd, LTV_GATECTL2,
    + LTV_NW_INV_1LINE | LTV_FWI(3));
    +err_settings:
    +err_power2:
    +err_power1:
    + ltv350qv_write_reg(lcd, LTV_PWRCTL2, 0x0000);
    + msleep(1);
    +err:
    + ltv350qv_write_reg(lcd, LTV_PWRCTL1, LTV_VCOM_DISABLE);
    + return -EIO;
    +}
    +
    +static int ltv350qv_power_off(struct ltv350qv *lcd)
    +{
    + int ret;
    +
    + /* Display Off Sequence */
    + ret = ltv350qv_write_reg(lcd, LTV_PWRCTL1,
    + LTV_VCOM_DISABLE
    + | LTV_DRIVE_CURRENT(5)
    + | LTV_SUPPLY_CURRENT(5));
    + ret |= ltv350qv_write_reg(lcd, LTV_GATECTL2,
    + LTV_NW_INV_1LINE | LTV_FWI(3));
    +
    + /* Power down setting 1 */
    + ret |= ltv350qv_write_reg(lcd, LTV_PWRCTL2, 0x0000);
    +
    + /* Wait at least 1 ms */
    + msleep(1);
    +
    + /* Power down setting 2 */
    + ret |= ltv350qv_write_reg(lcd, LTV_PWRCTL1, LTV_VCOM_DISABLE);
    +
    + /*
    + * No point in trying to recover here. If we can't switch the
    + * panel off, what are we supposed to do other than inform the
    + * user about the failure?
    + */
    + if (ret)
    + return -EIO;
    +
    + /* Display power should now be OFF */
    + return 0;
    +}
    +
    +static int ltv350qv_power(struct ltv350qv *lcd, int power)
    +{
    + int ret = 0;
    +
    + if (POWER_IS_ON(power) && !POWER_IS_ON(lcd->power))
    + ret = ltv350qv_power_on(lcd);
    + else if (!POWER_IS_ON(power) && POWER_IS_ON(lcd->power))
    + ret = ltv350qv_power_off(lcd);
    +
    + if (!ret)
    + lcd->power = power;
    +
    + return ret;
    +}
    +
    +static int ltv350qv_set_power(struct lcd_device *ld, int power)
    +{
    + struct ltv350qv *lcd;
    +
    + lcd = class_get_devdata(&ld->class_dev);
    + return ltv350qv_power(lcd, power);
    +}
    +
    +static int ltv350qv_get_power(struct lcd_device *ld)
    +{
    + struct ltv350qv *lcd;
    +
    + lcd = class_get_devdata(&ld->class_dev);
    + return lcd->power;
    +}
    +
    +static struct lcd_ops ltv_ops = {
    + .get_power = ltv350qv_get_power,
    + .set_power = ltv350qv_set_power,
    +};
    +
    +static int __devinit ltv350qv_probe(struct spi_device *spi)
    +{
    + struct ltv350qv *lcd;
    + struct lcd_device *ld;
    + int ret;
    +
    + lcd = kzalloc(sizeof(struct ltv350qv), GFP_KERNEL);
    + if (!lcd)
    + return -ENOMEM;
    +
    + lcd->spi = spi;
    + lcd->power = FB_BLANK_POWERDOWN;
    + lcd->buffer = kzalloc(8, GFP_KERNEL);
    +
    + ld = lcd_device_register("ltv350qv", lcd, &ltv_ops);
    + if (IS_ERR(ld)) {
    + ret = PTR_ERR(ld);
    + goto out_free_lcd;
    + }
    + lcd->ld = ld;
    +
    + ret = ltv350qv_power(lcd, FB_BLANK_UNBLANK);
    + if (ret)
    + goto out_unregister;
    +
    + dev_set_drvdata(&spi->dev, lcd);
    +
    + return 0;
    +
    +out_unregister:
    + lcd_device_unregister(ld);
    +out_free_lcd:
    + kfree(lcd);
    + return ret;
    +}
    +
    +static int __devexit ltv350qv_remove(struct spi_device *spi)
    +{
    + struct ltv350qv *lcd = dev_get_drvdata(&spi->dev);
    +
    + ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
    + lcd_device_unregister(lcd->ld);
    + kfree(lcd);
    +
    + return 0;
    +}
    +
    +#ifdef CONFIG_PM
    +static int ltv350qv_suspend(struct spi_device *spi,
    + pm_message_t state, u32 level)
    +{
    + struct ltv350qv *lcd = dev_get_drvdata(&spi->dev);
    +
    + if (level == SUSPEND_POWER_DOWN)
    + return ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
    +
    + return 0;
    +}
    +
    +static int ltv350qv_resume(struct spi_device *spi, u32 level)
    +{
    + struct ltv350qv *lcd = dev_get_drvdata(&spi->dev);
    +
    + if (level == RESUME_POWER_ON)
    + return ltv350qv_power(lcd, FB_BLANK_UNBLANK);
    +
    + return 0;
    +}
    +#else
    +#define ltv350qv_suspend NULL
    +#define ltv350qv_resume NULL
    +#endif
    +
    +/* Power down all displays on reboot, poweroff or halt */
    +static void ltv350qv_shutdown(struct spi_device *spi)
    +{
    + struct ltv350qv *lcd = dev_get_drvdata(&spi->dev);
    +
    + ltv350qv_power(lcd, FB_BLANK_POWERDOWN);
    +}
    +
    +static struct spi_driver ltv350qv_driver = {
    + .driver = {
    + .name = "ltv350qv",
    + .bus = &spi_bus_type,
    + .owner = THIS_MODULE,
    + },
    +
    + .probe = ltv350qv_probe,
    + .remove = __devexit_p(ltv350qv_remove),
    + .shutdown = ltv350qv_shutdown,
    + .suspend = ltv350qv_suspend,
    + .resume = ltv350qv_resume,
    +};
    +
    +static int __init ltv350qv_init(void)
    +{
    + return spi_register_driver(&ltv350qv_driver);
    +}
    +
    +static void __exit ltv350qv_exit(void)
    +{
    + spi_unregister_driver(&ltv350qv_driver);
    +}
    +module_init(ltv350qv_init);
    +module_exit(ltv350qv_exit);
    +
    +MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@xxxxxxxxx>");
    +MODULE_DESCRIPTION("Samsung LTV350QV LCD Driver");
    +MODULE_LICENSE("GPL");
    diff --git a/drivers/video/backlight/ltv350qv.h b/drivers/video/backlight/ltv350qv.h
    new file mode 100644
    index 0000000..189112e
    --- /dev/null
    +++ b/drivers/video/backlight/ltv350qv.h
    @@ -0,0 +1,95 @@
    +/*
    + * Register definitions for Samsung LTV350QV Quarter VGA LCD Panel
    + *
    + * Copyright (C) 2006, 2007 Atmel Corporation
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License version 2 as
    + * published by the Free Software Foundation.
    + */
    +#ifndef __LTV350QV_H
    +#define __LTV350QV_H
    +
    +#define LTV_OPC_INDEX 0x74
    +#define LTV_OPC_DATA 0x76
    +
    +#define LTV_ID 0x00 /* ID Read */
    +#define LTV_IFCTL 0x01 /* Display Interface Control */
    +#define LTV_DATACTL 0x02 /* Display Data Control */
    +#define LTV_ENTRY_MODE 0x03 /* Entry Mode */
    +#define LTV_GATECTL1 0x04 /* Gate Control 1 */
    +#define LTV_GATECTL2 0x05 /* Gate Control 2 */
    +#define LTV_VBP 0x06 /* Vertical Back Porch */
    +#define LTV_HBP 0x07 /* Horizontal Back Porch */
    +#define LTV_SOTCTL 0x08 /* Source Output Timing Control */
    +#define LTV_PWRCTL1 0x09 /* Power Control 1 */
    +#define LTV_PWRCTL2 0x0a /* Power Control 2 */
    +#define LTV_GAMMA(x) (0x10 + (x)) /* Gamma control */
    +
    +/* Bit definitions for LTV_IFCTL */
    +#define LTV_IM (1 << 15)
    +#define LTV_NMD (1 << 14)
    +#define LTV_SSMD (1 << 13)
    +#define LTV_REV (1 << 7)
    +#define LTV_NL(x) (((x) & 0x001f) << 0)
    +
    +/* Bit definitions for LTV_DATACTL */
    +#define LTV_DS_SAME (0 << 12)
    +#define LTV_DS_D_TO_S (1 << 12)
    +#define LTV_DS_S_TO_D (2 << 12)
    +#define LTV_CHS_384 (0 << 9)
    +#define LTV_CHS_480 (1 << 9)
    +#define LTV_CHS_492 (2 << 9)
    +#define LTV_DF_RGB (0 << 6)
    +#define LTV_DF_RGBX (1 << 6)
    +#define LTV_DF_XRGB (2 << 6)
    +#define LTV_RGB_RGB (0 << 2)
    +#define LTV_RGB_BGR (1 << 2)
    +#define LTV_RGB_GRB (2 << 2)
    +#define LTV_RGB_RBG (3 << 2)
    +
    +/* Bit definitions for LTV_ENTRY_MODE */
    +#define LTV_VSPL_ACTIVE_LOW (0 << 15)
    +#define LTV_VSPL_ACTIVE_HIGH (1 << 15)
    +#define LTV_HSPL_ACTIVE_LOW (0 << 14)
    +#define LTV_HSPL_ACTIVE_HIGH (1 << 14)
    +#define LTV_DPL_SAMPLE_RISING (0 << 13)
    +#define LTV_DPL_SAMPLE_FALLING (1 << 13)
    +#define LTV_EPL_ACTIVE_LOW (0 << 12)
    +#define LTV_EPL_ACTIVE_HIGH (1 << 12)
    +#define LTV_SS_LEFT_TO_RIGHT (0 << 8)
    +#define LTV_SS_RIGHT_TO_LEFT (1 << 8)
    +#define LTV_STB (1 << 1)
    +
    +/* Bit definitions for LTV_GATECTL1 */
    +#define LTV_CLW(x) (((x) & 0x0007) << 12)
    +#define LTV_GAON (1 << 5)
    +#define LTV_SDR (1 << 3)
    +
    +/* Bit definitions for LTV_GATECTL2 */
    +#define LTV_NW_INV_FRAME (0 << 14)
    +#define LTV_NW_INV_1LINE (1 << 14)
    +#define LTV_NW_INV_2LINE (2 << 14)
    +#define LTV_DSC (1 << 12)
    +#define LTV_GIF (1 << 8)
    +#define LTV_FHN (1 << 7)
    +#define LTV_FTI(x) (((x) & 0x0003) << 4)
    +#define LTV_FWI(x) (((x) & 0x0003) << 0)
    +
    +/* Bit definitions for LTV_SOTCTL */
    +#define LTV_SDT(x) (((x) & 0x0007) << 10)
    +#define LTV_EQ(x) (((x) & 0x0007) << 2)
    +
    +/* Bit definitions for LTV_PWRCTL1 */
    +#define LTV_VCOM_DISABLE (1 << 14)
    +#define LTV_VCOMOUT_ENABLE (1 << 11)
    +#define LTV_POWER_ON (1 << 9)
    +#define LTV_DRIVE_CURRENT(x) (((x) & 0x0007) << 4) /* 0=off, 5=max */
    +#define LTV_SUPPLY_CURRENT(x) (((x) & 0x0007) << 0) /* 0=off, 5=max */
    +
    +/* Bit definitions for LTV_PWRCTL2 */
    +#define LTV_VCOML_ENABLE (1 << 13)
    +#define LTV_VCOML_VOLTAGE(x) (((x) & 0x001f) << 8) /* 0=1V, 31=-1V */
    +#define LTV_VCOMH_VOLTAGE(x) (((x) & 0x001f) << 0) /* 0=3V, 31=4.5V */
    +
    +#endif /* __LTV350QV_H */
    --
    1.4.4.4

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@xxxxxxxxxxxxxxx
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


    --------------------------------------------------------------------------------

    References:
    Re: [PATCH] Samsung LTV350QV LCD driver
    From: Richard Purdie

    出0入0汤圆

    发表于 2011-1-13 09:59:18 | 显示全部楼层
    还有么?我想要一个。

    出0入0汤圆

    发表于 2011-1-13 12:07:00 | 显示全部楼层
    回复【255楼】qwert
    s3c2410 下 lcd 驱动程序移植及 gui 程序编写 (原文件名:s3c2410 下 lcd 驱动程序移植及 gui 程序编写.pdf)  

    -----------------------------------------------------------------------

    cool !! 有了屏幕的驱动, 这下好玩了~~~  

    哎,就是jtag 还没有搞定~~~~

    出0入0汤圆

     楼主| 发表于 2011-1-13 13:14:46 | 显示全部楼层
    需要导航仪的朋友直接拍就可以的,库存是实际库存,把送的东西一起用购物车拍下,我看到就会改价格的,不用等我在电脑旁才拍
    有什么其它要求的,可以在旺旺留言,或在定单的备注里留言,我会看到的

    出0入0汤圆

    发表于 2011-1-14 00:09:19 | 显示全部楼层
    黑的和白的有什么区别?

    出0入0汤圆

    发表于 2011-1-14 00:33:45 | 显示全部楼层
    已经拍了一个黑的,等待收货。

    出0入0汤圆

     楼主| 发表于 2011-1-14 00:49:30 | 显示全部楼层
    【262楼】 yanghc ,能不能旺旺聊下,你拍的单有问题

    出0入0汤圆

    发表于 2011-1-14 01:38:41 | 显示全部楼层
    回复【263楼】qwert
    -----------------------------------------------------------------------

    楼主,你能帮忙测试一下  【194楼】momo31  给出的jtag 吗?

    我这里怎么连接也不行,

    但是和自己的S3C44B0 和S3C2440 的开发板 连接都是正常的~~~

    出0入0汤圆

     楼主| 发表于 2011-1-14 01:43:08 | 显示全部楼层
    我没有jlink ...

    出0入0汤圆

    发表于 2011-1-14 02:30:49 | 显示全部楼层
    我也拍了一个黑的,等待接收,就是100M的摄像头是否得不到了,唉拍的早了几个小时,晚一点就看到连接了。

    出0入0汤圆

    发表于 2011-1-15 11:30:22 | 显示全部楼层
    还有人玩这个东西吗?分享下呗。

    出0入0汤圆

    发表于 2011-1-15 11:37:12 | 显示全部楼层
    有移植的其他系统的吗??

    出0入0汤圆

    发表于 2011-1-15 13:44:22 | 显示全部楼层
    回复【268楼】yanghc
    有移植的其他系统的吗??
    -----------------------------------------------------------------------

    你的 jtag 搞定了?? 如果搞定的话 应该可以玩起来了~~~

    但是一旦烧写了程序,估计还原不了了,因为  没有原版的固件~~~

    出0入0汤圆

     楼主| 发表于 2011-1-15 15:20:08 | 显示全部楼层
    我自己留了两台,把一台改了大容量电池的,另一台找个空也改成大容量的:

    (原文件名:nEO_IMG_IMG_8949.jpg)

    GPS走线从天线下方过:

    (原文件名:nEO_IMG_IMG_8952.jpg)


    (原文件名:nEO_IMG_IMG_8957.jpg)


    (原文件名:nEO_IMG_IMG_8958.jpg)


    (原文件名:nEO_IMG_IMG_8961.jpg)


    (原文件名:nEO_IMG_IMG_8962.jpg)

    看了下,把手写笔的托座取下,还可以放入更厚容量更大的电池:

    (原文件名:nEO_IMG_IMG_8955.jpg)

    出0入0汤圆

    发表于 2011-1-16 11:56:04 | 显示全部楼层
    上传得来不易的lcd规格书!
    LTV350QV-F05规格书.rarourdev_611372Q1BZT9.rar(文件大小:446K) (原文件名:LTV350QV-F05规格书.rar)

    出0入0汤圆

    发表于 2011-1-16 13:14:13 | 显示全部楼层
    tft lcd在gps导航仪中的应用。
    http://www.gongkong.com/webpage/solutions/201002/2010022509572000004.htm

    出0入0汤圆

    发表于 2011-1-16 13:26:52 | 显示全部楼层
    网上搜的三星lcd电路设计
    http://hi.baidu.com/kuns/blog/item/4fb6935800eb77de9d8204bf.html
    http://hi.baidu.com/kuns/blog/item/36d6b8382ba58bc2d462258a.html

    出0入0汤圆

     楼主| 发表于 2011-1-16 14:10:28 | 显示全部楼层
    好资料
    越来越全了,就差个键盘IO了

    出0入0汤圆

    发表于 2011-1-16 15:11:38 | 显示全部楼层
    mark

    出0入0汤圆

    发表于 2011-1-16 18:17:16 | 显示全部楼层
    昨晚在六楼窗户边定位,能搜到10个星,在室内3--5个星,今天重新开机,CE系统启动起来后,打开什么,机器反应很慢,打开我的电脑,用了五分钟,打开NAVIONE更忙更慢了,机器硬起,恢复原来启动系统,再从新改启动文件为EXPLORER.EXE,都不得行,郁闷不知何原因.

    出0入0汤圆

    发表于 2011-1-16 18:29:07 | 显示全部楼层
    momo31 测出的jtag口,,可以用,

    想用H-JTAG读出它的固件,可惜太慢了,4K/S..

    要读32M吧? 那位高手说说?

    出0入0汤圆

    发表于 2011-1-16 18:36:06 | 显示全部楼层
    自己做的简易SD卡座清洁卡,不用拆机拆SD卡座清理了

    数码相机放了几年后不认SD卡,害得我费了不少劲拆机拆卡座清洁(参看明基BENQ的相机 DC C62搁置一段时间不能开机,拆开清理)

    后来就用笔记本的擦屏布和一个 mini SD 卡托做了个清洁卡。




    就是用旁边的HP的擦屏布做的





    跟TF卡托一起拍个照



    在淘宝邮购了个128块的库存了几个年头 赛格PN80 GPS导航仪。 到手后只认了一次SD卡,滴两滴无水酒精到清洁卡的布槽那,反复往SD卡座里插拔若干次,成功的清洁了这个GPS的卡座,不用冒险用镊子柄捅或拆机清理了。

    题外话一下这机子的参数:

    赛格PN80启明星基本参数
    LCD 3.5英寸 320×240pix
    GPS sirf starⅢ
    系统 windows CE.net 4.2
    CPU 266MHZ
    SDRAM 64MB
    FLASH 32MB
    操控 触摸、按键
    SD/MMC 512M
    GPS天线 内置GPS高性能接收可翻转天线
    电源电压 DC 5V
    工作温度 零下10度至40度

    不是打广告,因为店家说机子只有30台,已经卖完了。



    目前只捣鼓出连接上电脑,但还是调不出Win CE的界面,修改注_册表方法不成功,重启后,注_册表和内置储存的数据都会恢复,请高手指点。

    出0入0汤圆

    发表于 2011-1-16 18:48:34 | 显示全部楼层

    HP的擦屏布2.jpg (原文件名:HP的擦屏布2.jpg)


    HP的擦屏布.jpg (原文件名:HP的擦屏布.jpg)


    minisd-座.jpg (原文件名:minisd-yuo.jpg)


    TF卡托一起 (原文件名:TF卡托一起.jpg)

    出0入0汤圆

    发表于 2011-1-16 20:41:10 | 显示全部楼层
    LS的是我发在数码的帖子。

    出0入0汤圆

    发表于 2011-1-16 20:47:20 | 显示全部楼层
    回复【277楼】litop  
    momo31 测出的jtag口,,可以用,
    想用h-jtag读出它的固件,可惜太慢了,4k/s..
    要读32m吧? 那位高手说说?
    -----------------------------------------------------------------------

    郁闷,我还没连接成功,还打扰了momo31了,看来是我的LPT的jtag的问题。litop方便指导下吗?qq 551762226

    出0入0汤圆

    发表于 2011-1-16 21:27:12 | 显示全部楼层
    就是照 momo31 测的引脚,来接的,,

    出0入0汤圆

    发表于 2011-1-16 21:29:12 | 显示全部楼层
    请教各位:1 正面右侧一溜按键上面那个黑色的圆(塑料)和机身顶面右侧(银色塑料框上)透明小圆窗是作什么用的?
              2 按先知们介绍的办法 用那个工具修改注_册表、连接......都一一灵验,进入WIN CE,在开敞阳台台阶上定位成功,与C3  370一致。可是断电再开机,就回到原始状态了;而且用Win xp自带的注_册表编辑工具竟找不到刚才的内容。 有什么办法吗?
              3 进到WIN CE后,怎样转到原始画面(113楼第二图);或从原始开机画面去打开SD卡里面的\NaviOne\NaviOne.exe?
              4 174楼里“PB5.0”是什么?能在PC端操作PN80吗?
        有没有答案 先谢谢各位

    出0入0汤圆

    发表于 2011-1-16 21:36:31 | 显示全部楼层
    momo31 测出的jtag口,我试了也不行,想问下momo31用的是白色机吗?因为我用的是黑色机,却没法连接成功。
    还有上面JTAG口没成功的用的是什么颜色的机子?
    难道黑色机和白色机的JTAG口是不一样的吗?

    出0入0汤圆

    发表于 2011-1-16 22:18:38 | 显示全部楼层
    我买的也是黑的,还没有到货。白的黑的电路板布线应该是一样的,JTAG口应该也是一样的,看了照片S3C2410的背后有很多过孔,找JTAG应该不难。

    出0入0汤圆

    发表于 2011-1-16 22:29:13 | 显示全部楼层
    大家说说是用什么工具连接的。

    出0入0汤圆

    发表于 2011-1-16 22:40:11 | 显示全部楼层
    我的也是黑色的,用的是并口的H-JTAG,,然后用H-FLASHER,来读NAND_flash,可以读

    现在已经读出前4K,FLASH的代码了,可惜不会反汇编,不知道WINCE放在那里。

    出0入0汤圆

    发表于 2011-1-16 23:09:15 | 显示全部楼层
    可以的话LS的把代码发上来让大家研究下,这样玩的才有意思,众人拾柴火焰高。

    出0入0汤圆

    发表于 2011-1-16 23:46:35 | 显示全部楼层
    ,没什么代码啊,都是现成的工具,,你要什么代码?

    出0入0汤圆

    发表于 2011-1-17 08:54:15 | 显示全部楼层
    我也是刚学ARM9的,给我读出的代码我也看不懂,GPS机子到手读出来代码来,到时我来上传读出的代码。大家一起来看看。

    出0入0汤圆

    发表于 2011-1-17 19:33:14 | 显示全部楼层
    回复【283楼】wjhhh
    -----------------------------------------------------------------------
    只知道第3个问题。

    在CE下,主界面在:我的电脑/windows/mainpage。从windows可以直接打开原机的任何应用程序

    出0入0汤圆

    发表于 2011-1-17 23:36:15 | 显示全部楼层
    我的问题是:
    1、我的系统时间设置以后,怎么一重起就回到初始状态了;
    2、注_册表修改完成后,Reset,按步骤进入导航软件,但是一关机再启动,又回到初始状态了;

    这貌似其实是一个问题,机器里面另外有电池?

    出0入0汤圆

    发表于 2011-1-18 12:34:27 | 显示全部楼层
    应该有个电池的像电脑主板上的BIOS的电池一样啊

    出0入0汤圆

    发表于 2011-1-19 00:24:49 | 显示全部楼层
    嗯,能定位了,就是系统不会保存信息.

    出0入0汤圆

    发表于 2011-1-19 12:40:45 | 显示全部楼层
    回复【283楼】wjhhh  

    请教各位:1 正面右侧一溜按键上面那个黑色的圆(塑料)和机身顶面右侧(银色塑料框上)透明小圆窗是作什么用的?
              2 按先知们介绍的办法 用那个工具修改注_册表、连接......都一一灵验,进入WIN CE,在开敞阳台台阶上定位成功,与C3  370一致。可是断电再开机,就回到原始状态了;而且用Win xp自带的注_册表编辑工具竟找不到刚才的内容。 有什么办法吗?
              3 进到WIN CE后,怎样转到原始画面(113楼第二图);或从原始开机画面去打开SD卡里面的\NaviOne\NaviOne.exe?
              4 174楼里“PB5.0”是什么?能在PC端操作PN80吗?

    -----------------------------------------------------------------------

    1  那个是红外窗,应该是接收的,估计可以用红外遥控器遥控。
    2  XP自带的注_册表编辑器不能编辑CE的注_册表的,按照上面老陈很清晰的教程就可以修改了,
       断电是要重新设置注_册表的(这问题还没办法,因此至今我都不敢帮身边的两朋友入手楼主的PN80.)
    3  就是是运行Pagemain.exe;这个还没找到办法。
    4  是PowerBuilder,详细的你GOOGLE一下吧。是可以在PC端操作PN80的。


    回复 【294楼】 yanghc
    PN80里面没那样的电池的。



    我把天线盒子打开了,上面有印字cirocomm 5901,只查到cirocomm是台湾的太盟牌子。


    原天线,也挺厚实的。 (原文件名:bDSCI3006.jpg)


    (原文件名:bDSCI3007.jpg)


    天线的背面,没热风枪,买拆那铁盖 (原文件名:bDSCI3004.jpg)


    370C放进去刚刚好 (原文件名:bDSCI3009.jpg)


    (原文件名:bDSCI3010.jpg)


    要换370C的话,最好自己做根连接线,阿莫给370C配线对于PN80那位置来说,粗了点。如果换上了370C,原来GPS那位置可以加个蓝牙透传模块进去。

    出0入0汤圆

    发表于 2011-1-19 15:16:35 | 显示全部楼层
    回复【283楼】wjhhh   

    请教各位:1 正面右侧一溜按键上面那个黑色的圆(塑料)和机身顶面右侧(银色塑料框上)透明小圆窗是作什么用的?
              2 按先知们介绍的办法 用那个工具修改注_册表、连接......都一一灵验,进入WIN CE,在开敞阳台台阶上定位成功,与C3  370一致。可是断电再开机,就回到原始状态了;而且用Win xp自带的注_册表编辑工具竟找不到刚才的内容。 有什么办法吗?
              3 进到WIN CE后,怎样转到原始画面(113楼第二图);或从原始开机画面去打开SD卡里面的\NaviOne\NaviOne.exe?
              4 174楼里“PB5.0”是什么?能在PC端操作PN80吗?

    -----------------------------------------------------------------------  

    1  那个是红外窗,应该是接收的,估计可以用红外遥控器遥控。
    2  XP自带的注_册表编辑器不能编辑CE的注_册表的,按照上面老陈很清晰的教程就可以修改了,
       断电是要重新设置注_册表的(这问题还没办法,因此至今我都不敢帮身边的两朋友入手楼主的PN80.)
    3  就是是运行Pagemain.exe;这个还没找到办法。
    4  是PowerBuilder,详细的你GOOGLE一下吧。是可以在PC端操作PN80的。



    确实能用遥控 找了个遥控试了试 只有两个按键有效 估计是编码的问题
    回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

    GMT+8, 2024-4-20 22:29

    © Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

    快速回复 返回顶部 返回列表