iTOP4412¿ª·¢°åGPSÇý¶¯
2014-05-08
GPSÓ²¼þÉÏÊÇͨ¹ý´®¿ÚÀ´Í¨Ðŵģ¬ÎÒÃÇÖ»ÐèÒªÁ¬½ÓGPSÄ£¿éµÄTXD£¬RXDµ½cpuµÄ´®¿ÚÉÏ£¬È»ºóGPS»¹ÐèÒªÒ»¸ö¸´Î»Òý½ÅÎÒÃÇÁ¬½ÓÕâ¸öÒý½Åµ½CPUµÄÈÎÒâÒ»¸öGPIO¼´¿É£¨iTOP-4412Á¬½Óµ½ÁËcpuµÄGPB_4Òý½ÅÉÏ£©¡£
×¼±¸Ò»ÕÅ640x480·Ö±æÂʵÄbmp¸ñʽµÄͼƬ£¬Ê¹ÓÃת»»¹¤¾ß£¨Img2Lcd£©°ÑͼƬת»»³ÉÊý×éÎļþ£¬Ê¹ÓÃÉú³ÉµÄÊý×éÄÚÈÝÌæ»»ÄÚºËÔ´Âë
drivers/video/samsung/iTop-4412.hÀïÃæiBitmapData_qÊý×éµÄÄÚÈÝ£¬È»ºóʹÓÃmakeÃüÁîÖØÐ±àÒëÄںˣ¬È»ºóÉÕдµ½¿ª·¢°å£¬
ÉϵçÆô¶¯¿ª·¢°å¼´¿É
GPSÈí¼þÉÏ·ÖΪÁ½²¿·Ö£¬·Ö±ðÊÇÄÚºËÇý¶¯ºÍAndroidÉϵÄHAL²ãÇý¶¯£¬ÏÂÃæÎÒÃÇÏÈÀ´¿´¿´ÄÚºËÇý¶¯²¿·Ö£¬ÒòΪÄں˱¾Éí¾ÍÖ§³Ö´®¿ÚÇý¶¯ÁË£¬ËùÒÔÎÒÃÇÒª×öµÄ¾ÍÊÇÌí¼ÓÒ»¸ö×Ö·ûÇý¶¯£¬Õâ¸ö×Ö·ûÇý¶¯µÄ×÷ÓþÍÊÇ¿ØÖÆGPSÄ£¿éµÄ¸´Î»Òý½Å£¬Çý¶¯Ô´Âë´æ·ÅÔÚÄÚºËĿ¼µÄdriver/cha/gps.cÎļþÀï¡£gps.cÊÇÒ»¸ö¼òµ¥µÄ×Ö·ûÇý¶¯£¬ËüÖ÷ÒªÌṩÁËgps_open,gps_open¸ºÔð´ò¿ªÉ豸´úÂëÈçÏ£º
int gps_open(struct inode *inode,struct file *filp)
{
DPRINTK("Device Opened Success!\n");
return nonseekable_open(inode,filp);
}
gps_release¸ºÔð¹Ø±ÕÉ豸º¯ÊýÈçÏ£º
int gps_release(struct inode *inode,struct file *filp)
{
DPRINTK("Device Closed Success!\n");
return 0;
}
gps_ioctlÊÇÉϲãÓ¦ÓúÍÄÚºËÇý¶¯¾ÍÐÐͨÐŵĽӿڣ¬¿ÉÒÔ¸øGPSÇý¶¯·¢ËÍ¿ØÖÆÐÅÏ¢£¨ÉèÖø´Î»Òý½ÅGPB_4µÄµçƽ¸ßµÍ£©¡£ÉèÖø´Î»Òý½ÅµÄ´úÂëÈçÏ£º
case RST_HIGH:
//gpio_direction_output(S5PV310_GPB(4),0);
//mdelay(500);
if(gpio_request(EXYNOS4_GPB(4) ,"GPS_power"))
DPRINTK("GPS GPIO err!\r\n");
else{
gpio_direction_output(EXYNOS4_GPB(4),0);
mdelay(500);
gpio_direction_output(EXYNOS4_GPB(4),1);
DPRINTK("GPS_RSTn Set High!\n");
gpio_free(EXYNOS4_GPB(4));}
break;
case RST_LOW:
if(gpio_request(EXYNOS4_GPB(4) ,"GPS_power"))
DPRINTK("GPS GPIO err!\r\n");
else{
gpio_direction_output(EXYNOS4_GPB(4),0);
DPRINTK("GPS_RSTn Set Low!\n");
gpio_free(EXYNOS4_GPB(4));}
break;
ÄÚºËÀïgpsÇý¶¯µÄ×÷ÓþÍÊÇÉϲãÓ¦ÓÃÔÚʹÓÃgpsµÄʱºò¸øgpsÒ»¸ö¸´Î»£¬Ê±GPSÄ£¿é¿ªÊ¼¹¤×÷¡£Õâ¸öÇý¶¯Ò²ºÜ¼òµ¥¡£