1¡¢ÒýÑÔ
ÔÚlinuxϵͳÏ£¬Èç¹ûÄãÏÂÔز¢°²×°ÁËÓ¦ÓóÌÐò£¬ºÜÓпÉÄÜÔÚ¼üÈëËüµÄÃû³Æʱ³öÏÖ“command not found”µÄÌáʾÄÚÈÝ¡£Èç¹ûÿ´Î¶¼µ½°²×°Ä¿±êÎļþ¼ÐÄÚ£¬ÕÒµ½¿ÉÖ´ÐÐÎļþÀ´½øÐвÙ×÷¾ÍÌ«·±ËöÁË¡£ÕâÉæ¼°µ½»·¾³±äÁ¿PATHµÄÉèÖÃÎÊÌ⣬¶øPATHµÄÉèÖÃÒ²ÊÇÔÚlinux϶¨ÖÆ»·¾³±äÁ¿µÄÒ»¸ö×é³É²¿·Ö¡£±¾ÎÄ»ùÓÚRedHat 9.0£¬Ïêϸ½²½âÁË»·¾³±äÁ¿¶¨ÖƵÄÎÊÌâ¡£
2¡¢±äÁ¿¼ò½é
LinuxÊÇÒ»¸ö¶àÓû§µÄ²Ù×÷ϵͳ¡£Ã¿¸öÓû§µÇ¼ϵͳºó£¬¶¼»áÓÐÒ»¸öרÓõÄÔËÐл·¾³¡£Í¨³£Ã¿¸öÓû§Ä¬ÈϵĻ·¾³¶¼ÊÇÏàͬµÄ£¬Õâ¸öĬÈÏ»·¾³Êµ¼ÊÉϾÍÊÇÒ»×é»·¾³±äÁ¿µÄ¶¨Òå¡£Óû§¿ÉÒÔ¶Ô×Ô¼ºµÄÔËÐл·¾³½øÐж¨ÖÆ£¬Æä·½·¨¾ÍÊÇÐÞ¸ÄÏàÓ¦µÄϵͳ»·¾³±äÁ¿¡£
3¡¢¶¨ÖÆ»·¾³±äÁ¿
»·¾³±äÁ¿ÊǺÍShell½ôÃÜÏà¹ØµÄ£¬Óû§µÇ¼ϵͳºó¾ÍÆô¶¯ÁËÒ»¸öShell¡£¶ÔÓÚLinuxÀ´ËµÒ»°ãÊÇbash£¬µ«Ò²¿ÉÒÔÖØÐÂÉ趨»òÇл»µ½ÆäËüµÄShell¡£¸ù¾Ý·¢Ðа汾µÄÇé¿ö£¬bashÓÐÁ½¸ö»ù±¾µÄϵͳ¼¶ÅäÖÃÎļþ£º/etc/bashrcºÍ/etc/profile¡£ÕâЩÅäÖÃÎļþ°üº¬Á½×鲻ͬµÄ±äÁ¿£ºshell±äÁ¿ºÍ»·¾³±äÁ¿¡£Ç°ÕßÖ»ÊÇÔÚÌض¨µÄshellÖй̶¨£¨Èçbash£©£¬ºóÕßÔÚ²»Í¬shellÖй̶¨¡£ºÜÃ÷ÏÔ£¬shell±äÁ¿ÊǾֲ¿µÄ£¬¶ø»·¾³±äÁ¿ÊÇÈ«¾ÖµÄ¡£»·¾³±äÁ¿ÊÇͨ¹ýShellà ......
ÔÚ¿´LKD(µÚ¶þ°æ)µÚÁùÕÂ(ÖжϺÍÖжϴ¦Àí³ÌÐò)µÄʱºò£¬¸Õ¿ªÊ¼½Ó´¥µ½ÖжÏÏߺź͹²ÏíÖжÏÏßµÄʱºò°ëÌìã¶ÊÇûÓÐÏëÃ÷°×£¬ÔÀ´Àí½âµÄÖжϺÍÖжϺÍÖжϴ¦Àí³ÌÐò¾ÍÊÇͨ¹ýÖжÏÏߺÅÀ´½øÐйØÁª£¬Ó²¼þ·¢ÉúÖжϣ¬È»ºóͨ¹ýÖжÏÏߺŲéÕÒ¶ÔÓ¦µÄÖжϴ¦Àí³ÌÐò£¬×îºóÖжϴ¦Àí³ÌÐò·µ»Ø£¬´Ë´ÎÖжÏÔò´¦ÀíÍê±Ï£¬Ã»Ï뵽ð³öÀ´¸ö¹²ÏíÖжÏÏߣ¬ºÇºÇ£¬±È½Ïһϣ¬¸Ð¾õ֪ʶÕæµÄÒª¼°Ê±¸üУ¬ºÇºÇ¡£
´Ó¸öÈ˵ÄÀí½â£¬Linux2.6Äں˶ÔÖжϴ¦Àí³ÌÐòµÄÏÖÔڵĴ¦Àí¿ÉÒÔ·ÖΪÁ½ÖÖģʽ£¬Ò»ÖÖ¾ÍÊÇÉÏÃæ˵µÄÀϵÄģʽ(·Ç¹²ÏíÖжÏÏß)£¬Ò»ÖÖÊôÓÚʹÓù²ÏíÖжÏÏßµÄÐÂģʽ£¬´ÓÆäʹÓõÄ×¢²áÖжϴ¦Àí³ÌÐòµÄº¯ÊýÖÐÀ´·ÖÎö£¬º¯ÊýÔÐÍÈçÏ£º
int request_irq(unsigned int irq,
irqreturn_t (*handler)(int, void *, struct pt_regs *),
......
----------------------------------------------------------------------------------------------------------------------------------------
/**/
/*
********************************************************************************************************
* @Description:s3c2410µÄrtcÇý¶¯µÄʵÏÖ£¬rtc(real time clock)ʵʱʱÖÓµÄÇý¶¯ÊǸöºÜºÃµÄ
* Àí½âÈç¹û±àдÇý¶¯µÄÓ²¼þ£¬Ëü°üÀ¨ÁË×î»ù±¾µÄÓ²Öжϣ¬ÈíÖжϵĵײã»úÖÆ£»
* s3c2410µÄRTCÇý¶¯µÄʵÏÖ¸öÈËÈÏΪ¸üÊǶÔlinuxÉ豸Çý¶¯Ò»¸öºÜºÃµÄÀý×Ó£¬ËûÊÇͨ¹ý¶þ²ã½á¹¹À´
* ʵÏÖµÄÒ»¸öÇý¶¯£¬ÉϲãÊÇÒ»¸öarm commonµÄ¹«¹²²ã£¬¶ÔÉÏÌṩ±ê×¼µÄͨÓõÄRTC²Ù×÷½Ó¿Ú£¬Ï²ãÓÉ
* ÎÒÃÇÀ´ÊµÏÖÕë¶Ô×Ô¼ºµÄchipºÍ×Ô¼ºÒªÌṩµÄ¹¦ÄÜÀ´ÊµÏÖµÄÒ»²ãÇý¶¯£»
*
* @FileTree:
**********************************************************************************************************
linux-2.6.14.6
|
|--arch
| |
| |--arm
| & ......
----------------------------------------------------------------------------------------------------------------------------------------
/**/
/*
********************************************************************************************************
* @Description:s3c2410µÄrtcÇý¶¯µÄʵÏÖ£¬rtc(real time clock)ʵʱʱÖÓµÄÇý¶¯ÊǸöºÜºÃµÄ
* Àí½âÈç¹û±àдÇý¶¯µÄÓ²¼þ£¬Ëü°üÀ¨ÁË×î»ù±¾µÄÓ²Öжϣ¬ÈíÖжϵĵײã»úÖÆ£»
* s3c2410µÄRTCÇý¶¯µÄʵÏÖ¸öÈËÈÏΪ¸üÊǶÔlinuxÉ豸Çý¶¯Ò»¸öºÜºÃµÄÀý×Ó£¬ËûÊÇͨ¹ý¶þ²ã½á¹¹À´
* ʵÏÖµÄÒ»¸öÇý¶¯£¬ÉϲãÊÇÒ»¸öarm commonµÄ¹«¹²²ã£¬¶ÔÉÏÌṩ±ê×¼µÄͨÓõÄRTC²Ù×÷½Ó¿Ú£¬Ï²ãÓÉ
* ÎÒÃÇÀ´ÊµÏÖÕë¶Ô×Ô¼ºµÄchipºÍ×Ô¼ºÒªÌṩµÄ¹¦ÄÜÀ´ÊµÏÖµÄÒ»²ãÇý¶¯£»
*
* @FileTree:
**********************************************************************************************************
linux-2.6.14.6
|
|--arch
| |
| |--arm
| & ......
1¡£ÒªÊ¹Óÿí×Ö·ûÖ§³Ö£¬Ê¹ÓÃw¿ªÍ·µÄһϵÁж«Î÷£¬Èçwstring£¬wofstreamµÈ¡£ÔÚʹÓÃwstringµÄʱºò£¬³£Á¿×Ö·û´®Ç°ÃæÒª¼ÓÉÏL£¬ÕâÑù²ÅÄÜת»»³Éwchar_tÐ͵Ä
else if(fileName.substr(fileName.rfind(L"."))==L".prj")
2¡£Ò»¸öÎļþÁ÷£¨ÎÞÂÛÊÇofstream»¹ÊÇwofstream£©£¬Ö»Ö§³Öconst char*×÷ΪÎļþÃû£¬¶ÔÓÚ¿í×Ö·ûµÄwstringµÄÎļþÃû£¬¸Ã×öһЩ´¦Àí¡£
DTchar mbsFileName[512];
DTint mbsSize=std::wcstombs(mbsFileName,m_dumpFileName.c_str(),m_dumpFileName.size()*sizeof(wchar_t));
mbsFileName[mbsSize]=0;
m_pDumpStream=new std::fstream(mbsFileName,std::ios::out|std::ios::binary);
ÉÏÃæµÄ´úÂëҪעÒâµÄÊÇ£¬wcstombsת»»ºóµÄcharÐòÁв¢Ã»ÓÐ0×Ö·û´®½áβ·û,ËùÒÔÄóöÈ¥Ö±½Óµ±×Ö·û´®Ê¹Óûá³ö´í¡£
»òÕß“You can use wcstombs() to narrow the filename or if you're feeling adventurous, the narrow() member function of the ctype facet of a std::locale.”
¼ûhttp://www.gamedev.net/community/forums/topic.asp?topic_id=358254&whichpage=1?
3¡£MinGW²»Ö§³Öwchar_t,ºÃÏñÊÇÒòΪlinuxϵÄwchar_tÊÇ4×ֽڵģ¬¶øwindowsÏÂvcÔ ......
±¾ÎÄÀ´×Ô£ºhttp://blog.chinaunix.net/u2/66786/showart.php?id=601766
1.1Ê·Ç°µÄPIC
8259AÊǼ´ÎÒÃÇͨ³£ËµµÄPIC£¬Èçͼ1-1Ëùʾ£º
ͼ1-1 8259A
ÆäÖÐ×îÖØÒªµÄ¹Ü½ÅÊÇIR0~IR7£¨Interrupt Request0~7£¬ÓÃÓÚÁ¬½ÓÉ豸£©¡¢INT£¨Á¬½ÓCPU,µ±ÓÐÖжÏÇëÇóʱ£¬À¸ß¸Ã¹Ü½ÅÒÔ֪ͨCPUÖжϵĵ½À´£©¡¢INTA£¨Á¬½ÓCPU£¬CPUͨ¹ý¸Ã¹Ü½ÅÓ¦´ðÖжÏÇëÇ󣬲¢Í¨ÖªPICÌá½»ÖжϵÄvectorµ½Êý¾ÝÏߣ©¡£´ËÍ⣬ÓÉÓÚһƬ8259AÖ»ÄÜÁ¬½Ó8¸öÉ豸£¬¶ÔÓÚÏÖ´úPC¼Ü¹¹À´ËµÏԵùýÉÙ£¬Í¨³£»áͨ¹ýCS£¨Æ¬Ñ¡£©½«Á½¸ö8259AÁ¬ÔÚÒ»Æð¹¹³ÉÒ»¸ö¿ÉÒÔÁ¬½Ó15¸öÉ豸£¨ÓÐÒ»¸ö¹Ü½ÅÓÃÓÚ´®ÁªÁíһƬ8259A£©µÄPIC¡£
¼ÈÈ»Êǿɱà³ÌµÄоƬ£¬8259Aµ±È»ÉÙ²»Á˼ĴæÆ÷¡£³ýÁËICW£¨Initialization Command Word£¬³õʼ»¯ÃüÁî¼Ä´æÆ÷£¬ÓÃÓÚ³õʼ»¯8259A£©ºÍOCW£¨Operation Command Word£¬²Ù×÷ÃüÁî×Ö£¬ÓÃÓÚ¿ØÖÆ8259A£©Í⣬×îÖØÒªµÄÓÐ3¸ö¼Ä´æÆ÷£º
u IRR£ºInterrupt Request Register£¬ÖжÏÇëÇó¼Ä´æÆ÷£¬¹²8bit£¬¶ÔÓ¦IR0~IR7°Ë¸öÖжϹܽš£µ±Ä³¸ö¹Ü½ÅµÄÖжÏÇëÇóµ½À´ºó£¬Èô¸Ã¹Ü½ÅûÓб»ÆÁ±Î£¬IRRÖжÔÓ¦µÄbit±»ÖÃÒ»¡£±íʾPICÒѾÊÕµ½É豸µÄÖжÏÇëÇ󣬵«»¹Î´Ìá½»¸øCPU¡£
u ......
1.2ÏÖ´úµÄAPIC
APICËäºÅ³ÆÏÖ´ú£¬µ«Ò²³öÏÖ10¼¸ÄêÁË£¬PC»úÊг¡×ÜÊǺÜÍí²ÅÄܽӴ¥µ½Ðµļ¼Êõ£¬Ç°Ãæ˵ÁË£¬ÎÒµÄT42ÓõĻ¹ÊÇPICÄØ¡£APICÏà½ÏÓÚPICÀ´Ëµ£¬×î´óµÄÓŵãÊÇÄÜÊÊÓÃÓÚMPƽ̨£¬µ±È»£¬¹Ü½Å¶àÊÇËüÁíÒ»¸öÓŵ㡣APICÓÉÁ½²¿·Ö×é³É£¬Ò»¸ö³ÆΪLAPIC£¨Local APIC£¬±¾µØ¸ß¼¶ÖжϿØÖÆÆ÷£©£¬Ò»¸ö³ÆΪIOAPIC£¨I/O APCI£¬I/O¸ß¼¶ÖжϿØÖÆÆ÷£©¡£Ç°ÕßλÓÚCPUÖУ¬ÔÚMPƽ̨£¬Ã¿¸öCPU¶¼ÓÐÒ»¸ö×Ô¼ºµÄLAPIC¡£ºóÕßͨ³£Î»ÓÚÄÏÇÅÉÏ£¬ÏñPICÒ»Ñù£¬Á¬½Ó¸÷¸ö²úÉúÖжϵÄÉ豸¡£ÔÚÒ»¸öµäÐ͵ľßÓжà¸ö´¦ÀíÆ÷µÄPCƽ̨£¬Í¨³£ÓÐÒ»¸öIOAPICºÍ¶à¸öLAPIC£¬ËüÃÇÏ໥ÅäºÏ£¬ÐγÉÒ»¸öÖжϵķַ¢ÍøÂ磬ͼ1-3ÏÔʾÁËÕâ¸öµäÐ͵ÄÇé¿ö£º
ͼ1-3 APICģʽ£¨Õª×Ô¡¶ÉîÈëÀí½âLinuxÄںˡ·£©
ͼÖеÄÖжϿØÖÆÆ÷ͨÐÅ×ÜÏߣ¬ÊÇIOAPICºÍLAPICͨÐŵÄÇÅÁº£¬ÔÚIntelµÄP6¼Ü¹¹ºÍPentiumϵÁÐCPUÖУ¬ËüÊÇÒ»Ìõµ¥¶ÀµÄAPIC×ÜÏß¡£Ê±´úÔÚ½ø²½£¬Pentium4ºÍXeonϵÁÐCPU³öÏÖºó£¬APIC BusÒѾ²»´æÔÚ£¬ÏµÍ³µÄÇ°¶Ë×ÜÏß´úÌæÁËËü¡£
1.2.1 IOAPIC
»°·ÖÁ½Í·£¬ÈÃÎÒÃÇÏÈÀ´¿´¿´IOAPIC¡£ºÍPIC¶Ô±È£¬IOAPIC×î´óµÄ×÷ÓÃÔÚÓÚÖжϷַ¢¡£¸ù¾ÝÆäÄÚ²¿µÄPRT£¨Programmable Redirection Table£©±í£¬IOAPIC¿ÉÒÔ¸ñʽ»¯³öÒ»ÌõÖжÏÏûÏ¢£¬·¢Ë͸øij¸öCPUµÄLAPIC£¬ÓÉLAPIC֪ͨCPU½ø ......