LinuxÉ豸Çý¶¯Ö®I2C¼Ü¹¹·ÖÎö
Ò»:ǰÑÔ
I2cÊÇphilipsÌá³öµÄÍâÉè×ÜÏß.I2CÖ»ÓÐÁ½ÌõÏß,Ò»Ìõ´®ÐÐÊý¾ÝÏß:SDA,Ò»ÌõÊÇʱÖÓÏßSCL.ÕýÒòΪÕâÑù,Ëü·½±ãÁ˹¤³ÌÈËÔ±
µÄ²¼Ïß.ÁíÍâ,I2CÊÇÒ»ÖÖ¶àÖ÷»ú¿ØÖÆ×ÜÏß.ËüºÍUSB×ÜÏß²»Í¬,USBÊÇ»ùÓÚmaster-slave»úÖÆ,ÈκÎÉ豸µÄͨÐűØÐëÓÉÖ÷»ú·¢Æð²Å¿ÉÒÔ.¶ø
I2C ÊÇ»ùÓÚmulti master»úÖÆ.һͬ×ÜÏßÉÏ¿ÉÔÊÐí¶à¸ömaster.¹ØÓÚI2CÐÒéµÄ֪ʶ,ÕâÀï²»ÔÙ׸Êö.¿É×ÔÐÐÏÂÔØspecÔĶÁ¼´¿É.
¶þ:I2C¼Ü¹¹¸ÅÊö
ÔÚlinuxÖÐ,I2CÇý¶¯¼Ü¹¹ÈçÏÂËùʾ:
Èç
ÉÏͼËùʾ,ÿһÌõI2C¶ÔÓ¦Ò»¸öadapter.ÔÚkernelÖÐ,ÿһ¸öadapterÌṩÁËÒ»¸öÃèÊöµÄ½á¹¹(struct
i2c_adapter),Ò²¶¨ÒåÁËadapterÖ§³ÖµÄ²Ù×÷(struct i2c_adapter).ÔÙͨ¹ýi2c
core²ã½«i2cÉ豸Óëi2c adapter¹ØÁªÆðÀ´.
Õâ¸öͼֻÊÇÌṩÁËÒ»¸ö´ó¸ÅµÄ¿ò¼Ü.ÔÚÏÂÃæµÄ´úÂë·ÖÎöÖÐ,´ÓÏÂÖÁÉϵÄÀ´·ÖÎöÕâ¸ö¿ò¼Üͼ.ÒÔϵĴúÂë·ÖÎöÊÇ»ùÓÚlinux 2.6.26.·ÖÎöµÄ´úÂë»ù±¾Î»ÓÚ: linux-2.6.26.3/drivers/i2c/λÖÃ.
Èý:adapter×¢²á
ÔÚ
kernelÖÐÌṩÁËÁ½¸öadapter×¢²á½Ó¿Ú,·Ö±ðΪi2c_add_adapter()ºÍ
i2c_add_numbered_adapter().ÓÉÓÚÔÚϵͳÖпÉÄÜ´æÔÚ¶à¸öadapter,ÒòΪ½«Ã¿Ò»ÌõI2C×ÜÏß¶ÔÓ¦Ò»¸ö±àºÅ,ÏÂÎÄÖгÆÎª
I2C×ÜÏߺÅ.Õâ¸ö×ÜÏߺŵÄPCIÖеÄ×ÜÏߺŲ»Í¬.ËüºÍÓ²¼þÎÞ¹Ø,Ö»ÊÇÈí¼þÉϱãÓÚÇø·Ö¶øÒÑ.
¶ÔÓÚi2c_add_adapter()¶øÑÔ,ËüʹÓõÄÊǶ¯Ì¬×ÜÏߺÅ,¼´ÓÉϵͳ¸øÆä·ÖÎöÒ»¸ö×ÜÏߺÅ,¶øi2c_add_numbered_adapter()ÔòÊÇ×Ô¼ºÖ¸¶¨×ÜÏߺÅ,Èç¹ûÕâ¸ö×ÜÏߺŷǷ¨»òÕßÊDZ»Õ¼ÓÃ,¾Í»á×¢²áʧ°Ü.
·Ö±ðÀ´¿´Ò»ÏÂÕâÁ½¸öº¯ÊýµÄ´úÂë:
int i2c_add_adapter(struct i2c_adapter *adapter)
{
int id, res = 0;
retry:
if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
return -ENOMEM;
mutex_lock(&core_lock);
/* "above" here means "above or equal to", sigh */
res = idr_get_new_above(&i2c_adapter_idr, adapter,
__i2c_first_dynamic_bus_num, &id);
mutex_unlock(&core_lock);
if (res < 0) {
if (res == -EAGAIN)
goto retry;
return res;
}
adapter->nr = id;
Ïà¹ØÎĵµ£º
LinuxÉ豸Çý¶¯Ñ§Ï°£Davinci¿ª·¢°åÉÏÔËÐеÄhelloÄ£¿é
¿´Á˺ܶà¸öhello worldÁË£¬×Ô¼ºÀ´Ð´Ò»¸öÔÚdavinci°å¿éÉÏÅܵİɡ£
Ö÷ÌåºÜ¼òµ¥£¬¾ÍÊÇÒ»¸öCÎļþhello_davinci.c¡£
/*================hello_davinci.c==============*/
#include <linux/module.h> /*ËùÓÐÄ£¿é¶¼ÐèÒªµÄÍ·Îļþ*/
#include <lin ......
ÔÚ³¬¼¶Óû§ÏÂÏÔʾLinuxϵͳÖÐÕýÔÚÔËÐеÄÈ«²¿½ø³Ì£¬Ó¦Ê¹ÓõÄÃüÁî¼°²ÎÊýÊÇ ps -aux ¡£
Linux psÃüÁîÏê½â£º
1)ps a ÏÔʾÏÖÐÐÖÕ¶Ë»úϵÄËùÓгÌÐò,°üÀ¨ÆäËûÓû§µÄ³ÌÐò.
2)ps -A ÏÔʾËùÓгÌÐò.
3)ps c Áгö³ÌÐòʱ,ÏÔʾÿ¸ö³ÌÐòÕæÕýµÄÖ¸ÁîÃû³Æ,¶ø²»°üº¬Â·¾¶,²ÎÊý»ò³ ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
Linux
ÊÀ½çºÜ¾«²Ê£¬ÁîÈËÑÛ»¨çÔÂÒ¡£½üÆÚÒÔÀ´£¬¸÷ÖÖÇáÐÍ
Linux
°æ±¾²»¶ÏµÇ̨ÁÁÏ֪࣬ÃûµÄ
Puppy
£¨Ð¡¹·Ö®Ãû£©±ãÊÇÒ»Àý¡£ºÎ¹Ê£¿
......
1¡¢ÒýÑÔ
ÔÚlinuxϵͳÏ£¬Èç¹ûÄãÏÂÔØ²¢°²×°ÁËÓ¦ÓóÌÐò£¬ºÜÓпÉÄÜÔÚ¼üÈëËüµÄÃû³ÆÊ±³öÏÖ“command not found”µÄÌáʾÄÚÈÝ¡£Èç¹ûÿ´Î¶¼µ½°²×°Ä¿±êÎļþ¼ÐÄÚ£¬ÕÒµ½¿ÉÖ´ÐÐÎļþÀ´½øÐвÙ×÷¾ÍÌ«·±ËöÁË¡£ÕâÉæ¼°µ½»·¾³±äÁ¿PATHµÄÉèÖÃÎÊÌ⣬¶øPATHµÄÉèÖÃÒ²ÊÇÔÚlinux϶¨ÖÆ»·¾³±äÁ¿µÄÒ»¸ö×é³É²¿·Ö¡£±¾ÎÄ»ùÓ ......
½ñÌ쿽±´ÁËÐéÄâ»úÔÚÁíÍâһ̨µçÄÔÉÏʹÓ㬷¢ÏÖMACµØÖ·³åÍ»£¬ÓÚÊÇÈ¥ÍøÉÏÕÒÐ޸ķ½·¨¡£¿É°´ÕÕËù˵µÄ£¬ÎÒ²¢Ã»ÓкÜ˳ÀûÐ޸ijɹ¦¡£
ÏÂÃæÎÒ½«¹ý³Ìд³öÀ´£¬ÀïÃæÓÐЩµØ·½ÐèҪעÒâһϡ£
ÏÂÃæÊÇÎÒ´ÓÍøÉÏËÑË÷µ½´ó²¿·ÖµÄ×ö·¨ÈçÏ£¬ºìÉ«²¿·ÖÊÇÎÒ×¢Ê͵ģ¬ÐèҪעÒâµÄµØ·½£º
VMwareÐéÄâ»úÖÐÐÞ¸ÄLinux MACµØÖ·µÄ·½·¨£º
1¡¢ÐÞ¸ÄÐéÄâ»úµÄ*.v ......