ǶÈëʽLinuxϵͳCGI³ÌÐòÉè¼Æ¼¼Êõ
ǶÈëʽLinuxϵͳCGI³ÌÐòÉè¼Æ¼¼Êõ
ÕªÒª£ºÔÚÏêϸ½éÉÜÒ»ÖÖǶÈëʽWeb·þÎñÆ÷BOAµÄʵÏÖÓëÅäÖ÷½·¨µÄ»ù´¡ÉÏ£¬ÒÔÒ»¸öWebÔÚÏßÔ¶³Ì¼à¿ØGPIO£¨Í¨ÓÃÊäÈë/Êä³ö£©µÄ³ÌÐòΪʵÀý£¬½éÉÜǶÈëʽLinuxϵͳÏÂCPU³ÌÐòÉè¼Æ¼¼Êõ¡£
¹Ø¼ü´Ê£ºÇ¶ÈëʽϵͳLinux BOA CGI GPIO
1 ¸ÅÊö
Ëæ×Å»¥ÁªÍøÓ¦ÓÃµÄÆÕ¼°£¬Ô½À´Ô½¶àµÄÐÅÏ¢»¯²úÆ·ÐèÒª½ÓÈ뻥ÁªÍøÍ¨¹ýWebÒ³Ãæ½øÐÐÔ¶³Ì·ÃÎÊ¡£Ç¶ÈëʽWebϵͳÌṩÁËÒ»ÖÖ¾¼Ã¡¢ÊµÓõĻ¥ÁªÍøÇ¶Èëʽ½ÓÈë·½°¸¡£ÕâÀï½áºÏÒ»ÖÖǶÈëʽWeb Server BOAÀ´½éÉÜǶÈëʽLinuxϵͳϵÄCGI³ÌÐòÉè¼Æ¼¼Êõ¡£
2 Web Server BOAµÄʵÏÖÓëÅäÖÃ
2.1 uClinuxÏ£¬Ö÷ÒªÓÐÈý¸öWeb Server:HTTPD¡¢THTTPDºÍBOA¡£HTTPDÊÇ×î¼òµ¥µÄÒ»¸öWeb Server,ËüµÄ¹¦ÄÜ×îÈõ£¬²»Ö§³ÖÈÏÖ¤£¬²»Ö§³ÖCGI¡£THTTPDºÍBOA¶¼Ö§³ÖÈÏÖ¤¡¢CGIµÈ£¬¹¦Äܶ¼±È½ÏÈ«¡£BOAÊÇÒ»¸öµ¥ÈÎÎñµÄСÐÍHTTP·þÎñÆ÷£¬Ô´´úÂ뿪·Å¡¢ÐÔÄÜÓÅÐã£¬ÌØ±ðÊʺÏÓ¦ÓÃÔÚǶÈëʽϵͳÖС£Ä¿Ç°µÄuClinuxµÄ´úÂëÖÐÒѾ°üº¬BOAµÄÔ´´úÂë¡£ÔÚuClinuxÏÂʵÏÖBOA£¬Ö»ÐèÒª¶ÔBOA×öһЩÅäÖúÍÐ޸ġ£ÒÔÏÂÊÇÅäÖõĹý³Ì¡£
£¨1£©±àÒëBOAµ½ÄÚºË
Ê×ÏÈ£¬ÐèÒª°ÑBOA±àÒëµ½Äںˣ¬¼´Ö´ÐÐmake menuconfig£¬ÔÚÓ¦ÓóÌÐòÑ¡µ¥ÖÐnetwork applicationÏîÏÂÃæÑ¡Ôñboa¡£¸Ã²Ù×÷ÐèÒªÖØÐ±àÒëÄںˡ£
£¨2£©±àÖÆÅäÖÃÎļþboa.conf
ÔÚLinux²Ù×÷ϵͳÏ£¬Ó¦ÓóÌÐòµÄÅäÖö¼ÊÇÒÔÅäÖÃÎļþµÄÐÎʽÌṩµÄ£¬Ò»°ã¶¼ÊÇ·ÅÔÚÄ¿±ê°å/etc/Ŀ¼Ï»òÕß/etc/configĿ¼Ï¡£µ«boaµÄÅäÖÃÎļþboa.contÒ»°ã¶¼ÐýתÔÚÄ¿±ê°å/home/httpd/Ŀ¼Ï¡£
ÀýÈ磬һ¸öµäÐ͵Äboa.confÎļþ¸ñʽÈçÏ£º
ServerName Samsung-ARM
DocumentRoot/home/httpd
ScriptAlias/cgi-bin/home/httpd/cgi-bin/
ScriptAlias/index.html/home/httpd/index.html
ËüÖ¸¶¨ÁËHTMLÒ³Ãæ±ØÐë·Åµ½/home/httpdĿ¼Ï£¬cgiÍⲿÀ©Õ¹³ÌÐò±ØÐë·Åµ½/home/httpd/cgi-binĿ¼Ï¡£
£¨3£©±àÒëÉÕдÄÚºË
ÖØÐ±àÒëÄں˺ó£¬Í¨¹ýÉÕд¹¤¾ßÉÕдÄںˣ¬¾Í¿ÉÒÔÔÚPCÉÏͨ¹ýIEä¯ÀÀÆ÷·ÃÎÊ¿ª·¢°åÉϵÄWeb Server¡£ÀýÈ磬ÊäÈ뿪·¢°åµÄIPµØÖ·http://192.168.0.101£¬¼´¿É·ÃÎʵ½×Ô¼º×öµÄÍøÒ³index.htmlÁË¡£²¢ÇÒ£¬Í¨¹ý±àдCGIÍⲿÀ©Õ¹³ÌÐò£¬¿ÉÒÔʵÏÖ¶¯Ì¬Web¼¼Êõ£¬ÏÂÃæ½«Ïêϸ½éÉÜ¡£
2£®2 ¾ßÓÐMMUƽ̨µÄLinuxÏÂB0AµÄʵÏÖÓëÅäÖÃ
¶ÔÓÚÓÐMMU£¨ÄÚ´æ¹ÜÀíµ¥Ôª£©µÄƽ̨£¬ÈçarmlinuxºÍppclinux£¬¿ÉÒÔµ½ÍøÉÏÏÂÔØÒ»¸öÖ÷Á÷°æ±¾µÄboa·¢Ðаü¡£ÒòΪÊÇÔËÐÐÔÚÄ¿±êϵͳ£¬ËùÒÔÒªÓý»²æ±àÒ빤¾ß±àÒ룬¼´ÐèÒªÐÞ¸Äboa/src/MakefileÀïÃæµÄ±àÒëÆ÷¡£ÀýÈ磺
CC=/LinuxPPC/CDK/bin/powerpc-lin
Ïà¹ØÎĵµ£º
×î½üÔÚѧϰLinuxϵÄC±à³Ì£¬ÂòÁËÒ»±¾½Ð¡¶Linux»·¾³ÏµÄC±à³ÌÖ¸ÄÏ¡·¶Áµ½makefile¾ÍÔ½¿´Ô½ÃÔºý£¬¿ÉÄÜÊÇÎÒµÄÀí½âÄܲ»ÐС£
ÓÚÊÇgoogleµ½ÁËÒÔÏÂÕâÆªÎÄÕ¡£Í¨Ë×Ò×¶®¡£È»ºó°ÑËüÌù³öÀ´£¬·½±ãѧϰ¡£
& ......
±¾ÎÄÖн«½²Êölinux»·¾³±à³ÌÖÐÏ̵߳ÄʹÓᣲ»Ëµ·Ï»°Ö±½ÓÉÏ´úÂ룺
#include <pthread.h>
#include <assert.h>
struct ThreadData
{
int i;
};
void * ThreadProc(void* arg)
{
ThreadData* data = static_cast<ThreadData*>(arg);
//do something
pthread_exit(data);
}
int main() ......
Linux·þÎñÆ÷ÔÚÆô¶¯Ê±ÐèÒªÆô¶¯ºÜ¶àϵͳ·þÎñ£¬ËüÃÇÏò±¾µØºÍÍøÂçÓû§ÌṩÁËLinuxµÄϵͳ¹¦Äܽӿڣ¬Ö±½ÓÃæÏòÓ¦ÓóÌÐòºÍÓû§¡£ÌṩÕâЩ·þÎñµÄ³ÌÐòÊÇÓÉÔËÐÐÔÚºǫ́µÄÊØ»¤½ø³Ì£¨daemons£©À´Ö´Ðеġ£ÊØ»¤½ø³ÌÊÇÉú´æÆÚ³¤µÄÒ»ÖÖ½ø³Ì¡£ËüÃǶÀÁ¢ÓÚ¿ØÖÆÖն˲¢ÇÒÖÜÆÚÐÔµÄÖ´ÐÐijÖÖÈÎÎñ»òµÈ´ý´¦ÀíijЩ·¢ÉúµÄʼþ¡£ËûÃdz£³£ÔÚϵͳÒýµ¼×°ÈëʱÆô¶ ......
zipÃüÁîµÄ»ù±¾Ó÷¨ÊÇ£ºzip [²ÎÊý] [Îļþ1] [Îļþ2]
¼òµ¥µÄÀý×Ó£º
°Ñ±¾Ä¿Â¼ÏµÄtestÎļþ´ò°ü³Étest.zipÎļþ£ºzip test.zip test/* £¬Èç¹ûÔÚÎļþÖÐÓþø¶ÔµÄ·¾¶£¬ÄÇôÔÚѹËõÎļþÖÐÒ²ÊǾø¶Ô·¾¶¡£¾ÍÊÇ˵£¬Èç¹ûÄã zip test.zip /hom ......