¹ØÓÚ s3c2416 hspi spi linux Çý¶¯
×î½üÔÚ×ösamsung
s3c2416
ÔÚlinuxϵÄspiÇý¶¯³ÌÐò£¬²âÊÔÁËÏÂsamsung·¢²¼µÄspiµÄÄÚºËÔ´´úÂ룬ÎÞÂÛÊDzÉÓÃdma»òÕß·Çdmaģʽ¶¼ÎÞ·¨¹¤×÷¡£ÔĶÁ¸ÃÇý¶¯´úÂ룬·¢ÏÖ
ÕâÂëÓ¦¸ÃÊÇÒ»¸öδÍê³ÉµÄ°æ±¾£¬´æÔںܶàµÄbug¡£ÓÚÊÇÔÚÕâ¸ö°æ±¾µÄ»ù´¡ÉϽøÐÐÐ޸ģ¬ÖØÐ´Ò»¸ö¿ÉÓõġ¢Ö§³Öȫ˫¹¤µÄͨѶµÄÇý¶¯¡£Ä¿Ç°²âÊÔ»ù±¾Äܹ»Õý³£¹¤×÷£¬
Ö§³Ö°ëË«¹¤¡¢È«Ë«¹¤¡¢spiÓ²¼þÖжÏģʽºÍdmaģʽ¡£
¶Ôhspi-s3c2443.[ch]Ô´Îļþ¸ù¾ÝÊý¾Ý·¢ËͺͽÓÊÕµÄÁ÷³Ì½øÐзÖÎö£¬ÔÚδ²ÉÓÃdmaģʽÏ£¬º¯Êýµ÷ÓõÄÁ÷³Ì£ºs3c_spi_xfer
-> s3c_spi_doxfer -> s3c_spi_message_start ->
down_interruptible(&spi->sem)£¬µ½ÕâÀӲ¼þ»á²úÉúspiÖжϣ¬½øÈëµ½ÖжϷþÎñ³ÌÐò
s3c_spi_irq ÖУ¬ÖжϺ¯Êýµ÷Óà spi_s3c_irq_nextbyte
½øÐÐÊý¾Ý·¢ËÍ£¬¸ù¾Ýspi->stateµÄÖµ×öÏàÓ¦µÄ²Ù×÷£¬Êý¾Ý·¢ËÍ»ò½ÓÊÕÍê³Éºó£¬µ÷Óà s3c_spi_stop
¹Ø±Õspi£¬²¢up(&spi->sem)£¬³ÌÐòÁ÷³Ì»Øµ½ÁËs3c_spi_doxferº¯ÊýµÄ
down_interruptible(&spi->sem)£¬º¯Êý·µ»ØÍ˳ö£¬Ò»¸öspiµÄÊý¾ÝÊÕ·¢Á÷³ÌÍê³É¡£
ÔÚÕâ¸ö·¢ËͽÓÊÕÁ÷³ÌÖУ¬ÖжϷþÎñ³ÌÐò´æÔںܶ಻×ãµÄµØ·½¡£
ÏÈ¿´spi·¢ËÍ£¬·¢ËÍ×îÖÕµ÷ÓõÄÊÇ£º
while(!(tx_msgend(spi)))
s3c_spi_write_fifo(spi);
ÕâÁ½ÐдúÂëµÄ¹¦ÄÜÊÇÅжÏд»º³åÀïÊÇ·ñ»¹ÓÐÊý¾Ý£¬Óеϰ¾ÍдÈëµ½spi·¢ËͼĴæÆ÷(S3C_SPI_TX_DATA)ÖС£ÎÒÃÇÖªµÀspiµÄÓ²¼þÄܹ»»º³å64
¸ö×Ö½ÚµÄÊý¾Ý£¬Èç¹ûÎÒÃÇÒ»´Î·¢Ë͵ÄÊý¾Ý³¤¶ÈСÓÚ64¸ö×Ö½Ú£¬²¢ÇÒÏÂÒ»´Î·¢ËÍÊý¾Ýʱ»º³åÖеÄÊý¾Ý·¢ËÍÍê³É£¬ÄÇôÕâ¶Î´úÂë±íÃæÉÏÓ¦¸ÃÊÇûʲôÎÊÌâ¡£Èç¹ûÎÒÃÇ·¢
Ë͵ÄÊý¾Ý³¤¶È´óÓÚ64¸ö×Ö½Ú£¬ÄÇôÕâ¶Î´úÂëÖÁÉÙÔì³ÉµÄºó¹ûÊDzúÉúÒ»¸öSPI transmit over run error¡£
ÔÚ¿´spi½ÓÊÕ£¬½ÓÊÕµ÷ÓõĴúÂëÊÇ£º
while(!(rx_msgend(spi))){
spi->msg->rbuf[spi->msg_rd_pt
Ïà¹ØÎĵµ£º
setitimer()ÊDZȽϾ«×¼µÄ¶¨Ê±Æ÷£¬ÊÇLinuxµÄAPI
ÒÔÏ´úÂëÊǸöµ¹¼ÆÊ±Àý×Ó£º
#include <signal.h>
#include <sys/time.h>
static int time_count=30;
static void sigalrm_handler(int sig)
{
time_count--;
printf("timer signal.. %d\n", time_count);
}
struct itimerval v; ......
Linux select()Ïê½â
selectϵͳµ÷ÓÃÊÇÓÃÀ´ÈÃÎÒÃǵijÌÐò¼àÊÓ¶à¸öÎļþ¾ä±ú(file descriptor)µÄ״̬±ä»¯µÄ¡£³ÌÐò»áÍ£ÔÚselectÕâÀïµÈ´ý£¬Ö±µ½±»¼àÊÓµÄÎļþ¾ä±úÓÐijһ¸ö»ò¶à¸ö·¢ÉúÁË״̬¸Ä±ä¡£
ÎļþÔÚ¾ä±úÔÚLinuxÀïºÜ¶à£¬Èç¹ûÄãmanij¸öº¯Êý£¬ÔÚº¯Êý·µ»ØÖµ²¿·Ö˵µ½³É¹¦ºóÓÐÒ»¸öÎļþ¾ä±ú±»´´½¨µÄ¶¼ÊÇ ......
Linux® ¿É¼ÓÔØÄÚºËÄ£¿é£¨´ÓÄÚºËµÄ 1.2 °æ±¾¿ªÊ¼ÒýÈ룩ÊÇ Linux Äں˵Ä×îÖØÒª´´ÐÂÖ®Ò»¡£ËüÃÇÌṩÁË¿ÉÉìËõµÄ¡¢¶¯Ì¬µÄÄںˡ£Ì½Ë÷Òþ²ØÔڿɼÓÔØÄ£¿éºóÃæµÄÔÀí£¬²¢Ñ§Ï°ÕâЩ¶ÀÁ¢µÄ¶ÔÏóÈçºÎ¶¯Ì¬µØ×ª»»³É Linux Äں˵ÄÒ»²¿·Ö¡£
Linux ¾ÍÊÇͨ³£Ëù˵µÄµ¥Äںˣ¨monolithic kernel£©
£¬¼´²Ù×÷ϵͳµÄ´ó²¿·Ö¹¦Äܶ¼±»³ÆÎªÄÚº ......
ÔÚÌÖÂÛÕâ¸öÎÊÌâ֮ǰ£¬ÎÒÃÇÏÈÀ´¿´¿´Linux×ÀÃæÓöµ½ÁËʲôÀ§ÄÑ¡£
Ŀǰ£¬LinuxÔÚ×ÀÃæÉϵÄÊг¡Õ¼ÓÐÂʾÝÓйط½Ãæ¹À¼ÆÔÚ1%×óÓÒ£¬Õâ¸ö±ÈÀýÉõÖÁ»¹²»ÈçAppleµÄMac OS X£¬È˼ҵÄÊг¡Õ¼ÓÐÂÊÒ²ÓÐ4%ÒÔÉÏ¡£¸ü±ðÌáMS Windows°Ù·ÖÖ®¾ÅÊ®ÒÔÉϵÄÊг¡Õ¼ÓÐÂÊ£¬¿ÉÒÔ˵Linux×ÀÃæËÆºõ¿ÉÒÔ ......
ÍøÉϵÄÎÄÕ¿ÉÄܹýÓÚÉîÈ룬²»Ì«ÊʺÏÐÂÊÖ¿´£¬ÕâÀï½éÉÜ×î¼òµ¥µÄ¼¸ÌõSMTPÖ¸Á½öÐèÒªÊäÈëºÜÉÙµÄÃüÁî¼´¿É³É¹¦·¢ËÍÒ»·âÓʼþ¡£
ÆäÖдÖÌ岿·ÖΪÊäÈëµÄÃüÁÀ¶É«²¿·ÖΪ¿É±äÄÚÈÝ£¬»ÒɫΪ·þÎñÆ÷Ó¦´ðÄÚÈÝ©¤©¤
[root@localhost ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Esc ......